[SCIP] Unexpected behavior

Lorenzo Gentile lorenzo.gentile at moxoff.com
Wed Jan 13 16:12:09 CET 2016


Hello,

I'm a new user on SCIP, and  interested in solving a non linear constrained
optimization problem. I would like to understand why SCIP seems to return a
wrong result if applied to a simplified optimization problem whose solution
is known a priori.

Here is my first formulation:

var y real >= 0;
var x real >= 0 <= 10;
var s integer >= 0 <= 9;
var z binary;

subto c1: y <= (1-exp(-x))*(1-z)+(1-exp(-(x-s))+1-exp(-s))*z;
subto c2: s*z <= x;
subto c3: x <= 10*z + s*(1-z);

maximize obj: y;

In this case I obtain what I expect (y almost equal to 2):

objective value:                     1.98652410600183
z                                                   1 (obj:0)
s                                                   5 (obj:0)
y                                    1.98652410600183 (obj:1)
x                                                  10 (obj:0)
@@c1_1_t_0                                         -5 (obj:0)
@@c1_1_r_1                        0.00673794699908548 (obj:0)
@@c1_1_t_2                                         -5 (obj:0)
@@c1_1_r_3                        0.00673794699908546 (obj:0)
@@c1_1_t_4                                        -10 (obj:0)
@@c1_1_r_5                       4.43999297170849e-05 (obj:0)
prodt_z_t_s_c2_1                                    5 (obj:0)
prodt_z_t_s_c3_1                                    5 (obj:0)
nlreform0                                          -5 (obj:0)

Now, If I enlarge the admissible region by writing 'var s integer >= 0 <=
10;' (and keeping everything else unchanged), I obtain a worse solution (y
almost equal to 1):

objective value:                    0.999955600070283
s                                                  10 (obj:0)
y                                   0.999955600070283 (obj:1)
x                                                  10 (obj:0)
@@c1_1_r_1                                          1 (obj:0)
@@c1_1_t_2                                        -10 (obj:0)
@@c1_1_r_3                       4.53999297624415e-05 (obj:0)
@@c1_1_t_4                                        -10 (obj:0)
@@c1_1_r_5                       4.43999297170849e-05 (obj:0)

The solution found with the first formulation is still admissible, it is
better (higher y value) but it is not returned by the second formulation.

Finally, if I write 'var s real >= 0 <= 10;'(and keeping everything else
unchanged), SCIP returns again what I expect (y almost equal to 2):

objective value:                     1.98652491319583
z                                                   1 (obj:0)
x                                                  10 (obj:0)
s                                    5.00321312966099 (obj:0)
y                                    1.98652491319583 (obj:1)
@@c1_1_t_0                          -4.99678687033901 (obj:0)
@@c1_1_r_1                        0.00675919526185386 (obj:0)
@@c1_1_t_2                          -5.00321312966099 (obj:0)
@@c1_1_r_3                         0.0067158915423183 (obj:0)
@@c1_1_t_4                                        -10 (obj:0)
@@c1_1_r_5                       4.43999297170849e-05 (obj:0)
prodt_z_t_@@c1_1_t_2_c2_1            5.00321312966099 (obj:0)
prodt_z_t_@@c1_1_t_2_c3_1            5.00321312966099 (obj:0)
nlreform0                           -4.99678687033901 (obj:0)

Can you please explain me the reason of this unexpected behavior and, if
possible, tell me which part of the code is called by these formulations.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20160113/f1fb34ef/attachment.html>


More information about the Scip mailing list