Solving a Heat Exchanger Network Problem of Quesada and Grossmann

Jsun Yui Wong

The computer program listed below seeks to solve the following nonlinear programming problem from page 447 of Lu [14]:

Minimize 2700 * X(5) * X(1) + 7200 * X(6) * X(2) + 240 * X(7) * X(3) + 900 * X(8) * X(4)

subject to

X(5) = 5.555*( X(9)- 395),

X(6) = 3.125*( X(10)- 398),

X(7) = 4.545*( X(11)- 365),

X(7) = 5.555*( 575- X(9) ),

X(8) = 3.571*( X(12)- 358),

X(8) = 3.125*( 718- X(10) ),

X(5) + X(6)=1000,

55.55 <=X(5)<= 978.125,

21.875 <= X(6) <= 944.45,

21.775 <=X(7) <= 944.35,

55.55 <=X(8)<= 978.125,

.007407407 <=X(1) <= .02,

.004807692 <=X(2)<= .019417476,

.004862759 <=X(3) <= .04736842,

.002912615 <=X(4) <= .01502718.

 

0 DEFDBL A-Z

2 DEFINT K

3 DIM B(199), N(199), A(199), H(199), L(199), U(199), X(1111), D(111), P(111), PS(133)

12 FOR JJJJ = -32000 TO 32000 STEP .01

14 RANDOMIZE JJJJ
16 M = -1D+37

91 A(1) = .007407407 + RND * (.02 – .007407407)
92 A(2) = .004807692 + RND * (.019417476 – .004807692)
93 A(3) = .004862759 + RND * (.04736842 – .004862759)
94 A(4) = .002912615 + RND * (.01502718 – .002912615)
95 A(5) = 55.55 + RND * (978.125 – 55.55)
96 A(6) = 21.875 + RND * (944.45 – 21.875)
97 A(7) = 21.775 + RND * (944.35 – 21.775)
98 A(8) = 55.55 + RND * (978.125 – 55.55)

128 FOR I = 1 TO 200000

 

129 FOR KKQQ = 1 TO 12

 

130 X(KKQQ) = A(KKQQ)
131 NEXT KKQQ

132 REM GOTO 163

133 FOR IPP = 1 TO (1 + FIX(RND * 12))

 

151 J = 1 + FIX(RND * 12)

 

153 r = (1 – RND * 2) * A(J)
157 X(J) = A(J) + (RND ^ (RND * 10)) * r

 

161 NEXT IPP

 

197 IF X(5) < 55.55 THEN GOTO 1670

199 IF X(5) > 978.125 THEN 1670

201 IF X(6) < 21.875 THEN 1670

203 IF X(6) > 944.45 THEN 1670

205 IF X(7) < 21.775 THEN 1670

207 IF X(7) > 944.35 THEN 1670

209 IF X(8) < 55.55 THEN 1670

211 IF X(8) > 978.125 THEN 1670

 

227 IF X(1) < .007407407 THEN 1670

229 IF X(1) > .02 THEN 1670

231 IF X(2) < .004807692 THEN 1670

233 IF X(2) > .019417476 THEN 1670

235 IF X(3) < .004862759 THEN 1670

237 IF X(3) > .04736842 THEN 1670

239 IF X(4) < .002912615 THEN 1670

241 IF X(4) > .01502718 THEN 1670

 

261 X(9) = (X(5) / 5.555) + 395

 

264 X(7) = 5.555 * (575 – X(9))

 

267 X(6) = 1000 – X(5)

 

269 X(10) = (X(6) / 3.125) + 398

 

272 X(8) = 3.125 * (718 – X(10))
275 X(12) = (X(8) / 3.571) + 358

 

278 X(11) = (X(7) / 4.545) + 365

279 GOTO 365

280 REM X(10) = (X(6) / 3.125) + 398

281 FOR J99 = 4 TO 5

283 IF X(J99) < 0 THEN X(J99) = X(J99) ELSE X(J99) = 0

 

285 NEXT J99

311 FOR j44 = 1 TO 12
312 REM IF X(j44) < .00001 THEN 1670

 

314 NEXT j44

 

