Originally posted by: robi13
Hello,
I am trying to build a small control script that uses the solution from a standard scenario as the initial solution for various other scenarios.
I basically copied and pasted from the existing example snippets, but obviously fail to understand the basic warmstart concept... :-(
Maybe somebody finds the flaw in my script pretty fast as I tried several variations so far and it always fails already in reading and saving the initial solution for further usage...
{
int
} scenss = ...;
int scen1 = first(scenss);
// standard scenario
int scens = last(scenss); main
{ var vectors =
new IloOplCplexVectors(); var curr; var master = thisOplModel; master.generate(); writeln(
"Last Scenario: ",master.scens);
for(var n = master.scen1; n <= master.scens; n++)
{ var subModel =
new IloOplRunConfiguration(
"PDNP v12.mod"); var data1 =
new IloOplDataElements(); data1.scen = n; subModel.oplModel.addDataSource(data1); var data2 =
new IloOplDataSource(
"PDNP v12.dat"); subModel.oplModel.addDataSource(data2); subModel.oplModel.generate();
if (n > master.scen1)
{
if (subModel.oplModel.vectors.setVectors() )
{ writeln(
"warm start ",subModel.oplModel.vectors.Nrows,
"x",subModel.oplModel.vectors.Ncols,
" succeeded ");
}
else
{ writeln(
"warm start ",subModel.oplModel.vectors.Nrows,
"x",subModel.oplModel.vectors.Ncols,
" failed: ",subModel.oplModel.vectors.status);
}
} writeln(subModel.oplModel.printRelaxation()); writeln(subModel.oplModel.printConflict())
if (subModel.cplex.solve())
{ curr = subModel.cplex.getObjValue(); writeln(); writeln(
"OBJECTIVE: ",curr); writeln(
"Scenario ID: ",n); subModel.oplModel.postProcess();
if (n == master.scen1)
{
if (subModel.oplModel.vectors.getVectors(cplex) )
{ writeln(
"warm start preparation successful ");
}
else
{ writeln(
"warm start preparation failed: ",subModel.oplModel.vectors.status);
}
}
}
else
{ writeln(
"No solution!");
}
}
}
Many thanks!
R
#DecisionOptimization#OPLusingCPLEXOptimizer