[Scip] More solutions

Stefan Vigerske stefan at math.hu-berlin.de
Thu Nov 19 16:38:42 MET 2009


Hi,

if performance does not matter and since you said that all variables are
binary, you could generate for each solution SCIP gives you a constraint
that forbids exactly this solution, then reoptimize, see what is
solution you get then, exclude this one too, and so on...

Stefan

Am 19.11.2009 16:12, schrieb Julio Rojas:
> Thank you. I have never written a piece of C code and I'm in a tight
> schedule right now. I wanted to prove some convexity condition I thinnk is
> hidden behind all possible solutions this problem has. I know all solutions
> have the same value, but this is because this is a simplified version of a
> much more complex problem. In the more complex problem, these solutions have
> a different value and I don't know if the first solution obtained in the
> simpler model is the best one. I have made an heuristic algorithm that
> solves this problem, but I would really like to see if by picking a
> different solution (not the first one) I converge faster to the point I want
> to get. I think this will have to wait until I have the time to look for
> help in C coding.
> 
> Sorry for all the bothering and thank you very much for all your help and
> for an excelent program. Best regards.
> -------------------------------------------------
> Julio Rojas
> jcredberry at gmail.com
> 
> 
> On Thu, Nov 19, 2009 at 3:55 PM, Tobias Achterberg <achterberg at zib.de>wrote:
> 
>> First, SCIP does not have a "populate" feature like CPLEX. That means, if
>> the model is solved to optimality, you cannot get more solutions
>> (alternative optima or inferior solutions).
>>
>> SCIP collects all solutions that it finds during the solving process. With
>> the "write solution" command, you can only write the current incumbent
>> (i.e., best known solution).
>>
>> Using the callable library, you could also access the other solutions, but
>> I think that this is not possible with the interactive version of SCIP.
>>
>> If you are not afraid of implementing stuff on your own, it is very easy to
>> extend SCIP to do what you want, i.e., to add an interactive command like
>> "write allsolutions". You just need to write a dialog handler plugin (look
>> at src/scip/dialog_default.c how to do this). The SCIP team can certainly
>> help you with this if you have any questions.
>>
>>
>> Tobias
>>
>>
>> Julio Rojas wrote:
>>
>>> Maybe I'm doing something wrong. Let me write the commands I'm issuing:
>>>
>>> read problem.lp
>>> set limits solutions 1
>>> optimize
>>> write solution sol1.txt
>>> read problem.lp
>>> set limits solution 2
>>> optimize
>>> write solution sol2.txt
>>>
>>> sol1.txt and sol2.txt should be different, as the optimizer is telling
>>> me it have found two solutions, but that's not the case as both
>>> solutions are the same (diff sol1.txt sol2.txt).
>>>
>>> If I do this:
>>>
>>> read problem.lp
>>> set limits solutions 1
>>> optimize
>>> write solution sol1.txt
>>> set limits solution 2
>>> optimize
>>>
>>> Then the solver tells me the model is already solved and the same
>>> solution appears.
>>>
>>> So, maybe there is just one solution even if the solver says there are
>>> two? Or I'm not doing the correct procedure to get the second solution.
>>>
>>> Thank you so much for your time and patience.
>>> -------------------------------------------------
>>> Julio Rojas
>>> jcredberry at gmail.com <mailto:jcredberry at gmail.com>
>>>
>>>
>>>
>>> On Thu, Nov 19, 2009 at 2:45 PM, Stefan Vigerske
>>> <stefan at math.hu-berlin.de <mailto:stefan at math.hu-berlin.de>> wrote:
>>>
>>>    Hi,
>>>
>>>    I think the idea was to set the limit to one before starting
>>>    optimization. Then it should stop when the limit is reached, and so
>>>    on...
>>>
>>>    Stefan
>>>
>>>    Am 19.11.2009 14:22, schrieb Julio Rojas:
>>>     > I tried to do what you suggest me. In one problem, after
>>>    optimization, the
>>>     > report is the following:
>>>     >
>>>     > SCIP Status        : problem is solved [optimal solution found]
>>>     > Solving Time (sec) : 0.07
>>>     > Solving Nodes      : 1
>>>     > Primal Bound       : +5.20000000000000e+01 (2 solutions)
>>>     > Dual Bound         : +5.20000000000000e+01
>>>     > Gap                : 0.00 %
>>>     >
>>>     > So, in theory, I have two solutions. If I check the value of the
>>>    solution
>>>     > limit it shows:
>>>     > SCIP> set limits solution
>>>     > current value: -1, new value [-1,2147483647]: 2
>>>     > parameter <limits/solutions> set to 2
>>>     >
>>>     > It doesn't matter if I do it before or after optimization, when I
>>> run
>>>     > optimize again it tells me the problem has already been solved
>>>    and no new
>>>     > solution is presented.
>>>     >
>>>     > Thanks for your kind help.
>>>     > -------------------------------------------------
>>>     > Julio Rojas
>>>     > jcredberry at gmail.com <mailto:jcredberry at gmail.com>
>>>     >
>>>     >
>>>     >
>>>     >
>>>     > _______________________________________________
>>>     > Scip mailing list
>>>     > Scip at zib.de <mailto:Scip at zib.de>
>>>
>>>     > http://listserv.zib.de/mailman/listinfo/scip
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Scip mailing list
>>> Scip at zib.de
>>> http://listserv.zib.de/mailman/listinfo/scip
>>>
>>
> 



More information about the Scip mailing list