365 POBA = -2700 * X(5) * X(1) – 7200 * X(6) * X(2) – 240 * X(7) * X(3) – 900 * X(8) * X(4)

 

466 P = POBA

1111 IF P <= M THEN 1670

 

1452 M = P
1454 FOR KLX = 1 TO 12

 

1459 A(KLX) = X(KLX)
1460 NEXT KLX
1557 REM GOTO 128

1670 NEXT I

 

1889 REM IF M < -30000 THEN 1999

 

1900 PRINT A(1), A(2), A(3), A(4), A(5), A(6)
1903 PRINT A(7), A(8), A(9), A(10), A(11), A(12)
1911 PRINT M, JJJJ

1999 NEXT JJJJ

This BASIC computer program was run with qb64v1000-win [27]. The output through JJJJ = -31999.98 is summarized below:

.
.
.
-22909.1358249864          -32000

.
.
.
-22909.13345539065          -31999.99

7.407406589624948D-03       4.807692020734168D-03       4.862758593874687D-03
2.912614845634454D-03       978.1250274698625       21.87497253013748
21.77497253013745       978.1250274698625       571.080112955871
404.999991209644       369.7909730539357       631.907876636758
-22909.13300472901       -31999.98

Above there is no rounding by hand; it is just straight copying by hand from the monitor screen. The computational results above can be compared with the results in Table 4 of Lu [14, p. 448].

On a personal computer with a Pentium Dual-Core CPU E5200 @2.50GHz, 2.50 GHz, 960 MB of RAM and qb64v1000-win [27], the wall-clock time for obtaining the output through JJJJ=-31999.98 was 11 seconds, total–most of these seconds were for creating the .EXE file.

Acknowledgment

I would like to acknowledge the encouragement of Roberta Clark and Tom Clark.

References

[1] Yuichiro Anzai (1974). On Integer Fractional Programming. Journal of the Operations Research Society of Japan, Volume 17, No. 1, March 1974, pp. 49-66. http://www..orsj.or.jp/~archiv/pdf/e_mag/Vol.17_01_049.pdf.
[2] Sjirk Boon. Solving systems of nonlinear equations. Sci. Math. Num-Analysis,1992, Newsgroup Article 3529. .
[3] Ching-Ter Chang (2006). Formulating the mixed integer fractional posynomial programming, European Journal of Operational Research 173 (2006) pp. 370-386.
[4] Piya Chootinan, Anthony Chen (2006). Constraint Handling in genetic algorithms using a gradient-based repair method. Computers and Operations Research 33 (2006) 2263-2281.
[5] Amir Hossein Gandomi, Xin-She Yang, Amir Hossein Alavi (2011). Mixed variable structural optimization using Firefly Algorithm, Computers and Structures 89 (2011) 2325-2336.
[6] Amir Hossein Gandomi, Xin-She Yang, Siamak Taratahari, Amir Hossein Alavi (2013). Firefly Algorithm with Chaos, Communications in Nonlinear Science and Numerical Sinulation 18 (2013) 89-98.
[7] Amir Hossein Gandomi, Xin-She Yang, Amir Hossein Alavi (2013). Cuckoo search algorithm: a metaheuristicapproach to solve structural optimization problem. Engineering with Computers (2013) 29:17-35.
[8] Amir Hossein Gandomi, Xin-She Yang, Amir Hossein Alavi (2013). Erratum to: Cuckoo search algorithm: a metaheuristicapproach to solve structural optimization problem. Engineering with Computers (2013) 29:245.
[9] Chrysanthos E. Gounaris, Christodoulos A. Floudas. Tight convex underestimators for Csquare-continuous problems: II. multivariate functions. Journal of Global Optimization (2008) 42, pp. 69-89.

