설명
이 모델에서는 CaptureModelInstance=1과 함께 다양한solvLink 옵션을 사용합니다. 기고자: Michael Bussieck, 2020년 10월
소형 모델 유형 :크레이지 슬롯
카테고리 : 크레이지 슬롯 테스트 라이브러리
메인 파일 : cmi01.gms
$title '모든 솔브링크 조합으로 CaptureModelInstance 옵션 테스트' (CMI1,SEQ=837)
$onText
이 모델에서는 CaptureModelInstance=1과 함께 다양한solvLink 옵션을 사용합니다.
기고자: Michael Bussieck, 2020년 10월
$offText
$onEcho > t.gms
세트
i '통조림 식물' / 시애틀, 샌디에고 /
j 'markets' / 뉴욕, 시카고, 토피카 /;
매개변수
a(i) '경우에 따라 식물 i의 용량'
/시애틀 350
샌디에이고 600 /
b(j) '경우에 따라 시장 j의 수요'
/ 뉴욕 325
시카고 300
토피카 275 /;
테이블 d(i,j) '거리(천 마일)'
뉴욕 시카고 토피카
시애틀 2.5 1.7 1.8
샌디에고 2.5 1.8 1.4;
스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
매개변수 c(i,j) '케이스당 운송 비용(단위: 수천 달러)';
c(i,j) = f*d(i,j)/1000;
변수
x(i,j) '케이스의 선적 수량'
z '총 운송 비용(천 달러)';
양수 변수 x;
방정식
비용 '목적 함수 정의'
Supply(i) '공장 i의 공급 제한을 준수합니다.'
수요(j) '시장 j의 수요를 충족';
비용.. z =e= sum((i,j), c(i,j)*x(i,j));
공급(i).. sum(j, x(i,j)) =l= a(i);
수요(j)..sum(i, x(i,j)) =g= b(j);
모델 운송 / 모두 /;
Transport.solveLink=%solveLink%;
z를 최소화하는 lp를 사용하여 전송을 해결합니다.
$if 그리드 솔브 설정
f=readyCollect(transport.handle);f=handleCollect(transport.handle);display$sleep(1)'sleep';f=handleDelete(transport.handle);
$offEcho
$call.checkErrorLevel 게임 t.gms lo=2 CaptureModelInstance=1 --solveLink=0
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 게임 t.gms lo=2 CaptureModelInstance=1 --solveLink=1
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 게임 t.gms lo=2 CaptureModelInstance=1 --solveLink=2
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 게임 t.gms lo=3 CaptureModelInstance=1 --solveLink=3 --gridSolve=1 > t.log
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 게임 t.gms lo=3 CaptureModelInstance=1 --solveLink=4 > t.log
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 게임 t.gms lo=2 CaptureModelInstance=1 --solveLink=5
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 크레이지 슬롯 t.gms lo=3 CaptureModelInstance=1 --solveLink=6 --gridSolve=1 lp=cplex > t.log
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$call.checkErrorLevel 크레이지 슬롯 t.gms lo=3 CaptureModelInstance=1 --solveLink=7 lp=cplex > t.log
$echoN '$setGlobal scalarModel ' > setm.gms
$call grep "Writing 크레이지 슬롯" t.log | 잘라내기 -c25- >>etsm.gms
$include 세트m
$call.checkErrorLevel 크레이지 슬롯 %scalarModel% lo=2
$setEnv ZIPSCRDIR_PGAMS xxx
$setEnv DEBUG_PGAMS 2
$call rm -rf myscrdir && mkdir myscrdir
$call.checkErrorLevel 크레이지 슬롯 t.gms lo=3 --solveLink=0 scrdir=myscrdir > t.log
$echoN '$setGlobal zipFile' > setzf.gms
$call grep "발행 명령: gmszip" t.log | 잘라내기 -d" " -f5 >> setzf.gms
$include setzf
$ifThen %system.fileSys%==UNIX
$ call.checkErrorLevel rm -rf myscrdir && gmsunzip -qq %zipFile% && gmsgenux.out myscrdir/gamscntr.%크레이지 슬롯scrExt% cplex > /dev/null
$else
$ call.checkErrorLevel rm -rf myscrdir && gmsunzip -qq %zipFile% && gmsgennx.exe myscrdir\gamscntr.%크레이지 슬롯scrExt% cplex > NUL
$endIf