рефераты рефераты
Главная страница > Курсовая работа: Линейное программирование  
Курсовая работа: Линейное программирование
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Линейное программирование

 CPrnew[Kstr]:=FunctPr[Kell];

 Cnew[Kstr]:=FX[Kell];

 GOTO NACH;

 END;

 IF P1=0 THEN SAVE(0,'Данное решение является целочисленым.',3);

 SAVE(0,'При этом:',3);

 IF MIN=1 THEN BEGIN F0:=-F0;Fm:=MIN; END;

 IF Fm=1 THEN

 SAVE(0,'Fmax=',2)

 ELSE

 SAVE(0,'Fmin=',2);

 SAVE(F0,'',1);

 SAVE(0,'',0);

 FOR I1:=1 TO Kstr DO

 BEGIN

 SAVE(0,' ',2);

 SAVE(0,BS[I1],2);SAVE(0,'=',2);

 SAVE(H[I1],'',1);

 SAVE(0,'',0);

 END;

 HALT;

END;

{ Нахождение ключевого столбца }

KLst:=1;Mo:=0;

FOR J:=1 TO Kell DO

 IF Fm=1 THEN

 IF Fo[J]<Mo THEN Mo:=Fo[J];

FOR J:=1 TO Kell DO

 BEGIN

 IF Bvsp[J][1]<>'Y' THEN

 IF Fm=1 THEN

 BEGIN

 IF Fo[J]<0 THEN

 IF Fo[J]>=Mo THEN

 BEGIN

 Mo:=Fo[J]; KLst:=J;

 END;

 END

 ELSE

 BEGIN

 IF Fo[J]>0 THEN

 IF Fo[J]>=Mo THEN

 BEGIN

 Mo:=Fo[J]; KLst:=J;

 END;

 END;

 END;

 SAVE(0,'Ключевой столбец: ',2);SAVE(KLst,' ',1);

 { Нахождение ключевой строки }

P1:=0;K_st:=0;

FOR J:=1 TO Kell DO

 IF ABS(Mo-Fo[J])<Epsilon THEN

 BEGIN

 K_st:=K_st+1;

 FOR I:=1 TO Kstr DO

 IF X[I,KLst]>0 THEN BEGIN B[i]:=H[i]/X[I,KLst]; P:=B[i];KLstr:=I; END

 ELSE BEGIN B[i]:=-1; P1:=P1+1; END;

 END;

IF P1=Kstr*K_st THEN

 BEGIN

 SAVE(0,'',0);

 SAVE(0,'РЕШЕНИЙ НЕТ т.к. невозможно определить ключевую строку',3);

 HALT;

 END;

P1:=0;

FOR J:=1 TO Kell DO

 IF ABS(Mo-Fo[J])<Epsilon THEN

 FOR I:=1 TO Kstr DO

 IF B[i]>=0 THEN BEGIN

 IF B[i]<P THEN IF Bvsp[KLst]<>BS[i] THEN BEGIN P:=B[i]; KLstr:=I; END;

 IF INT(10000*B[i])=INT(10000*P) THEN

 IF (BS[i][1]='Y') AND (BS[KLstr][1]='X') THEN

 IF Bvsp[KLst]<>BS[i] THEN BEGIN P:=B[i]; KLstr:=I; END;

 END;

SAVE(0,'Ключевая строка: ',2);SAVE(KLstr,' ',1);

SAVE(0,'',0);

FOR I:=1 TO Kstr DO

 IF Bvsp[KLst]=BS[i] THEN

 BEGIN

 SAVE(0,'РЕШЕНИЙ НЕТ т.к. в базисном столбце уже есть ',3);

 SAVE(0,'такая переменная.',3);

 HALT;

 END;

 { Вызов процедуры сокращения Y }

If CPr[KLstr]=1 then SOKR;

{ Построение следующей Симплекс-таблицы }

BS[KLstr]:=Bvsp[KLst];

Cnew[KLstr]:=FX[KLst];

CPrnew[KLstr]:=FunctPr[KLst];

