emp23.gms : 암시적 변수 처리에 대한 JAMS/EMP 테스트

설명

암시적 변수를 사용하여 소규모 평형 모델에서 JAMS 동작을 테스트합니다.

기고자: 김영대 및 Steve Dirkse, 2016년 12월

소형 모델 유형 :무료 슬롯


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


메인 파일 : emp23.gms

$title '암시적 변수 처리에 대한 JAMS/EMP 테스트' (EMP23,SEQ=705)

$onText
암시적 변수를 사용하여 소규모 평형 모델에서 JAMS 동작을 테스트합니다.

기고자: 김영대 & Steve Dirkse, 2016년 12월
$offText
$설정되지 않은 경우 TESTTOL $set TESTTOL 1e-3
스칼라 tol / %TESTTOL% /;
파일 opt / 'jams.opt' /;
파일 정보 / '%emp.info%' /;

i 에이전트를 설정합니다 / 1*2 /;

* 생성되는 스칼라 파일은 변수 선언 순서에 따라 달라지며,
* 따라서 선언을 가볍게 변경하지 마십시오.

* 목적변수는 에이전트 간 공유변수입니다.
* 공유 구현을 위해 목적 변수를 암시적 변수로 설정했습니다.
* 목적변수.

변수
    objExp(i)
    객체
    엑스
    ;

양의 변수 p;

방정식
    defobjExp(i)
    데포브
    디플로
    디펙스업
    ;

defobjExp(i)..
    objExp(i) =E= sqr(p) - p - sqr(x) - x;

디플로..
    x =G= -p;

디팩스업..
    x =L=p;

나를 '명시적 공식'으로 모델링하세요. / defobjExp, defxlo, defxup /;
정보 '평형' 입력;
put / 'min', objExp('1'), p, defobjExp('1');
put / 'max', objExp('2'), x, defobjExp('2'), defxlo, defxup;
닫다;

putclose 선택
  '딕트 explDict.txt' /
  '파일명 expl.gms' ;

나.optfile = 1;
emp를 사용하여 문제를 해결하세요.
중단$[me.solvestat <> %solveStat.normalCompletion%]
   '잘못된 me.solvestat', me.solvestat;
중단$[me.modelstat > %modelStat.locallyOptimal%]
   '잘못된 me.modelstat', me.modelstat;
abort$[ abs(objExp.l('1')-0) > tol ] 'bad objExp.l("1")', objExp.l;
abort$[ abs(objExp.l('2')-0) > tol ] 'bad objExp.l("2")', objExp.l;
중단$[ abs(x.l+.5) > tol ] '잘못된 x.l', x.l;
abort$[ abs(p.l-.5) > tol ] '나쁜 p.l', p.l;

x.l = 0;
p.l = 0;
defxlo.m = 0;
defxup.m = 0;

$onEcho > expl_gms
***********************************************
* 무료 슬롯/JAMS가 2016년 12월 4일 16:32:21에 작성함
* 자세한 내용은 JAMS 옵션 "Dict"를 사용하세요.
***********************************************

변수 x3,x4,u3,u4;

음수 변수 u3;

양수 변수 x4;

양수 변수 u4;

방정식 e3,e4,dL_dx3,dL_dx4;

e3..0 =L= x3 + x4;

e4..0 =G= x3 - x4;

dL_dx3.. (-(-1 - 2*x3))/(1) + u3 + u4 =E= 0;

dL_dx4.. (-(-1 + 2*x4))/(-1) =G= 0;

모델 m / e3.u3,e4.u4,dL_dx3.x3,dL_dx4.x4 /;

m.limrow=0; m.limcol=0;

MCP를 사용하여 m을 해결합니다.
$offEcho

무료 슬롯에 의해 작성된 'grep -v "를 실행하십시오. expl_gms > expl.gms.want'
무료 슬롯에 의해 작성된 'grep -v "를 실행하십시오. expl.gms > expl.gms.got'
'=diff -I reslim -bw expl.gms.want expl.gms.got'을 실행합니다.
abort$errorlevel 'expl.gms.want와 expl.gms.got 파일이 다릅니다.';

$onEcho > expl_dict
* 무료 슬롯/JAMS가 2016년 12월 4일 16:32:21에 작성함

********************************************************************************
 목차
 1 EMP 정보 파일의 내용
 2 처리된 EMP 정보
 3 사전
  3.1 제약
  3.2 변수
********************************************************************************

 1 EMP 정보 파일의 내용
 ---------------------------------

     1:평형
     2:최소 objExp('1') p defobjExp('1')
     3:max objExp('2') x defobjExp('2') defxlo defxup

 2 처리된 EMP 정보
 --------------

 3 사전
 ------------
  3.1 제약
  ---------------

      재구성된 defobjExp(1)
      재공식화 defobjExp(2)
                  e3 디플로
                  e4 디팩스업
              dL_dx3 신규
              dL_dx4 신규

  3.2 변수
 --------------

      재공식화 objExp(1)
      재공식화 objExp(2)
                  x3 x
                  x4p
                  u3 새로운
                  u4 새로운