Reference
Category : GAMS NOA library
Mainfile : separation2.gms
$onText
Nonsharp separation of propane, isobutane, n-butane and isopentane in
three column distillation.
Aggarwal, A., Floudas, C.A., Synthesis of general distillation sequences -
nonsharp separations. Comput. Chem. Eng., 14, 1990, pp.631-653.
Floudas, C.A., Pardalos, P.M., et al. Handbook of Test Problems in Local
and Global Optimization. Kluwer Academic Publishers, Dordrecht, 1999,
Section 5.3.3, pp. 46-50.
$offText
Scalars a01 /0.31569/, a02 /0.96926/, a03 /0.40281/,
a11 /-0.0112812/, a12 /-0.0413393/, a13 /-0.0119785/,
a21 /0.0072698/, a22 /0.02282203/, a23 /0.0082055/,
a31 /0.0064241/, a32 /0.0257035/, a33 /0.009819/;
Scalars bA1 /0.0016446/, bA2 /0.0015625/, bA3 /-0.001748/,
bB1 /0.0018611/, bB2 /0.0091604/, bB3 /-0.0002583/,
bC1 /0.001262/, bC2 /0.0076758/, bC3 /-0.0004691/;
Variables F1, F2, F3, F4, F5, F6, F7, F8,
F9, F10, F11, F12, F13, F14, F15, F16,
F17, F18, F19, F20, F21, F22, F23, F24,
F25, F26, F27, F28, F29, F30, F31, F32,
xA6, xA10, xA15, xA24, xA25,
xB6, xB10, xB15, xB24, xB25,
xC6, xC10, xC15, xC24, xC25,
xD6, xD10, xD15, xD24, xD25,
xA7, xB7, xA16, xB16, xC16,
xB20, xC20, xD20, xC30, xD30, obj;
Equations e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,
e19,e20,e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,e31,e32,e33,e34,
e35,e36,e37,e38,e39,e40,e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53, e;
e.. obj =e= a01 +(a11+0.85*a21+a31+bA1*xA6+bB1*xB6+bC1*xC6)*F6 +
a02 +(a12+0.85*a22+0.85*a32+bA2*xA15+bB2*xB15+bC2*xC15)*F15+
a03 +(a13+a23+0.85*a33+bA3*xA24+bB3*xB24+bC3*xC24)*F24;
e1.. F1 + F2 + F3 + F4 + F5 =e= 600;
e2.. F6 - F1 - F17 - F26 =e= 0;
e3.. F15 - F2 - F11 - F27 =e= 0;
e4.. F24 - F3 - F12 - F21 =e= 0;
e5.. F7 - F8 - F9 =e= 0;
e6.. F10 - F11 - F12 - F13 - F14 =e= 0;
e7.. F16 - F17 - F18 - F19 =e= 0;
e8.. F20 - F21 - F22 - F23 =e= 0;
e9.. F25 - F26 - F27 - F28 - F29 =e= 0;
e10.. F30 - F31 - F32 =e= 0;
e11.. F7*xA7 - 0.85*F6*xA6 =e= 0;
e12.. F16*xB16 - 0.85*F15*xB15 =e= 0;
e13.. F25*xC25 - F24*xC24 =e= 0;
e14.. F10*xB10 - F6*xB6 =e= 0;
e15.. F20*xC20 - 0.85*F15*xC15 =e= 0;
e16.. F30*xD30 - 0.85*F24*xD24 =e= 0;
e17.. F6*xA6 - F7*xA7 - F10*xA10 =e= 0;
e18.. F6*xB6 - F7*xB7 - F10*xB10 =e= 0;
e19.. F6*xC6 - F10*xC10 =e= 0;
e20.. F6*xD6 - F10*xD10 =e= 0;
e21.. F15*xA15 - F16*xA16 =e= 0;
e22.. F15*xB15 - F16*xB16 - F20*xB20 =e= 0;
e23.. F15*xC15 - F16*xC16 - F20*xC20 =e= 0;
e24.. F15*xD15 - F20*xD20 =e= 0;
e25.. F24*xA24 - F25*xA25 =e= 0;
e26.. F24*xB24 - F25*xB25 =e= 0;
e27.. F24*xC24 - F25*xC25 - F30*xC30 =e= 0;
e28.. F24*xD24 - F25*xD25 - F30*xD30 =e= 0;
e29.. 0.250*F1 + F17*xA16 + F26*xA25 - F6*xA6 =e= 0;
e30.. 0.333*F1 + F17*xB16 + F26*xB25 - F6*xB6 =e= 0;
e31.. 0.167*F1 + F17*xC16 + F26*xC25 - F6*xC6 =e= 0;
e32.. 0.250*F1 + F26*xD25 - F6*xD6 =e= 0;
e33.. 0.250*F2 + F11*xA10 + F27*xA25 - F15*xA15 =e= 0;
e34.. 0.333*F2 + F11*xB10 + F27*xB25 - F15*xB15 =e= 0;
e35.. 0.167*F2 + F11*xC10 + F27*xC25 - F15*xC15 =e= 0;
e36.. 0.250*F2 + F11*xD10 + F27*xD25 - F15*xD15 =e= 0;
e37.. 0.250*F3 + F12*xA10 - F24*xA24 =e= 0;
e38.. 0.333*F3 + F12*xB10 + F21*xB20 - F24*xB24 =e= 0;
e39.. 0.167*F3 + F12*xC10 + F21*xC20 - F24*xC24 =e= 0;
e40.. 0.250*F3 + F12*xD10 + F21*xD20 - F24*xD24 =e= 0;
e41.. 0.250*F4 + F8*xA7 + F13*xA10 + F18*xA16 + F28*xA25 =e= 50;
e42.. 0.222*F4 + F8*xB7 + F13*xB10 + F18*xB16 + F22*xB20 + F28*xB25 =e= 100;
e43.. 0.167*F4 + F13*xC10 + F18*xC16 + F22*xC20 + F28*xC25 + F31*xC30 =e= 40;
e44.. 0.250*F4 + F13*xD10 + F22*xD20 + F28*xD25 + F31*xD30 =e= 100;
e45.. xA6 + xB6 + xC6 + xD6 =e= 1;
e46.. xA7 + xB7 =e= 1;
e47.. xA10 + xB10 + xC10 + xD10 =e= 1;
e48.. xA15 + xB15 + xC15 + xD15 =e= 1;
e49.. xA16 + xB16 + xC16 =e= 1;
e50.. xB20 + xC20 + xD20 =e= 1;
e51.. xA24 + xB24 + xC24 + xD24 =e= 1;
e52.. xA25 + xB25 + xC25 + xD25 =e= 1;
e53.. xC30 + xD30 =e= 1;
* Bounds on variables
F1.lo=0; F1.up=600; F2.lo=0; F2.up=600;
F3.lo=0; F3.up=600; F4.lo=0; F4.up=600;
F5.lo=0; F5.up=600; F6.lo=0; F6.up=600;
F7.lo=0; F7.up=600; F8.lo=0; F8.up=600;
F9.lo=0; F9.up=600; F10.lo=0; F10.up=600;
F11.lo=0; F11.up=600; F12.lo=0; F12.up=600;
F13.lo=0; F13.up=600; F14.lo=0; F14.up=600;
F15.lo=0; F15.up=600; F16.lo=0; F16.up=600;
F17.lo=0; F17.up=600; F18.lo=0; F18.up=600;
F19.lo=0; F19.up=600; F20.lo=0; F20.up=600;
F21.lo=0; F21.up=600; F22.lo=0; F22.up=600;
F23.lo=0; F23.up=600; F24.lo=0; F24.up=600;
F25.lo=0; F25.up=600; F26.lo=0; F26.up=600;
F27.lo=0; F27.up=600; F28.lo=0; F28.up=600;
F29.lo=0; F29.up=600; F30.lo=0; F30.up=600;
F31.lo=0; F31.up=600; F32.lo=0; F32.up=600;
xA6.lo=0; xA6.up=1; xA10.lo=0; xA10.up=1;
xA15.lo=0; xA15.up=1; xA24.lo=0; xA24.up=1;
xA25.lo=0; xA25.up=1; xB6.lo=0; xB6.up=1;
xB10.lo=0; xB10.up=1; xB15.lo=0; xB15.up=1;
xB24.lo=0; xB24.up=1; xB25.lo=0; xB25.up=1;
xC6.lo=0; xC6.up=1; xC10.lo=0; xC10.up=1;
xC15.lo=0; xC15.up=1; xC24.lo=0; xC24.up=1;
xC25.lo=0; xC25.up=1; xD6.lo=0; xD6.up=1;
xD10.lo=0; xD10.up=1; xD15.lo=0; xD15.up=1;
xD24.lo=0; xD24.up=1; xD25.lo=0; xD25.up=1;
xA7.lo=0; xA7.up=1; xB7.lo=0; xB7.up=1;
xA16.lo=0; xA16.up=1; xB16.lo=0; xB16.up=1;
xC16.lo=0; xC16.up=1; xB20.lo=0; xB20.up=1;
xC20.lo=0; xC20.up=1; xD20.lo=0; xD20.up=1;
xC30.lo=0; xC30.up=1; xD30.lo=0; xD30.up=1;
* Initial point (a variant)
F1.l=160; F2.l=110; F3.l=90; F4.l=60;
F5.l=170; F6.l=162; F7.l=30; F8.l=0;
F9.l=30; F10.l=127; F13.l=130; F15.l=120;
F16.l=70; F18.l=65; F20.l=50; F21.l=50;
F22.l=0; F24.l=140; F25.l=98; F28.l=0;
F29.l=100; F30.l=40; F31.l=40;
xA6.l=0.2; xA7.l=1; xB7.l=0; xB10.l=0.4;
xB15.l=0.3; xB16.l=0.5; xB24.l=0.2; xC10.l=0.2;
xC20.l=0.3; xC24.l=0.2; xC25.l=0.3; xD6.l=0.25;
xD20.l=0.6;
Model separation2 /all/;
Solve separation2 minimizing obj using nlp;
* End separation2