Программным продуктом, незаменимым вофисной работе, является электронная таблица 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г.