Автор работы: Пользователь скрыл имя, 26 Ноября 2013 в 21:33, курсовая работа
Целью данного проекта является реализация программы решения задачи маршрутизации. Данная система предназначена для предприятий, которые работают с большим количеством заказчиков, расположенных относительно друг друга в совершенном различном порядке. Данный программный продукт предназначен прежде всего для компаний, которые хотят оптимизировать маршрут и порядок обработки заказов.
ВВЕДЕНИЕ …………………………………………………………..………......3
1.ПОСТАНОВКА ЗАДАЧИ……….…………………………………………….4
2.ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ……………………………………………...5
2.1 Изучение математических методов решения задач...…...…………….5
2.2 Метод ветвей и границ ………………………………………………… 6
2.3 Метод динамического программирования…………………………….12
3.ПРОЕКТИРОВАНИЕ АРХИТЕКТУРЫ РАЗРАБАТЫВАЕМЫХ ПРОГРАММНЫХ СРЕДСТВ…………………………………………………..14
3.1 Схема взаимодействия программ……………………………………..14
3.2 Формат исходных данных и результаты решения задачи…………..15
3.3 Требования к программному изделию………………………….........16
3.4 Требования к программной документации…..……………………....16
4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ………………………………………...17
ЭКСПЕРИМЕНТАЛЬНЫЕ РАСЧЕТЫ……………………………………..20
5.1 Контрольные примеры для решения на ЭВМ………………………..20
5.2 Экспериментальные расчеты………………………………………….28
ЗАКЛЮЧЕНИЕ………………………………………………………………….30
ЛИТЕРАТУРА…………………………………………………………………...31
ПРИЛОЖЕНИЕ………………………………………………………………….32
Модуль метода ветвей и границ: при передаче управления данному модулю осуществляется составления поиск кратчайшего пути по методу ветвей и границ.
Модуль вывода результатов: осуществляется вывод результатов работы программы на экран.
На рис.1 показана схема взаимодействия модулей.
3.2 Форматы исходных данных и результатов решения задачи
Приведем описание форматов исходных данных и результатов работы программы.
Модуль получения исходных данных: исходные данные представляются в виде перечня городов, которые вводятся либо с помощью клавиатуры.
Модуль сравнения и управления: здесь осуществляется присвоение каждому городу своего номера. В данном модуле данные представляются уже в виде двумерного массива чисел, списка номеров городов, а также длинны кратчайшего пути для каждого из методов.
Модули метода динамического программирования и метода ветвей и границ: на входе – двумерный массив данных, а после выполнения поиска кратчайшего пути получаем список номеров городов и длину кратчайшего пути.
Модуль вывода результатов: результаты выводятся в виде списка городов и длинны кратчайшего пути.
Входными данными для программы является матрица расстояний и перечень пунктов назначения. Выходными данными является порядок посещения пунктов в виде нумерованного списка.
Требования к технических средствам:
Требования к программным средствам:
Состав программного продукта:
- подпрограмма решения математической задачи методом ветвей и границ и методом динамического программирования;
Перечень программных документов:
Пользовательский интерфейс разработан, используя язык объектно-ориентированного программирования Delphi 7. Запускается программа с помощью файла Project1.exe. Исходя из этого, пользователю рекомендуется установить среду BorlandDelphi 7.
При запуске программы открывается окно, представленное на рис.1.
Рис.1 Главное окно
В этом окне пользователь из выпадающего списка должен выбрать города, которые нужно посетить. После выбора каждого из городов он появляется в списке выбранных городов(Рис.2).
Затем для подсчета оптимального маршрута необходимо нажать кнопку “Calculate”.
После нажатия этой кнопки происходит вычисление оптимального маршрута одним из методов в соответствии с количеством выбранных городов.
На экране появляется еще 2 окна, первое из которых это форма в которой отображается платежная матрица(Рис.3), а второе окно – это окно
вывода результатов(Рис.4). Оно содержит два поля: первое - отображает оптимальный маршрут, второе – стоимость данного маршрута.
Рис.2. Выбор городов
Рис.3 Платежная матрица
Рис.4 Окно вывода результатов
Если пользователю необходимо изменить платежную матрицу, то он должен в главном окне нажать кнопку “Change Data”, при этом произойдет открытие окна с платежной матрицей(Рис.5). В ней можно произвольно изменять стоимости путей, названия городов и их количество.
Рис.5 Окно изменения данных.
После корректировки таблицы для сохранения изменений необходимо жать кнопку “Save Data”, в случае если пользователь хочет восстановить данные не закрывая при этом окно необходимо нажать кнопку “Load Data”.
Необходимо также упомянуть что считывание всех данных в таблицу происходит из файла “temp.txt”, по этому необходимо что бы он размещался в одной папке с программой.
5.1 Контрольные примеры для решения на ЭВМ
Контроль пример №1
j i |
1 |
2 |
3 |
4 |
1 |
∞ |
4 |
3 |
4 |
2 |
2 |
∞ |
5 |
2 |
3 |
6 |
2 |
∞ |
1 |
4 |
1 |
5 |
4 |
∞ |
Сначала определяем значения В(i, {j}):
В(2, {3}) = 5 + 6 = 11; В(3, {2}) = 2 + 2 = 4; В(4, {2}) = 5 + 2 = 7;
В(2, {4}) = 2 + 1 = 3; В(3, {4}) = 1 + 1 = 2; В(4, {3}) = 4 + 6 = 10.
Далее по формуле последовательно получаем (в левой части каждого из ниже записанных равенств выделены те значения параметра j, на которых при подсчете реализуется указанный в правой части минимум):
В(2, {3, 4}) = min [s23 + B(3,{4}); s24 + B(4,{3})] = min(5 + 2; 2 + 10)=7;
В(3, {2, 4}) = min [s32 +B(2,{ 4}); s34 + B(4,{ 2})] = min(2 + 3; 1 + 7 )=5;
В(4, {2, 3}) = min [s42 + B(2,{ 3}); s43 + B(3,{ 2})] = min(5 + 11; 4 +4)=8;
В(1, {2, 3, 4}) = min [s12 + B(2,{3,4}) s13 + B(3,{ 2,4}) s14 + B(4,{2,3 })] =
= min (4 +7; 3 +5; 4 + 8 ) = 8.
Итак, оптимальное значение критерия
в рассматриваемом примере
Выполненные выделения позволяют определить оптимальный маршрут. Он следующий:
1 ®® 3 ®® 2 ®® 4 ®® 1.
j i |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
∞ |
26 |
42 |
15 |
29 |
25 |
2 |
7 |
∞ |
16 |
1 |
30 |
25 |
3 |
20 |
13 |
∞ |
35 |
5 |
0 |
4 |
21 |
16 |
25 |
∞ |
18 |
18 |
5 |
12 |
46 |
27 |
48 |
∞ |
5 |
6 |
23 |
5 |
5 |
9 |
5 |
∞ |
Контроль пример №2
Найдем нижнюю границу длин множества всех маршрутов. Вычтем из каждой строки число, равное минимальному элементу этой строки, далее вычтем из каждого столбца число, равное минимальному элементу этого столбца, и таким образом приведем матрицу по строкам и столбцам. Минимумы по строкам: r1=15, r2=1, r3=0, r4=16, r5=5, r6=5.
После их вычитания по строкам получим:
1 |
2 |
3 |
4 |
5 |
6 | |
1 |
∞ |
11 |
27 |
0 |
14 |
10 |
2 |
6 |
∞ |
15 |
0 |
29 |
24 |
3 |
20 |
13 |
∞ |
35 |
5 |
0 |
4 |
5 |
0 |
9 |
∞ |
2 |
2 |
5 |
7 |
41 |
22 |
43 |
∞ |
0 |
6 |
18 |
0 |
0 |
4 |
0 |
∞ |
Минимумы по столбцам: h1=5, h2=h3=h4=h5=h6.
После их вычитания по столбцам получим приведенную матрицу:
1 |
2 |
3 |
4 |
5 |
6 | |
1 |
∞ |
11 |
27 |
0 |
14 |
10 |
2 |
1 |
∞ |
15 |
0 |
29 |
24 |
3 |
15 |
13 |
∞ |
35 |
5 |
0 |
4 |
0 |
0 |
9 |
∞ |
2 |
2 |
5 |
2 |
41 |
22 |
43 |
∞ |
0 |
6 |
13 |
0 |
0 |
4 |
0 |
∞ |
Найдем нижнюю границу φ(Z) = 15+1+0+16+5+5+5 = 47.
Для выделения претендентов на включение во множество
дуг, по которым производится ветвление,
найдем степени Θij нулевых элементов
этой матрицы (суммы минимумов по строке
и столбцу). Θ14
= 10 + 0,
Θ24 = 1 + 0, Θ36
= 5+0, Θ41 = 0 + 1, Θ42
= 0 + 0, Θ56 = 2 + 0, Θ62
= 0 + 0,
Θ63 = 0 + 9, Θ65
= 0 + 2. Наибольшая степень Θ14
= 10. Ветвление проводим по дуге (1, 4).
Нижняя граница для множества остается равной 47. Для всех маршрутов множества из города A мы не перемещаемся в город D. В матрице это обозначается выставлением в ячейку (1, 4) знака ∞. В этом случае выход из города A добавляет к оценке нижней границы по крайней мере наименьший элемент первой строки. φ ( ) = 47 + 10.
В матрице, соответствующей полагаем c14= ∞.
1 |
2 |
3 |
4 |
5 |
6 | |
1 |
∞ |
11 |
27 |
∞ |
14 |
10 |
2 |
1 |
∞ |
15 |
0 |
29 |
24 |
3 |
15 |
13 |
∞ |
35 |
5 |
0 |
4 |
0 |
0 |
9 |
∞ |
2 |
2 |
5 |
2 |
41 |
22 |
43 |
∞ |
0 |
6 |
13 |
0 |
0 |
4 |
0 |
∞ |
После проведения процедуры приведения с r1=10 получим новую нижнюю границу 57 + 10 = 67.
В матрице, соответствующей , вычеркиваем первую строку и четвертый столбец и положим c41= ∞, чтобы предотвратить появления цикла 1→ 4 → 1. Получим новую платежную матрицу {c1ij}:
1 |
2 |
3 |
5 |
6 | |
2 |
1 |
∞ |
15 |
29 |
24 |
3 |
15 |
13 |
∞ |
5 |
0 |
4 |
∞ |
0 |
9 |
2 |
2 |
5 |
2 |
41 |
22 |
∞ |
0 |
6 |
13 |
0 |
0 |
0 |
∞ |