Saturday, July 4, 2009

A Computer Program for 0-1 Nonlinear Programming

Jsun Yui Wong

The computer program listed below seeks to solve the following problem.

Objective function:
Maximize:
X(1)

Constraints:
X(2)-X(1)^3>=0
X(1)^2-X(2)>=0
X(2)-X(1)^3-X(3)^2=0
X(1)^2-X(2)-X(4)^2=0
X(1)=0, 1
X(2)=0, 1
X(3)=0, 1
X(4)=0, 1

This problem is an adaptation of Problem 263 on page 87 of Schittkowski [1].

0 DEFDBL A-Z
3 DEFINT I,J,K
4 DIM X(42),A(42),L(33),K(33)
5 FOR JJJJ=-32000 TO 32000
14 RANDOMIZE JJJJ
16 M=-1D+17
91 FOR K=1 TO 4
93 A(K)=FIX(RND*2)
99 NEXT K
126 IMAR=10+FIX(RND*1000)
128 FOR I=1 TO IMAR
129 FOR K=1 TO 4
131 X(K)=A(K)
132 NEXT K
1110 IJU=1+FIX(RND*4)
1111 X(IJU)=FIX(RND*2)
1151 PEN1=X(2)-X(1)^3
1159 IF PEN1<0 THEN PEN1=PEN1 ELSE PEN1=0
1255 PEN2=X(1)^2-X(2)
1259 IF PEN2<0 THEN PEN2=PEN2 ELSE PEN2=0
1355 PEN3=X(2)-X(1)^3-X(3)^2
1359 IF PEN3=0 THEN PEN3=0 ELSE PEN3=PEN3
1455 PEN4=X(1)^2-X(2)-X(4)^2
1459 IF PEN4=0 THEN PEN4=0 ELSE PEN4=PEN4
1488 P=X(1)-333333!*ABS(PEN1)-333333!*ABS(PEN2)-333333!*ABS(PEN3)-333333!*ABS(PEN4)
1499 PR=X(1)
1551 IF P<=M THEN 1670
1657 FOR KEW=1 TO 4
1658 A(KEW)=X(KEW)
1659 NEXT KEW
1661 M=P
1663 MM=PR
1666 GOTO 128
1670 NEXT I
1890 IF M>-10 THEN 1912 ELSE 1999
1912 PRINT A(1),A(2),A(3),A(4),M,MM,JJJJ
1999 NEXT JJJJ

This BASIC computer program was run with the IBM basica/D interpreter, and its output produced in the first 2 seconds of running is presented below. (What immediately follows is a manual copy from the computer screen.)

0 0 0 0 0
0 -32000

0 0 0 0 0
0 -31999

1 1 0 0 1
1 -31998

0 0 0 0 0
0 -31997

0 0 0 0 0
0 -31996

0 0 0 0 0
0 -31995

0 0 0 0 0
0 -31994

0 0 0 0 0
0 -31993

0 0 0 0 0
0 -31992

1 1 0 0 1
1 -31991

0 0 0 0 0
0 -31990

0 0 0 0 0
0 -31989

1 1 0 0 1
1 -31988

Interpreted in accordance with line 1912, the output above--with the best solution at JJJJ=-31998, JJJJ=-31991, and JJJJ=-31988--was produced in the first 2 seconds of running on a personal computer with an Intel 2.66 GHz. chip and the IBM basica/D interpreter.

Reference

[1] K. Schittkowski, "More Test Examples for Nonlinear Programming Codes," Springer-Verlag, Berlin Heidelberg New York, 1987.