- •Содержание
- •Глава 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.2.Алгоритм для сетей с циклами
А
Таблица 80
-
1
2
…
n –1
n
ui
1
d11
d12
…
d1, n-1
d1n
u
1 2
d21
d22
…
d2, n-1
d2n
u2
…
n
dn1
dn2
…
dn, n-1
dnn
un
v1
v2
…
vn-1
vn
Пусть требуется определить кратчайший маршрут между узлом 1 и любым другим узлом сети j, j = 2,…, n. Алгоритм удобно представить, записав расстояния dij между узлами i и j в виде табл. 80 (заметим, что 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) Вычислить vjui для всех j.
2) Если dij vjui для всех 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) должна удовлетворять условию = vj di j .
После определения i1 предпоследняя вершина i2 должна удовлетворять равенству =
Процесс продолжается, пока не будет достигнут узел 1.
Пример 6.0:
Рассмотрим сеть на рис. 6.4. Сеть содержит циклы, возникающие из-за возможности двустороннего движения. Если дуга ориентирована (т.е. движение одностороннее), расстояние в другом направлении полагается равным .
Соответствующие величины dij вместе с предварительными значениями ui и vj и приведены в табл. 81. Исходные величины vj и ui определяются следующим образом. Пусть u1 = v1 = 0 . При использовании формулы
vj = min{ui +di j}
Осуществляется последовательное обращение к величинами vj и ui по мере того как они становятся доступными.
v2 = 0+2= 2, u2 =2,
v3 = {u1 + d13 , u2 + d23}= {0+8, 2+3}= 5, u3 = 5,
v4 = {u1+d14 , u2+d34}= {0+11, 5+ }=11, u4 = 11,
v5 = {u1+d15, u2+d25}= {0+9, 2+5}=7, u5 =7,
v6 = {u2+d26,u3+d36,u4+d46 ,u5 +d56}= {2+1,5+2,11+2,7+7}= 3, u6= 3,
v7 = {u4 + d47 , u5 + d57, u6 + d67,}= {11+23,7+9,3+10}=13, u7=13.
Рис. 6.12. Пример сети с циклами
Таблица 81
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 проводится проверка условия оптимальности путём сравнения (vjui) с dij следующим образом.
j = 1:
|
j = 1 |
2 |
3 |
4 |
5 |
6 |
7 |
vj – u1 |
* |
2 |
5 |
11 |
7 |
* |
* |
d1j |
* |
2 |
8 |
11 |
9 |
* |
* |
Поскольку vjui dij для всех j, величины vj пересчитывать не следует. Заметим, что для j=1, 6 и 7 расстояния dij не определены, поэтому эти величины при сравнении не берутся. В процессе реализации алгоритма обнаруживается, что условие оптимальности первый раз нарушается при i=6.
При i = 6 условие оптимальности нарушается для j = 4 и 5. Величины v4 и v5 изменяются следующим образом:
v /4 = u6 + d64 = 3+5=8 (v4=u4=8),
v /5 =u6 + d65 =3+1= 4 (v5 =u5=4).
В последующих вычислениях, т.е. для i=7, используются изменённые значения v4 , v5 и u4 , u5.
j = 2:
|
j = 1 |
2 |
3 |
4 |
5 |
6 |
7 |
vj – u2 |
-2 |
* |
3 |
* |
5 |
1 |
* |
d2j |
4 |
* |
3 |
* |
5 |
1 |
* |
j = 3:
|
j = 1 |
2 |
3 |
4 |
5 |
6 |
7 |
vj – u3 |
-5 |
-3 |
* |
6 |
* |
-2 |
* |
d3j |
1 |
4 |
* |
|
* |
2 |
* |
j = 4:
|
j = 1 |
2 |
3 |
4 |
5 |
6 |
7 |
vj – u4 |
-11 |
* |
-6 |
* |
* |
-8 |
2 |
d4j |
5 |
* |
9 |
* |
* |
2 |
23 |
j=5:
-
j = 1
2
3
4
5
6
7
vj – u5
-7
-5
*
*
*
-4
6
d5j
2
*
*
*
7
9
j = 6:
-
j = 1
2
3
4
5
6
7
vj – u6
*
-1
2
8
4
*
10
d6j
*
8
3
5
1
*
10
j =7:
-
j = 1
2
3
4
5
6
7
vj – u7
*
*
*
-5
-9
-10
*
d7j
*
*
*
10
4
2
*
После этого повторяется шаг 2 с изменёнными значениями vj и ui. В табл. 82 приведены результаты сравнений, проведённых для i =1, 2, … ,7. Из этой таблицы видно, что в новых изменениях уже нет необходимости, и поэтому последние изменённые величины vj дают длину кратчайшего пути от 1 до j.
Покажем, каким образом используется ui и vj в табл. 81 для определения кратчайших расстояний между узлом 1 и каждым из узлов j=2, 3, … , 7. Проиллюстрируем процедуру на примере нахождения участков кратчайшего пути между узлами 1 и 7.
Как уже известно, кратчайшее расстояние между узлами 1 и 7 равно v7 = 13. Определение участков сети должно начинаться с узла 7. Требуется найти узел, непосредственно предшествующий узлу 7. Из столбца 7 табл. 81 видно, что равенство v7 =u1 + d17 , выполняется при i=5 и i=6, т. е. либо узел 5, либо узел 6 соединён с 7 (альтернативные решения).
Рассмотрим сначала узел 5. Из столбца 5 видно, что равенство v5=u1+d15 выполняется при i=6. Далее из столбца 6 следует, что равенство v6=u1+d16 выполняется при i=2. Наконец, как следует из столбца 2, равенство v2=u1+d12 выполняется при i=1. Получившиеся участки дают путь 12657 с v7 =13.
Аналогичная процедура позволяет получить другой кратчайший путь между узлами 1 и 7, а также все пути между узлами 1 и j = 2, 3, 4, 5 и 6.
Таблица 82
|
j =1 |
2 |
3 |
4 |
5 |
6 |
7 |
ui |
i =1 |
|
2 2 |
5 8 |
8 11 |
4 9 |
|
|
0 |
i =2 |
-2 4 |
|
3 3 |
|
2 5 |
1 1 |
|
2 |
i =3 |
-5 1 |
-3 4 |
|
3 |
|
-2 2 |
|
5 |
i =4 |
-8 5 |
|
-3 9 |
|
|
-5 2 |
5 23 |
8 |
i =5 |
-4 2 |
-2 |
|
|
|
-1 7 |
9 9 |
4 |
i = 6 |
|
-1 8 |
2 3 |
5 5 |
1 1 |
|
10 10 |
3 |
i = 7 |
|
|
|
5 10 |
-9 4 |
-10 2 |
|
13 |
vj |
0 |
2 |
5 |
8 |
4 |
3 |
13 |
|