home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / EDUCATON / GEO_MATH.ZIP / M23.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-04-15  |  1.9 KB  |  106 lines

  1. 0  CLS:PRINT
  2. 10   PRINT "LINEAR PROGRAMMING"
  3. 20   PRINT 
  4. 30   DIM A(10,14),B(13)
  5. 40   PRINT "NUMBER OF VARIABLES";
  6. 50   INPUT V
  7. 60   PRINT "NUMBER OF CONSTRAINTS";
  8. 70   INPUT C
  9. 80   PRINT "MATRIX ELEMENTS:"
  10. 90   FOR I = 2 TO C + 1
  11. 100   PRINT "CONSTRAINT ";I - 1
  12. 110   FOR J = 1 TO V
  13. 120   PRINT " COEFFICIENT ";J;
  14. 130   INPUT A(I,J)
  15. 140   NEXT J
  16. 150   PRINT "  RELATION (1 OR -1)";
  17. 160   INPUT A(I,V + 1)
  18. 170   PRINT "  CONSTANT ";
  19. 180   INPUT A(I,V + 2)
  20. 190  A(I,C + V + 1) = A(I,V + 2)
  21. 200  A(I,V + 2) = 0
  22. 210   IF I = 2 THEN 240
  23. 220  A(I,V + I - 1) = A(I,V + 1)
  24. 230  A(I,V + 1) = 0
  25. 240   NEXT I
  26. 250   PRINT 
  27. 260   PRINT "FUNCTION:"
  28. 270   FOR I = 1 TO V
  29. 280   PRINT "  COEFFICIENT ";I;
  30. 290   INPUT A(1,I)
  31. 300   NEXT I
  32. 310   PRINT 
  33. 320  M = 1
  34. 330   FOR I = 1 TO V
  35. 340  B(I) = 1
  36. 350   NEXT I
  37. 360   FOR I = 2 TO C + 1
  38. 370   IF A(I,V + I - 1) <  >  - 1 THEN 430
  39. 380  B(V + I - 1) = 1
  40. 390   FOR J = 1 TO C + V
  41. 400  A(C + 2,J) = A(C + 2,J) - A(I,J)
  42. 410   NEXT J
  43. 420  M = C + 2
  44. 430   NEXT I
  45. 440  P = 1
  46. 450  R = 1
  47. 460   FOR I = 2 TO C + V
  48. 470   IF A(M,I) < A(M,P) THEN 490
  49. 480  P = I
  50. 490   IF A(M,I) >  = A(M,R) THEN 510
  51. 500  R = I
  52. 510   NEXT I
  53. 520   IF A(M,R) < 0 THEN 570
  54. 530   IF P = 1 THEN 880
  55. 540   IF A(M,P) > 9.9999E-05 THEN 840
  56. 550  M = 1
  57. 560   GOTO 440
  58. 570  P = 1
  59. 580   FOR I = 2 TO C + 1
  60. 590   IF A(I,R) <  = 0 THEN 640
  61. 600  Z = A(I,C + V + 1) / A(I,R)
  62. 610   IF P = 1 THEN 630
  63. 620   IF Z >  = A(P,C + V + 1) / A(P,R) THEN 640
  64. 630  P = I
  65. 640   NEXT I
  66. 650   IF P = 1 THEN 860
  67. 660   FOR I = 1 TO V + C
  68. 670   IF B(I) = 1 THEN 690
  69. 680   IF A(P,I) = 1 THEN 700
  70. 690   NEXT I
  71. 700  B(I) = 1
  72. 710  B(R) = 0
  73. 720  Z = A(P,R)
  74. 730   FOR I = 1 TO V + C + 1
  75. 740  A(P,I) = A(P,I) / Z
  76. 750   NEXT I
  77. 760   FOR I = 1 TO C + 2
  78. 770   IF I = P THEN 820
  79. 780  Z = A(I,R)
  80. 790   FOR J = 1 TO V + C + 1
  81. 800  A(I,J) = A(I,J) - Z * A(P,J)
  82. 810   NEXT J
  83. 820   NEXT I
  84. 830   GOTO 440
  85. 840   PRINT "INFEASIBLE"
  86. 850   GOTO 1030
  87. 860   PRINT "UNBOUNDED"
  88. 870   GOTO 1030
  89. 880   FOR J = 1 TO V
  90. 890   IF B(J) = 0 THEN 920
  91. 900  B(J) = 0
  92. 910   GOTO 960
  93. 920   FOR I = 2 TO C + 1
  94. 930   IF A(I,J) = 1 THEN 950
  95. 940   NEXT I
  96. 950  B(J) = A(I,V + C + 1)
  97. 960   NEXT J
  98. 970  Z = A(1,V + C + 1)
  99. 980   PRINT 
  100. 990   PRINT "FUNCTION = ";Z * ( - 1)
  101. 1000   FOR I = 1 TO V
  102. 1010   PRINT "X(";I;")=";B(I)
  103. 1020   NEXT I
  104. 1030   END 
  105. 5530   IF M = 1 THEN 880
  106.