interval.gms : 간격 평가 테스트

설명

기고자: Arne Drud, 2010년 12월

소형 모델 유형 :무료 슬롯 게임


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


메인 파일 : 간격.gms

$title 간격 평가 테스트(INTERVAL,SEQ=506)
$onText

기고자: Arne Drud, 2010년 12월

$offText

$onEchoV > decr.gms
$eolCom !
*
* 다양한 조합으로 단조롭게 감소하는 기능
*

$글로벌을 설정하지 않은 경우 $set 글로벌 0
Scalar Global 솔버가 전역적이면 1, 그렇지 않으면 0 / %global% /
       국소 최적 솔루션을 위한 LOpt_Stat 모델 상태 / 2 /
       LInfeas_Stat 로컬로 실현 불가능한 솔루션에 대한 모델 상태 / 5 /
       전역적으로 최적의 솔루션을 위한 GOpt_Stat 모델 상태 / 1 /
       전 세계적으로 실현 불가능한 솔루션에 대한 GInfeas_Stat 모델 상태 / 4 /
       여기에 사용된 최적의 솔루션에 대한 Opt_Stat 모델 상태
       여기에 사용된 실행 불가능한 솔루션에 대한 Infeas_Stat 모델 상태;

세트 케이스 / 높음, 중간, 낮음 /;
매개변수 RhsV(경우)
스칼라 Rhs;
변수 x;

$if not set case $abort 매개변수 케이스는 기존 포함 파일을 정의해야 합니다.
$include %case%

abort$(x.lo >= x.up) "하한과 상한이 일치하지 않습니다.", x.lo, x.up;
*
* Rhsv를 하단의 함수값보다 높게 정의한다.
* 간격 및 간격의 상단에 있는 함수 값보다 낮습니다.
* rhsv(mid)의 중간에 있는 함수 값과 일치합니다.

Rhsv("높음") = func(x.lo) + 1.0;
Rhsv("mid") = func(((x.lo+x.up)/2));
Rhsv("낮음") = func(x.up) - 1.0;

방정식 e_eq;
e_eq .. func(x) =E= Rhs;
모델 decr_eq / e_eq /;

방정식 e_gt;
e_gt .. func(x) =G= Rhs;
모델 decr_gt / e_gt /;

방정식 e_lt;
e_lt .. func(x) =L= Rhs;
모델 decr_lt / e_lt /;

*
* 로컬 솔버에 대한 원하는 모델 상태: 2 = 로컬로 최적, 5 = 로컬로 실행 불가능
*
매개변수 Mstat_eq(Case) / high 5
                           2 중반
                           낮음 5 /;
매개변수 Mstat_gt(Case) / high 5
                           2 중반
                           낮음 2 /;
매개변수 Mstat_lt(Case) / high 2
                           2 중반
                           낮음 5 /;
*
* 해당되는 경우 글로벌 반환 코드로 번역합니다.
*
if ( 글로벌,
  옵션 nlp=conopt4;
  Opt_Stat = GOpt_Stat; Infeas_Stat = GInfeas_Stat;
  Mstat_eq(케이스)$(Mstat_eq(케이스) eq LOpt_Stat) = Opt_Stat;
  Mstat_eq(케이스)$(Mstat_eq(케이스) eq LInfeas_Stat) = Infeas_Stat;
  Mstat_gt(케이스)$(Mstat_gt(케이스) eq LOpt_Stat) = Opt_Stat;
  Mstat_gt(케이스)$(Mstat_gt(케이스) eq LInfeas_Stat) = Infeas_Stat;
  Mstat_lt(케이스)$(Mstat_lt(케이스) eq LOpt_Stat) = Opt_Stat;
  Mstat_lt(case)$(Mstat_lt(case) eq LInfeas_Stat) = Infeas_Stat;
그렇지 않으면
  옵션 nlp=conopt3;
  Opt_Stat = LOpt_Stat; Infeas_Stat = LInfeas_Stat;
);
*
* 최적 모델 솔루션의 특징:
* 1: 상한에 있는 변수
* 2: 동등성으로 제약 조건에 의해 결정되는 변수
*
매개변수 Char_eq(case) / mid 2 /;
매개변수 Char_gt(case) / mid 2, low 1 /;
매개변수 Char_lt(case) / 높음 1, 중간 1 /;

