Reputation: 11
I can't find a way to efficiently use MIP starts in CPLEX java API.
I have a linear problem that I need to solve many times by changing just one constraint or changing the objective so I thought that starting from a solution (with MIP starts) could be a good way to speed up the calculations.
So in order to do that, after the first time I solve the problem, I save all variables in an array of IloNumVar and double that I pass to my other cplex objects with cplex.addMIPStart.
The problem is it doesn't speed up anything it makes it slower and gives me this message :
Warning: No solution found from 1 MIP starts.
So maybe I shouldn't give the MIP start all the variables but how do I know what variables to give it ?
I also tried to change the MIP start effort but it does not seem to make any difference ...
Why doesn't it make calculations faster ? Is there a better way to solve many problems that have just a few differences ?
Upvotes: 1
Views: 2856
Reputation: 21572
This message usually means that you either haven't specified values for enough decision variables in your model, or the values you have given to cplex aren't feasible. You can check feasibility by using IloNumVar.setBounds on the variables then trying to solve the model. If that comes up infeasible, then you can write an iis file. CPLEX tries, but isn't able to make use of your mipstart, so it runs slower. A good MIP start can improve the solution time dramatically, especially if cplex has a hard time finding a first-feasible solution and your MIP start has an objective function value that is close to optimal, but for many instances, it doesn't make any difference. Warm starting MIPs is much harder than warm-starting LPs.
Upvotes: 2