설명
이 모델은 EMP를 사용하여 간단한 VI를 해결하는 방법을 보여줍니다. VI는 X에서 x를 찾는 것입니다. F(x) (y - x) >= 0, X의 모든 y에 대해 X는 닫힌 볼록 집합입니다. X = x >= 0 | g(x) >= 0 이어서 모델 '개혁'은 EMP가 내부적으로 해결하는 MCP를 예시한다. 기고자: Michael Ferris, 2010년 2월
소형 모델 유형 :VI
카테고리 : 피망 슬롯 EMP 라이브러리
메인 파일 : simplevi.gms
$title 단순변분부등식(SIMPLEVI,SEQ=46)
$onText
이 모델은 EMP를 사용하여 간단한 VI를 해결하는 방법을 보여줍니다.
VI는 X에서 x를 찾는 것입니다.
F(x) (y - x) >= 0, X의 모든 y에 대해
X는 닫힌 볼록 집합입니다. X = x >= 0 | g(x) >= 0
이어서 모델 '개혁'은 EMP가 내부적으로 해결하는 MCP를 예시한다.
기고자: Michael Ferris, 2010년 2월
$offText
세트
나는 / i1, i2 /
J / j1 * j3 /
;
테이블 A(I,J)
j1 j2 j3
나는1 1 1
i2 1 1 ;
매개변수 b(I) /
i1 6
i2 9
/;
양의 변수
x(J) '원시 변수, perp에서 f(J)'
;
방정식
에프(J)
지(나)
;
F(J).. 2 * x(J) =n= 0 ;
g(I).. sum j, A(I,J)*x(J) =g= b(I) ;
모델 simpleVI / F, g/;
파일 fx /"%emp.info%"/;
putclose fx 'vi F x g';
emp를 사용하여 simpleVI를 해결합니다.
$onText
이는 MCP로 다시 공식화될 수 있습니다.
0 <= F(x) - \grad g(x) u \perp x >= 0
0 <= g(x) \perp u >= 0
$offText
양의 변수
u(I) '보조 변수, perp to g(I)'
;
방정식
F_aux(J)
;
F_aux(J).. 2 * x(J) + 합계I, -A(I,J)*u(I) =n= 0 ;
u.l(I) = g.m(I);
모델 개혁 / F_aux.x, g.u/;
*simpleVI에서 얻은 솔루션을 벤치마킹합니다.
개혁.iterlim = 0;
mcp를 사용하여 개혁을 해결합니다.
abort$(reform.objval > 1e-9) '솔루션이 다릅니다'