[Scip] integer variables get assigned non-integer values

Gerald Gamrath gamrath at zib.de
Wed Dec 4 10:46:49 CET 2013


Hi Stefan,

short example:
min -x + 1e+10 y
s.t.  x <= 1e+06 y
        x >= 0
        y \in {0,1}

So we have a big-M constraint with a very high M (which often causes 
numerical problems).

The optimum is x=0, y=0, but with a tolerance of 1e-06, also y=1e-06,x=1 
is feasible and has a better objective value. Rounding y to 0 destroys 
feasibility. If you replace y by (1-z), z=0.9999999,x=1 would be 
feasible only within tolerances.

There are a few cases where you really need to be sure that the solution 
is optimal and feasible without tolerances, that's why there is also an 
extension of SCIP to an exact solver by Kati Wolter and Dan Steffy which 
you can download on the SCIP web page. It is one of the first codes of 
that kind.

However, for most practical reasons, floating point arithmetics with 
tolerances suffice, in particular when taking into account that the 
exact solver often leads to a slowdown of a factor of 10 to 100 or more. 
Also commercial MIP solvers like CPLEX, Gurobi or XPRESS all use 
floating point arithmetics and thus might return solutions which are 
feasible only in tolerances.

Best,
Gerald


Am 04.12.2013 10:20, schrieb Stefan Lörwald:
> Hi Timo,
>
> if the user requires binary variables any solution having non-binary 
> results are per definition infeasible.
> Therefore SCIP shouldn't report 0.9999999 as a feasible solution (even 
> w.r.t. tolerances), if it isn't 0/1 feasible.
> Either it should report as infeasible because the best value 
> (0.999999) doesn't satisfy the 0/1 constraint, or it should report as 
> infeasible because rounding to 1 would be infeasible.
>
> However I'd very much like to actually see a case in which 0.9999999 
> is feasible, but 1 is not. Do you have an example at hand?
>
> Stefan
>
>     One amendment to Stefan's reply:
>     > There is a small thing SCIP could do better actually: sometimes
>     you'll get
>     > 0.9999999 instead of 1 (which is representable as double) for
>     e.g. binary
>     > variables. In theory such output could be enforced to 0/1 or
>     integral
>     > value once the solving process is completed.
>
>     This is not correct in general. As argued below, it might be that the
>     0.9999999 solution is feasible (w.r.t. tolerances), whereas the 0/1
>     solution is not.
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20131204/3b295e33/attachment.html>


More information about the Scip mailing list