Смекни!
smekni.com

Решение задач линейного программирования транспортной задачей (стр. 4 из 4)

Программным продуктом, незаменимым вофисной работе, является электронная таблица Microsoft Excel. При помощи этогопродукта можно анализировать большие массивы данных. В Excel можно использоватьболее 400 математических, статистических, финансовых и других специализированныхфункций, связывать различные таблицы между собой, выбирать произвольные форматыпредставления данных, создавать иерархические структуры. Воистину безграничныметоды графического представления данных: помимо нескольких десятков встроенныхтипов диаграмм, можно создавать свои, настраиваемые типы, помогающие наглядноотразить тематику диаграммы. Те, кто только осваивает работу с Excel, подостоинству оценят помощь "мастеров" - вспомогательных программ,помогающих при создании диаграмм.

Рисунок 1. Создание общей таблицы

Рисунок 2. Поиск решения

Рисунок 3. Добавление ограничений

Рисунок 4. Вывод целевой функции


4.3 Листинг программы

program PTransport;

uses

Forms,

UTransport in 'UTransport.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1,Form1);

Application.Run;

end.

object Form1: TForm1

Left = 192

Top = 107

Width = 522

Height = 332

Caption = 'Транспортная задача 1.0 Beta'

Color = clBtnFace

Font.Charset =DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS SansSerif'

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object Label1: TLabel

Left = 8

Top = 8

Width = 36

Height = 13

Caption = 'Строки'

end

object Label2: TLabel

Left = 72

Top = 8

Width = 44

Height = 13

Caption = 'Столбцы'

end

object SpinEdit1:TSpinEdit

Left = 8

Top = 24

Width = 49

Height = 22

MaxValue = 10

MinValue = 2

TabOrder = 0

Value = 2

end

object SpinEdit2:TSpinEdit

Left = 72

Top = 24

Width = 49

Height = 22

MaxValue = 10

MinValue = 2

TabOrder = 1

Value = 2

end

object Button1: TButton

Left = 48

Top = 56

Width = 75

Height = 25

Caption = 'Создать'

TabOrder = 2

OnClick = Button1Click

end

object Button2: TButton

Left = 144

Top = 16

Width = 50

Height = 25

Caption = 'Ввод'

TabOrder = 3

Visible = False

OnClick = Button2Click

end

object Memo1: TMemo

Left = 144

Top = 56

Width = 185

Height = 177

ReadOnly = True

TabOrder = 4

Visible = False

end

end

unit UTransport;

interface

uses

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

StdCtrls, Spin, Mask;

type

TForm1 = class(TForm)

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

procedureButton1Click(Sender: TObject);

procedureButton2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

c, x : Array [1..10,1..10] of Integer;

a, b : Array [1..10] ofInteger;

F : Integer;

implementation

{$R *.DFM}

procedureTForm1.Button1Click(Sender: TObject);

var

i, i1, j1, j : Byte;

s : TControl;

begin

Label1.Hide;

Label2.Hide;

SpinEdit1.Hide;

SpinEdit2.Hide;

Button1.Hide;

Button2.Show;

i:=SpinEdit2.Value;

j:=SpinEdit1.Value;

for i1:=1 to i do

for j1:=1 to j do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=i1*25;

s.Top:=j1*21;

s.Name:='Matrix'+IntToStr(j1)+IntToStr(i1);

(TControl(s) asTMaskEdit).Text:='';

(TControl(s) asTMaskEdit).EditMask:='999;0; ';

Form1.InsertControl(s);

end;

for i1:=1 to j do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=i*25+35;

s.Top:=i1*21;

s.Name:='Matrix'+'0'+IntToStr(i1);

(TControl(s) asTMaskEdit).Text:='';

(TControl(s) asTMaskEdit).EditMask:='999;0; ';

Form1.InsertControl(s);

end;

for j1:=1 to i do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=j1*25;

s.Top:=j*21+31;

s.Name:='Matrix'+IntToStr(j1)+'0';

(TControl(s) asTMaskEdit).Text:='';

(TControl(s) asTMaskEdit).EditMask:='999;0; ';

Form1.InsertControl(s);

end;

Button2.Left:=i*25+25-Button2.Width;

Button2.Top:=j*21+62;

Memo1.Show;

Memo1.Left:=i*25+75;

Memo1.Top:=21;

end;

procedureTForm1.Button2Click(Sender: TObject);

var

s : String;

i, j : Byte;

ss : TControl;

begin

for i:=0 toForm1.ComponentCount-1 do

if (Form1.Components[i] isTMaskEdit) then

begin

s:=Form1.Components[i].Name;

if (s[7]<>'0') and(s[8]<>'0') then

begin

ss:=(Form1.Components[i]as TControl);

c[StrToInt(s[8]),StrToInt(s[7])]:=StrToInt((ssas TMaskEdit).Text);

end

else

if (s[7]='0') then

begin

ss:=(Form1.Components[i]as TControl);

a[StrToInt(s[8])]:=StrToInt((ssas TMaskEdit).Text);

end

else

if (s[8]='0') then

begin

ss:=(Form1.Components[i]as TControl);

b[StrToInt(s[7])]:=StrToInt((ssas TMaskEdit).Text);

end

end;

