BatchReactor : 회분식 반응기의 최적 제어. 두 번의 연속 반응이 있는 회분식 반응기에서 최대 중간 생성물 농도를 제공하는 최적의 온도 프로필 찾기

참조

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

카테고리 : 슬롯 게임 NOA 라이브러리


메인파일 : batchreactor.gms

$onText
회분식 반응기의 최적 제어.
최대 중간 생성물을 제공하는 최적의 온도 프로파일 찾기
두 번의 연속 반응이 있는 회분식 반응기에서의 농도. 첫 번째
반응은 2차 반응이고 두 번째 반응은 1차 반응입니다.
속도 상수.

Renfro J.G., Morshedi, A.M., Osbjornsen, O.A., 동시 최적화 및
미분/대수 방정식으로 설명되는 시스템의 솔루션입니다. 컴퓨터
및 화학 공학, vol.11, 1987, pp.503-517.
$offText

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

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

스칼라 tf 최종 시간 / 100/
          ca_0 ca / 1.0/의 초기값
          cb_0 cb / 0.0/의 초기값
          h ;
          h=tf/%nh% ;

성분 A의 변수 ca(nh) 농도
          cb(nh) 성분 B의 농도
          t(nh) 반응기 온도(제어변수)
          k1(nh) 첫 번째 반응의 속도 상수
          k2(nh) 두 번째 반응의 속도 상수
          obj 기준 ;

방정식 eobj 기준 정의
          state1(nh) 상태 방정식 1
          state2(nh) 상태 방정식 2
          ek1(nh)
          ek2(nh) ;

에오브..
 obj =e= cb['%nh%'] ;

 ek1(nh(k)).. k1(k) =e= 4000*exp(-2500/t(k));
 ek2(nh(k)).. k2(k) =e= 620000*exp(-5000/t(k));

상태1(nh(k+1))..
 ca[k+1] =e= ca(k)+
             (h/2)*(-k1(k)*ca(k)*ca(k) - k1(k+1)*ca(k+1)*ca(k+1) ) ;

상태2(nh(k+1))..
 cb[k+1] =e= cb(k)+
             (h/2)*( k1(k)*ca(k)*ca(k) - k2(k)*cb(k) +
                     k1(k+1)*ca(k+1)*ca(k+1) - k2(k+1)*cb(k+1) );

*초기점
ca.l[nh] = 1.0;
cb.l[nh] = 0.0;

ca.fx ['0'] = ca_0;
cb.fx ['0'] = cb_0;

*경계
t.lo(nh) = 110;
t.up(nh) = 280;

모델 배치Reactor /all/;

nlp를 사용하여 obj를 최대화하는 BatchReactor를 해결합니다.

$ifThenI x%mode%==xbook
파일 stat1 /batch1.dat/;
파일 stat2 /batch2.dat/;
파일 stat3 /batch3.dat/;

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

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

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

* BatchReactor의 끝