설명
GUSS의 초기 구현에는 미묘한 부작용이 있었습니다. 그러므로, 크레이지 슬롯 컴파일러와 런타임은 거스. 이 테스트는 이러한 런타임 테스트를 수집합니다. 기여자: Michael Bussieck
소형 모델 유형 :크레이지 슬롯
카테고리 : 크레이지 슬롯 테스트 라이브러리
메인 파일 : scen02.gms
$title Gather-Update-Solve-Scatter(GUSS)에 대한 실행 시간 테스트(SCEN02, SEQ=518)
$onText
GUSS의 초기 구현에는 미묘한 부작용이 있었습니다. 그러므로,
크레이지 슬롯 컴파일러와 런타임은
거스. 이 테스트는 이러한 런타임 테스트를 수집합니다.
기여자: Michael Bussieck
$offText
$call gamslib -q trnsport
$if errorlevel 1 $abort 'trnsport.gms를 검색할 수 없습니다.'
$onEchoV >> trnsport.gms
s /s1*s3/을 설정하고,
s1(들)
s2(들,들)
dict1 / s1. 대본. '', c.param.cs1 /
dict2 / s2. 대본. '', c.param.cs2 /
dict3 / s2. 대본. '', c.param.cs2, a.param.as /
dict4 / s2. 대본. '', c.param.cs2, ''.opt.srep /
더미 / SolveStat /
엄마 / ModelStat /;
매개변수
cs1(s,i,j), cs2(s,s,i,j), as(s,s,i), srep(s,s,ma)
updt1(s,*,*,i,j), updt2(s,s,*,*,i,j), updt3(s,s,*,*,*,*)
pdict1 / s1. 대본. '' 1, c.param.cs1 3/
pdict2 / s2. 대본. '' 2, c.param.cs2 4/
pdict3 / s2. 대본. '' 2, c.param.cs2 4, a.param.as 3 /;
옵션 lp=변환;
별칭(s,sp);
s1(들) = 예;
cs1(s1(s),i,j) = ord(s);
z 시나리오 dict1을 최소화하는 lp를 사용하여 전송을 해결합니다.
updt1(s1,'c','param',i,j) = cs1(s1,i,j);
Execute_unload 'dict1.gdx' pdict1=dict, s1, updt1=updt;
'gdxdiff dict1.gdx "%크레이지 슬롯scrdir%scenario_dict1.%크레이지 슬롯scrext%" > %system.nullfile%'을 실행합니다.
abort$errorlevel 'dict1.gdx와 시나리오_dict1.gdx는 동일해야 합니다';
s2(s,'s1') = 예;
cs2(s2(s,sp),i,j) = ord(sp) + 카드(들)*(ord(s)-1);
z 시나리오 dict2를 최소화하는 lp를 사용하여 전송을 해결합니다.
updt2(s2,'c','param',i,j) = cs2(s2,i,j);
Execute_unload 'dict2a.gdx' pdict2=dict, s2, updt2=updt;
'gdxdiff dict2a.gdx "%크레이지 슬롯scrdir%scenario_dict2.%크레이지 슬롯scrext%" > %system.nullfile%'를 실행합니다.
abort$errorlevel 'dict2a.gdx와 시나리오_dict2.gdx는 동일해야 합니다';
옵션 클리어=s2, 클리어=cs2, 클리어=updt2;
s2('s1',s) = 예;
cs2(s2(s,sp),i,j) = ord(sp) + 카드(들)*(ord(s)-1);
z 시나리오 dict2를 최소화하는 lp를 사용하여 전송을 해결합니다.
updt2(s2,'c','param',i,j) = cs2(s2,i,j);
Execute_unload 'dict2b.gdx' pdict2=dict, s2, updt2=updt;
'gdxdiff dict2b.gdx "%크레이지 슬롯scrdir%scenario_dict2.%크레이지 슬롯scrext%" > %system.nullfile%'를 실행합니다.
abort$errorlevel 'dict2b.gdx와 시나리오_dict2.gdx는 동일해야 합니다';
옵션 클리어=s2, 클리어=cs2;
s2(s,sp) = 예;
cs2(s2(s,sp),i,j) = ord(sp) + 카드(들)*(ord(s)-1);
as(s,'s1',i) = ord(s) + 100*ord(i);
z 시나리오 dict3을 최소화하는 lp를 사용하여 전송을 해결합니다.
updt3(s2,'c','param',i,j) = cs2(s2,i,j);
updt3(s2,'a','param','',i) = as(s2,i);
Execute_unload 'dict3.gdx' pdict3=dict, s2, updt3=updt;
'gdxdiff dict3.gdx "%크레이지 슬롯scrdir%scenario_dict3.%크레이지 슬롯scrext%" > %system.nullfile%'를 실행합니다.
abort$errorlevel 'dict3.gdx와 시나리오_dict3.gdx는 동일해야 합니다';
* 빈 시나리오 세트로 테스트
옵션 클리어=s2, 클리어=cs2, 클리어=updt2;
s2(s,s) = 아니요;
cs2(s2,i,j) = 1;
z 시나리오 dict2를 최소화하는 lp를 사용하여 전송을 해결합니다.
abort$(not execerror) '빈 시나리오 세트는 실행 오류를 유발해야 합니다.';
실행오류=0;
* 빈 시나리오 데이터로 테스트
옵션 클리어=s2, 클리어=cs2, 클리어=updt2;
s2(s,s) = 예;
cs2(s2,i,j) = 0;
z 시나리오 dict2를 최소화하는 lp를 사용하여 전송을 해결합니다.
abort$(not execerror) '빈 업데이트 데이터가 실행 오류를 유발해야 합니다.';
실행오류=0;
* 데이터 cs2에는 s2에 없는 시나리오가 있습니다.
옵션 클리어=s2, 클리어=cs2, 클리어=updt2;
s2('s1','s1') = 예;
cs2(s,'s1',i,j) = ord(s);
z 시나리오 dict2를 최소화하는 lp를 사용하여 전송을 해결합니다.
updt2(s2,'c','param',i,j) = cs2(s2,i,j);
Execute_unload 'dict2c.gdx' pdict2=dict, s2, updt2=updt;
'gdxdiff dict2c.gdx "%크레이지 슬롯scrdir%scenario_dict2.%크레이지 슬롯scrext%" > %system.nullfile%'를 실행합니다.
abort$errorlevel 'dict2c.gdx와 시나리오_dict2.gdx는 동일해야 합니다';
* Uel SolveStat는 srep를 입력해서는 안 됩니다.
옵션 클리어=s2, 클리어=cs2;
s2(s,sp) = 예;
cs2(s2(s,sp),i,j) = ord(sp) + 카드(들)*(ord(s)-1);
as(s,'s1',i) = ord(s) + 100*ord(i);
z 시나리오 dict4를 최소화하는 lp를 사용하여 전송을 해결합니다.
abort$(card(s2)<>card(srep)) 'srep에는 SolveStat가 아닌 ModelStat만 있어야 합니다.', srep;
$offEcho
$call "크레이지 슬롯 trnsport lo=%크레이지 슬롯lo% execerr=100"
$if errorlevel 1 $abort '테스트에 실패했습니다. 자세한 내용은 trnsport.lst를 확인하세요.'