Originally posted by: JimDan
I am bringing up a pretty old thread but I am facing a similar problem that will not go away...
I have a price and branch column generation application coded in C++ that uses Concert Libraries...
//Pricing Step
while(good column found){
IloColumn col...
Populate column
IloNumVarArray X.add(col,...)
cplex.solve();//Default Parameters for cplex
update dual values
find column
}
//End Pricing Step
//Convert variables to integer and solve
//Begin Branch Step
Convert IloNumVarArray X to Integer Type
cplex.exportModel("model.lp");
cplex.solve();//Default parameters for cplex
Now, as others in this and other threads have pointed out, the cplex.solve() step above takes forever...while if I go to the interactive optimizer and type:
cplex> read model.lp
cplex> optimize
the IP solves in a few seconds.
As some have pointed out, if I save/export the model as "model.sav" in lieu of "model.lp", I should expect the interactive optimizer to perform just as fast/follow the same sequence as does the cplex.solve() step from within the C++ application. Correct? I have not tried that step yet.
My question is, is there a way I can get the C++ application itself to perform as fast as the interactive optimizer, instead of having the interactive optimizer perform just as slow as the application?
On a related note, could it be that my price and branch application, at the beginning of the branching phase has an incoming LP basis before going through the IloConversion and cplex.solve() steps that somehow slows things down? Interactive Optimizer does not have any starting basis that I feed in and could this be the reason why the Interactive Optimizer runs faster? If both the interactive optimizer and the C++ application go through the exact MIP branching steps when the model is exported as "model.sav" what happens to the incoming LP basis of the C++ application before cplex.solve()? It appears to me that the incoming LP basis would contain some valuable information about variables that cplex.solve() could use. If cplex.solve() does indeed use this incoming LP basis, then unless I save this basis and feed it to the Interactive Optimizer, how will the two (Interactive Optimizer & the C++ application) follow the same steps in converging to the optimal solution?
#CPLEXOptimizers#DecisionOptimization