cplex04.gms : CPLEX 테스트 스위트 - 무료 게임 모델 테스트

설명

CPLEX 링크 옵션 'freegamsmodel'을 테스트합니다.

기고자: Renke Kuhlmann, 2020년 10월

소형 모델 유형 :슬롯 머신


카테고리 : 슬롯 머신 테스트 라이브러리


메인 파일 : cplex04.gms

$title 'CPLEX 테스트 스위트 - 무료 게임 모델 테스트' (CPLEX04,SEQ=829)
$if not '%슬롯 머신lp%' == '' $set 솔버 %슬롯 머신lp%
$설정되지 않은 경우 솔버 $set 솔버 cplex
$onText
CPLEX 링크 옵션 'freegamsmodel'을 테스트합니다.

기고자: Renke Kuhlmann, 2020년 10월
$offText

* LP 테스트

$call gamslib -q 1

$echo "x.l(i,j) = 0;" >> trnsport.gms
$echo "x.m(i,j) = 0;" >> trnsport.gms

$echo "z를 최소화하는 lp를 사용하여 전송을 해결합니다." >> trnsport.gms

$echo "매개변수 x_l1(i,j), x_m1(i,j);" >> trnsport.gms
$echo "x_l1(i,j) = x.l(i,j);" >> trnsport.gms
$echo "x_m1(i,j) = x.m(i,j);" >> trnsport.gms

$echo "x.l(i,j) = 0;" >> trnsport.gms
$echo "x.m(i,j) = 0;" >> trnsport.gms

$echo "transport.optfile=1;" >> trnsport.gms
$echo "z를 최소화하는 lp를 사용하여 전송을 해결합니다." >> trnsport.gms

$echo "매개변수 x_l2(i,j), x_m2(i,j);" >> trnsport.gms
$echo "x_l2(i,j) = x.l(i,j);" >> trnsport.gms
$echo "x_m2(i,j) = x.m(i,j);" >> trnsport.gms

$echo "abort$(transport.modelstat <> %modelStat.optimal% 또는 Transport.solvestat <> %solveStat.normalCompletion%) 'freegamsmodel 문제';" >> trnsport.gms
$echo "abort$(smax((i,j), abs(x_l1(i,j) - x_l2(i,j))) > 1e-8) 'freegamsmodel 문제';" >> trnsport.gms
$echo "abort$(smax((i,j), abs(x_m1(i,j) - x_m2(i,j))) > 1e-8) 'freegamsmodel 문제';" >> trnsport.gms

$echo freegamsmodel 1 > %solver%.opt
$call =슬롯 머신 tnsport lo=%슬롯 머신lo% 솔버=%solver%
$if errorlevel 1 $abort '%solver% freegamsmodel 옵션 문제'

* QCP 테스트

$call gamslib -q 293

$echo "x.l(n,k) = 0;" >> qabel.gms
$echo "x.m(n,k) = 0;" >> qabel.gms
$echo "u.l(m,k) = 0;" >> qabel.gms
$echo "u.m(m,k) = 0;" >> qabel.gms

$echo "qcp를 사용하여 j를 최소화하는 abel을 해결합니다." >> qabel.gms

$echo "매개변수 x_l1(n,k), x_m1(n,k);" >> qabel.gms
$echo "매개변수 u_l1(m,k), u_m1(m,k);" >> qabel.gms
$echo "x_l1(n,k) = x.l(n,k);" >> qabel.gms
$echo "x_m1(n,k) = x.m(n,k);" >> qabel.gms
$echo "u_l1(m,k) = u.l(m,k);" >> qabel.gms
$echo "u_m1(m,k) = u.m(m,k);" >> qabel.gms

$echo "x.l(n,k) = 0;" >> qabel.gms
$echo "x.m(n,k) = 0;" >> qabel.gms
$echo "u.l(m,k) = 0;" >> qabel.gms
$echo "u.m(m,k) = 0;" >> qabel.gms

$echo "abel.optfile=1;" >> qabel.gms
$echo "qcp를 사용하여 j를 최소화하는 abel을 해결합니다." >> qabel.gms

$echo "매개변수 x_l2(n,k), x_m2(n,k);" >> qabel.gms
$echo "매개변수 u_l2(m,k), u_m2(m,k);" >> qabel.gms
$echo "x_l2(n,k) = x.l(n,k);" >> qabel.gms
$echo "x_m2(n,k) = x.m(n,k);" >> qabel.gms
$echo "u_l2(m,k) = u.l(m,k);" >> qabel.gms
$echo "u_m2(m,k) = u.m(m,k);" >> qabel.gms

