从opl中的其他模型读取main中的数据

时间:2019-07-11 01:17:56

标签: cplex opl

我在Cplex中有一个OPL项目,我想从x.mod中读取main.mod中的一个整数变量。我定义了这样的变量:     {int} hub = { s | s in facilities : y[s] == 1 };(此定义在x.mod中) 如何在main.mod中使用集线器,因为当我编写集线器时说:未知变量

1 个答案:

答案 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}