[Scip] best solution is not feasible in original problem

Gerald Gamrath gamrath at zib.de
Tue Jun 3 11:42:13 CEST 2014


Dear Ramón,

also, the relative tolerance used for the feasibility check of a
constraints works as follows. For ax <= b, you check that b - ax is
smaller or equal to feastol * max(1,|b|). This means that the tolerance
is always relative to the maximum of b and one, i.e., if |b| is smaller
than 1 and b - ax <= feastol, the constraint is fulfilled.

Therefore, I would recommend to rather scale your constraint such that
it gets a larger right-hand side instead of changing the feasibility
tolerance.

Best,
Gerald

On 29.05.2014 20:57, Stefan Vigerske wrote:
> Hi,
>
> setting the feastol that small is not supported.
> There is another tolerance (numerics/epsilon) that is (silently)
> assumed to be smaller than feastol, and by default 1e-9. Numbers
> smaller than epsilon are treated as 0.
> Further, a feastol of 1e-10 while still having values like 1e4 in your
> problem might give issues when having to use double precision.
> The limited precision of the floating point numbers is also the reason
> why -0.166666666666667 ends up as -0.16666666666666699048.
>
> Bottomline: Don't set feastol too small.
>
> Stefan
>
> On 05/27/2014 10:32 PM, Ramón Casero Cañas wrote:
>> Dear all,
>>
>> Sorry to bother you again, but a couple results more that I don't
>> understand.
>>
>> With the attached model, in scip-3.1.0.linux.x86_64.gnu.opt.spx with
>> parameters
>>
>> set limits time 300
>> set limits solutions 1
>> set numerics feastol 1.0037e-10
>>
>> I get a solution within 2.4 sec, but with the message
>>
>>    2.4s|     1 |     0 | 32458 |     - |2458k|   0 |   0 | 139 | 205
>> | 139
>> |1703 |1669 |   0 |   0 |-2.225883e+04 |-2.049845e+04 |   8.59%
>>    2.4s|     1 |     1 | 32458 |     - |2458k|   0 |   0 | 139 | 205
>> | 139
>> |1703 |1669 |   0 |   0 |-2.225883e+04 |-2.049845e+04 |   8.59%
>>
>> SCIP Status        : solving was interrupted [solution limit reached]
>> Solving Time (sec) : 2.41
>> Solving Nodes      : 1
>> Primal Bound       : -2.04984451262525e+04 (1 solutions)
>> Dual Bound         : -2.22588342256900e+04
>> Gap                : 8.59 %
>>    [linear] <c83>:  +0.0781485688398752<x91>[C]
>> +0.0698489436914697<y91>[C]
>> +0.0680134372629892<z91>[C] >= 2.50934406412487e-10;
>> violation: left hand side is violated by 2.50934366513847e-10
>> best solution is not feasible in original problem
>>
>>
>> This is not the same case as with the feasibility tolerance from
>> yesterday,
>> is it? If I write the solution to a file, it comes out as a perfectly
>> valid
>> solution.
>>
>>
>> ************************
>>
>> The second issue is that if I look at a constraint, e.g. c89, in the PIP
>> file that I'm providing,
>>
>> c89: -0.166666666666667 x88 y91 z41 + 0.166666666666667 x91 y88 z41 +
>> 0.166666666666667 x88 y41 z91 + -0.166666666666667 x41 y88 z91 +
>> -0.166666666666667 x91 y41 z88 + 0.166666666666667 x41 y91 z88 >=
>> 2.50934406412487e-10
>>
>> and after reading it in SCIP, using display problem, I see
>>
>>    [nonlinear] <c89>: ( -0.16666666666666699048 * <x88> * <y91> * <z41>
>> +0.16666666666666699048 * <x91> * <y88> * <z41>
>> +0.16666666666666699048 *
>> <x88> * <y41> * <z91> -0.16666666666666699048 * <x41> * <y88> * <z91>
>> -0.16666666666666699048 * <x91> * <y41> * <z88>
>> +0.16666666666666699048 *
>> <x41> * <y91> * <z88>) >= 2.50934406412487e-10;
>>
>>
>> I thought that if I provide the scalar
>>
>> -0.166666666666667
>>
>> and the internal representation has more precision, I'd get
>>
>> -0.16666666666666700000
>>
>> instead of
>>
>> -0.16666666666666699048
>>
>> Is this also to be expected?
>>
>> Best regards,
>>
>> Ramon.
>>
>>
>>
>> _______________________________________________
>> Scip mailing list
>> 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