Reference
Category : GAMS NOA library
Mainfile : cpa.gms
$onText
Combustion of propan in air.
Hiebert's (1983) reduced variant.
Hiebert, K.L., An evaluation of mathematical software that solves systems
of nonlinear equations. ACM Transactions on Mathematical Software,
vol. 8, 1983, pp.5-20.
Shacham, M., Brauner, N., Cutlip, M.B., (2002) A web-based library for
testing performance of numerical software for solving nonlinear algebraic
equations. Computers & Chemical Engineering, vol. 26, 2002, pp.547-554.
Meintjes, K., Morgan, A.P., (1990) Chemical equilibrium systems as
numerical test problems. ACM Trans. Math. Software, 16, 1990, pp. 143-151.
$offText
Scalars R /40/;
Variables x1,x2,x3,x4,x5,x6,x7,x8,x9,x10, obj;
Equations e1,e2,e3,e4,e5,e6,e7,e8,e9,e10, eobj;
* Constraints:
e1.. x1 + x4 - 3 =e= 0;
e2.. 2*x1 + x2 + x4 + x7 + x8 + x9 + 2*x10 - R =e= 0;
e3.. 2*x2 + 2*x5 + x6 + x7 - 8 =e= 0;
e4.. 2*x3 + x5 - 4*R =e= 0;
e5.. x1*x5 - 0.193*x2*x4 =e= 0;
e6.. x6*sqrt(x2) - 0.002597*sqrt(x2*x4*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)) =e= 0;
e7.. x7*sqrt(x4) - 0.003448*sqrt(x1*x4*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)) =e= 0;
e8.. x4*x8 - 1.799*x2*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/100000 =e= 0;
e9.. x4*x9 - 0.0002155*x1*sqrt(x3*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)) =e= 0;
e10.. x10*sqr(x4) - 3.84 *sqr(x4)*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/100000 =e= 0;
* Objective:
eobj.. obj =e= 1;
*Bound on variables:
x1.lo = 0.000001; x1.up = 100;
x2.lo = 0.000001; x2.up = 100;
x3.lo = 0.000001; x3.up = 100;
x4.lo = 0.000001; x4.up = 100;
x5.lo = 0.000001; x5.up = 100;
x6.lo = 0.000001; x6.up = 100;
x7.lo = 0.000001; x7.up = 100;
x8.lo = 0.000001; x8.up = 100;
x9.lo = 0.000001; x9.up = 100;
x10.lo = 0.000001; x10.up = 100;
* Initial point:
x1.l = 2;
x2.l = 5;
x3.l = 40;
x4.l = 1;
x5.l = 0;
x6.l = 0;
x7.l = 0;
x8.l = 0;
x9.l = 0;
x10.l= 5;
Model cpa /all/;
Solve cpa minimizing obj using nlp;
$ifThenI x%mode%==xbook
file prop /cpa1.dat/
put prop;
put x1.l:12:7, x2.l:12:7, x3.l:12:7 x4.l:12:7, x5.l:12:7,
x6.l:12:7, x7.l:12:7, x8.l:12:7 x9.l:12:7, x10.l:12:7/;
$endIf
* End cpa