我在Cplex中有一个OPL项目,我想从x.mod中读取main.mod中的一个整数变量。我定义了这样的变量:
{int} hub = { s | s in facilities : y[s] == 1 };
(此定义在x.mod中)
如何在main.mod中使用集线器,因为当我编写集线器时说:未知变量
答案 0 :(得分:0)
您可以简单地使用opl.hub,其中opl是OPL子模型。
让我给你举个小例子:
sub.mod
{int} facilities={1,2};
dvar boolean y[facilities];
subject to
{
y[1]==1;
y[2]==0;
}
{int} hub = { s | s in facilities : y[s] == 1 };
然后如果您编写main.mod
main {
var source = new IloOplModelSource("sub.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var opl = new IloOplModel(def,cplex);
opl.generate();
if (cplex.solve()) {
writeln("OBJ = " + cplex.getObjValue());
opl.postProcess();
writeln("hub = ",opl.hub);
} else {
writeln("No solution");
}
opl.end();
}
你会得到
OBJ = 0
hub = {1}