$echo "abort$(abel.modelstat <> %modelStat.optimal% 또는 abel.solvestat <> %solveStat.normalCompletion%) 'freegamsmodel 문제';" >> qabel.gms
$echo "abort$(smax((n,k), abs(x_l1(n,k) - x_l2(n,k))) > 1e-8) 'freegamsmodel 문제';" >> qabel.gms
$echo "abort$(smax((n,k), abs(x_m1(n,k) - x_m2(n,k))) > 1e-8) 'freegamsmodel 문제';" >> qabel.gms
$echo "abort$(smax((m,k), abs(u_l1(m,k) - u_l2(m,k))) > 1e-8) 'freegamsmodel 문제';" >> qabel.gms
$echo "abort$(smax((m,k), abs(u_m1(m,k) - u_m2(m,k))) > 1e-8) 'freegamsmodel 문제';" >> qabel.gms

$echo freegamsmodel 1 > %solver%.opt
$call =슬롯 머신 qabel lo=%슬롯 머신lo% 솔버=%solver%
$if errorlevel 1 $abort '%solver% freegamsmodel 옵션 문제'

* MIP 테스트

$call gamslib -q 19

$echo "pl.l(v,s) = 0;" >> 입찰.gms
$echo "pl.m(v,s) = 0;" >> 입찰.gms
$echo "plb.l(v,s) = 0;" >> 입찰.gms
$echo "plb.m(v,s) = 0;" >> 입찰.gms

$echo "mip를 사용하여 c를 최소화하는 bideval을 해결합니다." >> 입찰.gms

$echo "매개변수 pl_l1(v,s), pl_m1(v,s);" >> 입찰.gms
$echo "매개변수 plb_l1(v,s), plb_m1(v,s);" >> 입찰.gms
$echo "pl_l1(v,s) = pl.l(v,s);" >> 입찰.gms
$echo "pl_m1(v,s) = pl.m(v,s);" >> 입찰.gms
$echo "plb_l1(v,s) = plb.l(v,s);" >> 입찰.gms
$echo "plb_m1(v,s) = plb.m(v,s);" >> 입찰.gms

$echo "pl.l(v,s) = 0;" >> 입찰.gms
$echo "pl.m(v,s) = 0;" >> 입찰.gms
$echo "plb.l(v,s) = 0;" >> 입찰.gms
$echo "plb.m(v,s) = 0;" >> 입찰.gms

$echo "bideval.optfile=1;" >> 입찰.gms
$echo "mip를 사용하여 c를 최소화하는 bideval을 해결합니다." >> 입찰.gms

$echo "매개변수 pl_l1(v,s), pl_l2(v,s), pl_m1(v,s), pl_m2(v,s);" >> 입찰.gms
$echo "매개변수 plb_l1(v,s), plb_l2(v,s), plb_m1(v,s), plb_m2(v,s);" >> 입찰.gms
$echo "pl_l2(v,s) = pl.l(v,s);" >> 입찰.gms
$echo "pl_m2(v,s) = pl.m(v,s);" >> 입찰.gms
$echo "plb_l2(v,s) = plb.l(v,s);" >> 입찰.gms
$echo "plb_m2(v,s) = plb.m(v,s);" >> 입찰.gms

$echo "abort$(bideval.modelstat <> %modelStat.optimal% 또는 bideval.solvestat <> %solveStat.normalCompletion%) 'freegamsmodel 문제';" >> 입찰.gms
$echo "abort$(smax((v,s), abs(pl_l1(v,s) - pl_l2(v,s))) > 1e-8) 'freegamsmodel 문제';" >> 입찰.gms
$echo "abort$(smax((v,s), abs(pl_m1(v,s) - pl_m2(v,s))) > 1e-8) 'freegamsmodel 문제';" >> 입찰.gms
$echo "abort$(smax((v,s), abs(plb_l1(v,s) - plb_l2(v,s))) > 1e-8) 'freegamsmodel 문제';" >> 입찰.gms
$echo "abort$(smax((v,s), abs(plb_m1(v,s) - plb_m2(v,s))) > 1e-8) 'freegamsmodel 문제';" >> 입찰.gms

$echo freegamsmodel 1 > %solver%.opt
$call =게임 입찰 lo=%슬롯 머신lo% 솔버=%solver%
$if errorlevel 1 $abort '%solver% freegamsmodel 옵션 관련 문제'