获取探查器错误i CPLEX OPL-发生溢出



我在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(); 
}

最新更新