我在CPLEX中收到一个关于探查器错误的错误。这显示在底部窗口的Profiler选项卡中。
发生溢出,请使用oplrun-profile
我使用sheetwrite命令将输出写回excel(例如solXbimt到sheetwrite(sheet,"Result!B3:E1000000"((。引擎日志显示已经生成了几个解决方案,但它们没有被写回excel。我怀疑是溢流造成的。
你能帮我克服这个问题吗。
你能试着用oplrun运行你的模型吗?
如果你不需要分析,你也可以删除它。
您也可以在.dat文件中编写解决方案
为了节省内存,而不是在OPL IDE中运行您的模型,您可以使用命令行oplrun。
在后处理块中,您可以通过IloOplOutputFile将解决方案保存到一个文件中。
示例来自https://github.com/AlexFleischerParis/oplscripting/blob/main/zooandsaveresultindatfile.mod
int nbKids=300;
float costBus40=500;
float costBus30=400;
dvar int+ nbBus40;
dvar int+ nbBus30;
minimize
costBus40*nbBus40 +nbBus30*costBus30;
subject to
{
40*nbBus40+nbBus30*30>=nbKids;
}
execute
{
var o=new IloOplOutputFile("zooresult.dat");
o.writeln("nbBus40=",nbBus40,";");
o.writeln("nbBus30=",nbBus30,";");
o.close();
}
/*
generates zooresult.dat
nbBus40=6;
nbBus30=2;
*/
再次感谢Alex使用您的响应我尝试了以下操作:对我来说,下面的每个Sol变量都是元组。另一件值得注意的事情是,现在它的运行速度比我写excel时快得多。当输出大小较大时,这是将结果写入.dat文件的一个很好的解决方法。
execute
{
var o=new IloOplOutputFile("optscheduleXbmt.dat");
o.writeln(solXbmt);
o.close();
var o=new IloOplOutputFile("optscheduleXbdt.dat");
o.writeln(solXbdt);
o.close();
var o=new IloOplOutputFile("optscheduleXbst.dat");
o.writeln(solXbst);
o.close();
var o=new IloOplOutputFile("optscheduleXsmt.dat");
o.writeln(solXsmt);
o.close();
var o=new IloOplOutputFile("optschedulePath.dat");
o.writeln(solPath);
o.close();
}