Jsun Yui Wong
The computer program listed below seeks to solve the following insulated steel tank design example on page 18 of Tsai, Lin, and Hu [6] and on page 564 of Ryoo and Sahinidis [5].
Minimize 400 * X(1) ^ .9 + 1000 + 22 * (X(2) - 14.7) ^ 1.2 + X(4)
subject to X(2) = EXP((-3950 / (X(3) + 460)) + 11.86)
144 * (80 - X(3)) = X(1) * X(4)
0 <= X(1) <= 15.1
14.7 <= X(2) <= 94.2
-459.67 <= X(3) <= 80
0 <= X(4) .
The X(5) below is an added variable. One notes that here line 128 is 128 FOR I = 1 TO 8000.
0 REM DEFDBL A-Z
2 DEFINT I, J, K
3 DIM B(99), N(99), A(99), H(99), L(99), U(99), X(1111), D(111), P(111), PS(33)
12 FOR JJJJ = -32000 TO 32111
14 RANDOMIZE JJJJ
16 M = -1D+37
64 FOR J44 = 1 TO 4
65 A(J44) = RND
66 NEXT J44
126 REM IMAR=10+FIX(RND*32000)
128 FOR I = 1 TO 8000
129 FOR KKQQ = 1 TO 4
130 X(KKQQ) = A(KKQQ)
131 NEXT KKQQ
133 FOR IPP = 1 TO (1 + FIX(RND * 2))
181 J = 1 + FIX(RND * 3)
183 R = (1 - RND * 2) * A(J)
187 X(J) = A(J) + (RND ^ (RND * 10)) * R
222 NEXT IPP
233 X(2) = EXP((-3950 / (X(3) + 460)) + 11.86)
244 X(5) = 144 * (80 - X(3)) - X(1) * X(4)
283 IF X(1) < 0 THEN 1670
284 IF X(1) > 15.1 THEN 1670
286 IF X(2) < 14.7 THEN 1670
287 IF X(2) > 94.2 THEN 1670
288 IF X(3) < -459.67 THEN 1670
289 IF X(3) > 80 THEN 1670
291 IF X(4) < 0 THEN 1670
292 IF X(4) > 999 THEN 1670
331 FOR J44 = 4 TO 4
335 PS(J44) = -1000000 * ABS(X(5))
339 NEXT J44
403 POBA2 = -(400 * X(1) ^ .9 + 1000 + 22 * (X(2) - 14.7) ^ 1.2 + X(4))
411 REM POBA = POBA2 - 1000000 * (PS(4))
422 POBA = POBA2 + (PS(4))
459 POB1 = POBA
463 P1NEWMAY = POB1
466 P = P1NEWMAY
1111 IF P <= M THEN 1670
1452 M = P
1453 PPOBA2 = POBA2
1454 FOR KLX = 1 TO 5
1455 A(KLX) = X(KLX)
1456 NEXT KLX
1557 REM GOTO 128
1670 NEXT I
1889 IF M < -5195 THEN 1999
1900 PRINT A(1), A(2), A(3), A(4), A(5)
1904 PRINT M, JJJJ, PPOBA2
1999 NEXT JJJJ
This BASIC computer program was run with qb64v1000-win [7]. The complete output through JJJJ=-28537 is shown below:
7.737477E-08 94.17786 80 1.812935E-03
-1.402754E-10
-5194.868 -30811 -5194.868
1.21274E-08 94.17786 80 2.377033E-04
-2.882723E-12
-5194.866 -30049 -5194.866
2.840714E-08 94.17786 80 2.596378E-04
-7.375569E-12
-5194.866 -29243 -5194.866
1.103056E-07 94.17786 80 5.87143E-05
-6.416933E-12
-5194.866 -28537 -5194.866
Above there is no rounding by hand; it is just straight copying by hand from the monitor screen.
On a personal computer with a Pentium Dual-Core CPU E5200 @2.50GHz, 2.50 GHz, 960 MB of RAM and qb64v1000-win [7], the wall-clock time for obtaining the output through JJJJ=-28537 was 50 seconds.
Acknowledgment
I would like to acknowledge the encouragement of Roberta Clark and Tom Clark.
References
[1] Yuichiro Anzai (1974). On Integer Fractional Programming. Journal Operations Research Society of Japan, Volume 17, No. 1, March 1974, pp. 49-66.
www..orsj.or.jp/~archiv/pdf/e_mag/Vol.17_01_049.pdf.
[2] 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.
[3] Harry Markowitz (1952). Portfolio Selection. The Journal of Finance 7 (2008) pp. 77-91.
[4] 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.
[5] 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.
[6] 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.
[7] Wikipedia, QB64, https://en.wikipedia.org/wiki/QB64
[8] 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/
Comments