mirrlees.gms : 간단한 비볼록 이중 레벨 프로그래밍 예제

설명

이 간단한 비볼록 예제는 다음에서 빌려왔습니다.

J. A. Mirrlees. 도덕적 해이와 관찰 불가능한 행동 이론:
파트 I. 경제 연구 검토, 66: 3-21, 1999.

기여자: Jan-H. Jagla, 2009년 1월

소형 모델 유형 :BP


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


메인 파일 : mirrlees.gms

$title 단순 비볼록 이중 레벨 프로그래밍 예제 (MIRRLEES,12)

$onText

이 간단한 비볼록 예제는 다음에서 차용되었습니다.

J. A. Mirrlees. 도덕적 해이와 관찰 불가능한 행동 이론:
파트 I. 경제 연구 검토, 66: 3-21, 1999.

기여자: Jan-H. 자글라, 2009년 1월

$offText

방정식
   외부로비
   내부 개체;

변수
   밖으로
   안으로;

양수 변수
   엑스
   와이;

스칼라 계수;

외부 개체.. out =e= sqr(y-2) + sqr(x-1);

innerobj.. in =e= -y*exp(-sqr(x+1)) - exp(-sqr(x-1));

모델 외부 / Outerobj /
      내부 / 내부 obj /
      emp / 외부, 내부 /;

* 모델을 다음과 같이 재구성하여 해결합니다.
* 평형 제약 조건이 있는 수학 프로그램(MPEC)
방정식 dLdy;
dLdy.. (1 + x)*exp(-sqr(1 + x))*y + (x - 1)*exp(-sqr(x - 1)) =N= 0;

모델 이중 레벨 / 외부, dLdy.y /;
mpec 최소화를 사용하여 이중 레벨을 해결합니다.
스칼라 out_l,x_l,y_l;
out_l = out.l;
x_l = x.l;
y_l = y.l;

* EMP를 사용하여 자동으로 재구성을 수행합니다.
$echo bilevel y min in x innerobj > "%emp.info%"
emp 최소화를 사용하여 emp를 해결합니다.

스칼라 tol /1e-6/;
중단$(abs(out_l - out.l)
       + 절대(x_l - x.l)
       + abs(y_l - y.l) > tol) '해법이 다릅니다';