Опpеделение кpатчайшего пути на сети с циклами

Автор: Пользователь скрыл имя, 09 Октября 2012 в 07:11, курсовая работа

Описание работы

Транспортная задача (и ее варианты) – одна из многочисленных задач, которые можно сформулировать и решить с помощью сетевых моделей. Рассмотрим конкретные примеры.

Содержание

Введение 3
1 Сетевая модель линейного программирования 4
Основные понятия и определения 4
2 Алгоритм нахождения кратчайшего пути на
сети с циклами 5
Листинг программы 11
Заключение 16
Литература

Работа содержит 1 файл

Мой.doc

— 316.50 Кб (Скачать)




МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

 

 

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

«ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ  
ИМЕНИ ФРАНЦИСКА СКОРИНЫ»

 

 

Заочный факультет

Кафедра автоматизированных систем обработки  информации

 

 

 

 

 

Опpеделение кpатчайшего  пути на

сети с циклами

Курсовая  работа

 

по дисциплине «Системный анализ и исследование операций»

 

 

 

 

 

Исполнитель

студент группы АС-32    Шелкунов А.А.

 

 

Руководитель

ассистент       Давыдов В.С.

 

 

 

 

Гомель, 2010

 

 

 

 

Содержание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

Транспортная задача (и ее варианты) – одна из многочисленных задач, которые  можно сформулировать и решить с  помощью сетевых моделей. Рассмотрим следующие конкретные примеры:

 

  1. Проектирование газопровода, соединяющие буровые скважины в Мексиканском заливе с находящейся на берегу приемной станцией. Следует выбрать проект, в котором строительство газопровода имеет минимальную стоимость.
  2. Определение кратчайшего пути между двумя городами, проходящего по существующей сети шоссейных дорог.
  3. Определение максимальной пропускной способности (в тоннах/год) трубопровода для транспортировки угольной пульпы с шахт Вайоминга на тепловые электростанции в Хьюстоне. (Уголь под напором воды поступает специально спроектированный трубопровод и перегоняется с шахт в пункты назначения).

 

Анализ указанных  примеров показывает, что оптимизационные  задачи на сети можно описать следующими тремя типами моделей:

  1. минимизация сети;
  2. нахождение кратчайшего маршрута;
  3. определение максимального потока;

 

Рассмотренные выше примеры  связаны с определением расстояний и материальных потоков. Перечисленные выше задачи можно сформулировать и в принципе решить как задачи линейного программирования. Однако из-за огромного числа переменных и ограничений сетевых задач непосредственное применение симплекс- метода не целесообразно.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 СЕТЕВАЯ МОДЕЛЬ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

 

ОСНОВНЫЕ  ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

 

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

Анализ сетевой  модели, представленной в графической  или табличной (матричной) форме, позволяет, во-первых, более четко выявить взаимосвязи этапов реализации проекта и во-вторых, определить наиболее оптимальный порядок выполнения этих этапов в целях, например, сокращения сроков выполнения всего комплекса работ.

Математический  аппарат сетевых моделей базируется на теории графов.

Графом называется совокупность двух конечных множеств:

- множества  точек, которые называются вершинами, и множества пар вершин, которые называются ребрами. Если рассматриваемые пары вершин являются упорядоченными, т. е. на каждом ребре задается направление, то граф называется ориентированным; в противном случае — неориентированным. Последовательность неповторяющихся ребер, ведущая от некоторой вершины к другой, образует путь.

Граф называется связным, если для любых двух его вершин существует путь, их соединяющий; в противном случае граф называется несвязным.

В экономике  чаще всего используются два вида графов: дерево и сеть.

Дерево представляет собой связный граф без циклов, имеющий исходную вершину (корень) и крайние вершины; пути от исходной вершины к крайним вершинам называются ветвями.

Сеть — это ориентированный конечный связный граф, имеющий начальную вершину (источник) и конечную вершину (сток). Таким образом, сетевая модель представляет собой граф вида «сеть».

Если для нахождения кратчайшего пути между каждой парой  узлов сети используется модель с  промежуточными пунктами, то необходимо решить столько транспортных задач  с промежуточными пунктами, сколько  в сети содержится различных пар  узлов.

Задачу о кратчайшем пути можно решить как задачу о максимальном потоке, в которой поток полагается равным единице.

Если сетевую оптимизационную  задачу  представить в виде задачи линейного программирования, то число переменных в ней будет равно числу дуг сети.

Сетевые модели могут строиться:

  • в терминах событий: вершины- события, дуги- взаимосвязь событий;
  • в терминах работ: вершины- работы, дуги- взаимосвязь работ;
  • в терминах работ и событий: вершины- события результата работ (начало либо завершение), дуги- сами работы.

2 АЛГОРИТМ ОПPЕДЕЛЕНИЯ КPАТЧАЙШЕГО ПУТИ НА

СЕТИ С ЦИКЛАМИ

 

 

Алгоритм нахождения кратчайшего пути на сети, содержащей циклы, также основан на рекурсивных вычислениях. Однако в этом случае они не- сколько сложнее. Сначала опишем шаги вычислительной процедуры, а затем

проиллюстрируем её на числовом примере.

 

 

 

 

 

 

 

1 2 … n –1 n ui

 

d11 d12 … d1, n-1 d1n u1

 

d21 d22 … d2, n-1 d2n u2


M 

dn1 dn2 … dn, n-1 dnn un

vv… vn-v

Таблица 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) должна удовлетворять условию 

= v - .

 

i1 j i j

 

После определения i1 предпоследняя вершина i2 должна удовлетворять

 

 

равенству 

 

u = v - d .

 

i2 i

i 2i 1

 

 

Процесс продолжается, пока не будет достигнут узел 1.

 

Пример:

 

Рассмотрим сеть на рисунке 1. Сеть содержит циклы, возникающие из-за возможности двустороннего движения. Если дуга ориентирована (т.е. движение одностороннее), расстояние в другом направлении полагается равным ¥ .

Соответствующие величины dij вместе с предварительными значениями ui и vj и приведены в таблице 2. Исходные величины vj и ui определяются сле- дующим образом. Пусть u1 = v1 = 0 . При использовании формулы

vj = min{ui +di j}

 

Осуществляется последовательное обращение к величинами v и u по мере того как они становятся доступными. v2 = 0+2= 2, u2 =2,

 

v3

min {u1 + d13 , u2 + d23}= min {0+8, 2+3}= 5u3 = 5,

 

i =1, 2 

i =1, 2

 

 

 

v4

min {u1+d14 , u2+d34}= min {0+11, 5+ ¥ }=11u4 = 11,

 

 

 

v5

i =1,3

 

min {u1+d15, u2+d25}=

i =1, 2 

i =1,3

 

min {0+9, 2+5}=7u5 =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

 

 

 

7

 

 

5 1

2

9 8

3

 

2 4

4

 

8

1


9

 

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

 

v0 2 5 11 7 3 13 

 

 

 

 

Таблица 2

 

 

 

При переходе к шагу 2 проводится проверка условия оптимальности п у- тём сравнения (vj-ui) с dij следующим образом.

Информация о работе Опpеделение кpатчайшего пути на сети с циклами