Originally posted by: SystemAdmin
[sergio.garcia said:]
I am programming a strong branching based-on algorithm with Concert to solve a MIP problem. I handle the tree with my c++ code and use Concert Library as a tool for solving the continuous linear problems in each node.
After having solved a given node, I need to test the fractional variables y (they are binary in the MIP problem) for choosing which one to branch on. Thus, for every index j in a given set D I have the following loop to modify the model M:
[i] y[j].setBounds(0,0);
cplex.solve();
// Show information 0
y[j].setBounds(1,1);
cplex.solve();
// Show information 1
y[j].setBounds(0,1);[/i]
As you can see,I need to solve the same model 2|D| times in a row but changing just the bounds on a variable.
This is ok (I mean, it works), but I now I would like to do just, say, 30 simple iterations each time -cplex.setParam(IloCplex::ItLim,30)- because that is enough. The problem is that, since reoptimization begins where the previous one stopped, information is not accurate (because initial iterations are not feasible). What I would like to do is to reoptimize from the point where the original model M ends.
My question is: is there any way to do it efficiently? Solutions I have already discarded because they are not efficient:
1) Generating each time the whole set of constraints of M from scratch and use and advanced basis.
2) Exporting model M before the loop, importing it each time I need to reoptimize (using and advanced basis).
Any hint on this will be welcome.
#CPLEXOptimizers#DecisionOptimization