Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Программа TORA также может применять алгоритм Флойда для решения сетевых задач. Для этого в меню SOLVE/MODIFY выберите команду Solve problem^ Iterations^ Floyd's algoritm (Алгоритм Флойда). На рис. 6.22 показано выходное окно TORA с решением задачи из примера 6.3.5 (файл ch6ToraFloydEx6-3-5.txt).
УПРАЖНЕНИЯ 6.3.3
1. В задаче из примера 6.3.5 определите кратчайшие пути между следующими парами узлов.
a) От узла 5 к узлу 1.
b) От узла 3 к узлу 5.
c) От узла 5 к узлу 3.
d) От узла 5 к узлу 2.
2. Примените алгоритм Флойда к сети, показанной на рис. 6.23. Заметьте, что ребра (7, 6) и (6, 4) ориентированы. Определите кратчайшие пути между следующими парами узлов.
Глава 6. Сетевые модели
- TORA D:\Work\ToraFiles\ch6ToraFloydEx6 3 5Ы
то ид орт, Ли i»i».mh— ид -и its ripii. Диктат пя
NETWORK MODELS
FLOYu S SHORTEST ROUT E ALuuRITHM Select Output Option
wo | DO | SO | |||||
N 1 | hz | N3 | N4 | N5 Hi | hz *i | N4 N5 | |
InI | ■ | 10,00 | mnn»y; | 2_3| | 4 5 | ||
№ | 1 зло | ■ | 5,00 | infinity H 1 | 4 5 | ||
Iю | mmm | 5.00, | 15,00 H 1 | ||||
N4 | 5,oo| | «,00 | ----<м1"Ш г i: 5] | ||||
Ins | ■Zu ~j | MiMyl | If IV | 4,001 | H№ 1 | _« | |
tar 1 | Dl | S1 | |||||
hi | нг | N3 | N4 | N5 hi | N2 N3 | N4 hs |
Puc. 6.22. Решение задачи из примера 6.3.5
a) От узла 1 к узлу 7.
b) От узла 7 к узлу 1.
c) От узла 6 к узлу 7.
Рис. 6.23. Сеть для задачи из упражнения 2
3. Телефонная компания обслуживает шесть удаленных друг от друга районов, которые связаны сетью, показанной на рис. 6.24. Расстояния на схеме сети указаны в милях. Компании необходимо определить наиболее эффективные маршруты пересылки сообщений между любыми двумя районами.
6.3. Задача поиска кратчайшего пути
Рис. 6.24. Сеть для задачи из упражнения 3
6.3.3. Формализация задачи поиска кратчайшего пути как задачи ЛП
В этом разделе рассмотрим две формализации задачи определения кратчайшего пути как задачи линейного программирования. Эти формализации достаточно общие в том смысле, что позволяют находить кратчайшие пути между двумя любыми узлами сети (как в алгоритме Флойда).
Пусть сеть состоит из п узлов и нужно найти кратчайший путь между некоторыми узлами s и t этой сети.
Формализация 1. В этой формализации предполагается, что в узел s входит одна единица внешнего потока и этот поток выходит через узел t сети. Обозначим
х1} — величина потока, проходящего по дуге (£, у), су — длина дуги (г, у).
Поскольку только одна единица потока может пройти через любую дугу в каждый момент времени, переменные хц должны быть двоичными (т.е. они могут принимать только значения 0 или 1). В этих обозначениях целевая функция запишется как
минимизировать ХСЛ
по всем существующим дутам (>./)
Для каждого узла определяется только одно ограничение, задающее баланс потока, проходящего через данный узел:
общий входной поток = общий выходной поток.
Формализация 2. Эта формализация фактически определяет двойственную задачу к прямой задаче, формализованной первым способом. Поскольку количество ограничений в первой формализации равно количеству узлов, двойственная задача будет иметь столько же переменных, сколько узлов в сети. Эти переменные будут свободными (т.е. могут принимать как положительные, так и отрицательные значения), так как в прямой задаче все ограничения выражаются в виде равенств.
Пусть
у. — переменная двойственной задачи, ассоциированная с узлом у.
Считая узлы s и t начальным и конечным узлами сети, двойственная задача запишется следующим образом.
Максимизировать z = у, - уг
при ограничениях
!/.-!/,< сц для всех возможных пар / и у, все yt свободные переменные.
Глава 6. Сетевые модели
Пример 6.3.6
Рассмотрим сеть из примера 6.3.4. Предположим, что необходимо определить кратчайший путь из узла 1 в узел 2. Таким образом, здесь s = 1 и t = 2. На рис. 6.25 показано, как одна единица потока входит в узел 1 и выходит из узла 2.
Рис. 6.25. Входной и выходной потоки
Первая формализация дает следующую задачу ЛП.
Х12 | Х13 | Х23 | Х34 | Х35 | Х42 | Х45 | ||
Минимизировать z = | ||||||||
Узел 1 | -1 | -1 | = -1 | |||||
Узел 2 | -1 | = 1 | ||||||
Узел 3 | -1 | -1 | = 0 | |||||
Узел 4 | -1 | -1 | = 0 | |||||
Узел 5 | = 0 |
Ограничения представляют балансы потоков, протекающих через каждый узел. Например, в узле 2 баланс потоков "входной поток = выходной поток" выражается как равенство х12 + х42 — 1 + х23. Отметим, что одно из ограничений всегда будет излишним. Например, сумма четырех последних ограничений дает равенство х12 + х13 = 1, которое совпадает с первым ограничением.
Оптимальным решением (полученным с помощью программы TORA, файл ch6ToraLpShortRouteEx6-3-6.txt) является z — 55, х13 = 1, x3i = 1, xt2 = 1. Это решение дает кратчайший путь 1-»3-»4-»2из узла 1 в узел 2 длиной 2 = 55 (миль).
При использовании второй формализации задача, двойственная к представленной выше задаче ЛП, имеет вид.
Максимизировать z = у2 - уг
при ограничениях
y2-yt< 100 (маршрут 1-2), y3-yt< 30 (маршрут 1-3), у3-у2< 20 (маршрут 2-3), у4-у3< 10 (маршрут 3-4), Уь~Уг^ 60 (маршрут3-5),
6.3. Задача поиска кратчайшего пути
y2-yt<15 (маршрут 4-2),
У5-у4< 50 (маршрут 4-5),
yv у2, у5 — свободные переменные.
Хотя двойственная задача строится чисто математическим путем на основе прямой задачи, ее можно сформулировать, не опираясь напрямую задачу.
Определим yt как расстояние до узла £.2 Из этого определения следует, что кратчайшее расстояние между узлами 1 и 2 можно найти путем максимизации величины у2 - уг Ограничение, связанное с маршрутом (t, j), показывает, что расстояние от узла i до узла j не может превышать длину этого маршрута. Это расстояние может быть меньше длины маршрута, если узел j можно достичь из узла t через другие промежуточные узлы, как предлагает кратчайший путь. Например, расстояние от узла 1 до узла 2 не может превышать 100.
Если переменные yt интерпретируются как расстояния, то мы вправе предположить, что все эти переменные неотрицательны (вместо условия, что они свободны). Мы также можем положить, что уг = 0 как расстояние до узла 1. Исходя из этих предположений получаем оптимальное решение: z = 55, у1 = 0, у2 — 55, у3 = 30, yt = 40, ys = 0. Значение г = 55 дает кратчайшее расстояние от узла 1 до узла 2. Это же значение можно получить как у2 - у^ = 55 - 0 = 55.
Определение кратчайшего пути из этого решения не очевидно. Нетрудно проверить непосредственными вычислениями, что решение удовлетворяет ограничениям для маршрутов 1-3, 3-4 и 4-2 в виде равенств. Эти ограничения и определяют кратчайший путь как 1 —> 3 —> 4 —> 2.
Другой способ найти ограничения, которые выполняются в виде равенств, заключается в использовании решения двойственной задачи, полученной с помощью второй формализации. Любое ограничение, которое включает ненулевую двойственную переменную, должно выполняться в виде равенства (см. раздел 4.2.4). Следующая таблица показывает маршруты (ограничения) и значения соответствующих двойственных переменных.
Маршрут (ограничение) | 1-2 | 1-3 | 2-3 | 3-4 | 3-5 | 4-2 | 4-5 |
Двойственная переменная |
УПРАЖНЕНИЯ 6.3.4
1. В примере 6.3.6, используя обе формализации, найдите кратчайшие пути для следующих пар узлов.
a) От узла 1 до узла 5.
b) От узла 2 до узла 5.
Здесь предполагается отсчитывать расстояние от некоторой фиксированной точки, одной для всех узлов. Ниже в качестве такой начальной точки взят узел 1. — Прим. ред.
Глава 6. Сетевые модели
6.3.4. Решение задачи поиска кратчайшего пути в Excel
Шаблон Excel, предназначенный для решения общей транспортной задачи (см. раздел 5.3.3), можно немного модифицировать для решения задачи нахождения кратчайшего пути. Для решения задачи используется первая формализация (раздел 6.3.3). Максимальный размер сети — 10 узлов. На рис. 6.26 показан рабочий лист, на котором решается задача из примера 6.3.4 (файл ch6SolverShortestRoute.xls). Матрица расстояний записана в диапазоне В6:К15.3 "Бесконечное" значение расстояния (равное здесь 9999 или другому достаточно большому числу) вводится для несуществующих дуг. Поскольку определяется кратчайшее расстояние между узлами 1 и 2, величина предложения для узла 1 и величина спроса для узла 2 устанавливаются равными 1. Остальные значения спроса и предложения остаются равными нулю.
Дата публикования: 2014-11-18; Прочитано: 574 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!