Monday, July 31, 2017

Using the MINLP Solver Presented Here

Jsun Yui Wong

The computer program listed below seeks to solve the nonconvex example on pp. 45-47 of Tsai and Lin [7].

The X(6), X(7), and X(8) of the following computer program are slack variables.  Line 403 below refers to the given objective function.

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 5
        65 A(J44) = 1 + RND * 9


    66 NEXT J44

    77 A(1) = -7 + RND * 12


    126 REM IMAR=10+FIX(RND*32000)
    128 FOR I = 1 TO 10000


        129 FOR KKQQ = 1 TO 5
            130 X(KKQQ) = A(KKQQ)
        131 NEXT KKQQ
        133 FOR IPP = 1 TO (1 + FIX(RND * 3))
            181 J = 1 + FIX(RND * 5)
            183 R = (1 - RND * 2) * A(J)
            187 X(J) = A(J) + (RND ^ (RND * 10)) * R
        222 NEXT IPP
        223 REM GOTO 233

        225 REM FOR J23 = 1 TO 4

        227 X(3) = INT(X(3))



        229 REM NEXT J23


        233 X(6) = 2 - X(1) - 6 * X(2) + X(3) + 5 * X(4)

        244 X(7) = -10 - (X(3) ^ 1.5) * X(4) - .5 * X(2) - 3 * X(1)


        249 X(8) = 6 + X(1) + .5 * X(4) - X(5)

        283 IF X(1) < -7 THEN 1670

        284 IF X(1) > 5 THEN 1670

        286 IF X(2) < 1 THEN 1670

        287 IF X(2) > 10 THEN 1670

        288 IF X(3) < 1 THEN 1670

        289 IF X(3) > 5 THEN 1670

        291 IF X(4) < 2 THEN 1670

        292 IF X(4) > 8 THEN 1670

        297 IF X(5) < 2 THEN 1670

        298 IF X(5) > 9 THEN 1670


        331 FOR J44 = 6 TO 8

            335 IF X(J44) < 0 THEN PS(J44) = ABS(X(J44)) ELSE PS(J44) = 0

        339 NEXT J44
        403 POBA2 = -(X(1) ^ 2 * X(2) ^ -2 * X(3) - 2 * X(2) ^ .7 * X(3) ^ .2 + X(4) * X(5) ^ -2 - 2 * X(1) - 4 * X(3))




        411 POBA = POBA2 - 1000000 * PS(6) - 1000000 * PS(7) - 1000000 * PS(8)



        422 REM 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 8


            1455 A(KLX) = X(KLX)
        1456 NEXT KLX
        1557 REM   GOTO 128

    1670 NEXT I
    1889 IF M < -2.906 THEN 1999

    1900 PRINT A(1), A(2), A(3), A(4)

    1904 PRINT A(5), A(6), A(7), A(8), M, JJJJ, PPOBA2

1999 NEXT JJJJ

This BASIC computer program was run with qb64v1000-win [8].  The complete output through JJJJ=-30627 is shown below:

-5.341226                4.52466                1           3.761347
2.539448                   1.907349E-06             2.384186E-07
0         -2.905618      -31874        -2.905618

-5.321954                4.488379                1            3.721663
2.538877                9.536743E-07             1.001358E-05
0         -2.905934      -31454        -2.905934

-5.333839                4.510576                1            3.745927
2.53912             1.502037E-05             3.020763E-04
3.933907E-06         -2.905985      -31356        -2.905985

-5.374219                4.586674                1           3.829311
2.540405      7.281303E-04      1.0252E-05             3.147125E-05
-2.905988      -30627        -2.905988

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 [8], the wall-clock time for obtaining the output through JJJJ=-30627 was 35 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]  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.

[8] Wikipedia, QB64, https://en.wikipedia.org/wiki/QB64.    

[9] 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/

No comments:

Post a Comment