Description
This model checks if Cmex creates an error as expected when dealing with cone equations. The errors we want to get are: - RHS for =C= has to be 0.0 - =C= equations cannot be scaled - Variables with =C= entries have to be continous - Variable enters more than one =C= equation Contributor: Lutz Westermann
Small Model of Type : GAMS
Category : GAMS Test library
Main file : cerr1.gms
$title Cone Equation Errors (cerr1,SEQ=495)
$onText
This model checks if Cmex creates an error as expected when dealing with cone
equations. The errors we want to get are:
- RHS for =C= has to be 0.0
- =C= equations cannot be scaled
- Variables with =C= entries have to be continous
- Variable enters more than one =C= equation
Contributor: Lutz Westermann
$offText
$onEcho > err.gms
set n / n1*n4 /;
parameter d(n), l(n), u(n);
d(n) = uniform(1,2);
l(n) = uniform(0.1,10);
u(n) = l(n) + uniform(0,12-l(n));
Variables x(n);
x.l(n) = uniform(l(n), u(n));
x.lo(n) = l(n);
x.up(n) = u(n);
Variables t(n), z(n), obj;
Equations defobjc, cone(n);
defobjc.. sum(n, d(n)*t(n)) =e= obj;
cone(n).. x(n) + t(n) =c= z(n) + 1;
model clp /all/;
solve clp min obj using lp;
$offEcho
$call =gams err.gms lo=%GAMS.lo% lp=mosek
$if not errorlevel 1 $abort should get error because of RHS <> 0
$onEcho > err.gms
set n / n1*n4 /;
parameter d(n), l(n), u(n);
d(n) = uniform(1,2);
l(n) = uniform(0.1,10);
u(n) = l(n) + uniform(0,12-l(n));
Variables x(n);
x.l(n) = uniform(l(n), u(n));
x.lo(n) = l(n);
x.up(n) = u(n);
Variables t(n), z(n), obj;
Equations defobjc, cone(n);
defobjc.. sum(n, d(n)*t(n)) =e= obj;
cone(n).. x(n) + t(n) =c= z(n);
model clp /all/;
cone.scale(n) = 2;
solve clp min obj using lp;
$offEcho
$call =gams err.gms lo=%GAMS.lo% lp=mosek
$if not errorlevel 1 $abort should get error because of scaling
$onEcho > err.gms
set n / n1*n4 /;
parameter d(n), l(n), u(n);
d(n) = uniform(1,2);
l(n) = uniform(0.1,10);
u(n) = l(n) + uniform(0,12-l(n));
Variables x(n);
x.l(n) = uniform(l(n), u(n));
x.lo(n) = l(n);
x.up(n) = u(n);
Variables t(n), z(n), obj;
Integer Variables t;
Equations defobjc, cone(n);
defobjc.. sum(n, d(n)*t(n)) =e= obj;
cone(n).. x(n) + t(n) =c= z(n);
model clp /all/;
solve clp min obj using mip;
$offEcho
$call =gams err.gms lo=%GAMS.lo% mip=mosek
$if not errorlevel 1 $abort should get error because of integer variables
$onEcho > err.gms
set n / n1*n4 /;
parameter d(n), l(n), u(n);
d(n) = uniform(1,2);
l(n) = uniform(0.1,10);
u(n) = l(n) + uniform(0,12-l(n));
Variables x(n);
x.l(n) = uniform(l(n), u(n));
x.lo(n) = l(n);
x.up(n) = u(n);
Variables t(n), z(n), obj;
Equations defobjc, cone(n), cone2(n);
defobjc .. sum(n, d(n)*t(n)) =e= obj;
cone(n) .. x(n) + t(n) =c= z(n);
cone2(n).. x(n) + t(n) =c= z(n);
model clp /all/;
solve clp min obj using lp;
$offEcho
$call =gams err.gms lo=%GAMS.lo% lp=mosek
$if not errorlevel 1 $abort should get error because of variables in more than one =c= equation