如何从CPLEX OPL导出最佳的后处理可行解决方案



我用CPLEX studio IDE 12.10.0解决了一个多车辆路由问题,由于RAM不足,我的许多实例都出现了错误。我甚至设定了一个时间限制来查看最佳解决方案,但过程无法达到时间限制。因此,我无法在进程结束时审查任何解决方案。我做了一些研究,在我的.ops文件中,我启用了";后处理可行解决方案";这让我看到了迄今为止在";解决方案";窗问题出现在那个部分。我可以很容易地看到车辆的距离值。然而,对于其他变量,我不能这么说。

我有两个变量,分别有四个和五个索引。在";解决方案";窗口中,这些变量报告为向量。因此,我无法描绘这些旅行。我想知道的是,是否有任何方法可以以适当的方式报告迄今为止找到的最佳解决方案。如果cplex找到了一个最佳解决方案,我可以像下图一样以表格形式查看变量;

表格报告

有没有办法将解决方案转换为表格形式,如果可能的话,将解决方案导出到.xml文件中。

要节省内存,而不是在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;
*/

然后,稍后您可以使用生成的文件在IDE 中查看结果

int nbBus40=...;
int nbBus30=...;
execute
{

writeln("nbBus40=",nbBus40);
writeln("nbBus30=",nbBus30);

}
/*
nbBus40=6
nbBus30=2
*/

最新更新