$title Matrix Errors (merr1,SEQ=496) $onText This model checks if Cmex creates an matrix error as expected. The errors we want to get are: - fixed variables have to have finite bounds - illegal level value - lower bound > upper bound - bounds on discrete variables have to be integer - binary variable need lower bound of zero or one - binary variable needs upper bound of zero or one - semicont/semiint require lower bound >= 0 - illegal value (PRIOR) Contributor: Lutz Westermann $offText $onEcho > err.gms Variables x,z; x.fx = +inf; Equations obj; obj.. z =e= x; model m /all/; solve m min z using lp; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of fixed variables without finite bounds $onEcho > err.gms Variables x,z; x.l = +inf; Equations obj; obj.. z =e= x; model m /all/; solve m min z using lp; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of variable level with special value $onEcho > err.gms Variables x,z; x.lo = 2; x.up = 1; Equations obj; obj.. z =e= x; model m /all/; solve m min z using lp; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of lower bound > upper bound $onEcho > err.gms Variables x,z; integer variable x; x.lo = 1.1; x.up = 2.2; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of non integer bounds on discrete variables $onEcho > err.gms Variables x,z; binary variable x; x.lo = -1; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of lower bound on binary variable <> 0/1 $onEcho > err.gms Variables x,z; binary variable x; x.up = 2; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of upper bound on binary variable <> 0/1 $onEcho > err.gms Variables x,y,z; semiint variable x; semicont variable y; x.lo = -2; y.lo = -1; Equations obj; obj.. z =e= x + y; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of negative lower bound on semiint/semicont variable $onEcho > err.gms Variables x,z; integer variable x; x.prior = -inf; Equations obj; obj.. z =e= x; model m /all/; m.prioropt = 1; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of special value for priority * The following tests make sure, that tests are also performed as expected for fixed variables $onEcho > err.gms Variables x,z; integer variable x; x.fx = 1.1; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of discrete variables fixed at non integer value $onEcho > err.gms Variables x,z; binary variable x; x.lo = 1; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; x.fx=0; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if errorlevel 1 $abort Fixing a binary variable should be fine $onEcho > err.gms Variables x,z; binary variable x; x.fx = 2; Equations obj; obj.. z =e= x; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of binary variable fixed <> 0/1 $onEcho > err.gms Variables x,y,z; semiint variable x; semicont variable y; x.fx = -2; y.fx = -1; Equations obj; obj.. z =e= x + y; model m /all/; solve m min z using mip; $offEcho $call =gams err.gms lo=%GAMS.lo% $if not errorlevel 1 $abort should get error because of semiint/semicont variable fixed at negative value