FOR I:=1 TO Kstr DO

 BEGIN

 IF I=KLstr THEN Hnew[i]:=H[i]/X[KLstr,KLst]

 ELSE Hnew[i]:=H[i]-(H[KLstr]*X[I,KLst]/X[KLstr,KLst]);

 FOR J:=1 TO Kell DO

 BEGIN

 IF (I=KLstr) AND (J=KLst) THEN Xnew[I,J]:=1;

 IF (I=KLstr) AND (J<>KLst) THEN Xnew[I,J]:=X[I,J]/X[KLstr,KLst];

 IF (I<>KLstr) AND (J=KLst) THEN Xnew[I,J]:=0;

 IF (I<>KLstr) AND (J<>KLst) THEN

 Xnew[I,J]:=X[I,J]-(X[KLstr,J]*X[I,KLst]/X[KLstr,KLst]);

 END;

 END;

KLst:=0;KLstr:=0;

Kit:=Kit+1;

UNTIL (Kit=0);

END;

 { Основная программа }

BEGIN

CLRSCR;

Kit:=0;Dop_X:=0;

ASSIGN(F,'SIMPLEX.DAT');

REWRITE(F);

CLOSE(F);

ST:;

 WRITE('Введите кол-во строк:');READLN(Kstr);

 IF Kstr>10 THEN

 BEGIN

 WRITELN('Программа не расчитана на введенное кол-во строк!');

 GOTO ST;

 END;

ELL:

 WRITE('Введите кол-во элементов:');READLN(Kell);

 IF Kell>10 THEN

 BEGIN

 WRITELN('Программа не расчитана на введенное кол-во элементов!');

 GOTO ELL;

 END;

ZN:

 WRITE('Исследуем на МАКСИМУМ(1) или МИНИМУМ(2):');READLN(Fm);

 IF (Fm<>1) AND (Fm<>2) THEN

 BEGIN

 WRITELN('Введите снова');GOTO ZN;

 END;

 WRITE('Целочисленное решение(Y/N): ');READLN(PrGomory);

 IF (PrGomory='Y') OR (PrGomory='y') THEN PrGomory:='Y' ELSE PrGomory:='N';

 { Вызов процедуры SIMPLEX}

SIMPLEX;

END.


        Исходные данные

 
 Z = 10х1+8х2+6х3

C: B: N: (Bi)        X1 X2 X3 Y1 Y2 Y3

 

+M Y1 120.0000 4.0000 8.0000 4.0000 1.0000 0.0000 0.0000

+M Y2 160.0000 6.0000 2.0000 3.0000 0.0000 1.0000 0.0000

+M Y3 400.0000 2.0000 2.0000 4.0000 0.0000 0.0000 1.0000

680.0000 12.0000 12.0000 11.0000 0.0000 0.0000 0.0000

Klu4evoy stolbec: 2 Klu4evaya stroka: 1

 C: B: N: X1 X2 X3 Y2 Y3

 -8.0000 X2 15.0000 0.5000 1.0000 0.5000 0.1250 0.0000

+M Y2 130.0000 5.0000 0.0000 2.0000 -0.2500 1.0000

+M Y3 370.0000 1.0000 0.0000 3.0000 -0.2500 0.0000

 500.0000 6.0000 0.0000 5.0000 0.0000 0.0000

Klu4evoy stolbec: 1 Klu4evaya stroka: 2

 C: B: N: X1 X2 X3 Y3

 -8.0000 X2 2.0000 0.0000 1.0000 0.3000 0.1500

-10.0000 X1 26.0000 1.0000 0.0000 0.4000 -0.0500

+M Y3 344.0000 0.0000 0.0000 2.6000 -0.2000

 344.0000 0.0000 0.0000 2.6000 0.0000

В 3 -y iteracii bilo polu4eno optimalnoe reshenie

no t.k. iz bazisa nevivedeni vse Y, to

mojno sdelat vivod, chto resheniy NET

X1 = 26

X2 = 2

X3 = 0

Z = 10 * 26 + 8 * 2 + 6 * 0 = 276


Страницы: 1, 2, 3, 4, 5

рефераты
Новости