mcp18.gms : 모델 문에서 evList 일치 테스트

설명

모델 명령문에서 evList 일치를 테스트합니다.
특히 유효한 입력에 대해 테스트하십시오.

기고자: Steven Dirkse, 2025년 4월

소형 모델 유형 :슬롯 게임


카테고리 : 슬롯 게임 테스트 라이브러리


메인 파일 : mcp18.gms

$title 모델 명령문에서 evList 일치 테스트(MCP18, SEQ=982)

$ontext
모델 문에서 evList 일치를 테스트합니다.
특히 유효한 입력에 대해 테스트하십시오.

기고자: Steven Dirkse, 2025년 4월
$offtext

세트
  k / a, b /
  j / 1, 2 /
  kj(k,j)
  ;
별칭(k,i);
테이블 A(i,k,j)
    a.1 a.2 b.1 b.2
1 -1 4 1
b 1 1 1 4 ;
매개변수
  v_(k,j)
  b(i)
  ;
v_(k,j) = ord(k) + (ord(j)-1)/2;
b(i) = 합계(k,j), A(i,k,j)*v_(k,j);
변수
  v(k,j)
  ;
방정식
  에프(나)
  ;
f(i).. 합계(k,j), A(i,k,j)*v(k,j) =E= b(i);

모델 mf / ( f ) : ( v ) /;

$macro CHECK_MOD(m) abort$[m.solvestat <> 1] '잘못된solvestat', m.solvestat

$ontext
-----------------------------------------------------------
사례: (f).(v) 
행: f_a, f_b 열: v_a1, v_a2, v_b1, v_b2
결과: 2개의 열이 비어 있고 나머지는 고정되어 있다고 가정하면 잘 일치합니다.
-----------------------------------------------------------
$offtext

kj(k,j) = 아니오;
kj(i,'2') = 예;
v.lo(k,j) = -INF;  v.up(k,j) = INF;
v.fx(kj) = v_(kj);
mcp를 사용하여 mf를 해결합니다.  CHECK_MOD(mf);

kj(k,j) = 아니오;
kj('a','2') = 예;
kj('b','1') = 예;
v.lo(k,j) = -INF;  v.up(k,j) = INF;
v.fx(kj) = v_(kj);
* evList 모델이 다른 모델의 일부가 될 수 있는지 확인하세요.
모델 mmf / mf /;
mcp를 사용하여 mmf를 해결합니다.  CHECK_MOD(mmf);

kj(k,j) = 아니오;
kj('a',j) = 예;
v.lo(k,j) = -INF;  v.up(k,j) = INF;
v.fx(kj) = v_(kj);
mcp를 사용하여 mf를 해결합니다.  CHECK_MOD(mf);