설명
슬롯 사이트 키워드 VI를 사용하면 다음에 대한 제약 세트를 지정할 수 있습니다. VI. 그러한 경우, 우리는 다음을 지정하는 방정식을 뒤집을 수 있습니다. 제약 세트. 이렇게 하면 생성된 MCP에서 3가지 항목이 반전됩니다. 1. 제약 조건 자체(예: Ax >= b는 b <= Ax가 됨) 2. 반전된 제약 조건에 대한 승수 perp(예: 양의 var에서 음의 var로) 3. MCP의 NE 모서리에 있는 제약 조건의 비대칭 대칭 반사입니다. 방정식에 대해 보고된 값은 뒤집어도 변경되지 않습니다. 우리는 이것을 아래에서 테스트합니다. 기고자: Steve Dirkse, 2023년 12월
소형 모델 유형 :슬롯 사이트
카테고리 : 슬롯 사이트 테스트 라이브러리
메인 파일 : emp35.gms
$title 'JAMS: VI로 제약 조건 뒤집기 테스트' (EMP35, SEQ=948)
$onText
슬롯 사이트 키워드 VI를 사용하면 다음에 대한 제약 세트를 지정할 수 있습니다.
VI. 그러한 경우, 우리는 다음을 지정하는 방정식을 뒤집을 수 있습니다.
제약 세트. 이렇게 하면 생성된 MCP에서 3가지 항목이 반전됩니다.
1. 제약 조건 자체(예: Ax >= b는 b <= Ax가 됨)
2. 반전된 제약 조건에 대한 승수 perp(예: 양의 var에서 음의 var로)
3. MCP의 NE 모서리에 있는 제약 조건의 비대칭 대칭 반사입니다.
방정식에 대해 보고된 값은 뒤집어도 변경되지 않습니다.
우리는 이것을 아래에서 테스트합니다.
기고자: Steve Dirkse, 2023년 12월
$offText
세트
j / j1 * j3 /
나는 / i1 * i2 /
;
매개변수
d(j) /
j1 1
j2 1
j3 1
/
b(i) /
i1 6
i2 6
/
;
테이블 A(i,j)
j1 j2 j3
나는1 2 1
i2 1 2 ;
변수
z
x(j)
;
방정식
에프
df(j)
지(나)
;
f..sumj, sqr(x(j)-d(j)) =E= z;
df(j).. 2 * (x(j)-d(j)) =N= 0;
g(i).. sumj, A(i,j)*x(j) =G= b(i);
모델 mnlp / f, g /;
모델 mvi / df, g /;
nlp min z를 사용하여 mnlp를 해결합니다.
파일 myinfo / '%슬롯 사이트info%' /;
putclose myinfo 'vi df x g';
mvi.iterlim = 0;
슬롯 사이트를 사용하여 mvi를 해결합니다.
abort$[mvi.solvestat <> %solveStat.normalCompletion%] 'mvi가 잘 해결될 것으로 예상됩니다.';
abort$[smaxi, abs(g.lo(i) - 6) > 0] '나쁜 g.lo, 예상되는 6', g.lo;
abort$[smaxi, abs(g.L(i) - 6) > 1e-5] '잘못된 g.L, 예상되는 6', g.L;
abort$[smaxi, abs(g.m(i) - 1) > 1e-5] '잘못된 g.m, 예상되는 1', g.m;
putclose myinfo 'vi df x -g';
슬롯 사이트를 사용하여 mvi를 해결합니다.
abort$[mvi.solvestat <> %solveStat.normalCompletion%] '플립을 사용하면 mvi가 잘 풀릴 것으로 예상됩니다.';
* 우리는 보고된 솔루션에서 반전되지 않은 제약 조건 g와 동일한 g 값을 기대합니다.
abort$[smaxi, abs(g.lo(i) - 6) > 0] '나쁜 g.lo, 예상되는 6', g.lo;
abort$[smaxi, abs(g.L(i) - 6) > 1e-5] '잘못된 g.L, 예상되는 6', g.L;
abort$[smaxi, abs(g.m(i) - 1) > 1e-5] '잘못된 g.m, 예상되는 1', g.m;