Автор: Пользователь скрыл имя, 09 Октября 2012 в 07:11, курсовая работа
Транспортная задача (и ее варианты) – одна из многочисленных задач, которые можно сформулировать и решить с помощью сетевых моделей. Рассмотрим конкретные примеры.
Введение 3
1 Сетевая модель линейного программирования 4
Основные понятия и определения 4
2 Алгоритм нахождения кратчайшего пути на
сети с циклами 5
Листинг программы 11
Заключение 16
Литература
МИНИСТЕРСТВО ОБРАЗОВАНИЯ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
ИМЕНИ ФРАНЦИСКА СКОРИНЫ»
Заочный факультет
Опpеделение кpатчайшего пути на
сети с циклами
по дисциплине «Системный анализ и исследование операций»
Исполнитель
студент группы АС-32 Шелкунов А.А.
Руководитель
ассистент Давыдов В.С.
Гомель, 2010
Содержание
Введение
Транспортная задача (и ее варианты) – одна из многочисленных задач, которые можно сформулировать и решить с помощью сетевых моделей. Рассмотрим следующие конкретные примеры:
Анализ указанных примеров показывает, что оптимизационные задачи на сети можно описать следующими тремя типами моделей:
Рассмотренные выше примеры связаны с определением расстояний и материальных потоков. Перечисленные выше задачи можно сформулировать и в принципе решить как задачи линейного программирования. Однако из-за огромного числа переменных и ограничений сетевых задач непосредственное применение симплекс- метода не целесообразно.
2 СЕТЕВАЯ МОДЕЛЬ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ
Сетевой моделью (другие названия: сетевой график, сеть) называется экономико-компьютерная модель, отражающая комплекс работ (операций) и событий, связанных с реализацией некоторого проекта (научно-исследовательского, производственного и др.), в их логической и технологической последовательности и связи.
Анализ сетевой модели, представленной в графической или табличной (матричной) форме, позволяет, во-первых, более четко выявить взаимосвязи этапов реализации проекта и во-вторых, определить наиболее оптимальный порядок выполнения этих этапов в целях, например, сокращения сроков выполнения всего комплекса работ.
Математический аппарат сетевых моделей базируется на теории графов.
Графом называется совокупность двух конечных множеств:
- множества
точек, которые называются верш
Граф называется связным, если для любых двух его вершин существует путь, их соединяющий; в противном случае граф называется несвязным.
В экономике чаще всего используются два вида графов: дерево и сеть.
Дерево представляет собой связный граф без циклов, имеющий исходную вершину (корень) и крайние вершины; пути от исходной вершины к крайним вершинам называются ветвями.
Сеть — это ориентированный конечный связный граф, имеющий начальную вершину (источник) и конечную вершину (сток). Таким образом, сетевая модель представляет собой граф вида «сеть».
Если для нахождения кратчайшего пути между каждой парой узлов сети используется модель с промежуточными пунктами, то необходимо решить столько транспортных задач с промежуточными пунктами, сколько в сети содержится различных пар узлов.
Задачу о кратчайшем пути можно решить как задачу о максимальном потоке, в которой поток полагается равным единице.
Если сетевую оптимизационную задачу представить в виде задачи линейного программирования, то число переменных в ней будет равно числу дуг сети.
2 АЛГОРИТМ ОПPЕДЕЛЕНИЯ КPАТЧАЙШЕГО ПУТИ НА
СЕТИ С ЦИКЛАМИ
Алгоритм нахождения кратчайшего пути на сети, содержащей циклы, также основан на рекурсивных вычислениях. Однако в этом случае они не- сколько сложнее. Сначала опишем шаги вычислительной процедуры, а затем
проиллюстрируем её на числовом примере.
1 2 … n –1 n ui
1 d11 d12 … d1, n-1 d1n u1
2 d21 d22 … d2, n-1 d2n u2
M …
n dn1 dn2 … dn, n-1 dnn un
v1 v2 … vn-1 vn
Таблица 1
Пусть требуется определить кратчайший маршрут между узлом 1 и лю- бым другим узлом сети j, j = 2,…, n. Алгоритм удобно представить, записав расстояния dij между узлами i и j в виде таблице 1 (заметим, что dij могут от- личаться от dji). Таким образом, строка i (столбец j) представляет узел i (узел j). Шаги алгоритма можно представить следующим образом.
Шаг 1 Пусть vj – сумма длин дуг, образующих цепь, ведущую из узла 1 в узел j. Положим v1= 0 и ui равным vj, если i = j. При условии, что i и j и со- единены дугой, величина vj определяется как vj = min{ui + di j}.
Процесс начинается с i = 1 и v1 =u1 = 0.
Заметим, что ui включает расстояния до узла i, которое заметим исполь- зуется для определения ближайшего узла j. При этом требуется, чтобы обра- щение к значению ui (= vj) для i= j происходило сразу после появления vj и
прежде чем вычислено какое-либо новое значение vj.
Шаг 2 Положить i =1.
1) Вычислить vj-ui для всех j.
2) Если dij³ vj-ui для всех j, то между узлами i и j не существует более короткого пути. Если i = n, перейти к п. 4. Иначе положить i=i+1 и перейти к
п. 1.
3) Если di j< vj - ui, вычислить новые значения vj , v /j используя формулу
v /j = ui + di j .
Заменить vj и ui и для i = j на v /j. Если i = n, перейти к п. 4, в противном случае положить i=i+1 и перейти к п. 1.
4) Если значение vj изменялось в п. 3, повторить пункт 2, используя из- менённое значение. В противном случае перейти к шагу 3.
Шаг 3 Полученные значения vj определяют кратчайшее расстояние ме-
жду узлами 1 и j =2, 3, …, n. Для получения соответствующих цепей послед-
няя дуга
(i,
j)
в
цепи (i,
j) должна
удовлетворять
условию
u = v - d .
i1 j i j
После определения i1 предпоследняя вершина i2 должна удовлетворять
равенству
u = v - d .
i2 i
1
i 2i 1
Процесс продолжается, пока не будет достигнут узел 1.
Пример:
Рассмотрим сеть на рисунке 1. Сеть содержит циклы, возникающие из-за возможности двустороннего движения. Если дуга ориентирована (т.е. движение одностороннее), расстояние в другом направлении полагается равным ¥ .
Соответствующие величины dij вместе с предварительными значениями ui и vj и приведены в таблице 2. Исходные величины vj и ui определяются сле- дующим образом. Пусть u1 = v1 = 0 . При использовании формулы
vj = min{ui +di j}
Осуществляется последовательное обращение к величинами vj и ui по мере того как они становятся доступными. v2 = 0+2= 2, u2 =2,
v3
=
min {u1 + d13 , u2 + d23}= min {0+8, 2+3}= 5, u3 = 5,
i =1, 2
i =1, 2
v4
=
min {u1+d14 , u2+d34}= min {0+11, 5+ ¥ }=11, u4 = 11,
v5
=
i =1,3
min {u1+d15, u2+d25}=
i =1, 2
i =1,3
min {0+9, 2+5}=7, u5 =7,
i =1, 2
v6
=
min
i =2,3, 4,5
{u2+d26,u3+d36,u4+d46
,u5
+d56}=
min
i =2,3, 4,5
{2+1,5+2,11+2,7+7}= 3, u6= 3,
v7 = min
i =4,5,6
{u4
+ d47
, u5
+ d57, u6
+ d67,}=
min
i =4,5,6
{11+23,7+9,3+10}=13, u7=13.
5
8 7
5 1
2
9 2 8
3
2 4
4
8
1
1
9
4 7
1
10 2
6
10
3
2
23
5 2
3
5 9
4
11
Рисунок 1 − Пример сети с циклами
i/j 1 2 3 4 6 6 7 ui
1 2 8 11 9 0
2 4 3 5 1 2
3 1 4 ¥ 2 2 5
4 5 9 2 23 11
5 2 ¥ 7 9 7
6 8 3 5 1 10 3
7 10 4 2 13
vj 0 2 5 11 7 3 13
Таблица 2
При переходе к шагу 2 проводится проверка условия оптимальности п у- тём сравнения (vj-ui) с dij следующим образом.
Информация о работе Опpеделение кpатчайшего пути на сети с циклами