Description
This tests that the various MPS sections are converted correctly into GDX files. Contributor: Stefan Vigerske, March 2022
Small Model of Type : GAMS
Category : GAMS Test library
Main file : mps2gms2.gms
$title 'MPS2GMS test suite - Test MPS sections'
* This tests that the various MPS sections are converted correctly into
* GDX files.
*
* Contributor: Stefan Vigerske, March 2022
$onCheckErrorLevel
* ============================================================ qp_matrix
$onEcho > %gams.scrdir%qp_qmatrix.mps
NAME Convert
OBJSENSE
MAX
ROWS
N obj
COLUMNS
x1 obj 1
x2 obj 1
RHS
BOUNDS
LO bnd x1 0
UP bnd x1 2
LO bnd x2 0
UP bnd x2 4
QMATRIX
x1 x1 2
x1 x2 2
x2 x1 2
x2 x2 2
ENDATA
$offEcho
$onEcho > %gams.scrdir%qp_qmatrix.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order / /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 1,
'x2' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x1' 2,
' xc'.'x2'.' xc'.'x1' 4,
' xc'.'x2'.' xc'.'x2' 2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2,
'x2'.UP 4 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_j' 2,
'set_jc' 2,
'par_c' 2 /;
$offEmpty
$offEcho
$call =gzip "%gams.scrdir%qp_qmatrix.mps"
$call mps2gms "%gams.scrdir%qp_qmatrix.mps.gz" > mps2gms.log
$call gdxdump "%gams.scrdir%qp_qmatrix.gdx" > "%gams.scrdir%qp_qmatrix.gdx.got"
$call =diff -b "%gams.scrdir%qp_qmatrix.gdx.want" "%gams.scrdir%qp_qmatrix.gdx.got"
$call =rm "%gams.scrdir%qp_qmatrix.mps.gz" "%gams.scrdir%qp_qmatrix.gms" "%gams.scrdir%qp_qmatrix.gdx"
$call =rm "%gams.scrdir%qp_qmatrix.gdx.got" "%gams.scrdir%qp_qmatrix.gdx.want"
* =========================================================== qp_quadobj
$onEcho > %gams.scrdir%qp_quadobj.mps
NAME Convert
OBJSENSE
MAX
ROWS
N obj
COLUMNS
x1 obj 1
x2 obj 1
RHS
BOUNDS
LO bnd x1 0
UP bnd x1 2
LO bnd x2 0
UP bnd x2 4
QUADOBJ
x1 x1 2
x1 x2 2
x2 x2 2
ENDATA
$offEcho
$onEcho > %gams.scrdir%qp_quadobj.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order / /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 1,
'x2' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x1' 2,
' xc'.'x2'.' xc'.'x1' 4,
' xc'.'x2'.' xc'.'x2' 2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2,
'x2'.UP 4 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_j' 2,
'set_jc' 2,
'par_c' 2 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%qp_quadobj.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%qp_quadobj.gdx" > "%gams.scrdir%qp_quadobj.gdx.got"
$call =diff -b "%gams.scrdir%qp_quadobj.gdx.want" "%gams.scrdir%qp_quadobj.gdx.got"
$call =rm "%gams.scrdir%qp_quadobj.mps" "%gams.scrdir%qp_quadobj.gms" "%gams.scrdir%qp_quadobj.gdx"
$call =rm "%gams.scrdir%qp_quadobj.gdx.got" "%gams.scrdir%qp_quadobj.gdx.want"
* ========================================================= qcp_qcmatrix
$onEcho > %gams.scrdir%qcp_qcmatrix.mps
NAME Convert
ROWS
N obj
E e1
COLUMNS
x1 e1 -1
x2 e1 -1
x3 obj -1
x3 e1 1
RHS
BOUNDS
UP bnd x1 2
UP bnd x2 4
FR bnd x3
QCMATRIX e1
x1 x1 -2
x1 x2 -2
x2 x1 -2
x2 x2 -2
ENDATA
$offEcho
$onEcho > %gams.scrdir%qcp_qcmatrix.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1' /;
Set ei(*,*) equ type mapping /
' ee'.'e1' /;
Set ie(*) equality rows /
'e1' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x3' -1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e1'.'x1' -1,
'e1'.'x2' -1,
'e1'.'x3' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks /
' ee'.'e1'.' xc'.'x1'.' xc'.'x1' -2,
' ee'.'e1'.' xc'.'x2'.' xc'.'x1' -4,
' ee'.'e1'.' xc'.'x2'.' xc'.'x2' -2 /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2,
'x2'.UP 4,
'x3'.LO -Inf /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_ie' 1,
'set_j' 3,
'set_jc' 3,
'par_c' 1,
'par_ac' 3 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%qcp_qcmatrix.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%qcp_qcmatrix.gdx" > "%gams.scrdir%qcp_qcmatrix.gdx.got"
$call =diff -b "%gams.scrdir%qcp_qcmatrix.gdx.want" "%gams.scrdir%qcp_qcmatrix.gdx.got"
$call =rm "%gams.scrdir%qcp_qcmatrix.mps" "%gams.scrdir%qcp_qcmatrix.gms" "%gams.scrdir%qcp_qcmatrix.gdx"
$call =rm "%gams.scrdir%qcp_qcmatrix.gdx.got" "%gams.scrdir%qcp_qcmatrix.gdx.want"
* ========================================================= qcp_qsection
$onEcho > %gams.scrdir%qcp_qsection.mps
NAME Convert
ROWS
N obj
E e1
COLUMNS
x1 e1 -1
x2 e1 -1
x3 obj -1
x3 e1 1
RHS
BOUNDS
UP bnd x1 2
UP bnd x2 4
FR bnd x3
QSECTION e1
x1 x1 -2
x1 x2 -2
x2 x2 -2
ENDATA
$offEcho
$onEcho > %gams.scrdir%qcp_qsection.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1' /;
Set ei(*,*) equ type mapping /
' ee'.'e1' /;
Set ie(*) equality rows /
'e1' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x3' -1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e1'.'x1' -1,
'e1'.'x2' -1,
'e1'.'x3' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks /
' ee'.'e1'.' xc'.'x1'.' xc'.'x1' -2,
' ee'.'e1'.' xc'.'x2'.' xc'.'x1' -4,
' ee'.'e1'.' xc'.'x2'.' xc'.'x2' -2 /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2,
'x2'.UP 4,
'x3'.LO -Inf /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_ie' 1,
'set_j' 3,
'set_jc' 3,
'par_c' 1,
'par_ac' 3 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%qcp_qsection.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%qcp_qsection.gdx" > "%gams.scrdir%qcp_qsection.gdx.got"
$call =diff -b "%gams.scrdir%qcp_qsection.gdx.want" "%gams.scrdir%qcp_qsection.gdx.got"
$call =rm "%gams.scrdir%qcp_qsection.mps" "%gams.scrdir%qcp_qsection.gms" "%gams.scrdir%qcp_qsection.gdx"
$call =rm "%gams.scrdir%qcp_qsection.gdx.got" "%gams.scrdir%qcp_qsection.gdx.want"
* ================================================================ sos1a
$onEcho > %gams.scrdir%sos1a.mps
NAME gamsmodel
ROWS
N _obj
L xsum
COLUMNS
x(1) _obj -0.9
x(1) xsum 1
x(2) _obj -1
x(2) xsum 1
x(3) _obj -1.1
x(3) xsum 1
constobj _obj -1
RHS
rhs xsum 1
BOUNDS
UP bnd x(1) 0.8
UP bnd x(2) 0.6
UP bnd x(3) 0.6
FX bnd constobj 0
SOS
S1 s1
x(1) 1
x(2) 2
x(3) 3
ENDATA
$offEcho
$onEcho > %gams.scrdir%sos1a.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'xsum' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows /
'xsum' /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x(1)',
'x(2)',
'x(3)',
'constobj' /;
Set s(*) SOS sets /
's1' /;
Set jc(*) continuous columns /
'constobj' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns /
's1'.'x(1)',
's1'.'x(2)',
's1'.'x(3)' /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping /
'x(1)'.'s1',
'x(2)'.'s1',
'x(3)'.'s1' /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x(1)' -0.9,
'x(2)' -1,
'x(3)' -1.1,
'constobj' -1 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 /
'xsum'.'s1'.'x(1)' 1,
'xsum'.'s1'.'x(2)' 1,
'xsum'.'s1'.'x(3)' 1 /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'xsum' 1 /;
positive Variable xc(*) continuous variables /
'constobj'.UP 0 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables /
's1'.'x(1)'.UP 0.8,
's1'.'x(2)'.UP 0.6,
's1'.'x(3)'.UP 0.6 /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_il' 1,
'set_j' 4,
'set_s' 1,
'set_jc' 1,
'set_js1' 3,
'par_c' 4,
'par_b' 1,
'par_as1' 3 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%sos1a.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%sos1a.gdx" > "%gams.scrdir%sos1a.gdx.got"
$call =diff -b "%gams.scrdir%sos1a.gdx.want" "%gams.scrdir%sos1a.gdx.got"
$call =rm "%gams.scrdir%sos1a.mps" "%gams.scrdir%sos1a.gms" "%gams.scrdir%sos1a.gdx"
$call =rm "%gams.scrdir%sos1a.gdx.got" "%gams.scrdir%sos1a.gdx.want"
* ================================================================ sos2a
$onEcho > %gams.scrdir%sos2a.mps
NAME gamsmodel
ROWS
N _obj
E wsum
E xdef
E fxdef
G defwLo
G gapplus
G gapminus
COLUMNS
w(1) wsum -1
w(1) xdef -1
w(1) fxdef -1
w(1) defwLo 1
w(2) wsum -1
w(2) xdef -2
w(2) fxdef -2
w(3) wsum -1
w(3) xdef -3
w(3) fxdef -3
fplus _obj 1
fplus gapplus 1
fminus _obj 1
fminus gapminus 1
x xdef 1
fx fxdef 1
fx gapplus -1
fx gapminus 1
constobj _obj 1
RHS
rhs wsum -1
rhs defwLo 0.8
rhs gapplus -1.3
rhs gapminus 1.3
BOUNDS
FR bnd x
FR bnd fx
FX bnd constobj 0
SOS
S2 s1
w(1) 1
w(2) 2
w(3) 3
ENDATA
$offEcho
$onEcho > %gams.scrdir%sos2a.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'wsum',
'xdef',
'fxdef',
'defwLo',
'gapplus',
'gapminus' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows /
'wsum',
'xdef',
'fxdef' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows /
'defwLo',
'gapplus',
'gapminus' /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'w(1)',
'w(2)',
'w(3)',
'fplus',
'fminus',
'x',
'fx',
'constobj' /;
Set s(*) SOS sets /
's1' /;
Set jc(*) continuous columns /
'fplus',
'fminus',
'x',
'fx',
'constobj' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns /
's1'.'w(1)',
's1'.'w(2)',
's1'.'w(3)' /;
Set js(*,*) SOS mapping /
'w(1)'.'s1',
'w(2)'.'s1',
'w(3)'.'s1' /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'fplus' 1,
'fminus' 1,
'constobj' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'xdef'.'x' 1,
'fxdef'.'fx' 1,
'gapplus'.'fplus' 1,
'gapplus'.'fx' -1,
'gapminus'.'fminus' 1,
'gapminus'.'fx' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 /
'wsum'.'s1'.'w(1)' -1,
'wsum'.'s1'.'w(2)' -1,
'wsum'.'s1'.'w(3)' -1,
'xdef'.'s1'.'w(1)' -1,
'xdef'.'s1'.'w(2)' -2,
'xdef'.'s1'.'w(3)' -3,
'fxdef'.'s1'.'w(1)' -1,
'fxdef'.'s1'.'w(2)' -2,
'fxdef'.'s1'.'w(3)' -3,
'defwLo'.'s1'.'w(1)' 1 /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'wsum' -1,
'defwLo' 0.8,
'gapplus' -1.3,
'gapminus' 1.3 /;
positive Variable xc(*) continuous variables /
'x'.LO -Inf,
'fx'.LO -Inf,
'constobj'.UP 0 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 6,
'set_ig' 3,
'set_ie' 3,
'set_j' 8,
'set_s' 1,
'set_jc' 5,
'set_js2' 3,
'par_c' 3,
'par_b' 4,
'par_ac' 6,
'par_as2' 10 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%sos2a.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%sos2a.gdx" > "%gams.scrdir%sos2a.gdx.got"
$call =diff -b "%gams.scrdir%sos2a.gdx.want" "%gams.scrdir%sos2a.gdx.got"
$call =rm "%gams.scrdir%sos2a.mps" "%gams.scrdir%sos2a.gms" "%gams.scrdir%sos2a.gdx"
$call =rm "%gams.scrdir%sos2a.gdx.got" "%gams.scrdir%sos2a.gdx.want"
* ============================================================ sos2a_xpr
$onEcho > %gams.scrdir%sos2a_xpr.mps
* Names escaped using: @
NAME m
ROWS
N __OBJ___
E R1
E R2
E R3
G R4
G R5
G R6
COLUMNS
C1 R1 -1
C1 R2 -1
C1 R3 -1
C1 R4 1
C2 R1 -1
C2 R2 -2
C2 R3 -2
C3 R1 -1
C3 R2 -3
C3 R3 -3
C4 __OBJ___ 1
C4 R5 1
C5 __OBJ___ 1
C5 R6 1
C6 R2 1
C7 R3 1
C7 R5 -1
C7 R6 1
SETS
S2 @_01
@_01 C1 1
@_01 C2 2
@_01 C3 3
RHS
RHS00001 R1 -1
RHS00001 R4 0.8
RHS00001 R5 -1.3
RHS00001 R6 1.3
BOUNDS
FR BND00001 C6
FR BND00001 C7
ENDATA
$offEcho
$onEcho > %gams.scrdir%sos2a_xpr.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'R1',
'R2',
'R3',
'R4',
'R5',
'R6' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows /
'R1',
'R2',
'R3' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows /
'R4',
'R5',
'R6' /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'C1',
'C2',
'C3',
'C4',
'C5',
'C6',
'C7' /;
Set s(*) SOS sets /
'@_01' /;
Set jc(*) continuous columns /
'C4',
'C5',
'C6',
'C7' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns /
'@_01'.'C1',
'@_01'.'C2',
'@_01'.'C3' /;
Set js(*,*) SOS mapping /
'C1'.'@_01',
'C2'.'@_01',
'C3'.'@_01' /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'C4' 1,
'C5' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'R2'.'C6' 1,
'R3'.'C7' 1,
'R5'.'C4' 1,
'R5'.'C7' -1,
'R6'.'C5' 1,
'R6'.'C7' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 /
'R1'.'@_01'.'C1' -1,
'R1'.'@_01'.'C2' -1,
'R1'.'@_01'.'C3' -1,
'R2'.'@_01'.'C1' -1,
'R2'.'@_01'.'C2' -2,
'R2'.'@_01'.'C3' -3,
'R3'.'@_01'.'C1' -1,
'R3'.'@_01'.'C2' -2,
'R3'.'@_01'.'C3' -3,
'R4'.'@_01'.'C1' 1 /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'R1' -1,
'R4' 0.8,
'R5' -1.3,
'R6' 1.3 /;
positive Variable xc(*) continuous variables /
'C6'.LO -Inf,
'C7'.LO -Inf /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 6,
'set_ig' 3,
'set_ie' 3,
'set_j' 7,
'set_s' 1,
'set_jc' 4,
'set_js2' 3,
'par_c' 2,
'par_b' 4,
'par_ac' 6,
'par_as2' 10 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%sos2a_xpr.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%sos2a_xpr.gdx" > "%gams.scrdir%sos2a_xpr.gdx.got"
$call =diff -b "%gams.scrdir%sos2a_xpr.gdx.want" "%gams.scrdir%sos2a_xpr.gdx.got"
$call =rm "%gams.scrdir%sos2a_xpr.mps" "%gams.scrdir%sos2a_xpr.gms" "%gams.scrdir%sos2a_xpr.gdx"
$call =rm "%gams.scrdir%sos2a_xpr.gdx.got" "%gams.scrdir%sos2a_xpr.gdx.want"
* ================================================================= cqo1
$onEcho > %gams.scrdir%cqo1.mps
NAME CQO1 EXAMPLE
OBJSENSE
MIN
ROWS
N obj
E c1
COLUMNS
x1 obj 0.0
x1 c1 1.0
x2 obj 0.0
x2 c1 1.0
x3 obj 0.0
x3 c1 2.0
x4 obj 1.0
x5 obj 1.0
x6 obj 1.0
RHS
rhs c1 1.0
BOUNDS
FR bound x4
FR bound x5
FR bound x6
CSECTION k1 0.0 QUAD
x4
x1
x2
CSECTION k2 0.0 RQUAD
x5
x6
x3
ENDATA
$offEcho
$onEcho > %gams.scrdir%cqo1.gdx.want_noc
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'c1',
'k1',
'k2' /;
Set ei(*,*) equ type mapping /
' eg'.'k1',
' eg'.'k2' /;
Set ie(*) equality rows /
'c1' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows /
'k1',
'k2' /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3',
'x4',
'x5',
'x6' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3',
'x4',
'x5',
'x6' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x4' 1,
'x5' 1,
'x6' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'c1'.'x1' 1,
'c1'.'x2' 1,
'c1'.'x3' 2 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks /
' eg'.'k1'.' xc'.'x1'.' xc'.'x1' -2,
' eg'.'k1'.' xc'.'x2'.' xc'.'x2' -2,
' eg'.'k1'.' xc'.'x4'.' xc'.'x4' 2,
' eg'.'k2'.' xc'.'x3'.' xc'.'x3' -2,
' eg'.'k2'.' xc'.'x5'.' xc'.'x6' 4 /;
Parameter b(*) mps file RHS /
'c1' 1 /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 3,
'set_ig' 2,
'set_ie' 1,
'set_j' 6,
'set_jc' 6,
'par_c' 3,
'par_b' 1,
'par_ac' 3 /;
$offEmpty
$offEcho
$onEcho > %gams.scrdir%cqo1.gdx.want_withc
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'c1',
'k1',
'k2' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows /
'c1' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows /
'k1',
'k2' /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3',
'x4',
'x5',
'x6' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3',
'x4',
'x5',
'x6' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x4' 1,
'x5' 1,
'x6' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'c1'.'x1' 1,
'c1'.'x2' 1,
'c1'.'x3' 2,
'k1'.'x1' -1,
'k1'.'x2' -1,
'k1'.'x4' 1,
'k2'.'x3' -1,
'k2'.'x5' 1,
'k2'.'x6' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'c1' 1 /;
positive Variable xc(*) continuous variables /
'x4'.LO -Inf,
'x5'.LO -Inf,
'x6'.LO -Inf /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 3,
'set_ie' 1,
'set_ik' 2,
'set_j' 6,
'set_jc' 6,
'par_c' 3,
'par_b' 1,
'par_ac' 9 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%cqo1.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%cqo1.gdx" > "%gams.scrdir%cqo1.gdx.got_noc"
$call mps2gms "%gams.scrdir%cqo1.mps" cequations=Y > mps2gms.log
$call gdxdump "%gams.scrdir%cqo1.gdx" > "%gams.scrdir%cqo1.gdx.got_withc"
$call =diff -b "%gams.scrdir%cqo1.gdx.want_noc" "%gams.scrdir%cqo1.gdx.got_noc"
$call =diff -b "%gams.scrdir%cqo1.gdx.want_withc" "%gams.scrdir%cqo1.gdx.got_withc"
$call =rm "%gams.scrdir%cqo1.mps" "%gams.scrdir%cqo1.gms" "%gams.scrdir%cqo1.gdx"
$call =rm "%gams.scrdir%cqo1.gdx.got_noc" "%gams.scrdir%cqo1.gdx.want_noc"
$call =rm "%gams.scrdir%cqo1.gdx.got_withc" "%gams.scrdir%cqo1.gdx.want_withc"
* =============================================================== ranges
$onEcho > %gams.scrdir%ranges.mps
NAME
OBJSENSE
MAX
ROWS
N R0
G con1
COLUMNS
x R0 1.000000000 con1 1.0000000000
y R0 1.000000000 con1 1.0000000000
RHS
RHS R0 -42.00000000 con1 1.0000000000
RANGES
RGS con1 1.0000000000
ENDATA
$offEcho
$onEcho > %gams.scrdir%ranges.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'con1' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows /
'con1' /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x',
'y' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x',
'y' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 42 /;
Parameter c(*) objective row /
'x' 1,
'y' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'con1'.'x' 1,
'con1'.'y' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable /
'con1'.LO 1,
'con1'.UP 2 /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_ir' 1,
'set_j' 2,
'set_jc' 2,
'par_c' 2,
'par_ac' 2 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%ranges.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%ranges.gdx" > "%gams.scrdir%ranges.gdx.got"
$call =diff -b "%gams.scrdir%ranges.gdx.want" "%gams.scrdir%ranges.gdx.got"
$call =rm "%gams.scrdir%ranges.mps" "%gams.scrdir%ranges.gms" "%gams.scrdir%ranges.gdx"
$call =rm "%gams.scrdir%ranges.gdx.got" "%gams.scrdir%ranges.gdx.want"
* ============================================================== latecol
* column that appears in BOUNDS but not in COLUMNS section
$onEcho > %gams.scrdir%latecol.mps
NAME Convert
OBJSENSE
MAX
ROWS
N obj
COLUMNS
RHS
BOUNDS
LO bnd x1 0
UP bnd x1 2
LO bnd x2 0
UP bnd x2 4
QMATRIX
x1 x1 2
x1 x2 2
x2 x1 2
x2 x2 2
ENDATA
$offEcho
* column that does not appear in COLUMN section
$onEcho > %gams.scrdir%latecol.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order / /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row / /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x1' 2,
' xc'.'x2'.' xc'.'x1' 4,
' xc'.'x2'.' xc'.'x2' 2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2,
'x2'.UP 4 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_j' 2,
'set_jc' 2 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%latecol.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%latecol.gdx" > "%gams.scrdir%latecol.gdx.got"
$call =diff -b "%gams.scrdir%latecol.gdx.want" "%gams.scrdir%latecol.gdx.got"
$call =rm "%gams.scrdir%latecol.mps" "%gams.scrdir%latecol.gms" "%gams.scrdir%latecol.gdx"
$call =rm "%gams.scrdir%latecol.gdx.got" "%gams.scrdir%latecol.gdx.want"
* ============================================================= latecol2
* column that appears in QMATRIX but not in COLUMNS section
$onEcho > %gams.scrdir%latecol2.mps
NAME Convert
OBJSENSE
MAX
ROWS
N obj
COLUMNS
RHS
BOUNDS
LO bnd x1 0
UP bnd x1 2
QMATRIX
x1 x1 2
x1 x2 2
x2 x1 -2
x2 x2 -2
ENDATA
$offEcho
$onEcho > %gams.scrdir%latecol2.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order / /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row / /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x1' 2,
' xc'.'x2'.' xc'.'x1' 4,
' xc'.'x2'.' xc'.'x2' -2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.UP 2 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_j' 2,
'set_jc' 2 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%latecol2.mps" > mps2gms.log
$call gdxdump "%gams.scrdir%latecol2.gdx" > "%gams.scrdir%latecol2.gdx.got"
$call =diff -b "%gams.scrdir%latecol2.gdx.want" "%gams.scrdir%latecol2.gdx.got"
$call =rm "%gams.scrdir%latecol2.mps" "%gams.scrdir%latecol2.gms" "%gams.scrdir%latecol2.gdx"
$call =rm "%gams.scrdir%latecol2.gdx.got" "%gams.scrdir%latecol2.gdx.want"
* ================================================================ qp.lp
$onEcho > %gams.scrdir%qp.lp
Maximize
obj: x2 + x3 + [2 x2^2 + 4 x2 * x3 + 2 x3^2]/2
Bounds
0 <= x2 <= 2
0 <= x3 <= 4
End
$offEcho
$onEcho > %gams.scrdir%qp.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order / /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x2' 1,
'x3' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x2'.' xc'.'x2' 2,
' xc'.'x2'.' xc'.'x3' 4,
' xc'.'x3'.' xc'.'x3' 2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x2'.UP 2,
'x3'.UP 4 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_j' 2,
'set_jc' 2,
'par_c' 2 /;
$offEmpty
$offEcho
$onEcho > %gams.scrdir%qcp.lp
Maximize
obj: x1
Subject To
e1: -x1 + x2 + x3 + [x2^2 + 2 x2 * x3 + x3^2] = 0
Bounds
x1 Free
0 <= x2 <= 2
0 <= x3 <= 4
End
$offEcho
$call mps2gms "%gams.scrdir%qp.lp" > mps2gms.log
$call gdxdump "%gams.scrdir%qp.gdx" > "%gams.scrdir%qp.gdx.got"
$call =diff -b "%gams.scrdir%qp.gdx.want" "%gams.scrdir%qp.gdx.got"
$call =rm "%gams.scrdir%qp.lp" "%gams.scrdir%qp.gms" "%gams.scrdir%qp.gdx"
$call =rm "%gams.scrdir%qp.gdx.got" "%gams.scrdir%qp.gdx.want"
* =============================================================== qcp.lp
$onEcho > %gams.scrdir%qcp.lp
Maximize
obj: x1
Subject To
e1: -x1 + x2 + x3 + [x2^2 + 2 x2 * x3 + x3^2] = 0
Bounds
x1 Free
0 <= x2 <= 2
0 <= x3 <= 4
End
$offEcho
$onEcho > %gams.scrdir%qcp.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1' /;
Set ei(*,*) equ type mapping /
' ee'.'e1' /;
Set ie(*) equality rows /
'e1' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e1'.'x1' -1,
'e1'.'x2' 1,
'e1'.'x3' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks /
' ee'.'e1'.' xc'.'x2'.' xc'.'x2' 2,
' ee'.'e1'.' xc'.'x2'.' xc'.'x3' 4,
' ee'.'e1'.' xc'.'x3'.' xc'.'x3' 2 /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables /
'x1'.LO -Inf,
'x2'.UP 2,
'x3'.UP 4 /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_ie' 1,
'set_j' 3,
'set_jc' 3,
'par_c' 1,
'par_ac' 3 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%qcp.lp" > mps2gms.log
$call gdxdump "%gams.scrdir%qcp.gdx" > "%gams.scrdir%qcp.gdx.got"
$call =diff -b "%gams.scrdir%qcp.gdx.want" "%gams.scrdir%qcp.gdx.got"
$call =rm "%gams.scrdir%qcp.lp" "%gams.scrdir%qcp.gms" "%gams.scrdir%qcp.gdx"
$call =rm "%gams.scrdir%qcp.gdx.got" "%gams.scrdir%qcp.gdx.want"
* ============================================================= sos1a.lp
$onEcho > %gams.scrdir%sos1a.lp
\ Problem name : sos1a
Maximize
Obj: +0.9 s1 +1 s2 +1.1 s3
Subject to
e2: +1 s1 +1 s2 +1 s3 <= +1
Bounds
0 <= s1 <= 0.8
0 <= s2 <= 0.6
0 <= s3 <= 0.6
SOS
sos1_1: S1:: s1:1 s2:2 s3:3
End
$offEcho
$onEcho > %gams.scrdir%sos1a.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e2' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows /
'e2' /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
's1',
's2',
's3' /;
Set s(*) SOS sets /
'sos1_1' /;
Set jc(*) continuous columns / /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns /
'sos1_1'.'s1',
'sos1_1'.'s2',
'sos1_1'.'s3' /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping /
's1'.'sos1_1',
's2'.'sos1_1',
's3'.'sos1_1' /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
's1' 0.9,
's2' 1,
's3' 1.1 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 /
'e2'.'sos1_1'.'s1' 1,
'e2'.'sos1_1'.'s2' 1,
'e2'.'sos1_1'.'s3' 1 /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'e2' 1 /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables /
'sos1_1'.'s1'.UP 0.8,
'sos1_1'.'s2'.UP 0.6,
'sos1_1'.'s3'.UP 0.6 /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_il' 1,
'set_j' 3,
'set_s' 1,
'set_js1' 3,
'par_c' 3,
'par_b' 1,
'par_as1' 3 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%sos1a.lp" > mps2gms.log
$call gdxdump "%gams.scrdir%sos1a.gdx" > "%gams.scrdir%sos1a.gdx.got"
$call =diff -b "%gams.scrdir%sos1a.gdx.want" "%gams.scrdir%sos1a.gdx.got"
$call =rm "%gams.scrdir%sos1a.lp" "%gams.scrdir%sos1a.gms" "%gams.scrdir%sos1a.gdx"
$call =rm "%gams.scrdir%sos1a.gdx.got" "%gams.scrdir%sos1a.gdx.want"
* ============================================================= sos2a.lp
$onEcho > %gams.scrdir%sos2a.lp
Minimize
Obj: +1 x4 +1 x5
Subject to
e1: +1 s1 +1 s2 +1 s3 = +1
e2: +1 s1 +2 s2 +3 s3 -1 x7 = +0
e3: +1 s1 +2 s2 +3 s3 -1 x8 = +0
e6: +1 x4 -1 x8 >= -1.3
e7: +1 x5 +1 x8 >= +1.3
Bounds
0.8 <= s1
x7 free
x8 free
SOS
sos2_1: S2:: s1:1 s2:2 s3:3
End
$offEcho
$onEcho > %gams.scrdir%sos2a.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1',
'e2',
'e3',
'e6',
'e7' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows /
'e1',
'e2',
'e3' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows /
'e6',
'e7' /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x4',
'x5',
's1',
's2',
's3',
'x7',
'x8' /;
Set s(*) SOS sets /
'sos2_1' /;
Set jc(*) continuous columns /
'x4',
'x5',
'x7',
'x8' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns /
'sos2_1'.'s1',
'sos2_1'.'s2',
'sos2_1'.'s3' /;
Set js(*,*) SOS mapping /
's1'.'sos2_1',
's2'.'sos2_1',
's3'.'sos2_1' /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x4' 1,
'x5' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e2'.'x7' -1,
'e3'.'x8' -1,
'e6'.'x4' 1,
'e6'.'x8' -1,
'e7'.'x5' 1,
'e7'.'x8' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 /
'e1'.'sos2_1'.'s1' 1,
'e1'.'sos2_1'.'s2' 1,
'e1'.'sos2_1'.'s3' 1,
'e2'.'sos2_1'.'s1' 1,
'e2'.'sos2_1'.'s2' 2,
'e2'.'sos2_1'.'s3' 3,
'e3'.'sos2_1'.'s1' 1,
'e3'.'sos2_1'.'s2' 2,
'e3'.'sos2_1'.'s3' 3 /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'e1' 1,
'e6' -1.3,
'e7' 1.3 /;
positive Variable xc(*) continuous variables /
'x7'.LO -Inf,
'x8'.LO -Inf /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables /
'sos2_1'.'s1'.LO 0.8 /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 5,
'set_ig' 2,
'set_ie' 3,
'set_j' 7,
'set_s' 1,
'set_jc' 4,
'set_js2' 3,
'par_c' 2,
'par_b' 3,
'par_ac' 6,
'par_as2' 9 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%sos2a.lp" > mps2gms.log
$call gdxdump "%gams.scrdir%sos2a.gdx" > "%gams.scrdir%sos2a.gdx.got"
$call =diff -b "%gams.scrdir%sos2a.gdx.want" "%gams.scrdir%sos2a.gdx.got"
$call =rm "%gams.scrdir%sos2a.lp" "%gams.scrdir%sos2a.gms" "%gams.scrdir%sos2a.gdx"
$call =rm "%gams.scrdir%sos2a.gdx.got" "%gams.scrdir%sos2a.gdx.want"
* ========================================================== vartypes.lp
$onEcho > %gams.scrdir%vartypes.lp
Min Obj: x1 + 2 x2 + 3 x3 + 4 x4
Subject to x1 + x2 <= 1
Bounds
x3 >= 3
x4 >= 4
Bin
x1
Gen
x2
x4
Semis
x3
x4
End
$offEcho
$onEcho > %gams.scrdir%vartypes.gdx.want
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'' /;
Set ei(*,*) equ type mapping / /;
Set ie(*) equality rows / /;
Set il(*) less-than-or equal rows /
'' /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3',
'x4' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns / /;
Set jb(*) binary columns /
'x1' /;
Set ji(*) integer columns /
'x2' /;
Set jsc(*) semi-continuous columns /
'x3' /;
Set jsi(*) semi-integer columns /
'x4' /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 1,
'x2' 2,
'x3' 3,
'x4' 4 /;
Parameter ac(*,*) constraint matrix: continuous columns / /;
Parameter ab(*,*) constraint matrix: binary columns /
''.'x1' 1 /;
Parameter ai(*,*) constraint matrix: integer columns /
''.'x2' 1 /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective / /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS /
'' 1 /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables /
'x3'.LO 3 /;
semiint Variable xsi(*) semi-integer variables /
'x4'.LO 4 /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 1,
'set_il' 1,
'set_j' 4,
'set_jb' 1,
'set_ji' 1,
'set_jsc' 1,
'set_jsi' 1,
'par_c' 4,
'par_b' 1,
'par_ab' 1,
'par_ai' 1 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%vartypes.lp" > mps2gms.log
$call gdxdump "%gams.scrdir%vartypes.gdx" > "%gams.scrdir%vartypes.gdx.got"
$call =diff -b "%gams.scrdir%vartypes.gdx.want" "%gams.scrdir%vartypes.gdx.got"
$call =rm "%gams.scrdir%vartypes.lp" "%gams.scrdir%vartypes.gms" "%gams.scrdir%vartypes.gdx"
$call =rm "%gams.scrdir%vartypes.gdx.got" "%gams.scrdir%vartypes.gdx.want"
* ======================================================== duplicates.lp
$onEcho > %gams.scrdir%duplicates.lp
Minimize
obj: x1 + x2 + x1 + [ x1*x2 + x2^2 + x2^2 ]/2
Subject To
e1: x1 + x2 - x1 = 0
e2: [ x2*x3 - x2*x3 ] = 0
End
$offEcho
$onEcho > %gams.scrdir%duplicates.gdx.want_add
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1',
'e2' /;
Set ei(*,*) equ type mapping /
' ee'.'e2' /;
Set ie(*) equality rows /
'e1',
'e2' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 2,
'x2' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e1'.'x2' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x2' 1,
' xc'.'x2'.' xc'.'x2' 2 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks / /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 2,
'set_ie' 2,
'set_j' 3,
'set_jc' 3,
'par_c' 2,
'par_ac' 1 /;
$offEmpty
$offEcho
$onEcho > %gams.scrdir%duplicates.gdx.want_ignore
$onEmpty
Set mps2gms(*) important cardinal values /
'set_i' 'all rows in MPS order',
'set_ig' 'greater-than-or equal rows',
'set_il' 'less-than-or equal rows',
'set_ie' 'equality rows',
'set_ir' 'ranged rows',
'set_ik' 'cone rows',
'set_j' 'all columns in MPS order',
'set_s' 'sos sets',
'set_jc' 'continuous columns',
'set_jb' 'binary columns',
'set_ji' 'integer columns',
'set_jsc' 'semi-continuous columns',
'set_jsi' 'semi-integer columns',
'set_js1' 'sos 1 columns',
'set_js2' 'sos 2 columns',
'par_c' 'objective coefs',
'par_b' 'right hand sides',
'par_ac' 'matrix coefs: continuous columns',
'par_ab' 'matrix coefs: binary columns',
'par_ai' 'matrix coefs: integer columns',
'par_asc' 'matrix coefs: semi-continuous columns',
'par_asi' 'matrix coefs: semi-integer columns',
'par_as1' 'matrix coefs: sos 1 columns',
'par_as2' 'matrix coefs: sos 2 columns' /;
Set e(*) gams equ labels /
' eg' eg,
' el' el,
' ee' ee,
' er' er /;
Set v(*) gams var labels /
' xc' xc,
' xb' xb,
' xi' xi,
' xsc' xsc,
' xsi' xsi,
' xs1' xs1,
' xs2' xs2 /;
Set i(*) all rows in MPS order /
'e1',
'e2' /;
Set ei(*,*) equ type mapping /
' ee'.'e2' /;
Set ie(*) equality rows /
'e1',
'e2' /;
Set il(*) less-than-or equal rows / /;
Set ig(*) greater-than-or equal rows / /;
Set ir(*) ranged rows / /;
Set ik(*) cone rows / /;
Set j(*) all columns in MPS order /
'x1',
'x2',
'x3' /;
Set s(*) SOS sets / /;
Set jc(*) continuous columns /
'x1',
'x2',
'x3' /;
Set jb(*) binary columns / /;
Set ji(*) integer columns / /;
Set jsc(*) semi-continuous columns / /;
Set jsi(*) semi-integer columns / /;
Set js1(*,*) sos 1 columns / /;
Set js2(*,*) sos 2 columns / /;
Set js(*,*) SOS mapping / /;
Scalar cobj objective constant / 0 /;
Parameter c(*) objective row /
'x1' 1,
'x2' 1 /;
Parameter ac(*,*) constraint matrix: continuous columns /
'e1'.'x1' 1,
'e1'.'x2' 1 /;
Parameter ab(*,*) constraint matrix: binary columns / /;
Parameter ai(*,*) constraint matrix: integer columns / /;
Parameter asc(*,*) constraint matrix: semi-continuous columns / /;
Parameter asi(*,*) constraint matrix: semi-integer columns / /;
Parameter as1(*,*,*) constraint matrix: Sos 1 / /;
Parameter as2(*,*,*) constraint matrix: Sos 2 / /;
Parameter qobj(*,*,*,*) Q matrix for objective /
' xc'.'x1'.' xc'.'x2' 1,
' xc'.'x2'.' xc'.'x2' 1 /;
Parameter q(*,*,*,*,*,*) Q matrix for blocks /
' ee'.'e2'.' xc'.'x2'.' xc'.'x3' 2 /;
Parameter b(*) mps file RHS / /;
positive Variable xc(*) continuous variables / /;
binary Variable xb(*) binary variables / /;
integer Variable xi(*) integer variables / /;
semicont Variable xsc(*) semi-continuous variables / /;
semiint Variable xsi(*) semi-integer variables / /;
sos1 Variable xs1(*,*) sos 1 variables / /;
sos2 Variable xs2(*,*) sos 2 variables / /;
Variable r(*) range variable / /;
Parameter mps2gmsstats(*) MPS2GMS statistics /
'set_i' 2,
'set_ie' 2,
'set_j' 3,
'set_jc' 3,
'par_c' 2,
'par_ac' 2 /;
$offEmpty
$offEcho
$call mps2gms "%gams.scrdir%duplicates.lp" DUPLICATES=ADD > mps2gms.log
$call gdxdump "%gams.scrdir%duplicates.gdx" > "%gams.scrdir%duplicates.gdx.got"
$call =diff -b "%gams.scrdir%duplicates.gdx.want_add" "%gams.scrdir%duplicates.gdx.got"
$call mps2gms "%gams.scrdir%duplicates.lp" Duplicates=Ignore > mps2gms.log
$call gdxdump "%gams.scrdir%duplicates.gdx" > "%gams.scrdir%duplicates.gdx.got"
$call =diff -b "%gams.scrdir%duplicates.gdx.want_ignore" "%gams.scrdir%duplicates.gdx.got"
$offCheckErrorLevel
$call mps2gms "%gams.scrdir%duplicates.lp" > mps2gms.log 2>&1
$if not errorlevel 1 $abort mps2gms did not abort as expected
$call mps2gms "%gams.scrdir%duplicates.lp" duplicates=error > mps2gms.log 2>&1
$if not errorlevel 1 $abort mps2gms did not abort as expected
$call grep -q Multiple mps2gms.log
$if errorlevel 1 $abort mps2gms did not print expected error messages
$call =rm "%gams.scrdir%duplicates.lp" "%gams.scrdir%duplicates.gms" "%gams.scrdir%duplicates.gdx"
$call =rm "%gams.scrdir%duplicates.gdx.got" "%gams.scrdir%duplicates.gdx.want_add" "%gams.scrdir%duplicates.gdx.want_ignore"