CPLEX OPL IP-разрыв в основном блоке и выполнение в модели

В моей модели я хочу установить разрыв IP. Я сделал это в основном блоке:

main {

    thisOplModel.generate();


    cplex.epgap = 0.005; 

    if (cplex.solve()) {

        var obj = cplex.getObjValue();
        writeln("Objective function value: " + obj);
    }

}

В самой модели у меня есть пара исполняемых блоков для вывода на консоль и записи в Excel. например.:

execute{
  writeln("MECHANICAL HARVESTING");
 for(var j in J){

   write("j= "+j + " ");

   for(var t in T){
     var x_out = 0;

     for(var k in K){
       for(var b in B){
         if(k == 1){x_out = x_out + x[j][t][k][b];}
       }
     }


     write(x_out + " ");
   }
   writeln("");


 }
 writeln(""); 
}               

Когда я запускаю модель, я получаю решение, однако блоки выполнения не выполняются.

Кто-нибудь может мне с этим помочь?


person Yan H.    schedule 17.05.2020    source источник


Ответы (1)


вам нужно вызвать postProcess.

Например, в вашем коде вы должны изменить

main {

    thisOplModel.generate();


    cplex.epgap = 0.005; 

    if (cplex.solve()) {

        var obj = cplex.getObjValue();
        writeln("Objective function value: " + obj);
    }

}

в

main {

    thisOplModel.generate();


    cplex.epgap = 0.005; 

    if (cplex.solve()) {

        var obj = cplex.getObjValue();
        writeln("Objective function value: " + obj);
        thisOplModel.postProcess(); // call postProcess
    }

}
person Alex Fleischer    schedule 17.05.2020