Линейное программирование (Составление плана использования технологических способов в производстве), страница 8

Ответ: Оптимальный план транспортной задачи равен 3230.

Расчёты проводили в Delphi.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Spin, ComCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button2: TButton;

Label4: TLabel;

StringGrid1: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

UpDown2: TUpDown;

UpDown1: TUpDown;

procedure Button1Click(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);

begin

Form1.StringGrid1.ColCount:=1+2*strtoint(Form1.Edit1.Text);

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin

Form1.StringGrid1.RowCount:=1+2*strtoint(Form1.Edit2.Text) ;

end;

{procedure NEditChange(Sender: TObject);

begin

Form1.StringGrid1.ColCount:=1+2*strtoint(Form1.Edit1.Text);

end;

procedure MEditChange(Sender: TObject);

begin Form1.StringGrid1.RowCount:=1+2*strtoint(Form1.Edit2.Text) ;

end; }

procedure TForm1.Button1Click(Sender: TObject);

var i,w, v,o,p, sum : integer;

begin

w:=0;

v:=0;

o:=1;

repeat

w:=w+strtoint(StringGrid1.Cells[o,0]);

o:=o+2;

until o>=StringGrid1.ColCount-1;

p:=1;

repeat

v:=v+strtoint(StringGrid1.Cells[0,p]);

p:=p+2;

until p>=StringGrid1.RowCount-1;

if w>v then

begin

StringGrid1.RowCount:=StringGrid1.RowCount+2;

StringGrid1.Cells[0,StringGrid1.RowCount-2]:=inttostr(w-v);

o:=1;

repeat

StringGrid1.Cells[o-1,StringGrid1.RowCount-1]:='0';

o:=o+2;

until o>=StringGrid1.rowcount;

end;

if w<v then begin

StringGrid1.ColCount:=StringGrid1.ColCount+2;

StringGrid1.Cells[StringGrid1.ColCount-2,0]:=inttostr(v-w);

o:=2;

repeat

StringGrid1.Cells[StringGrid1.ColCount-1,o-1]:='0';

o:=o+2;

until o>=StringGrid1.colcount ; end;

o:=1;

p:=1;

repeat

if strtoint(StringGrid1.Cells[o,0])>strtoint(StringGrid1.Cells[0,p]) then

begin

StringGrid1.Cells[o,p]:=StringGrid1.Cells[0,p];

StringGrid1.Cells[o,0]:=inttostr(strtoint(StringGrid1.Cells[o,0])-strtoint(StringGrid1.Cells[0,p]));

StringGrid1.Cells[0,p]:='0';

p:=p+2;

end

else

begin

if strtoint(StringGrid1.Cells[p,0])<strtoint(StringGrid1.Cells[0,p]) then begin

StringGrid1.Cells[o,p]:=StringGrid1.Cells[i,0];

StringGrid1.Cells[0,p]:=inttostr(strtoint(StringGrid1.Cells[0,p])-strtoint(StringGrid1.Cells[o,0]));

StringGrid1.Cells[o,0]:='0';

o:=o+2;

end

else

begin

StringGrid1.Cells[o,p]:=StringGrid1.Cells[o,0];

StringGrid1.Cells[0,p]:='0';

StringGrid1.Cells[o,0]:='0';

o:=o+2;

p:=p+2;

end;

end;

until (o>=StringGrid1.ColCount-1) or (p>=StringGrid1.RowCount-1);

o:=1;

p:=1;

repeat

repeat

if StringGrid1.Cells[o,p]<>''

then

sum:=sum+(strtoint(StringGrid1.Cells[o,p])*strtoint(StringGrid1.Cells[o+1,p]));

inc(p,2);

until (p>=StringGrid1.RowCount-1);

p:=1;

inc(o,2);

until o>=StringGrid1.ColCount-1 ;

Label3.Caption:=Label3.Caption+inttostr(sum);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.

4 ЗАКЛЮЧЕНИЕ

В результате проделанной работы была изучена тема: «Линейное программирование» и освоены следующие методы решения задач линейного программирования:

·  аналитический

·  графический

·  симплекс-метод

·  решение транспортной задачи методом потенциалов

В работе использовались следующие прикладные пакеты: Word, Excel,Delphi.