如何使用CPLEX OPL更新迭代优化的矩阵?

问题描述 投票:0回答:1
I正在使用主函数在CPLEX OPL中解决迭代优化问题。但是,我在打印矩阵值时会遇到错误。请帮助我解决这个问题。

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矩阵。

optimization iteration cplex opl
1个回答
0
投票
获取您的错误

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"); }

then没关系,我看到“确定”
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.