На основе метода сетевого графа

Задачи исследования

Необходимо спланировать временный график работ в соответствии с графом и вычислить критический путь выполнения всех работ

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

Задание: Дана схема, нужно найти критический путь

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

Условие. Пусть предприятие производит столы и стулья. Расход ресурсов на их производство и прибыль от их реализации представлены в таблице. столы стулья объем ресурсов

Расход древесины

на изделие, м3 0,5 0,04 200

Расход труда(чел-час) 12 0,6 1800

Прибыль от реализации

единицы изделия, руб 180 20

Кроме того на производство 80 столов имеется заказ с министерством

Уравнения 1-количество столов х2 - количество стульев

0,5 х1 + 0,04х2<=200

12x1 + 0,6x2 <=18000

x1+20x2 =max (целевая функция)

unit

Unit4;

procedure TForm4.Button3Click(Sender: TObject);

begin

close();

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

form1.visible:=true;

form4.visible:=false;

end;

function Fy(x:real): real;

begin

Fy:= (60-6*x)/4;

end;

function Fx(x:real): real;

begin

Fx:=(100+2*x)/10;

end;

procedure TForm4.Button2Click(Sender: TObject);

var a, b,h, x1, y, x2: Double;

begin

Chart1.Series[0].Clear;

Chart1.Series[1].Clear;

Chart1.Series[2].Clear;

a:= StrToFloat(LabeledEdit1.Text); //левая граница

b:= StrToFloat(LabeledEdit2.Text); //правая граница

h:= StrToFloat(LabeledEdit3.Text); //шаг

x1:= a;

repeat

y:= Fy(x1);

x2:= Fx(y);

hart1.Series[0].AddXY(x1,y,FloatToStrF(x1,ffGeneral,4,3),clRed); //график F(x)

hart1.Series[1].AddXY(x2,y,FloatToStrF(y,ffGeneral,4,3),clGreen); //график F(y)

x1:= x1 + h; //приращение координат

until x1 > b;

x1:= a;

repeat

y:= Fy(x1);

x2:= Fx(y);

x1:= x1 + h/10000;

if (x1 < x2 + h/10000) and (x1 > x2 - h/10000) then

begin

Label5.Caption:= 'Решение: ' +#13+ 'x = '+FloatToStrF(x1,ffGeneral,7,7)+#13;

Label5.Caption:=Label5.Caption + 'y = '+FloatToStrF(y,ffGeneral,7,7);

Chart1.Series[2].AddXY(x1,y,FloatToStrF(x1,ffGeneral,4,3),clBlue);

end;

until x1 > b;

end;end.

Лабораторная работа


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: