mpec04.gms : 자유 행을 테스트하는 MPEC 모델

설명

여유 행은 다양한 방법으로 나타날 수 있습니다.  일부 솔버는 그렇지 않기 때문에
빈 행을 처리하려면 가능한 모든 사례를 포착해야 합니다.
그것들을 짜내는 코드에서 그것들이 발생할 수 있습니다.

기고자: Steve Dirkse, 2013년 8월

소형 모델 유형 :MPEC


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


메인 파일 : mpec04.gms

$title MPEC 모델 테스트 무료 행(MPEC04,SEQ=615)

$onText
사용 가능한 행은 다양한 방법으로 나타날 수 있습니다.  일부 솔버는 그렇지 않기 때문에
빈 행을 처리하려면 가능한 모든 사례를 포착해야 합니다.
그것들을 짜내는 코드에서 그것들이 발생할 수 있습니다.

기고자: Steve Dirkse, 2013년 8월
$offText

스칼라 z0, x0 /1/, yN0 /2/, yE0 /2/, yG0 /2/, yL0 /2/;
z0 = sqr(x0-2) + sqr(yN0-1) + sqr(yE0-1) + sqr(yG0-1) + sqr(yL0-1);
변수 x, yN, yE, yG, yL, z;
x.fx = x0;
yN.fx = yN0;
yE.fx = yE0;
yG.fx = yG0;
yL.fx = yL0;
방정식
  f '빈 행이 일치하지 않음'
  gN '고정 변수와 일치하는 자유 행'
  gE '고정 변수와 일치하는 동일 행'
  gG '=G= 고정 변수와 일치하는 행'
  gL '=L= 고정 변수와 일치하는 행'
  오;

f .. exp(x) =N= 0;
gN .. rpower(yN,1.5) =N= 7;
gE .. rpower(yE,0.5) =E= 322;
gG .. rpower(yE,0.6) =G= 20;
gL .. rpower(yE,0.7) =L= 22;
o .. sqr(x-2) + sqr(yN-1) + sqr(yE-1) + sqr(yG-1) + sqr(yL-1) =e= z;

모델 m / f, gN.yN, gE.yE, gG.yG, gL.yL, o /;

mpec min z를 사용하여 m을 해결합니다.
abort$[m.solvestat <> %solveStat.normalCompletion%] '잘못된solvestat',
  m.solvestat;
abort$[abs(z.l-z0) > 1e-5] '불량 z', z.l, z0;

m.holdfixed = 1;
mpec min z를 사용하여 m을 해결합니다.
abort$[m.solvestat <> %solveStat.normalCompletion%] '잘못된solvestat',
  m.solvestat;
중단$[abs(z.l-z0) > 1e-5] '불량 z', z.l, z0;