jointc1.gms : 교육용 이중 모델

설명

이것은 상위 레벨 관절 제약이 있음을 보여주는 예입니다.
단순히 하위 수준 모델에 넣을 수는 없습니다.

첫 번째 모델
-----------
낮은 수준의 문제에는 기본적으로 -x >= x를 의미하는 y = -x가 필요합니다.
상위 레벨 문제의 경우. 하한이 1이므로 이 모델은 실행 불가능합니다.

두 번째 모델
------------
더 낮은 수준의 문제에는 기본적으로 y = |x|가 필요합니다. x와 y는
최소화되고 x의 하한은 1입니다. 해는 x = 1 = y입니다.

기고자: Michael Ferris, 2009년 11월

소형 모델 유형 :BP


카테고리 : 슬롯 사이트 추천 EMP 라이브러리


메인 파일 : jointc1.gms

$title 교육용 이중 레벨 모델(JOINTC1, SEQ=22)

$onText

이는 상위 수준의 관절 제약 조건을 보여주는 예입니다.
단순히 하위 수준 모델에 넣을 수는 없습니다.

첫 번째 모델
-----------
낮은 수준의 문제에는 기본적으로 -x >= x를 의미하는 y = -x가 필요합니다.
상위 레벨 문제의 경우. 하한이 1이므로 이 모델은 실행 불가능합니다.

두 번째 모델
------------
더 낮은 수준의 문제에는 기본적으로 y = |x|가 필요합니다. x와 y는
최소화되고 x의 하한은 1입니다. 해는 x = 1 = y입니다.

기고자: Michael Ferris, 2009년 11월

$offText

변수 x, y;

방정식 위, 아래;
위..y =g= x;
더 낮게.. y =g= -x;
모델 jc /all/;
x.lo = 1;

파일 핸들 /"%emp.info%"/;

*첫 번째 모델
putclose fhandle '이중 최소 y 하위';
emp min x를 사용하여 jc를 해결합니다.
* 실제로 실행 불가능한지 확인
중단$(jc.solvestat <> %solveStat.normalCompletion%
       또는 ((jc.modelstat <> %modelStat.infeasible%)
           and (jc.modelstat <> %modelStat.locallyInfeasible%)) ) '잘못된 해결 방법: 첫 번째 모델';

*초기값 재설정
x.l = 2;
y.l = 0;

*두 번째 모델
putclose fhandle 'bilevel min y upper lower';
emp min x를 사용하여 jc를 해결합니다.
* 해가 x = y = 1인지 확인
중단$(jc.solvestat <> %solveStat.normalCompletion%
      또는 ((abs(x.l-1) > 1e-6) 또는 (abs(y.l-1) > 1e-6)) ) '잘못된 해결 방법: 두 번째 모델';