
- •Содержание
- •Глава 1. Постановка транспортных задач 6
- •Глава 2. Определение оптимального плана транспортных задач 28
- •Введение
- •Глава 1.Постановка транспортных задач
- •1.1.Однопродуктовая транспортная модель
- •1.2.Многопродуктовая транспортная модель
- •1.3.Модель производства с запасами
- •1.4. Методы построения опорного плана
- •1.4.1. Метод северо-западного угла
- •1.4.2.Метод минимальной стоимости
- •1.4.3.Метод двойного предпочтения
- •1.4.4.Приближенный метод Фогеля
- •Глава 2.Определение оптимального плана транспортных задач
- •2.1.Решение транспортной задачи методом моди
- •2.2.Дельта-метод решения транспортной задачи
- •2.3.Решение задач закрепления потребителей за поставщиками и клиентуры за автотранспортными предприятиями с учетом дополнительных требований
- •2.3.1.Ограничения в поставках
- •2.3.2.Несбалансированное наличие и потребности
- •2.3.3.Задача закрепления при учете взаимозаменяемости автомобилей
- •2.3.4.Задача на минимизацию времени доставки груза
- •Глава 3.Задача о назначениях
- •3.1.Постановка задачи о назначениях
- •3.2.Венгерский метод решения задачи о назначениях
- •3.3.Применение задачи о назначениях к решению экономических проблем
- •Глава 4.Оптимальное планирование грузооборота
- •4.1.Транспортная сеть и характеристика перевозимых грузов
- •Объёмы потребления грузов
- •Объёмы производства песка
- •4.2.Оптимальное планирование грузоперевозок
- •4.3.Маршрутизация перевозок грузов при помашинных отправках
- •4.4.Составление кольцевых и маятниковых маршрутов
- •Глава 5.Оптимальное планирование работы автобусного парка
- •5.1.Постановка задачи
- •5.2.Двойственная задача линейного программирования
- •5.3. Примеры формулировок двойственных задач
- •5.4. Симметричная и несимметричная двойственные пары. Основы теории двойственности
- •Основная теорема теории двойственности
- •5.5. Условия равновесия в симметричной паре. Экономическая интерпретация
- •5.6.Решение задачи оптимального планирования работы автопарка
- •Глава 6.Область применения сетевых транспортных задач
- •6.1.Примеры применения модели о кратчайшем пути
- •6.2.Алгоритмы нахождения кратчайшего пути
- •6.2.1.Алгоритм для сетей без циклов
- •6.2.2.Алгоритм для сетей с циклами
- •6.2.3.Алгоритм Флойда
- •6.3.Алгоритм нахождения максимального потока в сети
- •6.4.Представление сетевых задач как задач линейного программирования
- •Глава 7.Применение сетевых моделей в транспортировке грузов
- •7.1. Определение кратчайших расстояний между пунктами транспортной сети
- •7.2. Решение задачи коммивояжера методом "ветвей и границ"
- •7.3. Определение развозочных маршрутов для перевозки мелких партий грузов
- •7.3.1. Нахождение кратчайшей связывающей все пункты сети и набор пунктов в маршруты
- •7.3.2. Определение очередности объезда пунктов маршрута
- •Матрица кратчайших расстояний 2-го маршрута
- •7.4. Определение развозочных маршрутов для мелких партий грузов методом Кларка Райта
- •Список литературы
6.2.3.Алгоритм Флойда
В
этом алгоритме сеть представлена в виде
квадратной матрицы с
строками и
столбцами. Элемент
равен расстоянию
от узла
к узлу
,
которое имеет конечное значение, если
существует дуга
,
и равен бесконечности в противном
случае.
Покажем
сначала основную идею метода Флойда.
Пусть есть три узла
и
и заданы расстояния между ними (рис.
6.5). Если выполняется неравенство
,
то целесообразно заменить путь
путем
.
Такая замена (далее ее будем условно
называть треугольным оператором)
выполняется систематически в процессе
выполнения алгоритма Флойда.
Рис. 6.13. Определение треугольного оператора
Алгоритм метода:
Полагаем
|
Таблица 83
Начальная матрица расстояний
= |
|
1 |
2 |
… |
|
… |
|
1 |
|
|
… |
|
… |
|
|
2 |
|
|
… |
|
… |
|
|
. . |
. . |
. . |
. . |
. . |
. . |
. . |
|
|
|
|
… |
|
… |
|
|
. . |
.. |
. . |
. . |
. . |
. . |
. . |
|
|
|
|
… |
|
… |
|
Поясним
действия, выполняемые на
-м
шаге алгоритма, представив матрицу
так, как она показана на рис. 6.6. На этом
рисунке строка
и столбец
являются ведущими. Строка
–любая
строка с номером от 1 до
,
а строка
- произвольная строка с номером от
до
.
Аналогично столбец
представляет любой столбец с номером
1 от до
,
а столбец
– произвольный столбец с номером от
до
.
Треугольный оператор выполняется
следующим образом. Если сумма элементов
ведущих строки и столбца (показанных в
квадратиках) меньше элементов, находящихся
на пересечении столбца и строки (показаны
в кружках), соответствующих рассматриваемым
ведущим элементам, то расстояние (элемент
в кружке) заменяется на сумму расстояний,
представленных ведущими элементами.
Таблица 84
Матрица последовательности узлов
|
|
1 |
2 |
… |
|
… |
|
1 |
|
2 |
… |
|
… |
|
|
2 |
1 |
|
… |
|
… |
|
|
. . |
. . |
. . |
. . |
. . |
. . |
. . |
|
|
1 |
2 |
… |
|
… |
|
|
. . |
. . |
. . |
. . |
. . |
. . |
. . |
|
|
1 |
2 |
… |
|
… |
|
Рис. 6.14. Фрагмент матрицы
После
реализации
шагов алгоритма определение по матрицам
и
кратчайшего пути между узлами
и
выполняется по следующим правилам: 1.
Расстояние между узлами
и
равно элементу
в матрице
.
Промежуточные узлы пути от узла к узлу определяем по матрице . Пусть
= , тогда имеем путь
. Если далее
= и
= , тогда считаем, что весь путь определен, так как найдены все промежуточные узлы. В противном случае повторяем описанную процедуру для путей от узла к узлу и от узла к узлу .
Пример 6.0:
Н
айдем
для сети, показанной на рис. 6.7, кратчайшие
пути между любыми двумя узлами. Расстояния
между узлами этой сети проставлены на
рисунке возле соответствующих ребер.
Ребро (3,5) ориентированно, поэтому не
допускается движение от узла 5 к узлу
3. Все остальные ребра допускают движение
в обе стороны.
Шаг
0. Начальные
матрицы
и
строятся непосредственно по заданной
схеме сети (см. табл 83 и 84). Матрица
симметрична, за исключением пары
элементов
и
,
где
(поскольку переход от узла 5 к узлу 3
невозможен).
Таблица 85
Начальная
матрица
|
Таблица 86
Начальная
матрица
|
Шаг
1. В матрице
выделены ведущие строка и столбец (
).
Двойной рамкой представлены элементы
и
,
единственные среди элементов матрицы
,
значения которых можно улучшить с
помощью треугольного оператора. Таким
образом, чтобы на основе матриц
и
получить матрицы
и
,
выполняем следующие действия.
1.
Заменяем
на
и
устанавливаем
.
2.
Заменяем
на
и
устанавливаем
.
Матрицы
и
,
имеют вид, приведенный в табл. 87 и 88.
Таблица 87
Матрица
|
Таблица 88
Матрица
|
Шаг 2. Полагаем
,
в матрице
выделены ведущие строка и столбец.
Треугольный оператор применяется к
элементам матриц
и
,
выделенным двойной рамкой. В результате
получены матрицы
и
(см. табл. 89 и 90).
Таблица 89
Матрица
|
Таблица 90
Матрица
|
Шаг
3. Полагаем
,
в матрице
выделены ведущие строка и столбец.
Треугольный оператор применяется к
элементам матриц
и
,
выделенным двойной рамкой. В результате
получены матрицы
и
(см. табл. 91 и 92).
Таблица 91 Матрица
|
Таблица 92 Матрица
|
Шаг
4. Полагаем
,
ведущие строка и столбец в матрице
выделены. Получаем новые матрицы
и
(см. табл. 93 и 94).
Таблица 93
Матрица
|
Таблица 94
Матрица
|
Шаг
5. Полагаем
,
ведущие строка и столбец в матрице
выделены. С помощью треугольного
оператора никакие значения матрицы
улучшить нельзя, поэтому никаких действий
на этом шаге не выполняем.
Конечные
матрицы
и
(см. табл. 93 и 94) содержат всю информацию,
необходимую для определения кратчайших
путей между любыми двумя узлами сети.
Например, кратчайшее расстояние между
узлами 1 и 5 равно
.
Для
нахождения соответствующих маршрутов
напомним, что сегмент маршрута
состоит из ребра
только в том случае, когда
=
.
В противном случае узлы
и
связаны, по крайней мере, через один
промежуточный узел. Например, поскольку
и
,
сначала кратчайший маршрут между узлами
1 и 5 будет иметь вид 1→ 4→5, но так как
,
узлы 1 и 4 в определяемом пути не связаны
одним ребром (но в исходной сети они
могут быть связаны непосредственно).
Далее следует определить промежуточный
узел (узлы) между первым и четвертым
узлами. Имеем
и
,
поэтому маршрут 1→4 заменяем 1→2→4.
Поскольку
и
,
других промежуточных узлов нет. Комбинируя
определенные сегменты маршрута,
окончательно получаем следующий
кратчайший путь от узла 1 до узла 5:
1→2→4→5. Длина этого пути равна 12 милям.