簡體   English   中英

如何從同一 CPLEX 模型運行多個實例(數據集)?

[英]How to run multiple instances(datasets) from same CPLEX model?

我在 CPLEX 中有一個 MIP 模型作為 mod 文件。 我在多個“.txt”文件中有數據集。 有沒有一種方法可以自動化 CPLEX 中的流程來解決許多實例的模型。 目前,我為每個實例每次運行模型。 我的實例為“M1_D1.txt”、“M2_D1.txt”、....“M100_D10.txt”。 但是,要解決的模型是相同的。

在 Matlab 中,更容易自動化該過程。 但是我在任何地方都找不到如何在 CPLEX 中實現自動化。


   define variables
   retrieve data from .dat file

   define objective function
   define constraints

您可以使用主塊(流量控制)這是一個示例:

子模塊

float maxOfx = ...;
dvar float x;

maximize x;
subject to {
  x<=maxOfx;
 }

execute
{
  writeln("x= ",x);
}

嘗試1.dat

maxOfx=1;

嘗試2.dat

maxOfx=2;

接着

主模塊

{string} datFiles=...;

main {
      var source = new IloOplModelSource("sub.mod");
      var cplex = new IloCplex();
      var def = new IloOplModelDefinition(source);

      for(var datFile in thisOplModel.datFiles)
      {
      var opl = new IloOplModel(def,cplex);

      var data2= new IloOplDataSource(datFile);

      opl.addDataSource(data2);
      opl.generate();

      if (cplex.solve()) {  
         opl.postProcess();
         var o=new IloOplOutputFile("res"+datFile+".txt");
         o.writeln("OBJ = " + cplex.getObjValue());
         o.close();
         writeln("OBJ = " + cplex.getObjValue());
      } else {
         writeln("No solution");
      }
     opl.end();
    }  

    }

主要數據

datFiles={"Try1.dat","try2.dat"};

在命令行中 oplrun main.mod main.dat 在 IDE 中,需要在運行配置中有 main.mod 和 main.dat

暫無
暫無

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

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