Sunday, January 11, 2015

Mixed Integer Nonlinear Programming (MINLP) Solver Applied to a Nonlinear Integer Programming Problem with 10100 General Integer Variables

Jsun Yui Wong

Similar to the computer programs of the preceding papers, the computer program below seeks to solve a nonlinear integer programming problem with 10100 unknowns.  The present problem is based on Li and Sun's Problem 14.3, [12, pp. 414-415], which is based on Walukiewicz/Schittkowski [16, Test Problem 282, p. 106].  Specifically, the test example here is as follows:


Minimize

                                                                  10100-1
(X(1)-1)^2 +  ( X(10100)-1)^2  +10100* SIGMA   (10100-i)*  (  X(i)^2-X(i+1)  )^2
                                                                   i=1  

subject to

X(1)+X(2)+X(3)+...+X(10100) = 10100

-1 <= X(i) >= 1, X(i) integer, i=1, 2, 3,..., 10100.

One notes line 111 through line 117 and line 171 through line 177.    

The following computer program uses Microsoft's GW-BASIC 3.11 interpreter for DOS.

0 DEFINT J,K,B,X
2 DIM A(10103),X(10103)
81 FOR JJJJ=-32000 TO 32000
89 RANDOMIZE JJJJ
90 M=-1.5D+38
111 FOR J44=1 TO 10100
116 A(J44)=-1+FIX(RND*3)
117 NEXT J44
128 FOR I=1 TO 32000
129 FOR KKQQ=1 TO 10100
130 X(KKQQ)=A(KKQQ)
131 NEXT KKQQ
139 FOR IPP=1 TO FIX(1+RND*.3)
140 B=1+FIX(RND*10103)
167 IF RND<.5 THEN X(B)=(A(B)-1)   ELSE X(B)=(A(B)   +1  )
169 NEXT IPP
171 FOR J9=1 TO 10100
173 IF X(J9)<-1 THEN X(J9)=A(J9)
175 IF X(J9)>1 THEN X(J9)=A(J9)
177 NEXT J9
181 SJ=0
182 FOR J9=1 TO  10100
183 SJ=SJ+    X(J9)
184 NEXT J9
187 TS=   10100-SJ
200 SZ=0
203 FOR J9=1 TO  10099
205 SZ=SZ+   (10100-J9)*  (  X(J9)^2-X(J9+1)  )^2
207 NEXT J9
411 SONE=  - (X(1)-1)^2 -  ( X(10100)-1)^2  -10100* SZ
689 PD1=SONE     -5000000!*ABS(TS)
1111 IF PD1<=M THEN 1670
1452 M=PD1
1454 FOR KLX=1 TO 10100
1455 A(KLX)=X(KLX)
1456 NEXT KLX
1559 GOTO 128
1670 NEXT I
1777 PRINT A(10100),M,JJJJ
1999 NEXT JJJJ

This BASIC computer program was run via basica/D of Microsoft's GW-BASIC 3.11 interpreter for DOS.  See the BASIC manual [13].  Copied by hand from the screen, the computer program's complete output through JJJJ=-31995 is shown below:

1       -1E+07        -32000
1       -1E+07        -31999
1       -1E+07        -31998
1       -7.847851E+07        -31997
1       -2.799528E+08        -31996
1        0        -31995

Above there is no rounding by hand; it is just straight copying by hand from the screen.

M=0 is optimal.  See Li and Sun [12, p. 415].

Of the 10100 A's, only the A of line 1777, A(10100), is shown above.
   
On a personal computer with a Pentium Dual-Core CPU E5200 @2.50GHz, 2.50 GHz, 960 MB of RAM, and the IBM basica/D interpreter, version GW BASIC 3.11,  the wall-clock time for obtaining the output through JJJJ=-31995 was 38 hours.
       
Acknowledgment

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

References

[1] E. Balas, An Additive Algorithm for Solving Linear Programs with Zero-One Variables.    Operations Research, Vol. 13, No. 4 (1965), pp. 517-548.

[2] E. Balas, Discrete Programming by the Filter Method.  Operations Research, Vol. 15, No. 5 (Sep. - Oct., 1967), pp. 915-957.

[3] F. Cajori (1911) Historical Note on the Newton-Raphson Method of Approximation.  The American Mathematical Monthly, Volume 18 #2, pp. 29-32.

[4] George B. Dantzig, Discrete-Variable Extrenum Problems.  Operations Research, Vol. 5, No. 2 (Apr., 1957), pp. 266-277.

[5] M. A. Duran, I. E. Grossmann, An Outer-Approximation Algorithm for a Class of Mixed-Integer Nonlinear Programs.  Mathematical Programming, 36:307-339, 1986.

[6] D. M. Himmelblau, Applied Nonlinear Programming.  New York: McGraw-Hill Book Company, 1972.

[7] W. Hock, K. Schittkowski, Test Examples for Nonlinear Programming Codes.  Springer-Verlag, 1981.

[8] M. Junger, T. M. Liebling, D. Naddef, G. L. Nemhauser, W. R. Pulleyblank, G. Reinelt, G.   Rinaldi, L. A. Woolsey--Editors, 50 Years of Integer Programming 1958-2008: From the Early Years to the State-of-the-Art.  Springer, 2010 Edition.  eBook; ISBN 978-3-540-68279-0

[9] Jack Lashover (November 12, 2012).  Monte Carlo Marching.  www.academia.edu/5481312/MONTE_ CARLO_MARCHING

[10] E. L. Lawler, M. D. Bell, A Method for Solving Discrete Optimization Problems.  Operations Research, Vol. 14, No. 6 (Nov. - Dec., 1966), pp. 1098-1112.

[11] E. L. Lawler, M. D. Bell, Errata: A Method for Solving Discrete Optimization Problems.  Operations Research, Vol. 15, No. 3 (May - June, 1967), p. 578.

[12] Duan Li, Xiaoling Sun, Nonlinear Integer Programming.  Springer Science+Business Media,LLC (2006).  http://www.books.google.ca/books?isbn=0387329951

[13] Microsoft Corp., BASIC, Second Edition (May 1982), Version 1.10. Boca Raton, Florida: IBM Corp., Personal Computer, P. O. Box 1328-C,Boca Raton, Floridda 33432, 1981.

[14] Harvey M. Salkin, Integer Programming.  Menlo Park, California: Addison-Wesley Publishing Company (1975).

[15] Harvey M. Salkin, Kamlesh Mathur, Foundations of Integer Programming.  Elsevier Science Ltd (1989).

[16] K. Schittkowski, More Test Examples for Nonlinear Programming Codes.  Springer-Verlag, 1987.

[17] S. Surjanovic, Zakharov Function.  www.sfu.ca/~ssurjano/zakharov.html

[18] Jsun Yui Wong (2012, April 23).  The Domino Method of General Integer Nonlinear Programming Applied to Problem 2 of Lawler and Bell.   http://computationalresultsfromcomputerprograms.wordpress.com/2012/04/23/

[19] Jsun Yui Wong (2013, September 4).  A Nonlinear Integer/Discrete/Continuous Programming Solver Applied to a Literature Problem with Twenty Binary Variables and Three Constraints, Third Edition.  http://myblogsubstance.typepad.com/substance/2013/09/

[20] Jsun Yui Wong (2014, June 27).  A Unified Computer Program for Schittkowski's Test Problem 377, Second Edition.  http://nonlinearintegerprogrammingsolver.blogspot.ca/2014_06_01_archive.html