Автор: Пользователь скрыл имя, 07 Мая 2013 в 08:32, курсовая работа
Целями курсовой работы являются:
построить математическую модель задачи;
рассмотреть классификацию задач данного типа;
рассмотреть методы решения транспортных задач;
написать и отладить программу для решения транспортных задач с ограничениями на пропускную способность.
Работа состоит из введения, трёх глав, и приложения, содержащего исходный код программного продукта.
Во введении рассмотрена краткая история транспортной задачи, и поставлены цели работы.
Введение 3
1. Транспортная задача 5
1.1 Математическая модель задачи 5
1.2 Классификация транспортных задач 8
1.3 Методы решения транспортных задач 8
2. Решение практической задачи 13
3. Спецификация программного продукта 22
Заключение 24
Список использованной литературы 25
Самый тяжёлый нуль находится в ячейке (1,7), но если удалить строку 1 в шестом столбце не останется ни одного пути, следовательно, подмножество решений (7,5) надо разбить на и .
Таблица 2.15 Преобразованная матрица
lij |
1 |
2 |
3 |
4 |
7 |
2 |
85 |
∞ |
0 |
5 |
55 |
3 |
∞ |
0 |
∞ |
5 |
∞ |
4 |
∞ |
5 |
0 |
∞ |
∞ |
6 |
∞ |
∞ |
∞ |
∞ |
0 |
8 |
∞ |
0 |
∞ |
0 |
50 |
Четвёртая итерация
Выполним редукцию столбцов, так как редукцию строк проводить не имеет смысла:
Таблица 2.16 Редукция столбцов в четвёртой итерации
lij |
1 |
2 |
3 |
4 |
7 |
ci |
2 |
0 |
∞ |
0 |
5 |
55 |
0 |
3 |
∞ |
0 |
∞ |
5 |
∞ |
0 |
4 |
∞ |
5 |
0 |
∞ |
∞ |
0 |
6 |
∞ |
∞ |
∞ |
∞ |
0 |
0 |
8 |
∞ |
0 |
∞ |
0 |
50 |
0 |
qj |
85 |
0 |
0 |
0 |
0 |
H=85 |
Проверка:
В полученной таблице можно выбрать по только по одному нулевому элементу в каждых строке и столбце, следовательно получено оптимальное решение: это элементы (2, 1), (3, 2), (4, 3), (6, 7), (8, 4).
Ответ:
Оптимальный маршрут состоит из следующих звеньев или пар пунктов: (1, 6), (6, 7), (7, 5), (5, 8), (8, 4), (4, 3), (3, 2), (2, 1), или
Сиэтл→ Сан-Франциско→ Солт-Лейк-Сити→ Хьюстон→ Сент-Луис→Мемфис→ Нью-Йорк→ Чикаго→ Сиэтл. Он является ориентированным графом с длиной маршрута
3. Спецификация программного продукта
Созданный программный продукт, получивший название «CIRCLE», предназначен для решения транспортных задач на замкнутые маршруты по методу Литтла.
Интерфейс программы представлен на рисунке 3.1:
Рисунок 3.1 Интерфейс программы «CIRCLE»
На главной форме
расположены главное меню, содержащая
все доступные функции
На дочерней форме находится сетка StringGrid, которая служит для задания программе исходной матрицы расстояний/стоимости перехода. Размерность сетки устанавливается через пункт меню Решение→Кол-во узлов, либо по нажатии на соответствующую кнопку панели инструментов.
Редактирование сетки осуществляется двойным щелчком на необходимой ячейке, в результате чего выскакивает окно ввода, представленное на рисунке 3.2:
Рисунок 3.2 Окно редактирования ячейки
Установка переключателя «Установить равным бесконечности» присваивает выбранной ячейке значение , равное максимально возможному числу для обработки.
Задание исходной матрицы также может быть осуществлено путём загрузки оной из заранее сохранённого файла. Для этого нужно выбрать пункт меню Файл→Сохранить как…, либо нажать соответствующую клавишу на панели инструментов. В появившемся диалоговом окне надо выбрать нужный файл.
Аналогичным образом выполняется и сохранение матрицы в формате *.MyFile.
Нажатие на кнопку (Решение→Вычислить) приводит к появлению окна с результатами вычислений (рисунок 3.3):
Рисунок 3.3 Окно вывода результата
Если же программе не удаётся найти ни одного Замкнутого маршрута (Матрица задана некорректно) выводится (рисунок 3.4).
Рисунок 3.4 Окно вывода информации о некорректном вводе исходных данных
Заключение
Результатом выполнения курсовой работы явилось создание программы для решения транспортной задачи на замкнутые маршруты
В процессе работы были поставлены и выполнены следующие цели:
Список использованной литературы
Приложение. Листинг программы CIRCLE
1 Исполняемый файл (course.dpr)
program course;
uses
Forms,
main in 'Model\main\main.pas' {Главная форма},
uOption in 'Model\uOption\uOption.pas' {Форма настройки сетки},
uAboutBox in 'Model\uAboutBox\uAboutBox.
param in 'Model\param\param.pas',
uQuery in 'Model\uQuery\uQuery.pas' {Редактор ячейки};
{$R Resourses\course.RES}
begin
Application.Initialize;
Application.Title := 'Результат';
Application.CreateForm(
Application.CreateForm(
Application.CreateForm(
Application.CreateForm(
Application.CreateForm(
Application.Run;
end.
2. Главная форма
2.1 Файл main.dfm
object MainForm: TMainForm
Left = 260
Top = 172
Width = 588
Height = 441
BorderWidth = 5
Caption =
'.:: '#1055#1088#1086#1075#1088#
#1090#1099' ::.'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Splitter1: TSplitter
Left = 0
Top = 24
Width = 570
Height = 3
Cursor = crVSplit
Align = alTop
Beveled = True
end
object WaightGrid: TStringGrid
Left = 0
Top = 53
Width = 570
Height = 330
Hint = #1044#1074#1086#1081#1085#
Align = alClient
DefaultColWidth = 70
DefaultRowHeight = 26
Font.Charset = RUSSIAN_CHARSET
Font.Color = clGreen
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 0
OnDblClick = WaightGridDblClick
OnSelectCell = WaightGridSelectCell
end
object ActionMainMenuBar1: TActionMainMenuBar
Left = 0
Top = 0
Width = 570
Height = 24
UseSystemFont = False
ActionManager = ActionManager1
Caption = 'ActionMainMenuBar1'
ColorMap.HighlightColor = clWhite
ColorMap.BtnSelectedColor = clBtnFace
ColorMap.UnusedColor = clWhite
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
Spacing = 0
end
object ActionToolBar1: TActionToolBar
Left = 0
Top = 27
Width = 570
Height = 26
ActionManager = ActionManager1
Caption = 'ActionToolBar1'
ColorMap.HighlightColor = clWhite
ColorMap.BtnSelectedColor = clBtnFace
ColorMap.UnusedColor = clWhite
Spacing = 0
end
object StatusBar: TStatusBar
Left = 0
Top = 383
Width = 570
Height = 19
BiDiMode = bdRightToLeft
Panels = <
item
BiDiMode = bdLeftToRight
ParentBiDiMode = False
Width = 300
end
item
Width = 50
end
item
Width = 50
end
item
Width = 50
end
item
Alignment = taRightJustify
BiDiMode = bdLeftToRight
ParentBiDiMode = False
Width = 50
end>
ParentBiDiMode = False
end
object ImageList1: TImageList
Left = 600
Top = 400
end
object ActionManager1: TActionManager
ActionBars = <
item
Items = <
item
Items = <
item
Action = Action3
ImageIndex = 7
end
item
Action = Action4
ImageIndex = 9