簡體   English   中英

如何從 CPLEX OPL 導出最佳后處理可行解決方案

[英]How to export best post processing feasible solution from CPLEX OPL

我使用 CPLEX studio IDE 12.10.0 解決了多車輛路線問題,我的許多實例由於 RAM 不足而出錯。 我什至設置了時間限制以查看最佳解決方案,但是該過程無法達到時間限制。 因此,我無法在流程結束時查看任何解決方案。 我進行了一些研究,並在 my.ops 文件中啟用了“后處理可行解決方案”,這讓我可以看到迄今為止在“解決方案”window 中找到的可行解決方案。 問題出現在那個部分。 我可以很容易地看到車輛的距離值。 但是,我不能說其他變量。

我有兩個具有四個和五個索引的變量。 在“解決方案”window 中,這些變量報告為向量。 因此,我無法繪制旅行的草圖。 我想知道的是是否有任何方法可以以適當的方式報告迄今為止找到的最佳解決方案。 如果 cplex 找到最佳解決方案,我可以像下圖一樣以表格形式查看變量;

表格報告

有沒有辦法將解決方案轉換為表格形式,如果可能,將解決方案導出到 .xmls 文件中。

要保存 memory 而不是在 OPL IDE 中運行 model,您可以使用命令行 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

*/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM