설명
7장의 예, 예 7.1, 274페이지 Conejo A J, Castillo E, Minguez R 및 Garcia-Bertrand R, 분해 수학적 계획법의 기술, Springer, 베를린, 2006년. 기여자: Jan-H. Jagla, 2009년 1월
소형 모델 유형 :BP
카테고리 : 슬롯 커뮤니티 EMP 라이브러리
메인 파일 : ccmg71.gms
$title 엔지니어링 예제 7.1의 이중 레벨 프로그램(CCMG71,10)
$onText
7장, 예 7.1, 274페이지의 예
Conejo A J, Castillo E, Minguez R 및 Garcia-Bertrand R, 분해
수학적 계획법의 기술, Springer, 베를린, 2006년.
기여자: Jan-H. 자글라, 2009년 1월
$offText
변수 z,x1,x2,x3,x4,h1,h2,u1,u2,u3,u4,v1,v2,v3,v4;
방정식 defobj,defh1,defh2,a0,a1,a2,e1,e2;
스칼라 h1_0 / 1.2 /
h2_0 / 6 /;
defobj.. z =e= sqr(x1+x2-2) + sqr(x3+x4-2);
a0..h1 =e= h1_0;
a1..h2 =e= h2_0;
a2..x1-x2 =e= 3;
defh1.. h1 =e= sqr(u1-x1) + sqr(u2-x2) + sqr(u3-x3) + sqr(u4-x4);
e1..3*u1 + u2 + 2*u3 + u4 =e= 6;
defh2.. h2 =e= sqr(v1-x1) + sqr(v2-x2) + sqr(v3-x3) + sqr(v4-x4);
e2..v1 + v2 + v3 + 2*v4 =e= 7;
모델 마스터 / defobj, a0, a1, a2 /
하위 모델1 / defh1, e1 /
하위 모델2 / defh2, e2 /;
*논문에 설명된 이완 방법으로 문제를 해결하세요.
v 반복 카운터 설정 / v1*v15 /;
매개변수 보고서(v,*) 반복 보고서;
스칼라 로 / 0.9 /
r1 / 7 /
r2 / 4 /
엡실론 / 1e-6 /;
방정식 sub1,sub2;
하위1.. 3*x1 + x2 + 2*x3 + x4 =e= r1;
하위2.. x1 + x2 + x3 + 2*x4 =e= r2;
모델 master2 / defobj,a2,sub1,sub2 /;
옵션 nlp=conopt,solvelink=%solveLink.callModule%,solprint=off,limrow=0,limcol=0;
h1.l = 0;
h2.l = 0;
루프(v$(((h1_0-h1.l) + (h2_0-h2.l)) > 엡실론),
master2 us nlp min z를 풀어보세요;
보고서(v,'z') = z.l;
보고서(v,'x1') = x1.l;
보고서(v,'x2') = x2.l;
보고서(v,'x3') = x3.l;
보고서(v,'x4') = x4.l;
보고서(v,'r1') = r1;
보고서(v,'r2') = r2;
x1.fx = x1.l;
x2.fx = x2.l;
x3.fx = x3.l;
x4.fx = x4.l;
submodel1 min h1 us nlp 풀기;
보고서(v,'h1') = h1.l;
submodel2 min h2 us nlp를 해결합니다.
보고서(v,'h2') = h2.l;
* 휴식
x1.lo = -inf; x1.up = inf;
x2.lo = -inf; x2.up = inf;
x3.lo = -inf; x3.up = inf;
x4.lo = -inf; x4.up = inf;
* 업데이트
r1 = r1 + rho*(h1_0-h1.l);
r2 = r2 + rho*(h2_0-h2.l);
);
보고서 표시;
*이제 우리는 모델을 단독으로 사용하기 위해 EMP를 사용합니다.
모델 emp / 마스터, 하위 모델1, 하위 모델2 /;
$onEcho > "%emp.info%"
2층 x1 x2 x3 x4
최소 h1 u1 u2 u3 u4 defh1 e1
최소 h2 v1 v2 v3 v4 defh2 e2
$offEcho
옵션solvelink=%solveLink.callScript%,solprint=on;
emp us emp min z 해결;