Q: I have an MIP which I'm solving using CPLEX. Besides the optimal solution, I'm also interested in the second,third,fourth etc. best solution. Is there a way for GAMS to tell CPLEX to return a ranked-order list of these solutions? I understand that this can be done with integer cuts… “Solve once, get first solution, append corresponding integer cut, resolve, get second best solution etc….”
GAMS/CPLEX has a feature called
solution pool to obtain multiple solution of MIPs or MIQCPs. It was introduced with GAMS 22.6 and is described in the CPLEX manual in chapter 3.5. Also there is an example
solnpool in the GAMS Model Library demonstrating this feature. Furthermore, solutions can be collected during the solution process by using GAMS BCH facility. See a modified version of the model library example DICE that demonstrates this feature from here .
GAMS/BARON has a feature using the options
isoltol. It is described in Baron's manual in chapter 4.2 and used in the GAMS Model Library in model
bchfcnet (note that this includes bchfcnet.inc) and also works on MINLP models .
Both write the intermediate solutions to gdx files, which you can read using
In addition to the features provided by GAMS/CPLEX and GAMS/BARON, there is another way to retrieve multiple solutions. You can iteratively add cuts to your model. Cuts allow you to exclude solutions you already
have found. Have a look at the GAMS models
icut from the GAMS Model Library, which illustrate the basic ideas.