설명
이것은 슬롯 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: 잘못된 상태 코드';