$title Empty Row Test (EMPTY2,SEQ=801) $onText With some effort GAMS produces a model instance with an empty row (no variables). The solver should still digest such a model instance and report infeasible. In a second instance the empty row is only slightly infeasible (rhs 1e-12) and the model should be declared optimal. Contributor: M. Bussieck, July 2019 $offText Set i 'canning plants' / seattle, san-diego / j 'markets' / new-york, chicago, topeka /; Parameter a(i) 'capacity of plant i in cases' / seattle 350 san-diego 600 / b(j) 'demand at market j in cases' / new-york 325 chicago 300 topeka 275 /; Table d(i,j) 'distance in thousands of miles' new-york chicago topeka seattle 2.5 1.7 1.8 san-diego 2.5 1.8 1.4; Scalar f 'freight in dollars per case per thousand miles' / 90 /; Parameter c(i,j) 'transport cost in thousands of dollars per case'; c(i,j) = f*d(i,j)/1000; Variable x(i,j) 'shipment quantities in cases' z 'total transportation costs in thousands of dollars'; Positive Variable x; Equation cost 'define objective function' supply(i) 'observe supply limit at plant i' demand(j) 'satisfy demand at market j'; cost.. z =e= sum((i,j), c(i,j)*x(i,j)); supply(i).. sum(j, x(i,j)) =l= a(i); demand(j).. sum(i, x(i,j)) =g= b(j); scalar rhs; equation dummy; dummy.. 0 =e= rhs; Model transport / all /; MaxExecError = 1; option sys12 = 1; rhs = 1; solve transport using lp minimizing z; abort$(transport.modelstat<>%modelStat.infeasible% and transport.modelstat<>%modelStat.infeasibleNoSolution%) 'modelstatus not infeasible', transport.modelstat; * Clear execError from previous model generation execError = 0; rhs = 1e-12; solve transport using lp minimizing z; abort$(transport.modelstat<>%modelStat.optimal% and transport.modelstat<>%modelStat.infeasible% and transport.modelstat<>%modelStat.infeasibleNoSolution%) 'modelstatus not optimal or infeasible', transport.modelstat;