scen02.gms : 시나리오 설비 실행 시간 테스트

설명

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를 확인하세요.'