Description
This test is based on bug report send by Silvia Tomasi. The disjunctive program to solve is minimize x such that (A1 or (x=0)) and (not A2 or not (x <= 3)) and (not A1 or A2) An optimal solution is x = 0: A1 = false, A2 = false, (x=0) = true, (x<=3) = true. Contributor: Stefan Vigerske, November 2012
Small Model of Type : GAMS
Category : GAMS Test library
Main file : empdisj6.gms
$title Test disjunctions using negated equality equations (EMPDISJ6, SEQ=581)
$onText
This test is based on bug report send by Silvia Tomasi.
The disjunctive program to solve is
minimize x
such that (A1 or (x=0)) and
(not A2 or not (x <= 3)) and
(not A1 or A2)
An optimal solution is x = 0:
A1 = false, A2 = false, (x=0) = true, (x<=3) = true.
Contributor: Stefan Vigerske, November 2012
$offText
$if not set TESTTOL $set TESTTOL 1e-6
variables z, x;
binary variables A1, A2, A3, A4;
equations e0, e1, e2, e3, e4;
e0.. z =e= x;
e1.. A1 =e= 1;
e2.. A2 =e= 1;
e3.. x =e= 0;
e4.. x =l= 3;
model m / all /;
option optcr = 0;
set forms / bigm, indic /;
file empinfo / '%emp.info%' /;
loop(forms,
put empinfo;
put 'default ' forms.tl /;
put 'disjunction * e1 else e3' /;
put 'disjunction * Not e2 else Not e4' /;
put 'disjunction * Not e1 else e2';
putclose;
solve m us emp min z;
abort$(abs(z.l) > %TESTTOL%) "wrong optimal value, expected 0"
abort$(abs(x.l) > %TESTTOL%) "wrong solution value for x, expected 0"
);