설명
이것은 상위 레벨 관절 제약이 있음을 보여주는 예입니다. 단순히 하위 수준 모델에 넣을 수는 없습니다. 첫 번째 모델 ----------- 낮은 수준의 문제에는 기본적으로 -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)) ) '잘못된 해결 방법: 두 번째 모델';