source: trunk/sample/optimization/sample_minlp2.mso @ 1007

Last change on this file since 1007 was 1007, checked in by Argimiro Resende Secchi, 3 years ago
File size: 3.8 KB
Line 
1#*
2   Structural Optimization of Process Flowsheets (example from GAMS)
3
4   The goal is the profitable production of chemical C.
5   which can be produced from chemical B where B may be
6   the raw material that can be purchased from the
7   external market or an intermediate that is produced
8   from raw material A. There are two alternative paths
9   of producing B from A. A mixed-integer nonlinear
10   formulation is presented to solve the optimal
11   production and capacity expansion problem.
12
13
14Kocis, G R, and Grossmann, I E, Relaxation Strategy for the Structural
15Optimization of Process Flow Sheets. Independent Engineering Chemical
16Research 26, 9 (1987), 1869-1880.
17
18Morari, M, and Grossmann, I E, Eds, Chemical Engineering Optimization
19Models with GAMS. Computer Aids for Chemical Engineering Corporation,
201991.
21
22   Process flowsheet
23
24
25         A2    +-----+  B2      BP
26        +----->|  2  |----->+    |
27   A    |      +-----+      |    |  B1    +-----+    C1
28   ---->|                   +----+------->|  1  |-------->
29        |      +-----+      |             +-----+
30        +----->|  3  |----->+
31         A3    +-----+  B3
32
33
34*#
35
36using "types";
37binary as Integer (Lower=0, Upper=1);
38
39Optimization procsel
40        VARIABLES
41# Positive Variables
42    a2 as positive;   # consumption of chemical a in process 2
43    a3 as positive;   # consumption of chemical a in process 3
44    b2 as positive;   # production capacity of chemical b in process 2
45    b3 as positive;   # production capacity of chemical b in process 3
46    bp as positive;   # amount of chemical b purchased in external market
47    b1 as positive;   # consumption of chemical b in process 1
48    c1 as positive;   # production capacity of chemical c in process 1 ;
49
50# Binary Variables
51    y1 as binary;   # denotes potential existence of process 1
52    y2 as binary;   # denotes potential existence of process 2
53    y3 as binary;   # denotes potential existence of process 3  ;
54
55# Variable
56    pr as Real;   # total profit in million $ per year ;
57
58        MAXIMIZE
59        pr;
60       
61        EQUATIONS
62
63#*
64* the original constraint for inout2 is b2 = log(1+a2)
65* but this has been convexified to the form used below.
66* the same is true for inout3. so b2 and b3 are the
67* output variables from units 2 and 3 respectively
68*#
69
70 c1 = 0.9*b1;
71 exp(b2) - 1 = a2;
72 exp(b3/1.2) - 1 = a3;
73
74 b1 = b2 + b3 + bp;
75
76 c1 <= 2*y1;
77 b2 <= 4*y2;
78 b3 <= 5*y3;
79
80 pr = 11*c1                             # sales revenue
81        - 3.5*y1 - y2 - 1.5*y3  # fixed investment cost
82        - b2 - 1.2*b3           # operating cost
83        - 1.8*(a2+a3) - 7*bp;   # purchases
84
85# demand constraint on chemical c based on market requirements
86
87  c1 <= 1;
88
89        OPTIONS
90        Dynamic = false;
91        NLPSolveNLA = true;
92       
93        NLPSolver(File = "minlp_emso", derivative_test = "second-order",
94        bonmin_algorithm = "B-BB",
95        print_level = 5);
96
97end
98
99# same as above but without convexification
100Optimization procsel1
101        VARIABLES
102# Positive Variables
103    x1 as positive;   # consumption of chemical a in process 2
104    x2 as positive;   # consumption of chemical a in process 3
105    x3 as positive;   # production capacity of chemical c in process 1 ;
106
107# Binary Variables
108    y1 as binary;   # denotes potential existence of process 1
109    y2 as binary;   # denotes potential existence of process 2
110    y3 as binary;   # denotes potential existence of process 3  ;
111
112# Variable
113    pr as Real;   # total profit in million $ per year ;
114
115        MAXIMIZE
116        pr;
117
118        EQUATIONS
119        -y1+0.9*ln(1+x1)+1.08*ln(1+x2)+0.9*x3 <= 0;
120        -10*y2+ln(1+x1) <= 0;
121        -10*y3+1.2*ln(1+x2) <= 0;
122        y2+y3-1 <= 0;
123        pr = 2.9*x3+8.9*ln(1+x1)+10.44*ln(1+x2)-1.8*(x1+x2)-3.5*y1-y2-1.5*y3;
124
125# redundant Lower bound
126
127        x1 >= 0;
128
129        x2 >= 0;
130
131        x3 >= 0;
132
133# Initial guess
134        GUESS
135        x1 = 0;
136        x2 = 0;
137        x3 = 1;
138        y1 = 0;
139        y2 = 1;
140        y3 = 0;
141
142        OPTIONS
143        Dynamic = false;
144        NLPSolveNLA = true;
145       
146        NLPSolver(File = "minlp_emso", derivative_test = "second-order",
147        bonmin_algorithm = "B-BB",
148        print_level = 5);
149
150end
Note: See TracBrowser for help on using the repository browser.