설명
모델 명령문에서 equList 일치를 테스트합니다. 특히 유효한 입력에 대한 테스트 기고자: Steven Dirkse, 2024년 9월
소형 모델 유형 :슬롯 게임
카테고리 : 슬롯 게임 테스트 라이브러리
메인 파일 : mcp13.gms
$title 모델 명령문에서 equList 일치 테스트(MCP13, SEQ=966)
$ontext
모델 문에서 equList 일치를 테스트합니다.
특히 유효한 입력에 대한 테스트
기고자: Steven Dirkse, 2024년 9월
$offtext
스칼라 c / 0 /;
세트
당신 / a, b, c /
i1(유)
i2(유)
i3(유)
;
변수 v(u);
방정식
n1(유)
n2(유)
n3(유)
e1(u) '일치하는 방정식'
e2(u) '일치하는 방정식'
e3(u) '일치하는 방정식'
h '일치하지 않는 방정식'
;
n1(i1(u)).. v(u-1) + v(u) + c * v(u+1) =N= min(2,ord(u));
n2(i2(u)).. v(u-1) + v(u) + c * v(u+1) =N= min(2,ord(u));
n3(i3(u)).. v(u-1) + v(u) + c * v(u+1) =N= min(2,ord(u));
e1(i1(u)).. v(u-1) + v(u) + c * v(u+1) =E= min(2,ord(u));
e2(i2(u)).. v(u-1) + v(u) + c * v(u+1) =E= min(2,ord(u));
e3(i3(u)).. v(u-1) + v(u) + c * v(u+1) =E= min(2,ord(u));
h .. v('b') + v('c') =E= 2;
$ifthen OLDWAY로 설정
모델 m1 / n1.v, n2.v, n3.v /;
모델 m2 / n1.v /;
모델 mf '일치하지 않는 h 포함' / m1, h /;
$else
모델 m1 / ( n1 | n2 | n3 ) : v /;
모델 m2 / (n1) : v /;
모델 mf '일치하지 않는 h 포함' / m1, h /;
$endif
모델 mu '완전히 비교할 수 없음' / e1, e2, e3 /;
$macro CHECK_MOD(m) abort$[m.solvestat <> 1] '잘못된solvestat', m.solvestat
$ontext
-----------------------------------------------------------
행: n1_a, n2_b, n3_c
열: v_a, v_b, v_c
결과: v의 경계에 관계없이 좋은 일치
-----------------------------------------------------------
$offtext
i1(u) = sameas(u,'a');
i2(u) = sameas(u,'b');
i3(u) = sameas(u,'c');
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.fx('b') = 1;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.lo('b') = -INF;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.up('b') = 0.5;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.up('b') = INF;
$ontext
-----------------------------------------------------------
행: n2_b, n3_c
열: v_a, v_b, v_c
결과: v_a가 고정되어 있는 한 좋은 일치
-----------------------------------------------------------
$offtext
i1(u) = 아니요;
i2(u) = sameas(u,'b');
i3(u) = sameas(u,'c');
v.fx('a') = 1;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.fx('b') = 1;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.up('b') = INF;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.lo('b') = 0.5;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
v.lo('b') = -INF;
v.lo('a') = -INF;
v.up('a') = INF;
$ontext
-----------------------------------------------------------
행: n1_a, n1_b, n1_c
열: v_a, v_b, v_c
결과: v_a가 고정되어 있는 한 좋은 일치
-----------------------------------------------------------
$offtext
i1(u) = 그렇습니다;
i2(u) = 아니오;
i3(u) = 아니요;
슬롯 게임를 사용하여 m1을 해결합니다. CHECK_MOD(m1);
슬롯 게임를 사용하여 m2를 해결합니다. CHECK_MOD(m2);
$ontext
-----------------------------------------------------------
행: n1_a, n2_b, h
열: v_a, v_b, v_c
결과: v_c가 비어 있는 한 좋은 일치
-----------------------------------------------------------
$offtext
i1(u) = sameas(u,'a');
i2(u) = sameas(u,'b');
i3(u) = 아니요;
슬롯 게임를 사용하여 mf를 해결합니다. CHECK_MOD(mf);
$ontext
-----------------------------------------------------------
행: e1_b, e2_c
e3_c
열: v_a, v_b, v_c
결과: v가 비어 있는 한 좋은 일치
하지만 모델이 좋지 않습니다. 아마도 사용자가 원하는 것이 아닐 수도 있습니다.
-----------------------------------------------------------
$offtext
i1(u) = sameas(u,'b');
i2(u) = sameas(u,'c');
i3(u) = sameas(u,'c');
슬롯 게임를 사용하여 mu를 해결합니다. CHECK_MOD(뮤);