Pooling Multiple optimal solutions

609 views
Skip to first unread message

Shahin

unread,
Oct 20, 2009, 1:47:01 AM10/20/09
to Gurobi Optimization
Dear Gurobiers,

I very much enjoy using Gurobi and also face with some things which
are not very clear in the documentation.

Assume I have an MIP for which there are many optimal solutions;
Gurobi by default settings, to my understanding stops as soon as the
optimality is proven at the first optimal solution. Using callbacks
we are able to pool solutions as we have talked about in an earlier
post of mine. Now, question is how I am able to pool all (or perhaps
N ) optimal solutions of an MIP if I know for sure that there are
other optimal solutions. Is there any functionality like "reject", I
pool the solution and then reject it to go for the next one.

regards,
Shahin

Greg Glockner

unread,
Oct 20, 2009, 10:08:17 AM10/20/09
to gur...@googlegroups.com
Gurobi has no built-in feature to generate alternate optimal
solutions. However, this is not difficult to do yourself: once you
find an optimal solution, simply generate a constraint to cutoff this
solution and solve again. Repeat as necessary.

amedagli

unread,
Oct 20, 2009, 10:49:23 AM10/20/09
to Gurobi Optimization
As an alternative, you can code in Gurobi the ideas shown in Chapter 4
(Determining All Alternative Optima) of R. Steuer's book Multiple
Criteria Optimization.

Andrés

Shahin

unread,
Oct 20, 2009, 9:52:11 PM10/20/09
to Gurobi Optimization
I guess, detecting alternate optimal solution is not theoretically a
big deal because it is, in a very naiive form, just matter of adding
one constraint to eliminate the current one.
The point is that sometimes, as in my case, the LP bound is very weak.
If you are supposed to invoke solver each time from the scratch and
wait until it improves the bound and offers you another optimal
solution (even if you use cuttoffs from both upper and lower side)
that is not the best idea to my understanding.

Maybe people of Gurobi do not like if I compare this with IlogCplex
but just to give an idea what I am searching for:
In Ilog-cplex concert, one can check a solution and reject it if it
does not meet a particular criteria you are willing to have.

using this, quite easily you can make sort of abuse! you check it save
it but then claim that this is not a good solution I "reject it".
Both upper and lower bounds are tight enough! cuts are already
generated; the next solution comes in a fraction of second very often.

I am looking for such thing or perhaps if I am supposed to write it
myself through a loop then I need to have possibility to tell the
solver DO NOT start from the scratch and retain the cuts and bounds
you have obtained before and accept my single solution-eliminating
cut.

That is the idea!

regards,
Reply all
Reply to author
Forward
0 new messages