슬롯 사이트 : 유가식 반응기에서 분비된 슬롯 사이트의 최적 생산

참조

  • Neculai Andrei, GAMS 기술을 사용한 비선형 최적화 애플리케이션, 스프링거 최적화 및 그 애플리케이션, 모델슬롯 사이트(12.23) 장최적 제어, 2013

카테고리 : GAMS NOA 라이브러리


메인파일 : 슬롯 사이트.gms

$onText
유가식 반응기에서 분비 슬롯 사이트의 최적 생산.

Park, S., Ramirez, W.F., 유가식에서 분비 슬롯 사이트의 최적 생산
원자로. A.I.Ch.E. 저널, 34, 1988, pp.1550-1558.
$offText

$if 세트 n $set nh %n%
$설정되지 않은 경우 nh $set nh 500

set nh 하위 간격 수 / 0*%nh% /;
별칭(nh,k);

스칼라 tf 최종 시간 / 10 /
          x1_0 x1 / 1.0 /의 초기값
          x2_0 x2 / 5.0 /의 초기값
          x3_0 x3 / 0.0 /의 초기값
          x4_0 x4 / 0.0 /의 초기값
          x5_0 x5 / 1.0 /의 초기값
          h ;

          h=tf/%nh%;

변수 x1(nh)
          x2(nh)
          x3(nh)
          x4(nh)
          x5(nh)
          u(nh) 제어변수
          a1(nh)
          a2(nh)
          a3(nh)
          obj 기준 ;

방정식 eobj 기준 정의
          state1(nh) 상태 방정식 1
          state2(nh) 상태 방정식 2
          state3(nh) 상태 방정식 3
          state4(nh) 상태 방정식 4
          state5(nh) 상태 방정식 5
          개1
          ea2
          ea3;

에오브..
 obj =e= x4['%nh%']*x5['%nh%'] ;

상태1(nh(k+1))..
x1[k+1] =e= x1(k)+
   (h/2)*( a1(k)*x1(k) - u(k)*x1(k)/x5(k) +
           a1(k+1)*x1(k+1) - u(k+1)*x1(k+1)/x5(k+1) ) ;

상태2(nh(k+1))..
x2[k+1] =e= x2(k)+
   (h/2)*( -7.3*a1(k)*x1(k) - u(k)*(x2(k)-20)/x5(k)
           -7.3*a1(k+1)*x1(k+1) - u(k+1)*(x2(k+1)-20)/x5(k+1) );

상태3(nh(k+1))..
x3[k+1] =e= x3(k)+
   (h/2)*( a2(k)*x1(k) - u(k)*x3(k)/x5(k) +
           a2(k+1)*x1(k+1) - u(k+1)*x3(k+1)/x5(k+1) );

상태4(nh(k+1))..
x4[k+1] =e= x4(k)+
   (h/2)*( a3(k)*(x3(k)-x4(k)) - u(k)*x4(k)/x5(k) +
           a3(k+1)*(x3(k+1)-x4(k+1)) - u(k+1)*x4(k+1)/x5(k+1) );

상태5(nh(k+1))..
x5[k+1] =e= x5(k) + (h/2)*( u(k) + u(k+1) );

ea1(nh(k)).. a1(k) =e= 21.87*x2(k)/((x2(k)+0.4)*(x2(k)+62.5));
ea2(nh(k)).. a2(k) =e= (x2(k)*exp(-5*x2(k)))/(0.1+x2(k));
ea3(nh(k)).. a3(k) =e= 4.75*a1(k)/(0.12+a1(k));

*초기점
x1.l[nh]=1.0;
x2.l[nh]=5.0;
x3.l[nh]=0.0;
x4.1(nh)=0.0;
x5.1(nh)=1.0;
u.l(nh) =0.0;

x1.fx ['0'] = x1_0;
x2.fx ['0'] = x2_0;
x3.fx ['0'] = x3_0;
x4.fx ['0'] = x4_0;
x5.fx ['0'] = x5_0;

*경계
u.lo(nh) = 0.0;    u.up(nh) = 5;

모델 슬롯 사이트 /all/;

옵션 reslim=60000;

슬롯 사이트.iterlim=80000;

nlp를 사용하여 obj를 최대화하는 슬롯 사이트을 해결합니다.

$ifThenI x%mode%==xbook
파일 stat1 /슬롯 사이트1.dat/;
파일 stat2 /슬롯 사이트2.dat/;
파일 stat3 /슬롯 사이트3.dat/;
파일 stat4 /슬롯 사이트4.dat/;
파일 stat5 /슬롯 사이트5.dat/;
파일 계속 /슬롯 사이트.dat/;

stat1을 넣어;
루프(nh, x1.l(nh):10:5,',', put/)

stat2를 넣어;
루프(nh, put x2.l(nh):10:5,',', put/)

stat3을 넣어;
루프(nh, x3.l(nh):10:5,',', put/)

stat4를 넣어;
루프(nh, put x4.l(nh):10:5,',', put/)

stat5를 넣어;
루프(nh, x5.l(nh):10:5,',', put/)

계속하다;
루프(nh, put u.l(nh):10:5,',', put/)
$endIf

* 슬롯 사이트의 끝