$title 'CONVERT test suite - Basic test of convert output' (CONVERT2,SEQ=212) * This tests the basic convert file formats using the * good old trnsport model and the 'all' (most) files option. $onDollar $set ide ide=%gams.ide% lo=%gams.lo% $call gamslib -q trnsport $onEcho > convert.opt all filelist $offEcho $call gams trnsport.gms optfile=1 lp=convert %ide% $onEcho > ampl_mod # LP written by GAMS Convert # # Equation counts # Total E G L N X C B # 5 0 3 2 0 0 0 0 # # Variable counts # x b i s1s s2s sc si # Total cont binary integer sos1 sos2 scont sint # 6 6 0 0 0 0 0 0 # FX 0 # # Nonzero counts # Total const NL # 12 12 0 # # Reformulation has removed 1 variable and 1 equation var x1 >= 0; var x2 >= 0; var x3 >= 0; var x4 >= 0; var x5 >= 0; var x6 >= 0; minimize obj: 0.225 * x1 + 0.153 * x2 + 0.162 * x3 + 0.225 * x4 + 0.162 * x5 + 0.126 * x6; subject to e1: x1 + x2 + x3 <= 350; e2: x4 + x5 + x6 <= 600; e3: x1 + x4 >= 325; e4: x2 + x5 >= 300; e5: x3 + x6 >= 275; $offEcho * $call =diff -b -I "LP written by GAMS" ampl_mod ampl.mod $call grep -v "LP written by GAMS" ampl_mod > ampl.mod.want $call grep -v "LP written by GAMS" ampl.mod > ampl.mod.got $call =diff -b ampl.mod.want ampl.mod.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > cplex_lp \ LP written by GAMS Convert \ \ Equation counts \ Total E G L N X C B \ 6 1 3 2 0 0 0 0 \ \ Variable counts \ x b i s1s s2s sc si \ Total cont binary integer sos1 sos2 scont sint \ 7 7 0 0 0 0 0 0 \ FX 0 \ \ Nonzero counts \ Total const NL \ 19 19 0 Minimize obj: x7 Subject To e1: -0.225 x1 - 0.153 x2 - 0.162 x3 - 0.225 x4 - 0.162 x5 - 0.126 x6 + x7 = 0 e2: x1 + x2 + x3 <= 350 e3: x4 + x5 + x6 <= 600 e4: x1 + x4 >= 325 e5: x2 + x5 >= 300 e6: x3 + x6 >= 275 Bounds x7 Free End $offEcho $call grep -v "LP written by GAMS" cplex_lp > cplex.lp.want $call grep -v "LP written by GAMS" cplex.lp > cplex.lp.got $call =diff -b cplex.lp.want cplex.lp.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > cplex_mps * LP written by GAMS Convert * * Equation counts * Total E G L N X C B * 6 1 3 2 0 0 0 0 * * Variable counts * x b i s1s s2s sc si * Total cont binary integer sos1 sos2 scont sint * 7 7 0 0 0 0 0 0 * FX 0 * * Nonzero counts * Total const NL * 19 19 0 NAME Convert OBJSENSE MIN ROWS N obj E e1 L e2 L e3 G e4 G e5 G e6 COLUMNS x1 e1 -0.225 x1 e2 1 x1 e4 1 x2 e1 -0.153 x2 e2 1 x2 e5 1 x3 e1 -0.162 x3 e2 1 x3 e6 1 x4 e1 -0.225 x4 e3 1 x4 e4 1 x5 e1 -0.162 x5 e3 1 x5 e5 1 x6 e1 -0.126 x6 e3 1 x6 e6 1 x7 obj 1 x7 e1 1 RHS rhs e2 350 rhs e3 600 rhs e4 325 rhs e5 300 rhs e6 275 BOUNDS FR bnd x7 ENDATA $offEcho $call grep -v "LP written by GAMS" cplex_mps > cplex.mps.want $call grep -v "LP written by GAMS" cplex.mps > cplex.mps.got $call =diff -b cplex.mps.want cplex.mps.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > fixed_mps * LP written by GAMS Convert * * Equation counts * Total E G L N X C B * 6 1 3 2 0 0 0 0 * * Variable counts * x b i s1s s2s sc si * Total cont binary integer sos1 sos2 scont sint * 7 7 0 0 0 0 0 0 * FX 0 * * Nonzero counts * Total const NL * 19 19 0 NAME Convert * * original model was minimizing * ROWS N obj E e1 L e2 L e3 G e4 G e5 G e6 COLUMNS x1 e1 -0.225 x1 e2 1 x1 e4 1 x2 e1 -0.153 x2 e2 1 x2 e5 1 x3 e1 -0.162 x3 e2 1 x3 e6 1 x4 e1 -0.225 x4 e3 1 x4 e4 1 x5 e1 -0.162 x5 e3 1 x5 e5 1 x6 e1 -0.126 x6 e3 1 x6 e6 1 x7 obj 1 x7 e1 1 RHS rhs e2 350 rhs e3 600 rhs e4 325 rhs e5 300 rhs e6 275 BOUNDS FR bnd x7 ENDATA $offEcho $call grep -v "LP written by GAMS" fixed_mps > fixed.mps.want $call grep -v "LP written by GAMS" fixed.mps > fixed.mps.got $call =diff -b fixed.mps.want fixed.mps.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > gams_gms * LP written by GAMS Convert * * Equation counts * Total E G L N X C B * 6 1 3 2 0 0 0 0 * * Variable counts * x b i s1s s2s sc si * Total cont binary integer sos1 sos2 scont sint * 7 7 0 0 0 0 0 0 * FX 0 * * Nonzero counts * Total const NL * 19 19 0 * Solve m using LP minimizing x7; Variables x1,x2,x3,x4,x5,x6,x7; Positive Variables x1,x2,x3,x4,x5,x6; Equations e1,e2,e3,e4,e5,e6; e1.. -0.225 * x1 - 0.153 * x2 - 0.162 * x3 - 0.225 * x4 - 0.162 * x5 - 0.126 * x6 + x7 =E= 0; e2.. x1 + x2 + x3 =L= 350; e3.. x4 + x5 + x6 =L= 600; e4.. x1 + x4 =G= 325; e5.. x2 + x5 =G= 300; e6.. x3 + x6 =G= 275; Model m / all /; m.limrow = 0; m.limcol = 0; Solve m using LP minimizing x7; $offEcho $call grep -v "LP written by GAMS" gams_gms > gams.gms.want $call grep -v "LP written by GAMS" gams.gms > gams.gms.got $call =diff -b gams.gms.want gams.gms.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > lingo_lng ! LP written by GAMS Convert ! ! Equation counts ! Total E G L N X C B ! 5 0 3 2 0 0 0 0 ! ! Variable counts ! x b i s1s s2s sc si ! Total cont binary integer sos1 sos2 scont sint ! 6 6 0 0 0 0 0 0 ! FX 0 ! ! Nonzero counts ! Total const NL ! 12 12 0 ! ! Reformulation has removed 1 variable and 1 equation ! ; MODEL: [Obj] MIN = 0.225 * x1 + 0.153 * x2 + 0.162 * x3 + 0.225 * x4 + 0.162 * x5 + 0.126 * x6; [e1] x1 + x2 + x3 <= 350; [e2] x4 + x5 + x6 <= 600; [e3] x1 + x4 >= 325; [e4] x2 + x5 >= 300; [e5] x3 + x6 >= 275; END $offEcho $call grep -v "LP written by GAMS" lingo_lng > lingo.lng.want $call grep -v "LP written by GAMS" lingo.lng > lingo.lng.got $call =diff -b lingo.lng.want lingo.lng.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > dict_txt LP written by GAMS Convert Equation counts Total E G L N X C B 6 1 3 2 0 0 0 0 Variable counts x b i s1s s2s sc si Total cont binary integer sos1 sos2 scont sint 7 7 0 0 0 0 0 0 FX 0 Nonzero counts Total const NL 19 19 0 Equations 1 to 6 e1 cost e2 supply(seattle) e3 supply(san-diego) e4 demand(new-york) e5 demand(chicago) e6 demand(topeka) Variables 1 to 7 x1 x(seattle,new-york) x2 x(seattle,chicago) x3 x(seattle,topeka) x4 x(san-diego,new-york) x5 x(san-diego,chicago) x6 x(san-diego,topeka) x7 z $offEcho $call grep -v "LP written by GAMS" dict_txt > dict.txt.want $call grep -v "LP written by GAMS" dict.txt > dict.txt.got $call =diff -b dict.txt.want dict.txt.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > files_txt ampl.mod ampl.nl cplex.lp cplex.mps dict.txt dictmap.gdx dump.gdx fixed.mps gams.gms jump.jl lingo.lng osil.xml pyomo.py files.txt $offEcho $call grep -v "LP written by GAMS" files_txt > files.txt.want $call grep -v "LP written by GAMS" files.txt > files.txt.got $call =diff -b files.txt.want files.txt.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > jump_jl # LP written by GAMS Convert # # Equation counts # Total E G L N X C B # 5 0 3 2 0 0 0 0 # # Variable counts # x b i s1s s2s sc si # Total cont binary integer sos1 sos2 scont sint # 6 6 0 0 0 0 0 0 # FX 0 # # Nonzero counts # Total const NL # 12 12 0 # # Reformulation has removed 1 variable and 1 equation using JuMP using MathOptInterface const MOI = MathOptInterface model = m = Model() @variable(m, 0 <= x1, start=0) @variable(m, 0 <= x2, start=0) @variable(m, 0 <= x3, start=0) @variable(m, 0 <= x4, start=0) @variable(m, 0 <= x5, start=0) @variable(m, 0 <= x6, start=0) @objective(m, Min, 0.225 * x1 + 0.153 * x2 + 0.162 * x3 + 0.225 * x4 + 0.162 * x5 + 0.126 * x6) @constraint(m, e1, x1 + x2 + x3 <= 350) @constraint(m, e2, x4 + x5 + x6 <= 600) @constraint(m, e3, x1 + x4 >= 325) @constraint(m, e4, x2 + x5 >= 300) @constraint(m, e5, x3 + x6 >= 275) $offEcho $call grep -v "LP written by GAMS" jump_jl > jump.jl.want $call grep -v "LP written by GAMS" jump.jl > jump.jl.got $call =diff -b jump.jl.want jump.jl.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel% $onEcho > pyomo_py # LP written by GAMS Convert # # Equation counts # Total E G L N X C B # 5 0 3 2 0 0 0 0 # # Variable counts # x b i s1s s2s sc si # Total cont binary integer sos1 sos2 scont sint # 6 6 0 0 0 0 0 0 # FX 0 # # Nonzero counts # Total const NL # 12 12 0 # # Reformulation has removed 1 variable and 1 equation from pyomo.environ import * model = m = ConcreteModel() m.x1 = Var(within=Reals, bounds=(0,None), initialize=0) m.x2 = Var(within=Reals, bounds=(0,None), initialize=0) m.x3 = Var(within=Reals, bounds=(0,None), initialize=0) m.x4 = Var(within=Reals, bounds=(0,None), initialize=0) m.x5 = Var(within=Reals, bounds=(0,None), initialize=0) m.x6 = Var(within=Reals, bounds=(0,None), initialize=0) m.obj = Objective(sense=minimize, expr= 0.225 * m.x1 + 0.153 * m.x2 + 0.162 * m.x3 + 0.225 * m.x4 + 0.162 * m.x5 + 0.126 * m.x6) m.e1 = Constraint(expr= m.x1 + m.x2 + m.x3 <= 350) m.e2 = Constraint(expr= m.x4 + m.x5 + m.x6 <= 600) m.e3 = Constraint(expr= m.x1 + m.x4 >= 325) m.e4 = Constraint(expr= m.x2 + m.x5 >= 300) m.e5 = Constraint(expr= m.x3 + m.x6 >= 275) $offEcho $call grep -v "LP written by GAMS" pyomo_py > pyomo.py.want $call grep -v "LP written by GAMS" pyomo.py > pyomo.py.got $call =diff -b pyomo.py.want pyomo.py.got $if NOT errorlevel 0 $error errorlevel not 0 but is %system.errorlevel% $if errorlevel 1 $error errorlevel not 0 but is %system.errorlevel%