Оптимизация производственной программы заданной комплектности

Автор работы: Пользователь скрыл имя, 01 Декабря 2010 в 17:20, Не определен

Описание работы


Введение
1. Экономическая постановка задачи
2. Математическая постановка задачи
3. Выбор метода реализации модели. Обоснование выбора
4. Схема алгоритма и его описание.
5. Краткая характеристика ЭВМ и ее программного обеспечения.
6. Обоснование выбора языка программирования.
7. Решение задачи-теста для написания и отладки программы.
8. Анализ полученных результатов.
9. Инструкции пользователю и описание программы.
Заключение.
Литература.
Приложение

Файлы: 1 файл

Документ Microsoft Office Word (3).docx

— 74.69 Кб (Скачать файл)

GOMORY;                         

NachKell:=Kell;                         

I1:=Kstr;DPy:=1;                         

DOP_PER;                         

BS[Kstr]:=Bvsp[Kell];                         

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.

Курсовые по математическим методам по теме Реализация симплекс метода в случае произвольных свободных членов при условиях. Решить задачу линейного программирования симплексным методом с искусственным  базисом он лайн. Постановка задачи реализация симплекс

Информация о работе Оптимизация производственной программы заданной комплектности