jointc2.gms : 교육용 이중 레벨 모델

설명

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

첫 번째 모델
-----------
낮은 수준의 문제에는 기본적으로 x <= 1을 의미하는 y = -x가 필요합니다.
상위 레벨 문제의 경우. x의 하한은 1이므로 해는
x = 1, y = -1입니다.

두 번째 모델
------------
상위 수준 문제는 x s.t를 최대화합니다. 제약 조건이 없으므로 x는
상한에서는 x = 2입니다. 이는 하위 수준 문제의 경우 y >= 0을 의미합니다.
이는 y를 최소화하므로 y = 0입니다.

기고자: Michael Ferris, 2009년 11월

소형 모델 유형 :BP


카테고리 : 무료 슬롯 EMP 라이브러리


메인 파일 : jointc2.gms

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

$onText

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

첫 번째 모델
-----------
낮은 수준의 문제에는 기본적으로 x <= 1을 의미하는 y = -x가 필요합니다.
상위 레벨 문제의 경우. x의 하한은 1이므로 해는
x = 1, y = -1입니다.

두 번째 모델
------------
상위 수준 문제는 x s.t를 최대화합니다. 제약 조건이 없으므로 x는
상한에서는 x = 2입니다. 이는 하위 수준 문제의 경우 y >= 0을 의미합니다.
이는 y를 최소화하므로 y = 0입니다.

기고자: Michael Ferris, 2009년 11월

$offText

변수 x, y;

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

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

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

*알려진 솔루션에서 시작
x.l = 2;
y.l = 0;

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