설명
슬롯 사이트 25.2에서 우리는 새로운 달러 제어 옵션 "$onMultiR"을 도입했습니다. "$onMulti"와 유사하게 작동하지만 병합하는 대신 기존 데이터를 대체합니다. 그것. 여기서는 예상되는 동작을 테스트합니다. 기고자: Lutz Westermann, 2018년 10월 $onMultiR은 기존 데이터를 확장하지 않고 대체합니다.
소형 모델 유형 :슬롯 사이트
카테고리 : 슬롯 사이트 테스트 라이브러리
메인 파일 : onmulti8.gms
$title '$onMultiR에 대한 테스트' (ONMULTI8,SEQ=787)
$onText
슬롯 사이트 25.2에서는 새로운 달러 제어 옵션 "$onMultiR"을 도입했습니다.
"$onMulti"와 유사하게 작동하지만 병합하는 대신 기존 데이터를 대체합니다.
그것. 여기서는 예상되는 동작을 테스트합니다.
기고자: Lutz Westermann, 2018년 10월
$offText
* $onMultiR은 기존 데이터를 확장하지 않고 대체합니다.
$onEcho > test.gms
i / a, b / 설정;
$onMultiR
i / c / 설정;
별칭(u,*);
iWant / c / 설정
iTest(u);
iTest(u) = iWant(u) xor i(u);
중단$card(iTest) iTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 도메인 세트가 줄어들면 종속 세트도 변경합니다.
$onEcho > test.gms
i / a, b, c / 설정;
매개변수 p(i) / #i 2 /;
변수 v(i) / #i.l 3 /;
$onMultiR
i / c, d /를 설정하십시오.
별칭(u,*);
매개변수 pWant(u) / c 2 /;
변수 vWant(u) / c.l 3 /;
pTest(u)를 설정하고,
vTest(u);
pTest(i) = pWant(i) <> p(i);
abort$card(pTest) '%system.line% 라인에 문제가 있습니다', pTest;
vTest(i) = vWant.l(i) <> v.l(i);
abort$card(vTest) '%system.line% 라인에 문제가 있습니다', vTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo% gdx iCD
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 테이블에서도 작동해야 합니다.
$onEcho > test.gms
i / i1*i3 / 설정
ii(i,i) / #i.#i /;
테이블 t(i,i)
i1 i2 i3
나는1 1 2 3
나는2 4 5 6
i3 7 8 9 ;
$onMultiR
테이블 t(i,i)
i1 i3
나는246
i3 9 ;
테이블 ti(i,i) 설정
i1 i3
나는246
i3 9 ;
테이블 tWant(i,i)
i1 i3
나는246
i3 9 ;
테이블 설정 tiWant(i,i)
i1 i3
나는246
i3 9 ;
tTest 설정(i,i)
tiTest(i,i);
별칭(i,j);
tTest(i,j) = tWant(i,j) <> t(i,j);
abort$card(tTest) '%system.line% 라인에 문제가 있습니다', tTest;
tiTest(i,j) = tiWant(i,j) xor ti(i,j);
abort$card(tTest) '%system.line% 라인에 문제가 있습니다', tTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 $loadR과도 작동해야 합니다. 도메인 세트에도 적용
$onEcho > test.gms
i / a, b, c / 설정;
매개변수 p(i) / #i 2 /;
$onMultiR
$gdxIn iCD.gdx
$loadR 나
별칭(u,*);
매개변수 pWant(u) / c 2 /;
pTest(u)를 설정합니다.
pTest(i) = pWant(i) <> p(i);
abort$card(pTest) '%system.line% 라인에 문제가 있습니다', pTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 $load와도 작동해야 합니다($loadR과 동일하게 작동해야 함). 도메인 세트에도 적용
$onEcho > test.gms
i / a, b, c / 설정;
매개변수 p(i) / #i 2 /;
$onMultiR
$gdxIn iCD.gdx
$load 나
별칭(u,*);
매개변수 pWant(u) / c 2 /;
pTest(u)를 설정합니다.
pTest(i) = pWant(i) <> p(i);
abort$card(pTest) '%system.line% 라인에 문제가 있습니다', pTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 $loadM과도 작동해야 합니다. 도메인 세트에도 적용
$onEcho > test.gms
i / a, b, c / 설정;
매개변수 p(i) / #i 2 /;
$onMultiR
$gdxIn iCD.gdx
$loadM 나는
별칭(u,*);
iWant / a, b, c, d / 설정;
매개변수 pWant(u) / (a, b, c) 2 /;
iTest(u) 설정
pTest(u);
iTest(u) = iWant(u) xor i(u);
중단$card(iTest) iTest;
pTest(i) = pWant(i) <> p(i);
abort$card(pTest) '%system.line% 라인에 문제가 있습니다', pTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 빈 데이터 문($onEmpty)에서도 작동해야 합니다. 도메인 세트에도 적용
$onEcho > test.gms
i / a, b, c / 설정;
매개변수 p(i) / #i 2 /;
$onMultiR
$onEmpty
나는 설정 / /;
abort$card(p) '%system.line% 라인에 문제가 있습니다', p;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 var/equ 데이터 문에서도 작동해야 합니다.
$onEcho > test.gms
i / a, b, c / 설정;
변수 v(i) / #i.l 3 /;
변수 테이블(i)
내가
1
비 2
c 3
;
$onMultiR
변수 v(i) / c.l 3 /;
변수 테이블(i)
내가
비 2
;
별칭(u,*);
변수 vWant(u) / c.l 3 /
wWant(u) / b.l 2 /;
vTest(u) 설정
w테스트(u);
vTest(i) = vWant.l(i) <> v.l(i);
abort$card(vTest) '%system.line% 라인에 문제가 있습니다', vTest;
wTest(i) = wWant.l(i) <> w.l(i);
abort$card(wTest) '%system.line% 라인에 문제가 있습니다', wTest;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 방정식을 재정의할 수 있어야 합니다.
$onEcho > test.gms
변수 v, z;
방정식 e;
v.fx = 1;
e.. z =e= v;
$onMultiR
e.. z =e= 2*v;
모델 m /e/;
m을 해결하려면 lp min z를 사용하세요.
abort$(z.l <> 2) '%system.line% 라인에 문제가 있습니다', z.l;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 방정식 유형이 변경되는 경우에도 방정식을 재정의할 수 있어야 합니다.
$onEcho > test.gms
변수 v, z;
방정식 e;
v.fx = 1;
e.. z =e= v;
$onMultiR
예.. z =g= 2*v;
모델 m /e/;
m을 해결하려면 lp min z를 사용하세요.
abort$(z.l <> 2) '%system.line% 라인에 문제가 있습니다', z.l;
$offEcho
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo%
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
* $onMultiR은 도메인 세트를 재정의하는 동안 $load와도 작동해야 합니다.
$onEchoV > data.gms
i / %uels% / 설정
매개변수 p(i) / #i 1 /;
$offEcho
$onEchoV > test.gms
i /1*5/로 설정;
매개변수 p(i);
$gdxIn 데이터.gdx
$onMultiR
$load p i p
p,i를 표시;
별칭(u,*);
매개변수 pWant(u) / (%uels%) 1 /;
pTest(u)를 설정합니다.
pTest(i) = pWant(i) <> p(i);
abort$card(pTest) '%system.line% 라인에 문제가 있습니다', pTest;
$offEcho
$call.checkErrorLevel 게임 data.gms gdx=data.gdx lo=%슬롯 사이트lo% --uels="1*10"
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo% --uels="1*10"
$ifE errorLevel<>0 $abort %system.line% 라인의 문제
$call.checkErrorLevel 게임 data.gms gdx=data.gdx lo=%슬롯 사이트lo% --uels="A*E"
$call 슬롯 사이트 test.gms lo=%슬롯 사이트lo% --uels="A*E"
$ifE errorLevel<>0 $abort %system.line% 라인의 문제