[10] Han-Lin Li, Jung-Fa Tsai, Christodoulos A. Floudas (2008). Convex underestimating for posynomial functions of postive variables. Optimization Letters 2, 333-340 (2008).
[11] Han-Lin Li, Jung-Fa Tsai (2008). A distributed computational algorithm for solving portfolio problems with integer variables. European Journal of Operational Research 186 (2008) pp. 882-891.
[12] Ming-Hua Lin, Jung-Fa Tsai (2014). A deterministic global approach for mixed-discrete structural optimization, Engineering Optimization (2014) 46:7, pp. 863-879.
[13] Hao-Chun Lu, Han-Lin Li, Chrysanthos E. Gounaris, Christodoulos A. Floudas (2010). Convex relaxation for solving posynomial problems. Journal of Global Optimization (2010) 46, pp. 147-154.
[14] Hao-Chun Lu (2012). An efficient convexification method for solving generalized geometric problems. Journal of Industrial and Management Optimization, Volume 8, Number 2, May 2012, pp. 429-455.
[15] Hao-Chun Lu (2017). Improved logarithnic linearizing method for optimization problems with free-sign pure discrete signomial terms. Journal of Global Optimization (2017) 68, pp. 95-123.
[16] Mathworks. Solving a mixed integer engineering design problem using the genetic algorithm – MATLAB & Simulink Example.
https://www.mathworks.com/help/gads/examples/solving-a-mixed-integer-engineering-design-problem-using-the-genetic-algorithm.html/
[17] Microsoft Corp., BASIC, Second Edition (May 1982), Version 1.10. Boca Raton, Florida: IBM Corp., Personal Computer, P. O. Box 1328-C, Boca Raton, Florida 33432, 1981.
[18] Sinan Melih Nigdeli, Gebrail Bekdas, Xin-She Yang (2016). Application of the Flower Pollination Algoritm in Structural Engineering. Springer International Publishing Switzerland 2016. http://www.springer.com/cda/content/document/cda…/
[19] Gideon Oron (1979) An algorithm for optimizing nonlinear contrained zero-one problems to improve wastewater treatment, Engineering Optimization, 4:2, 109-114.
[20] H. S. Ryoo, N. V. Sahinidis (1995). Global optimization of nonconvex NLP and MINLP with applications in process design. Computers and Chemical Engineering Vol. 19 (5) (1995) pp. 551-566.
[21] c. R. Seshan, V. G. Tikekar (1980) Algorithms for Fractional Programming. Journal of the Indian Institute of Science 62 (B), Feb. 1980, Pp. 9-16.
[22] P. B. Thanedar, G. N. Vanderplaats (1995). Survey of discrete variable optimization for structural design, Journal of Structural Engineering, 121 (2), 301-306 (1995).
[23] Jung-Fa Tsai (2005). Global optimization of nonlinear fractional programming problems in engineering design. Engineering Optimization (2005) 37:4, pp. 399-409.
[24] Jung-Fa Tsai, Ming-Hua Lin (2007). Finding all solutions of systems of nonlinear equations with free variables. Engineering Optimization (2007) 39:6, pp. 649-659
[25] Jung-Fa Tsai, Ming-Hua Lin, Yi-Chung Hu (2007). On generalized geometric programming problems with non-positive variables. European Journal of Operational Research 178 (2007) pp. 10-19.
[26] Jung-Fa Tsai, Ming-Hua Lin (2008). Global optimization of signomial mixed-integer nonlinear programming with free variables. Journal of Global Optimization (2008) 42 pp. 39-49.
[27] Wikipedia, QB64, https://en.wikipedia.org/wiki/QB64.
[28] Jsun Yui Wong (2012, April 12). The Domino Method of General Integer Nonlinear Programming Applied to a Nonlinear Fractional Programming Problem from the Literature. http://myblogsubstance.typepad.com/substance/2012/04/12/
[29] Helen Wu (2015). Geometric Programming. https://optimization.mccormick.northwstern.edu/index.php/Geometric_Programming.
[30] Xin-She Yang, Christian Huyck, Mehmet Karamanoglu, Nawaz Khan (2014). True global optimality of the pressure vessel design problem: A benchmark for bio-inspired optimisation algorithms. https://arxiv.org/pdf/1403.7793.pdf.
[31] Xin-She Yang, Amir Hossein Gandomi (2012). Bat algorithm: a novel approach for global engineering optimization. Engineering Computations: International Journal for Computer-Aided Engineering and Software, Vol. 20,No. 5, 2012, pp. 461-483.
[32] B. D. Youn, K. K. Choi (2004). A new responsesurface methodology for reliability-based design optimization. Computers and Structures 82 (2004) 241-256.