옵션 limrow = 0, limcol = 0;
루프(케이스,
   Rhs = RhsV(케이스);

   if(글로벌이 아님,x.l = (x.up+x.lo)/2;);
   x를 최대화하는 nlp를 사용하여 decr_eq를 해결합니다.
   abort$(decr_eq.solvestat ne 1) "해석기 상태가 1이 아닙니다.";
   abort$(decr_eq.modelstat ne Mstat_eq(case)) "모델 상태가 예상과 다릅니다.";
   if ( decr_eq.modelstat eq Opt_Stat,
      if ( Char_eq(case) eq 1,
         abort$(abs(x.l-x.up) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
      if ( Char_eq(case) eq 2,
         abort$(abs(func(x.l)-RhsV(case)) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
   );

   if(글로벌이 아님,x.l = (x.up+x.lo)/2;);
   x를 최대화하는 nlp를 사용하여 decr_gt를 해결합니다.
   abort$(decr_gt.solvestat ne 1) "솔버 상태가 1이 아닙니다.";
   abort$(decr_gt.modelstat ne Mstat_gt(case)) "모델 상태가 예상과 다릅니다.";
   if(decr_gt.modelstat eq Opt_Stat,
      if ( Char_gt(case) eq 1,
         abort$(abs(x.l-x.up) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
      if ( Char_gt(case) eq 2,
         abort$(abs(func(x.l)-RhsV(case)) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
   );

   if(글로벌이 아님,x.l = (x.up+x.lo)/2;);
   x를 최대화하는 nlp를 사용하여 decr_lt를 해결합니다.
   abort$(decr_lt.solvestat ne 1) "솔버 상태가 1이 아닙니다.";
   abort$(decr_lt.modelstat ne Mstat_lt(case)) "모델 상태가 예상과 다릅니다.";
   if ( decr_lt.modelstat eq Opt_Stat,
      if ( Char_lt(case) eq 1,
         abort$(abs(x.l-x.up) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
      if ( Char_lt(case) eq 2,
         abort$(abs(func(x.l)-RhsV(case)) > 1.e-7) "솔루션 값이 예상과 다릅니다."; );
   );

);
$offEcho

$onEcho > dcase1.gms
$매크로 함수(x) -log(x)
x.lo = 0.1; x.up = 2;
$offEcho

$onEcho > dcase2.gms
$macro func(x) -power(x,3)-x
x.lo = 0.0; x.up = 1.0;
$offEcho

$onEcho > dcase3.gms
$macro func(x) -power(x,3)
x.lo = -1.0; x.up = -0.1;
$offEcho

$onEcho > dcase4.gms
$macro func(x) -power(x,3)
x.lo = -1.0; x.up = 0;
if(글로벌이 아님,x.l = -1;);
$offEcho

$onEcho > dcase5.gms
$매크로 기능(x) -exp(x)
x.lo = -1; x.up = 2;
$offEcho

$onEcho > dcase6.gms
$macro func(x) -exp(x)+exp(-x)
x.lo = -1; x.up = 2;
$offEcho

$onEcho > dcase7.gms
$macro func(x) 1-오류f(x)
x.lo = 0.1; x.up = 2;
$offEcho

$onEcho > dcase8.gms
$매크로 함수(x) sqr(x)
x.lo = -2.0; x.up = -0.1;
$offEcho

$onEcho > dcase9.gms
$macro func(x) sqr(x)-power(x,3)
x.lo = -1.0; x.up = -0.1;
$offEcho

$onEcho > dcase10.gms
$macro func(x) -power(x,3)-x
x.lo = -1.0; x.up = 1.0;
$offEcho

$onEcho > dcase11.gms
$macro func(x) -power(x,3)
x.lo = -1.0; x.up = 1.2;
$offEcho

$onEcho > dcase12.gms
$macro func(x) -power(x,3)
x.lo = 0.0; x.up = 1.2;
$offEcho

$call 무료 슬롯 게임 decr --case=dcase1 --global=1 lo=2 o=dcase1.lst
$if errorlevel 1 $abort 'dcase1 --global=1 실패, dcase1.lst' 참조
$call 무료 슬롯 게임 decr --case=dcase2 --global=1 lo=2 o=dcase2.lst
$if errorlevel 1 $abort 'dcase2 --global=1 실패, dcase2.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase3 --global=1 lo=2 o=dcase3.lst
$if errorlevel 1 $abort 'dcase3 --global=1 실패, dcase3.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase4 --global=1 lo=2 o=dcase4.lst
$if errorlevel 1 $abort 'dcase4 --global=1 실패, dcase4.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase5 --global=1 lo=2 o=dcase5.lst
$if errorlevel 1 $abort 'dcase5 --global=1 실패, dcase5.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase6 --global=1 lo=2 o=dcase6.lst
$if errorlevel 1 $abort 'dcase6 --global=1 실패, dcase6.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase7 --global=1 lo=2 o=dcase7.lst
$if errorlevel 1 $abort 'dcase7 --global=1 실패, dcase7.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase8 --global=1 lo=2 o=dcase8.lst
$if errorlevel 1 $abort 'dcase8 --global=1 실패, dcase8.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase9 --global=1 lo=2 o=dcase9.lst
$if errorlevel 1 $abort 'dcase9 --global=1 실패, dcase9.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase10 --global=1 lo=2 o=dcase10.lst
$if errorlevel 1 $abort 'dcase10 --global=1 실패, dcase10.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase11 --global=1 lo=2 o=dcase11.lst
$if errorlevel 1 $abort 'dcase11 --global=1 실패, dcase11.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase12 --global=1 lo=2 o=dcase12.lst
$if errorlevel 1 $abort 'dcase12 --global=1 실패, dcase12.lst 참조'

$call 무료 슬롯 게임 decr --case=dcase1 --global=0 lo=2 o=dcase1.lst
$if errorlevel 1 $abort 'dcase1 --global=0 실패, dcase1.lst' 참조
$call 무료 슬롯 게임 decr --case=dcase2 --global=0 lo=2 o=dcase2.lst
$if errorlevel 1 $abort 'dcase2 --global=0 실패, dcase2.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase3 --global=0 lo=2 o=dcase3.lst
$if errorlevel 1 $abort 'dcase3 --global=0 실패, dcase3.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase4 --global=0 lo=2 o=dcase4.lst
$if errorlevel 1 $abort 'dcase4 --global=0 실패, dcase4.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase5 --global=0 lo=2 o=dcase5.lst
$if errorlevel 1 $abort 'dcase5 --global=0 실패, dcase5.lst' 참조
$call 무료 슬롯 게임 decr --case=dcase6 --global=0 lo=2 o=dcase6.lst
$if errorlevel 1 $abort 'dcase6 --global=0 실패, dcase6.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase7 --global=0 lo=2 o=dcase7.lst
$if errorlevel 1 $abort 'dcase7 --global=0 실패, dcase7.lst' 참조
$call 무료 슬롯 게임 decr --case=dcase8 --global=0 lo=2 o=dcase8.lst
$if errorlevel 1 $abort 'dcase8 --global=0 실패, dcase8.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase9 --global=0 lo=2 o=dcase9.lst
$if errorlevel 1 $abort 'dcase9 --global=0 실패, dcase9.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase10 --global=0 lo=2 o=dcase10.lst
$if errorlevel 1 $abort 'dcase10 --global=0 실패, dcase10.lst 참조'
$call 무료 슬롯 게임 decr --case=dcase11 --global=0 lo=2 o=dcase11.lst
$if errorlevel 1 $abort 'dcase11 --global=0 실패, dcase11.lst' 참조
$call 무료 슬롯 게임 decr --case=dcase12 --global=0 lo=2 o=dcase12.lst
$if errorlevel 1 $abort 'dcase12 --global=0 실패, dcase12.lst' 참조