Wednesday, August 12, 2009

An Application of an Integer Programming Computer Program

Jsun Yui Wong

The computer program listed below seeks to solve Example 4 on pages 219-222 of Heragu (2008) with the modification that the five offices are cubes with the following dimensions: 24x24x24, 24x24x24, 34x34x34, 26x26x26, and 28x28x28.

0 DEFDBL A-Z
3 DEFINT I,J,K
4 DIM X(166),A(166),L(166),K(166),P(166),B(166),S(166)
5 FOR JJJJ=-32000 TO 32000
14 RANDOMIZE JJJJ
16 M=-1D+17
111 FOR K=1 TO 15
113 A(K)=FIX(RND*699)
115 NEXT K
121 FOR KF=16 TO 45
123 A(KF)=FIX(RND*2)
125 NEXT KF
126 IMAR=10+FIX(RND*3000)
128 FOR I=1 TO IMAR
129 FOR KK=1 TO 45
131 X(KK)=A(KK)
132 NEXT KK
151 IF RND<.7 GOTO 222 ELSE IF RND<.5 GOTO 236 ELSE GOTO 241
222 IJL=1+FIX(RND*15)
233 IF RND<.95 THEN X(IJL)=FIX(RND*699) ELSE X(IJL)=A(IJL)-1
235 GOTO 501
236 IJR=16+FIX(RND*30)
238 X(IJR)=FIX(RND*2)
239 GOTO 501
241 IF RND<.5 THEN 243 ELSE 248
243 IJU=1+FIX(RND*15):IJV=1+FIX(RND*15)
244 X(IJU)=A(IJV):X(IJV)=A(IJU)
245 GOTO 501
248 IJW=16+FIX(RND*30):IJX=16+FIX(RND*30)
249 X(IJW)=A(IJX):X(IJX)=A(IJW)
501 B(1)=ABS(X(1)-X(2))
502 B(2)=ABS(X(1)-X(3))
503 B(3)=ABS(X(1)-X(4))
504 B(4)=ABS(X(1)-X(5))
505 B(5)=ABS(X(2)-X(3))
506 B(6)=ABS(X(2)-X(4))
507 B(7)=ABS(X(2)-X(5))
508 B(8)=ABS(X(3)-X(4))
509 B(9)=ABS(X(3)-X(5))
510 B(10)=ABS(X(4)-X(5))
511 B(11)=ABS(X(6)-X(7))
512 B(12)=ABS(X(6)-X(8))
513 B(13)=ABS(X(6)-X(9))
514 B(14)=ABS(X(6)-X(10))
515 B(15)=ABS(X(7)-X(8))
516 B(16)=ABS(X(7)-X(9))
517 B(17)=ABS(X(7)-X(10))
518 B(18)=ABS(X(8)-X(9))
519 B(19)=ABS(X(8)-X(10))
520 B(20)=ABS(X(9)-X(10))
521 B(21)=ABS(X(11)-X(12))
522 B(22)=ABS(X(11)-X(13))
523 B(23)=ABS(X(11)-X(14))
524 B(24)=ABS(X(11)-X(15))
525 B(25)=ABS(X(12)-X(13))
526 B(26)=ABS(X(12)-X(14))
527 B(27)=ABS(X(12)-X(15))
528 B(28)=ABS(X(13)-X(14))
529 B(29)=ABS(X(13)-X(15))
530 B(30)=ABS(X(14)-X(15))
901 S(1)=B(1)-24+999*X(16)
902 S(2)=B(11)-24+999*X(17)
903 S(3)=B(21)-24+999*X(18)
913 S(4)=B(2)-29+999*X(19)
914 S(5)=B(12)-29+999*X(20)
915 S(6)=B(22)-29+999*X(21)
925 S(7)=B(3)-25+999*X(22)
926 S(8)=B(13)-25+999*X(23)
927 S(9)=B(23)-25+999*X(24)
937 S(10)=B(4)-26+999*X(25)
938 S(11)=B(14)-26+999*X(26)
939 S(12)=B(24)-26+999*X(27)
949 S(13)=B(5)-29+999*X(28)
950 S(14)=B(15)-29+999*X(29)
951 S(15)=B(25)-29+999*X(30)
961 S(16)=B(6)-25+999*X(31)
962 S(17)=B(16)-25+999*X(32)
963 S(18)=B(26)-25+999*X(33)
973 S(19)=B(7)-26+999*X(34)
974 S(20)=B(17)-26+999*X(35)
975 S(21)=B(27)-26+999*X(36)
985 S(22)=B(8)-30+999*X(37)
986 S(23)=B(18)-30+999*X(38)
987 S(24)=B(28)-30+999*X(39)
997 S(25)=B(9)-31+999*X(40)
998 S(26)=B(19)-31+999*X(41)
999 S(27)=B(29)-31+999*X(42)
1009 S(28)=B(10)-27+999*X(43)
1010 S(29)=B(20)-27+999*X(44)
1011 S(30)=B(30)-27+999*X(45)
1021 SZ(1)=X(16)+X(17)+X(18)-2
1022 SZ(2)=X(19)+X(20)+X(21)-2
1023 SZ(3)=X(22)+X(23)+X(24)-2
1024 SZ(4)=X(25)+X(26)+X(27)-2
1025 SZ(5)=X(28)+X(29)+X(30)-2
1026 SZ(6)=X(31)+X(32)+X(33)-2
1027 SZ(7)=X(34)+X(35)+X(36)-2
1028 SZ(8)=X(37)+X(38)+X(39)-2
1029 SZ(9)=X(40)+X(41)+X(42)-2
1030 SZ(10)=X(43)+X(44)+X(45)-2
1047 FOR IJUG=1 TO 10
1048 IF SZ(IJUG)=0 THEN SZ(IJUG)=0 ELSE SZ(IJUG)=ABS(SZ(IJUG))
1049 NEXT IJUG
1107 FOR IJUL=1 TO 30
1111 IF S(IJUL)<0 THEN S(IJUL)=ABS(S(IJUL)) ELSE S(IJUL)=0
1115 NEXT IJUL
1285 PL11=-333333!*(S(1)+S(2)+S(3)+S(4)+S(5)+S(6)+S(7)+S(8)+S(9)+S(10)+S(11))
1286 PL12=-333333!*(S(12)+S(13)+S(14)+S(15)+S(16)+S(17)+S(18)+S(19)+S(20))
1287 PL13=-333333!*(S(21)+S(22)+S(23)+S(24)+S(25)+S(26)+S(27)+S(28)+S(29))
1288 PL14=-333333!*(S(30))
1299 PL21=-333333!*(SZ(1)+SZ(2)+SZ(3)+SZ(4)+SZ(5)+SZ(6)+SZ(7)+SZ(8)+SZ(9)+SZ(10))
1380 PH=-10*(B(1)+B(11)+B(21))-15*(B(2)+B(12)+B(22))-20*(B(3)+B(13)+B(23))
1381 PI=-30*(B(5)+B(15)+B(25))-35*(B(6)+B(16)+B(26))-10*(B(7)+B(17)+B(27))
1384 PJ=-10*(B(8)+B(18)+B(28))-20*(B(9)+B(19)+B(29))-15*(B(10)+B(20)+B(30))
1587 PK=PH+PI+PJ
1588 P=PK+PL11+PL12+PL13+PL14+PL21
1599 PR=PK
1651 IF P<=M THEN 1670
1657 FOR KEW=1 TO 45
1658 A(KEW)=X(KEW)
1659 NEXT KEW
1661 M=P
1663 MM=PR
1666 GOTO 128
1670 NEXT I
1890 IF M>-6100 THEN 1912 ELSE 1999
1912 PRINT A(1),A(2),A(3),A(4),A(5)
1913 PRINT A(6),A(7),A(8),A(9),A(10)
1914 PRINT A(11),A(12),A(13),A(14),A(15)
1917 PRINT M,MM,JJJJ
1999 NEXT JJJJ

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

345 345 374 345 372
569 569 569 569 569
476 452 457 427 426
-6035 -6035 -28729

267 267 267 267 267
205 205 176 205 178
423 447 442 472 473
-6035 -6035 -14654

Interpreted in accordance with line 1912 through line 1917, the output through JJJJ=-14654 was produced in the first 12 hours of running on a personal computer with an Intel 2.66 GHz. chip and the IBM basica/D interpreter.

References

Heragu, S. S.: "Facilities Design," Third Edition, CRC Press, Taylor and Francis Group, Boca Raton, Florida, 2008.

Hillier, F. S., and G. J. Lieberman: "Introduction to Operations Research," Sixth Edition, pp. 498-499, McGraw-Hill, Inc., New York, 1995.