Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по ММТС.doc
Скачиваний:
7
Добавлен:
01.03.2025
Размер:
3.59 Mб
Скачать

Приложение 6. Компьютерная программа решения задачи линейного программирования симплекс-методом

10 CLS:DIM A(20,50),J1(50),B(20),C(50)

20 PRINT TAB(5)"РЕШЕНИЕ ОБЩЕЙ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ"

30 PRINT TAB(1)"СИМПЛЕКС-МЕТОДОМ (НА МАКСИМУМ ДЛЯ ОГРАНИЧЕНИЙ ТИПА )"

35 FM$="#####.#####"

40 PRINT "ВВЕДИТЕ ИСХОДНЫЕ ДАННЫЕ"

50 INPUT "ЧИСЛО УРАВНЕНИЙ В СИСТЕМЕ ОГРАНИЧЕНИЙ M";M

60 INPUT "ЧИСЛО НЕИЗВЕСТНЫХ K";K

80 FOR I=1 TO M:FOR J=1 TO K

90 PRINT "КОЭФФИЦИЕНТ ПРИ "J"-М НЕИЗВЕСТНОМ В "I"-M УРАВНЕНИИ A(";

100 PRINT I","J")":INPUT A(I,J):NEXT J

110 PRINT "СВОБОДНЫЙ ЧЛЕН "I"-ГО УРАВНЕНИЯ В ("I")":INPUT B(I):NEXT I

120 FOR J=1 TO K:PRINT "КОЭФФИЦИЕНТ ЦЕЛЕВОЙ ФУНКЦИИ C("J")"

125 INPUT C(J):NEXT J

126 OPEN"O",#3,"SIMPL.REZ"

127 PRINT #3, TAB(5)"РЕШЕНИЕ ОБЩЕЙ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ"

129 PRINT #3, TAB(13)"СИМПЛЕКС-МЕТОДОМ"

130 PRINT #3, :PRINT #3, :PRINT #3, TAB(5)"ИСХОДНЫЕ ДАННЫЕ":PRINT #3,

140 PRINT #3, TAB(3)"ТАБЛИЦА КОЭФФИЦИЕНТОВ A(I,J) И СВОБОДНЫХ ЧЛЕНОВ";

145 PRINT #3, " B(I)"

150 PRINT #3, TAB(6)"(ДЛЯ ОСНОВНЫХ И ДОПОЛНИТЕЛЬНЫХ НЕИЗВЕСТНЫХ)"

160 K6=K+1:K=K+M:K1=K+1:M1=M+1

170 FOR I=1 TO M:A(I,K1)=B(I):J1(I)=K-M+I

180 FOR J=K6 TO K:IF I=J-K6+1 THEN 210

190 A(I,J)=0

200 GOTO 220

210 A(I,J)=1

220 NEXT J

230 PRINT #3, TAB(5) I"-Е УРАВНЕНИЕ"

240 FOR J=1 TO K:PRINT #3, USING FM$;A(I,J);:NEXT J:PRINT #3, B(I)

250 NEXT I

255 PRINT #3,

290 FOR J=K6 TO K:C(J)=0:NEXT J

300 PRINT #3, :PRINT #3, TAB(3)"КОЭФФИЦИЕНТЫ ЦЕЛЕВОЙ ФУНКЦИИ C(J)"

310 PRINT #3, "(ДЛЯ ОСНОВНЫХ И ДОПОЛНИТЕЛЬНЫХ НЕИЗВЕСТНЫХ)"

320 FOR J=1 TO K:PRINT #3, USING FM$;C(J);:PRINT #3," ";:NEXT J

330 FOR J=1 TO K

360 C(J)=0-C(J)

370 A(M1,J)=C(J):NEXT J

375 A(M1,K1)=0

380 K0=0

390 PRINT :PRINT TAB(5)"Р Е З У Л Ь Т А Т Ы Р А С Ч Е Т А "

400 REM ОПРЕДЕЛЕНИЕ БАЗИСНОГО РЕШЕНИЯ

410 I=M1

420 K0=K0+1

430 PRINT TAB(3)"БАЗИСНОЕ РЕШЕНИЕ - "K0

440 Y=0

450 FOR I=1 TO M:Y=Y+C(J1(I))*A(I,K1):PRINT "X("J1(I)")=",: PRINT USING FM$;A(I,K1)

455 NEXT I

460 PRINT TAB(3)"ТЕКУЩЕЕ ЗНАЧЕНИЕ УСЛОВНОЙ ЦЕЛЕВОЙ ФУНКЦИИ Y=",: print USING FM$;Y

470 REM ВЫБОР НОВОЙ БАЗИСНОЙ ПЕРЕМЕННОЙ ИЗ НЕБАЗИСНЫХ

480 N0=0:B0=0

490 FOR J=1 TO K1:IF A(M1,J)>=B0 THEN 510

500 B0=A(M1,J):N0=J

510 NEXT J

520 IF N0=0 THEN 690

530 REM ПРОВЕРКА ЗАДАЧИ НА НАЛИЧИЕ РЕШЕНИЯ

540 S=1E+11

550 FOR I=1 TO M:IF A(I,N0)<=.00001 THEN 570

560 IF A(I,K1)/A(I,N0)>=S THEN 570

565 S=A(I,K1)/A(I,N0):NR=I

570 NEXT I

580 IF S<=1E+09 THEN 600

590 PRINT #3, :PRINT #3, TAB(5)"ЗАДАЧА НЕ ИМЕЕТ РЕШЕНИЯ":GOTO 800

595 REM ОПРЕДЕЛЕНИЕ РАЗРЕШАЮЩЕГО ЭЛЕМЕНТА

600 P=A(NR,N0)

610 FOR K=1 TO K1:A(NR,K)=A(NR,K)/P:NEXT K

620 J1(NR)=N0

635 REM ВЫРАЖЕНИЕ НОВЫХ БАЗИСНЫХ ПЕРЕМЕННЫХ ЧЕРЕЗ НОВЫЕ НЕБАЗИСНЫЕ

640 FOR I=1 TO M1:IF I=NR THEN 670

650 H=A(I,N0)

660 FOR J=1 TO K1:A(I,J)=A(I,J)-H*A(NR,J):NEXT J

670 NEXT I

680 GOTO 420

690 FOR I=1 TO M:IF J1(I)<K1 THEN 720

700 PRINT #3, :PRINT #3, TAB(5)"ДОПУСТИМОЕ РЕШЕНИЕ НЕ СУЩЕСТВУЕТ"

710 GOTO 800

720 NEXT I

730 PRINT #3,:PRINT #3,:PRINT #3, TAB(5)"О П Т И М А Л Ь Н О Е Р Е Ш Е Н И Е"

740 FOR I=1 TO M:IF J1(I)>=K6 THEN 760

750 PRINT #3, J1(I), : PRINT #3, USING FM$;A(I,K1)

760 NEXT I

800 PRINT #3, :PRINT #3, TAB(5)".....***....."

805 COLOR 25,5,15:PRINT "РЕЗУЛЬТАТЫ РАСЧЕТА В ФАЙЛЕ SIMPL.REZ"

806 BBB$=INKEY$

807 IF LEN(BBB$)=0 THEN 806

810 END