intlinprpog: "Solver stopped prematurely. Integer feasible point found." How to find optimal solution?

2 views (last 30 days)
Hi, I'm using the following code to solve a (large scale) binary integer linear problem. However, I often the following output:
Solver stopped prematurely. Integer feasible point found.
The intcon variables are integer within tolerance, options.TolInteger = 1e-05 (the default value).
I guess this corresponds to exitflag 2. Is there anything I can do to obtain the optimal solution ( which I guess would correspond to exitflag 1) ?
options = optimoptions(@intlinprog,'Display','final','MaxTime',inf,'IPPreprocess','advanced','MaxNodes',inf);
[x,fval,exitflag,output] = intlinprog( w, 1:length(w), A_unique, b, A_eq, b_eq, zeros(length(w),1), ones(length(w),1), options );
Thank you very much in advance

Answers (1)

Alan Weiss
Alan Weiss on 1 Jun 2015
You are asking a difficult question. There are some suggestions in the documentation about finding a better or more accurate solution, but there are no guarantees that these suggestions will help.
You can also try turning off some preprocessing, such as the IPPreprocess or LPPreprocess options. Usually, removing preprocessing adds to time and lowers precision, but sometimes it paradoxically can help.
Also, if you have R2014b or later, you can set the PlotFcns option to @optimplotmilp to monitor the solution process.
One thing you say surprises me. You are "guessing" what the exitflag might be. Why don't you return the exit flag along with the solution?
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!