s:='';

Memo1.Lines.Add('Начальные данные');

for j:=1 toSpinEdit1.Value do

begin

for i:=1 toSpinEdit2.Value do

s:=s+IntToStr(c[i, j])+'';

s:=s+IntToStr(a[j]);

Memo1.Lines.Add(s);

s:='';

end;

for i:=1 toSpinEdit2.Value do

s:=s+IntToStr(b[i])+' ';

Memo1.Lines.Add(s);

for i:=1 toSpinEdit1.Value do

for j:=1 toSpinEdit2.Value do

x[i,j]:=-1;

i:=1;

j:=1;

Repeat

if a[i]>b[j] then

begin

x[j,i]:=b[j];

a[i]:=a[i]-b[j];

b[j]:=0;

Inc(j);

end

else

begin

x[j,i]:=a[i];

b[j]:=b[j]-a[i];

a[i]:=0;

Inc(i);

end;

Until(i>SpinEdit1.Value) and (j>=SpinEdit2.Value);

Memo1.Lines.Add('');

s:='';

for j:=1 toSpinEdit1.Value do

begin

for i:=1 toSpinEdit2.Value do

if x[i,j]>=0 then

s:=s+IntToStr(x[i, j])+' '

else

s:=s+'0 ';

Memo1.Lines.Add(s);

s:='';

end;

for i:=1 to SpinEdit2.Valuedo

for j:=1 toSpinEdit1.Value do

if x[i,j]>0 then

F:=F+x[i,j]*c[i,j];

Memo1.Lines.Add('Результат: '+IntToStr(F));

end;

end.

4.4 Руководство пользователя

Пуск

Запуск из средыPascal производится нажатием клавишCtrl+F9, аиз Norton Commander нажатием клавиши Enterна файлеInform.exe.

Ввод данных

Ввод данных производится только с цифровой клавиатуры. Цифрыот 0 до 9.

Просмотр результатов.

После ввода цифры (нужного пункта в меню) выводится требуемыйрезультат и после просмотра результата нужно нажать Enter. Затем вновь появитсяменю на экране.

Выход из программы

Выход из программы в среде Pascal и после запуска PTransport.exe файла производится0-ым пунктом меню.


5. Анализ результатов

При решении задачи были полученырезультаты удовлетворяющие условию:

Решая задачу математически, получилизначения:

7 12 4 6 5 180
120 60
1 8 6 5 3 350
110 90 20 130
6 13 8 7 4 20
20
110 90 120 80 150

Z=120*4+60*6+110+90*8+20*5+130*3+20*4=2240

При решении задачи в программе Excel получили значения:

В программе, созданной для решениязадачи, получили тот же результат.

Соответственно можно сделать вывод,что задача была решена правильно.


Заключение

В курсовойработе изложены основные подходы и методы решения транспортной задачи,являющейся одной из наиболее распространенных задач линейного программирования.Решение данной задачи позволяет разработать наиболее рациональные пути и способытранспортирования товаров, устранить чрезмерно дальние, встречные, повторныеперевозки. Все это сокращает время продвижения товаров, уменьшает затратыпредприятий и фирм, связанные с осуществлением процессов снабжения сырьем,материалами, топливом, оборудованием и т.д.

В данной курсовой работе поставленазадача: минимизировать затраты на транспортировку продукции потребителям. Привыполнении курсовой работы были использованы знания по предметам:«Математические методы», «Пакеты прикладных программ». Решение было проведено спомощью пакетов прикладных программ Microsoft Excel и Microsoft Word. Результаты ручного просчёта сравнивались срезультатами, полученными в Microsoft Excel.

Курсовая работа выполнена в полномобъёме в соответствии с требованиями ГОСТ.

 

Список использованной литературы:

 

1. Е.Г. Гольштейн, Д.Б. Юдин «Задачи линейного программирования транспортного типа», Москва, 1993.

2. И.Л. Акулич, В.Ф. Стрельчонок «Математические методы и компьютерные технологии решения оптимизационных задач», Рига, 2000.

3. www.fmi.asf.ru

4. Кузнецов А.В., Сакович В.А., Холод Н.И. ”Высшая математика. Математическое программирование”, Минск, Вышейшая школа, 2001г.

5. Боборыкин В.А. Математические методы решения транспортныхзадач. Л.: СЗПИ, 1986

6. Геронимус Б.А. Экономико-математические методы впланировании наавтомобильном транспорте. М.: Транспорт, 1982

7. Кузнецов Ю.Н., Кузубов В.И., Волощснко А. Б.Математическоепрограммирование. М.: Высшая школа, 1980

8. Красс М.С., Чупрынов Б.П. ”Основыматематики и ее приложения в экономическом образовании”, Издательство “Дело”,Москва 2001г.

9. В.И. Ермаков “Общий курс высшей математикидля экономистов”, Москва, Инфра-М, 2000г.

10. ЕреминИ.И., Астафьев Н.Н. Введение в теорию линейного и выпуклого программированияМ.; Наука, 1976г.

11.Карманов В.Г. Математическое программирование. – М.; Наука, 1986г.

12. МоисеевН.Н., Иванов Ю.П., Столярова Е.М. Методы оптимизации. – М.; Наука, 1978г.