flds913.gms : Princeton 이중레벨 최적화 예시 9.1.3

설명

로컬 및 글로벌 최적화 테스트 문제 핸드북의 테스트 문제 9.2.4
테스트 문제 9.1.3 onhttp://titan.princeton.edu/TestProblems/chapter9.html참조:

Floudas, C A, Pardalos, PM, Adjiman, C S, Esposito, W R, Gumus, Z H, Harding,
S T, Klepeis, J L, Meyer, CA 및 Schweiger, CA, 테스트 문제 핸드북
로컬 및 글로벌 최적화. 클루어 학술 출판사, 1999.

Candler, W 및 Townsley, R, 선형 2단계 프로그래밍 문제.
비교. Op. 결의안 9(1982), 59-76.

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

소형 모델 유형 :BP


카테고리 : 피망 슬롯 EMP 라이브러리


메인 파일 : flds913.gms

$title Princeton 이중 레벨 최적화 예 9.1.3 (FLDS913,SEQ=29)

$onText

  로컬 및 전역 최적화 테스트 문제 핸드북의 테스트 문제 9.2.4
  http://titan.princeton.edu/TestProblems/chapter9.html에서 문제 9.1.3을 테스트하세요.

참고자료:

Floudas, C A, Pardalos, PM, Adjiman, C S, Esposito, W R, Gumus, Z H, Harding,
S T, Klepeis, J L, Meyer, CA 및 Schweiger, CA, 테스트 문제 핸드북
로컬 및 글로벌 최적화. 클루어 학술 출판사, 1999.

Candler, W 및 Townsley, R, 선형 2단계 프로그래밍 문제.
비교. Op. 결의안 9(1982), 59-76.

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

$offText

*웹상의 문제 9.1.3 해결 방법
스칼라 x1_l / 0 /
       x2_l / 0.9 /
       y1_l / 0 /
       y2_l / 0.6 /
       y3_l / 0.4 /
       톨 / 1e-6 /;

변수 z, z_in; 양수 변수 x1, x2, y1, y2, y3;
방정식 ob, ob_in, c2, c3, c4;

ob.. - 8*x1 - 4*x2 + 4*y1 - 40*y2 - 4*y3 =e= z;

ob_in.. x1 + 2*x2 + y1 + y2 + 2*y3 =e= z_in;
c2.. - y1 + y2 + y3 =l= 1;
c3.. 2*x1 - y1 + 2*y2 - 0.5*y3 =l= 1;
c4.. 2*x2 + 2*y1 - y2 - 0.5*y3 =l= 1;

모델 이중 레벨 / 모두 /;

$echo 이중 레벨 x1 x2 min z_in y1 y2 y3 ob_in c2 c3 c4 > "%emp.info%"

* 보고된 솔루션에서 시작
x1.l = x1_l;
x2.l = x2_l;
y1.l = y1_l;
y2.l = y2_l;
y3.l = y3_l;
* 보고된 솔루션은 글로벌 어트랙터가 아닙니다. 솔버에 도움이 되도록 x2를 수정하고,
* 그렇지 않으면 발견된 해는 사용된 솔버에 따라 달라집니다.
x2.fx = x2_L;

z를 최소화하는 emp를 사용하여 이중 레벨을 해결합니다.

중단$((abs(x1.l - x1_l) > tol)
       또는 (abs(x2.l - x2_l) > tol)
       또는 (abs(y1.l - y1_l) > tol)
       또는 (abs(y2.l - y2_l) > tol)
       또는 (abs(y3.l - y3_l) > tol) ) '보고된 솔루션에서 벗어남';

* 이제 x2를 수정한 후 솔루션을 얻었는지 확인합니다.
x2.up = INF;

z를 최소화하는 emp를 사용하여 이중 레벨을 해결합니다.

중단$((abs(x1.l - x1_l) > tol)
       또는 (abs(x2.l - x2_l) > tol)
       또는 (abs(y1.l - y1_l) > tol)
       또는 (abs(y2.l - y2_l) > tol)
       또는 (abs(y3.l - y3_l) > tol) ) '보고된 솔루션에서 벗어남';