int Nod=41;
range NodRange = 1..Nod;
int nr=140;
range RRange = 1..nr;
int TSlot = 96;
range TRange = 1..TSlot;
int ncs=6;
range csrange=1..ncs;
int piles=12;
range np=1..piles;
int nv=3;
range nvrange=1..nv;
main {
var source = new IloOplModelSource("subvalue.mod");
var cplex = new IloCplex;
var def = new IloOplModelDefinition(source);
var pa= new int [np][TRange];
for(var v=1;v<=3;v++)
{
var opl = new IloOplModel(def, cplex);
var data = new IloOplDataSource("MultipleEtoCS.dat");
var data2=new IloOplDataElements();
data2.cev=v;
opl.addDataSource(data2);
opl.addDataSource(data);
opl.generate();
if (!cplex.solve()) {
writeln("No solution exists. Stopping.");
}else{
opl.postProcess();
writeln(" solution is =" + cplex.getObjValue());
for (var j in opl.csrange){
if(j<=opl.sreq)
opl.pa[opl.vpile[v]][opl.cslot+1+j]=+1;
}
}
}
opl.end();
}
如何打印PA矩阵。我将错误作为脚本解析器错误。在代码sreq [nvrange]中,vpile [nvrange]和cslot [nvrange]是整数决策变量,在subvalue.mod文件中定义。如何正确实现此逻辑以打印V.的所有值的PA矩阵。
int sreq[1..2]=[1,2];
int j=1;
execute
{
opl=thisOplModel;
if (j<=opl.sreq) writeln("KO");
}
正常,因为SREQ是一个数组,而J值
如果我写
int sreq[1..2]=[1,2];
int j=1;
execute
{
opl=thisOplModel;
if (j<=opl.sreq[2]) writeln("OK");
}