Friday, October 16, 2009

A Computer Program for Relative Location of Facilities

Jsun Yui Wong

The complete computer program listed below seeks to solve a seven-department layout problem (Armour and Buffa, 1963). The departmment sizes for department 1 through department 7 are 25x20, 25x20, 35x30, 30x20, 35x20, 60x40, and 40x10, respectively; the interdepartmental flows are shown in line 1624 through line 1646 of the following program. The sizes and flows of the first five departments are from Heragu (2008, page 220). The 1-6, 2-6, 3-6, 4-6, 5-6, 1-7, 2-7, 3-7, 4-7, 5-7, and 6-7 flows are 17, 32, 26, 13 19, 0, 10, 0, 10, 4, and 20, respectively. In order to have integer solutions, these original lengths and widths are multiplied by 4. These longer lengths and widths are used in line 391 through line 435 of the following program.

0 DEFSNG A-Z
3 DEFINT I,J,K
4 DIM X(466),A(466),L(466),K(466),P(466),B(466),S(466),J(466),HS(99)
6 DIM T(11,11,5),TZ(11,11),TL(22)
65 FOR JJJJ=-32000 TO 32000
74 RANDOMIZE JJJJ
76 M=-1D+17
85 FOR I=1 TO 14
88 A(I)=FIX(RND*1000)
89 NEXT I
126 IMAR=10+FIX(RND*20000)
128 FOR I=1 TO IMAR
129 FOR KK=1 TO 14
131 X(KK)=A(KK)
132 NEXT KK
223 IJL=1+FIX(RND*14)
234 X(IJL)=FIX(RND*1000)
391 HS(1)=ABS(X(1)-X(2))-100
392 HS(2)=ABS(X(1)-X(3))-120
393 HS(3)=ABS(X(1)-X(4))-110
394 HS(4)=ABS(X(1)-X(5))-120
395 HS(5)=ABS(X(1)-X(6))-170
396 HS(6)=ABS(X(1)-X(7))-130
397 HS(7)=ABS(X(2)-X(3))-120
398 HS(8)=ABS(X(2)-X(4))-110
399 HS(9)=ABS(X(2)-X(5))-120
400 HS(10)=ABS(X(2)-X(6))-170
401 HS(11)=ABS(X(2)-X(7))-130
402 HS(12)=ABS(X(3)-X(4))-130
403 HS(13)=ABS(X(3)-X(5))-140
404 HS(14)=ABS(X(3)-X(6))-190
405 HS(15)=ABS(X(3)-X(7))-150
406 HS(16)=ABS(X(4)-X(5))-130
407 HS(17)=ABS(X(4)-X(6))-180
408 HS(18)=ABS(X(4)-X(7))-140
409 HS(19)=ABS(X(5)-X(6))-190
410 HS(20)=ABS(X(5)-X(7))-150
411 HS(21)=ABS(X(6)-X(7))-200
412 HS(22)=ABS(X(8)-X(9))-80
413 HS(23)=ABS(X(8)-X(10))-100
414 HS(24)=ABS(X(8)-X(11))-80
415 HS(25)=ABS(X(8)-X(12))-80
416 HS(26)=ABS(X(8)-X(13))-120
417 HS(27)=ABS(X(8)-X(14))-60
418 HS(28)=ABS(X(9)-X(10))-100
419 HS(29)=ABS(X(9)-X(11))-80
420 HS(30)=ABS(X(9)-X(12))-80
421 HS(31)=ABS(X(9)-X(13))-120
422 HS(32)=ABS(X(9)-X(14))-60
423 HS(33)=ABS(X(10)-X(11))-100
424 HS(34)=ABS(X(10)-X(12))-100
425 HS(35)=ABS(X(10)-X(13))-140
426 HS(36)=ABS(X(10)-X(14))-80
427 HS(37)=ABS(X(11)-X(12))-80
431 HS(38)=ABS(X(11)-X(13))-120
432 HS(39)=ABS(X(11)-X(14))-60
433 HS(40)=ABS(X(12)-X(13))-120
434 HS(41)=ABS(X(12)-X(14))-60
435 HS(42)=ABS(X(13)-X(14))-100
551 IF HS(1)<-.0001 AND HS(22)<-.0001 THEN TL(1)=999999! ELSE TL(1)=0
553 IF HS(2)<-.0001 AND HS(23)<-.0001 THEN TL(2)=999999! ELSE TL(2)=0
554 IF HS(3)<-.0001 AND HS(24)<-.0001 THEN TL(3)=999999! ELSE TL(3)=0
555 IF HS(4)<-.0001 AND HS(25)<-.0001 THEN TL(4)=999999! ELSE TL(4)=0
557 IF HS(5)<-.0001 AND HS(26)<-.0001 THEN TL(5)=999999! ELSE TL(5)=0
559 IF HS(6)<-.0001 AND HS(27)<-.0001 THEN TL(6)=999999! ELSE TL(6)=0
560 IF HS(7)<-.0001 AND HS(28)<-.0001 THEN TL(7)=999999! ELSE TL(7)=0
565 IF HS(8)<-.0001 AND HS(29)<-.0001 THEN TL(8)=999999! ELSE TL(8)=0
568 IF HS(9)<-.0001 AND HS(30)<-.0001 THEN TL(9)=999999! ELSE TL(9)=0
569 IF HS(10)<-.0001 AND HS(31)<-.0001 THEN TL(10)=999999! ELSE TL(10)=0
581 IF HS(11)<-.0001 AND HS(32)<-.0001 THEN TL(10)=999999! ELSE TL(11)=0
582 IF HS(12)<-.0001 AND HS(33)<-.0001 THEN TL(10)=999999! ELSE TL(12)=0
583 IF HS(13)<-.0001 AND HS(34)<-.0001 THEN TL(10)=999999! ELSE TL(13)=0
584 IF HS(14)<-.0001 AND HS(35)<-.0001 THEN TL(10)=999999! ELSE TL(14)=0
585 IF HS(15)<-.0001 AND HS(36)<-.0001 THEN TL(10)=999999! ELSE TL(15)=0
586 IF HS(16)<-.0001 AND HS(37)<-.0001 THEN TL(10)=999999! ELSE TL(16)=0
587 IF HS(17)<-.0001 AND HS(38)<-.0001 THEN TL(10)=999999! ELSE TL(17)=0
588 IF HS(18)<-.0001 AND HS(39)<-.0001 THEN TL(10)=999999! ELSE TL(18)=0
589 IF HS(19)<-.0001 AND HS(40)<-.0001 THEN TL(10)=999999! ELSE TL(19)=0
590 IF HS(20)<-.0001 AND HS(41)<-.0001 THEN TL(10)=999999! ELSE TL(20)=0
591 IF HS(21)<-.0001 AND HS(42)<-.0001 THEN TL(10)=999999! ELSE TL(21)=0
1611 SUMTL=0
1613 FOR IR=1 TO 21
1615 SUMTL=SUMTL+TL(IR)
1618 NEXT IR
1621 PR1=-10*ABS(X(1)-X(2))-15*ABS(X(1)-X(3))-20*ABS(X(1)-X(4))-0*ABS(X(1)-X(5))-17*ABS(X(1)-X(6))-0*ABS(X(1)-X(7))
1622 PR2=-30*ABS(X(2)-X(3))-35*ABS(X(2)-X(4))-10*ABS(X(2)-X(5))-32*ABS(X(2)-X(6))-10*ABS(X(2)-X(7))
1631 PR3=-10*ABS(X(3)-X(4))-20*ABS(X(3)-X(5))-26*ABS(X(3)-X(6))-0*ABS(X(3)-X(7))
1632 PR4=-15*ABS(X(4)-X(5))-13*ABS(X(4)-X(6))-10*ABS(X(4)-X(7))
1633 PR5=-19*ABS(X(5)-X(6))-4*ABS(X(5)-X(7))-20*ABS(X(6)-X(7))
1636 REM
1637 PR7=-10*ABS(X(8)-X(9))-15*ABS(X(8)-X(10))-20*ABS(X(8)-X(11))-0*ABS(X(8)-X(12))-17*ABS(X(8)-X(13))-0*ABS(X(8)-X(14))
1643 PR8=-30*ABS(X(9)-X(10))-35*ABS(X(9)-X(11))-10*ABS(X(9)-X(12))-32*ABS(X(9)-X(13))-10*ABS(X(9)-X(14))
1644 PR9=-10*ABS(X(10)-X(11))-20*ABS(X(10)-X(12))-26*ABS(X(10)-X(13))-0*ABS(X(10)-X(14))
1645 PR10=-15*ABS(X(11)-X(12))-13*ABS(X(11)-X(13))-10*ABS(X(11)-X(14))
1646 PR11=-19*ABS(X(12)-X(13))-4*ABS(X(12)-X(14))-20*ABS(X(13)-X(14))
1650 P=PR1+PR2+PR3+PR4+PR5+PR7+PR8+PR9+PR10+PR11-999*SUMTL
1651 IF P<=M THEN 1670
1657 FOR KEW=1 TO 14
1658 A(KEW)=X(KEW)
1659 NEXT KEW
1661 M=P
1662 MM=PR1+PR2+PR3+PR4+PR5+PR7+PR8+PR9+PR10+PR11
1666 GOTO 128
1670 NEXT I
1890 IF M>-56000! THEN 1912 ELSE 1999
1912 PRINT A(1),A(2),A(3),A(4),A(5)
1914 PRINT A(6),A(7),A(8),A(9),A(10)
1915 PRINT A(11),A(12),A(13),A(14)
1916 PRINT MM,M,JJJJ
1999 NEXT JJJJ

This BASIC computer program was run with Microsoft's GW BASIC 3.11 interpreter, and the output through fourteen hours of running is presented below. What immediately follows is a manual copy from the computer screen.

641 751 761 641 871
751 751 660 740 640
740 740 860 960
-55300 -55300 -31227

232 352 352 242 472
352 352 202 282 182
282 282 402 502
-55310 -55310 -29831

223 343 343 233 464
343 343 435 515 415
515 515 635 736
-55422 -55422 -26997

Interpreted in accordance with line 1912 through line 1916, this output was produced through fourteen hours of running on a personal computer with an Intel 2.66 GHz. chip and the IBM basica/D interpreter, which is not a compiler.

References

G. C. Armour and E. S. Buffa, "A Heuristic Algorithm and Simulation Approach to Relative Location of Facilities," Management Science 9, 294-309 (1963).

S. S. Heragu. Facilities Design, Third Edition. Boca Raton, Florida: CRC Press, 2008.