empbp05.gms : MIN 팔로어와 VI 팔로어가 있는 이중 레벨 모델

설명

이것은 슬롯 EMP 라이브러리의 bard871 모델 버전입니다.

   8장, 예 8.7.1, 358페이지의 예

   John F. Bard, 실용적인 이중 레벨 최적화: 알고리즘 및 애플리케이션,
   Kluwer 학술 출판사, Dordrecht, 1998.

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

소형 모델 유형 :슬롯


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


메인 파일 : empbp05.gms

$title MIN 팔로어 대 VI 팔로어가 있는 이중 레벨 모델(EMPBP05,SEQ=466)

$onText
이는 슬롯 EMP 라이브러리의 bard871 모델 버전입니다.

   8장, 예 8.7.1, 358페이지의 예

   John F. Bard, 실용적인 이중 레벨 최적화: 알고리즘 및 애플리케이션,
   Kluwer 학술 출판사, Dordrecht, 1998.

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

$offText

*보고된 솔루션은 다음과 같습니다.
스칼라 x_l /11.25/
       y_l / 5/
       톨 / 1e-3/;

양의 변수 x,y; 변수 objout,objin;
방정식 defout,defin,e1,e2;

defout.. objout =e= 16*sqr(x) + 9*sqr(y);
정의.. objin =e= power(x+y-20,4);

e1.. -4*x + y =l= 0;
e2..4*x + y =l= 50;

모델 바드 / 모두 /;

$echo bilevel x min objin * e2 정의 > "%emp.info%"

*보고된 솔루션에서 시작
x.l = x_l ;
y.l = y_l;

bard us emp min objout 해결;

중단$( (abs(x.l - x_l ) > tol)
      또는 (abs(y.l - y_l ) > tol) ) 'Bard: 전역 솔루션을 찾을 수 없습니다';
abort$((bard.solvestat <> %solveStat.normalCompletion%) 또는
       (bard.modelstat <> %modelStat.locallyOptimal% )) 'Bard: 잘못된 상태 코드';

*이제 VI로 공식화된 팔로어로 풀기
방정식 viin; viin.. 4*power(x+y-20,3) =N= 0;

모델 bard_vi / defout,e1,e2,viin /;

'echo bilevel x vi viin y e2 > "%emp.info%"'를 실행합니다.

* 동일한 솔루션을 얻었는지 확인하지만, 이를 얻을 것이라고 가정할 수는 없습니다.
* 제로 반복: 재구성이 항상 그런 식으로 작동하는 것은 아닙니다.
bard_vi us emp min objout를 해결하십시오.

중단$( (abs(x.l - x_l ) > tol)
      또는 (abs(y.l - y_l ) > tol) ) 'Bard_VI: 전역 솔루션을 찾을 수 없습니다';
abort$((bard.solvestat <> %solveStat.normalCompletion%) 또는
       (bard.modelstat <> %modelStat.locallyOptimal% )) 'Bard_VI: 잘못된 상태 코드';