참조
카테고리 : 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, put x3.l(nh):10:5,',', put/)
stat4를 넣어;
루프(nh, put x4.l(nh):10:5,',', put/)
stat5를 넣어;
루프(nh, x5.l(nh):10:5,',', put/)
계속하다;
루프(nh, u.l(nh):10:5,',', put/)
$endIf
* 슬롯 무료체험의 끝