Вы находитесь на странице: 1из 23

МОДУЛЬ 2.

ТРАНСПОРТНЫЕ ЗАДАЧИ ЛИНЕЙНОГО


ПРОГРАММИРОВАНИЯ

Транспортная задача является одной из важнейших специальных


моделей линейного программирования. Частные постановки этой задачи
изучались рядом специалистов по транспорту еще до появления первых
работ по линейному программированию. В этой связи следует отметить
работу А.Н. Толстого. Первая строгая постановка транспортной задачи
принадлежит Хичкоку, в честь его эта задача именуется в статьях западных
авторов проблемой Хичкока..

2.1. Постановка и математическая модель транспортной задачи

Транспортная задача ставится следующим образом. Некоторый


однородный продукт, сосредоточенный у m поставщиков Ai в количестве ai
(i = 1, 2, . . . , m) у каждого, необходимо доставить к потребителю В j в
количестве bj (j = 1, 2, . . , n). Известна стоимость Cij перевозок (поставок)
единицы груза от i - го поставщика j - му потребителю.
Требуется составить оптимальный план перевозок, позволяющий
вывести все грузы от поставщиков, полностью удовлетворить потребности
потребителей с минимальными затратами. То есть таким образом, чтобы
план перевозок имел минимальную стоимость или минимальный общий
пробег при доставке груза (продукта).
Будем рассматривать так называемую закрытую модель транспортной
задачи (Т3), когда сумма запасов равна сумме заявок потребителей, т.е.
m n
∑ a i= ∑ b j
i=1 j=1 . В противном случае ТЗ называется открытой транспортной
задачей.
Возможны два случая открытой транспортной задачи (ОТЗ):
m n
∑ a i >∑ b j
1) i=1 , то есть сумма запасов больше суммы потребностей.
j=1
В этом случае вводят фиктивный пункт Bn+1 клиента с потребностью
m n
∑ a i− ∑ b j
bn+1= i=1 j=1 и стоимостью доставки единицы продукта ему ci, n+1=0.
m n
∑ a i <∑ b j
2) i=1 j=1 , то есть сумма запасов меньше суммы потребностей
клиентов.
В этом случае вводят фиктивный пункт запаса Am+1 c объемом запаса
n m
∑ b j −∑ a i
am+1= j=1 i=1 и стоимостью доставки единицы продукта сm+1, j=0.
Таким образом, открытая транспортная задача преобразуется в
закрытую ТЗ.
Постановочную часть ТЗ удобно давать в так называемой транспортной
таблице (ТТ). (Табл.2.1.)
Таблица 2.1
Транспортная таблица
Потребители
Поставщики Запасы
B1 B2 B3 … Вn
А1 C11 C12 C13 … C1n a1
А2 C21 C22 C23 … C2n a2
… … … … … … …
Аm Cm1 Cm2 Cm3 … Cmn am
Потребност
b1 b2 b3 … bn
и

Математическая модель ТЗ:


Пусть хij - количество единиц груза, отправленного от Ai поставщика к
Bj клиенту. Так как суммарное количество груза, отправленного от каждого
поставщика, должно быть равно соответственно запасу груза у поставщика,
то можно записать следующую систему уравнений:
х 11 + х 12+⋯+ х 1n = a1

{х 21 + х 22+⋯+ х 2 n= a2
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
х m 1 + х m 2 +⋯+ х mn= am
(2.1)
Так как суммарное количество груза, доставляемое каждому клиенту,
должно быть равно заявке, поданной данным потребителем, то
х11 + х21 +⋯+ х m 1= b1

{ х 12 + х 22+⋯+ х m 2 =b2
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
х 1 n + х 2n +⋯+ х mn=b n
(2.2)
хij≥0, i=1,m ; j=1,n
Суммарная стоимость перевозок
w = c11x11 + c12x12 + . . . + cmnxmn  min.
Краткая запись математической модели ТЗ:
m n
∑ ∑ c ij x ij →min
w= i=1 j =1 (2.3)
n
∑ x ij=аi , i=1, m
j=1 ;
m
∑ x i j=b j , j=1 , n
i=1 ;
x ij  0 i=1,m ; j=1,n
Получилась задача линейного программирования в каноническом виде,
она может быть решена симплекс - методом. Но в силу того, что
коэффициенты в ограничениях равны 1, существует менее громоздкий метод
решения.
В линейном программировании доказывается, что закрытая ТЗ имеет
оптимальный план. При этом, если исходные величины поставок А i и Вj
являются целыми числами, то и все переменные в оптимальном плане будут
целыми величинами. Свойство целочисленности оказывается важным,
например, при перевозках неделимых грузов.
Система ограничений ТЗ содержит mn неизвестных и m + n
ограничений. Если первую группу ограничений просуммировать по i, а
вторую - по j, то в левых частях полученных двух уравнений будет
находиться одна и та же величина  xij.
Следовательно, должны быть равны и правые части, а именно:
∑ а i= ∑ b j
i j .
Таким образом, система уравнений в ограничениях ТЗ является
совместной лишь в том случае, когда общий запас груза у поставщиков равен
суммарной потребности потребителей. Отсюда вытекает, что из m + n
уравнений в системе ограничений ТЗ одно (любое) уравнение можно
отбросить, так как оно вытекает из остальных m+n-1 уравнений. Поскольку
модель ТЗ содержит m+n-1 независимых уравнений, любой ее
невырожденный опорный план включает m+n-1 переменных с
положительным значением. Поэтому из возможных перевозок (маршрутов) в
оптимальном плане ТЗ загружается не более m+n-1 маршрутов.
Если план задачи включает меньше, чем m+n-1 положительных
переменных, то он называется вырожденным планом. План ТЗ является
опорным тогда и только тогда, когда в транспортной таблице:
1) ровно m+n-1 занятых клеток:
2) не существует цикл, все вершины которого лежат в занятых клетках.
Рассмотрим методы нахождения первоначального опорного плана.
Метод северо-западного угла: в транспортной таблице заполняют
левую верхнюю клетку (северо-западную) максимльно возможным объемом
груза (перевозки) и исключают либо поставщика, если весь его запас
исчерпан, либо потребителя, если его заявка полностью удовлетворена, либо
того и другого вместе. Затем снова выбирают левую верхнюю клетку в
оставшейся таблице и процедуру заполнения клеток повторяют до тех пор,
пока все заявки клиентов не будут удовлетворены. Недостаток метода в том,
что он не зависит от стоимости доставки единицы груза.
Метод минимального элемента: в транспортной таблице выбирают
клетку с наименьшим элементом, например, с наименьшей стоимостью
доставки единицы груза, и заполняют ее максимально возможной
перевозкой, исключая поставщика, если его запас исчерпан, или клиента,
если его потребность полностью удовлетворена, или того и другого вместе.
В оставшейся таблице снова выбирают клетку с минимальной стоимостью и
процедуру повторяют. Недостаток метода в том, что при большой
размерности транспортной таблицы трудно находить наименьший элемент.
Метод двойного предпочтения: в каждой строке транспортной
таблицы отмечают наименьший элемент символом V , аналогично отмечают
и в каждом столбце. В начале заполняют клетки с двойным символом, затем
с одним и, если таблица большая, то процедуру повторяют.
Метод Фогеля (метод штрафов). Штрафом называется разность
между двумя наименьшими элементами строки или столбца транспортной
таблицы. Метод состоит в том, что определяют штрафы каждой строки и
каждого столбца транспортной таблицы. Затем выбирают строку или столбец
с наибольшим штрафом и заполняют максимально возможной перевозкой
клетку с наименьшей стоимостью доставки единицы груза, т.е. по методу
минимального элемента. В оставшейся таблице снова определяют штрафы по
всем строкам и столбцам и аналогично заполняют клетку в ряду с
наибольшим штрафом и т.д. Процедуру повторяют до тех пор, пока все
запасы будут исчерпаны и заявки клиентов будут удовлетворены.

2.2. Алгоритм решения транспортной задачи методом потенциалов

1. Одним из известных методов получаем первоначальный опорный


план.
2. Строим систему потенциалов. Потенциалы поставщиков Ui и
потребителей Vj есть некоторые числа, определяющиеся из условия Ui+Vj=Cij
для клеток, в которых имеются перевозки в первоначальном опорном плане.
Для невырожденного опорного плана система потенциалов обязана
заполняться до конца.
3. Проверяется условие оптимальности плана Ui+VjCij для пустых
клеток.
4. Если план неоптимальный, клетку с максимальной положительной
Δ=
разностью ij Ui+Vj-Cij метим знаком «+» и считаем ее заполненной.
5. Строим в таблице цикл. Циклом называется замкнутая ломаная
линия, вершины которой расположены в занятых клетках таблицы, а звенья -
вдоль строк и столбцов, причем в каждой вершине цикла встречается ровно
два звена, одно из которых находится в строке, а другое - в столбце.
Если ломаная линия, образующая цикл, пересекается, то точки
самопересечения не являются вершинами.
При правильном построении опорного плана для любой свободной
клетки можно построить лишь один цикл. Метим вершины попеременно
знаками «+» и «-», начиная с клетки, помеченной знаком «+».
6. Делаем перераспределение грузов в цикле. В клетках, помеченных
знаком «-», находим минимальную перевозку и из этих клеток вычитаем это
количество груза, а к клеткам, помеченным знаком «+», прибавляем такое же
количество груза. Клетка, которая ранее была свободной, становится занятой,
а минусовая клетка, в которой стояло минимальное из чисел х ij считается
свободной. Получаем новый опорный план, который надо проверить на
оптимальность.
При пересчете по циклу число занятых клеток остается неизменным, равным
m+n-1. При этом, если в минусовых клетках имеется два или более
одинаковых числа хij, то освобождают лишь одну из таких клеток, а
остальные оставляют занятыми с нулевыми поставками.
7. Процедура продолжается до тех пор, пока план не станет
оптимальным.
Изложенный метод нахождения оптимального решения ТЗ называют
методом потенциалов.
В случае зацикливания, что бывает очень редко, следует
соответствующие нулевые элементы опорного плана заменить сколь угодно
малым положительным числом  и решать задачу как невырожденную. В
оптимальном плане  необходимо считать равным нулю.
Алгоритм метода потенциалов рассмотрим на примере. Требуется
найти минимальные затраты на удовлетворение потребностей всех клиентов,
если исходная информация представлена в транспортной таблице (Табл.2.2).
В правом верхнем углу указана стоимость доставки единицы продукта.
Таблица 2.2
Исходная информация ТЗ
Поставщики Потребители
Запасы
B1 B2 B3 B4 B5
A1 11 8 5 1 4 150
A2 2 8 11 7 12 250
A3 9 6 4 3 3 200
A4 3 7 13 10 12 300
Потребност
200 200 100 150 250 900
и

Решение:
Получим первоначальный опорный план методом минимальной
стоимости, по которому в первую очередь по возможности максимально
заполняем клетки с наименьшей стоимостью перевозок.
На практике принято вычеркивать строку с полностью вывезенным
запасом, столбец - с полностью удовлетворенной потребностью.
⋯ ⋯ ⋯ 150 ⋯

Получили вырожденный опорный план


( 200 ⋯
⋯ ⋯
⋯ 200
50 ⋯ ⋯
⋯ ⋯ 200
50 ⋯ 50
.
)
Количество занятых клеток равно семи, а должно быть по определению
невырожденного опорного плана m+n-1=4+5-1=8. Для получения
невырожденного плана вводим нулевую перевозку таким образом, чтобы не
получилось цикла. Помещаем ее в клетку А3В4 (см. Табл.2.3)
Строим систему потенциалов. Неизвестных потенциалов 9, а число
линейно - независимых уравнений для определения этих потенциалов на 1
меньше, поэтому одно неизвестное всегда оказывается свободным и ему
можно придать любое числовое значение, удобнее всего нуль. Положим,
U4=0. Согласно определению, потенциалы Ui и Vj должны удовлетворять
равенствам Ui + Vj=0, соответствующим базисным переменным Хij в данном
опорном решении, в нашем примере получим следующие 8 уравнений:
U4+V2=7; U4+V5=12;
U2+V3=11; U3+V4=3;
U4+V3=13; U3+V5=3;
U2+V1=2; U1+V4=1.

Из 1-го уравнения получаем V2=7 и из 2-го V3=13.


Из 3-го уравнения V5 = 12 , подставляя V5 в 4-е уравнение, находим
U3=-9 и, далее, из 5- го и 6-го уравнения U2=-2 и V1=4. Наконец, из 7-го
уравнения получаем V4=12, а из 8-го U1=-11. Найденные значения
потенциалов указаны в столбце Ui и строке Vj табл.6.2.
Проверяем условие оптимальности Ui+VjCij
для пустых клеток:

U1+V2=-11+4=-711; U1+V5=-11+12=14;
U2+V2=-2+7=58; U2+V5=-2+12=1012;
U2+V4=-2+12=10>7; U3+V1=-9+4=-59;
U3+V2=-9+7=-26; U3+V3=-9+13=44;
U4+V1=0+4=4>3; U4+V4=0+12=12>10.

План неоптимальный, так как в клетках А4В1, А4В4, А2В4 нарушено


условие оптимальности, сумма потенциалов соответственно на одну, две и
три единицы больше стоимости единицы перевозки груза.
Для улучшения плана производим пересчет по циклу, который строим,
начиная с максимальной разности клетки А2В4.

Цикл: А2В4, А3В4, А3В5, А4В5, А4В3, А2В3, А2В4.

Метим вершины цикла поочередно знаками «+» и «-», начиная с клетки


А2В4 (табл. 2.3).
Таблица 2.3
Первый опорный план
Потребители Запа-
Постав-
сы
щики
Ui Bi B2 B3 B4 B5
A1 U1=-11 11 8 5 1 4 150
150
A2 U2=-2 2 8 11 7 12 250
200 50 3 +
A3 U3=-9 9 6 4 3 3 200
0 200
A4 U4=0 3 7 13 10 12 300
1 200 50 2 50
Vj V1=4 V2=7 V3=13 V4=12 V5=12
Потребности 200 200 100 150 250 900

А2В4, А3В4, А3В5, А4В5, А4В3, А2В3, А2В4.


+ - + - + - +
Количество груза, которое надо перераспределить в цикле, находим как
наименьшее из чисел в минусовых клетках цикла
=min (0, 50, 50) = 0
Следовательно, нулевую перевозку из клетки А3В4 надо переместить в
клетку А2В4, при этом клетка А3В4 станет пустой. Получим новый опорный
план (см. табл.2.4).
Нужно проверить этот план на оптимальность, для этого следует построить
систему потенциалов. Систему потенциалов удобнее получить, подправляя
старую, чем строить заново. Чтобы сумма потенциалов в клетке А 2В4 стала
равна стоимости, надо уменьшить на три единицы либо потенциал V4, либо
потенциал U2. Для уменьшения выбирается тот потенциал, который ведет к
изменению меньшего числа других потенциалов. Делаем V4 = 9, при этом
изменится лишь потенциал U1=- 8. Остальные потенциалы останутся
прежними.
Таблица 2.4
Второй опорный план
Потребители Запа-
Постав
сы
-щики
Ui Bi B2 B3 B4 B5
A1 U1=-8 11 8 5 1 4 150
150
A2 U2=-2 2 8 11 7 12 250
200 50 0
A3 U3=-9 9 6 4 3 3 200
200
A4 U4=0 3 7 13 10 12 300
1 200 50 50
Vj V1=4 V2=7 V3=13 V4=9 V5=12
Потребности 200 200 100 150 250 900

План не является оптимальным, так как в клетке А 4В1 сумма


потенциалов превосходит стоимость перевозки единицы груза:
Ui+Vj=0+4=4>3 (см. табл. 6.4).

Метим знаком «+» эту клетку и строим цикл с вершинами


А4В1, А2В1, А2В3, А4В3, А4В1.
+ - + - +
Из минусовых клеток находим =min(50, 200)=50 и делаем
перераспределение в цикле. В минусовых клетках вычитаем по 50 единиц, в
плюсовых клетках увеличиваем на 50 единиц груза. В результате пересчета
клетка А4В1 будет иметь 50 ед. груза. Получим новый опорный план (см.
табл. 2.5)
Таблица 2.5
Третий опорный план
Потребители Запа-
Постав
сы
-щики
Ui Bi B2 B3 B4 B5
11 8 5 1 4
A1 U1=-7 150
150
A2 U2=-1 2 8 11 7 12 250
150 100 0
A3 U3=-9 9 6 4 3 3 200
200
A4 U4=0 3 7 13 10 12 300
1 50 200 50
Vj V1=3 V2=7 V3=12 V4=8 V5=12
Потребности 200 200 100 150 250 900
Проверим новый план на оптимальность. Для этого подправим систему
потенциалов. Уменьшим на 1 потенциал V1 и проведем связанные с этим
изменения других потенциалов. Получим:
V1=3, U4=0, V2=7, V5=12, U3=-9, U2=-1, V3=12, V4=8, U1=-7
Проверяя условие оптимальности Ui+VjCij для свободных клеток,
замечаем, что в клетке А1В5 условие оптимальности нарушено. Сумма
потенциалов в этой клетке больше на единицу стоимости перевозки единицы
груза, метим клетку А1В5 знаком плюс и строим цикл.
Вершины цикла: А1В5, А4В5, А4В1, А2В1, А2В4, А1В4, А1В5
+ - + - + - +
Находим  = min (50, 150, 150)=50. В минусовых клетках вычитаем по
50 единиц груза, в плюсовых клетках увеличиваем на 50 единиц. Получаем
новый опорный план, в котором клетка А4В5 становится свободной:
⋯ ⋯ ⋯ 100 50

( 100

100


200
100


50



200

)
Проверяем на оптимальность полученный опорный план, подправляя
систему потенциалов. Уменьшим потенциал V5 на 1, причем V5=11, что
вызовет изменение только потенциала U3 остальные останутся без изменения
(см. табл. 2.6)
Для занятых клеток условие оптимальности выполняется:
U4 + V1 = 0 +3 = 3 ; U4 +V2 = 0 +7 = 7 ;
U2 + V1 = 3 -1 = 2 ; V3 +U2 = 12 - 1 = 11 ;
V4 + U2 = 8 - 1 = 7 ; V 4 + U1 = 8 - 7 = 1 ;
V5 + U3 = 11 - 8 = 3; V5 + U1 = 11 - 7 = 4.

Таблица 2.6
Оптимальный план поставок
Потребители Запа-
Постав
сы
-щики
Ui Bi B2 B3 B4 B5
A1 U1=-7 11 8 5 1 4 150
100 50
A2 U2=-1 2 8 11 7 12 250
100 100 50
A3 U3=-8 9 6 4 3 3 200
200
A4 U4=0 3 7 13 10 12 300
100 200
Vj V1=3 V2=7 V3=12 V4=8 V5=11
Потребности 200 200 100 150 250 900

Проверяем условие оптимальности для свободных клеток:


V1 + U 1 = 3 - 7 = - 4 < 11; U1 + V2 = 7 - 7 = 0 < 8;
V3 + U1 = 12 - 7 = 5 = 5; V2 + U2 = 7 - 1 = 6 < 8;
V5 + U2 = 11-1 = 10 < 12; V1 + U3 = 3 - 8 = -5 < 9;
V2 + U3 = 7 - 8 = -1 < 6; V3 + U3 = 12 - 8 = 4 = 4;
V4 + U3 = 8 - 8 = 0 < 3; V3 + U4 = 12 + 0 = 12 < 13;
V4 + U4 = 8 + 0 = 8 < 10; V5 + U4 = 11 + 0 = 11 < 12.
Условие выполняется, план оптимальный. Минимальная стоимость
перевозок составляет 4250 д.ед. т.е.
Smin = 1·100 + 4·50 + 2·100 + 11·100 + 7·50 + 3·200 + 3·100+ 7·200=4250 д. ед.
Рекомендуется при переходе от одной таблицы к другой проводить
контроль вычислений по формуле:
ΔS i =S i−Si+1 =max Δij⋅min θ i .

2.3. Транспортная задача с ограничениями на пропускную


способность

Некоторый однородный продукт, сосредоточенный у m поставщиков Ai


в количестве ai (i = 1, 2, …, m) у каждого, необходимо доставить к
потребителю Bj в количестве bj (j = 1, 2, …, n). Известна стоимость Cij
перевозок единицы груза от i - го поставщика j - му потребителю и
ограничения по пропускной способности dij.
Требуется составить план перевозок, позволяющий вывести все грузы
от поставщиков; полностью удовлетворить потребности потребителей таким
образом, чтобы этот план имел минимальную стоимость перевозок.
Математическая модель задачи такова
m n
∑ ∑ c ij x ij → min
i=1 j=1
n
∑ x ij=ai , i=1, m
при ограничениях: j=1
m
∑ x ij=b j j=1 , n
i =1
0≤xij ≤d ij i=1 , m; j=1, n ,
где dij - предельное число единиц продукции, которое может быть
перевезено от i- го поставщика j – му потребителю за время, указанное в
условии задачи. Такая задача называется ТЗ с ограничениями на пропускную
способность (Td). Для решения таких задач может быть приспособлен любой
из вычислительных алгоритмов решения обычной ТЗ, например, венгерский
метод, метод потенциалов.
Рассмотрим идею венгерского метода решения задачи Td. Идея метода
была высказана венгерским математиком Эгервари и состоит в следующем.
Строится начальный план перевозок, при котором возможны случаи
неудовлетворенной потребности и не вывезенных запасов. Затем,
осуществляется переход к новому плану, более близкому, к оптимальному.
Последовательное применение этого приема приводит к решению задачи за
конечное число итераций.
Венгерский метод наиболее эффективен при решении ТЗ с
целочисленными объемами производства и потребления, в этом случае число
итераций не превышает величины 0/2, где 0 - суммарная невязка
подготовительного этапа.
На подготовительном этапе строится матрица x0 =(xij[0])mn, элементы
которой неотрицательны и удовлетворяют неравенствам:
n
∑ Х ij[0]≤ai , i=1,m;
j=1
m
∑ X ij [ 0 ]≤b j , j=1,n
i=1 .
Если эти условия являются равенствами, то матрица Х 0- решение
транспортной задачи. Если среди условий имеются неравенства, то
осуществляется переход к первой итерации. На К- ой итерации строится
матрица Хк = (Хij[К])mn, суммарная невязка которой К
m n m n
Δ K =∑ ai + ∑ b j −2 ∑ ∑ x ij [ K ],
i=1 j=1 i=1 j=1
В результате первой итерации строится матрица x1, состоящая из
неотрицательных элементов. При этом 1 <0. Если 1 = 0, то x1 -
оптимальное решение задачи. Если 1 > 0, то переходят к следующей
итерации. Они проводятся до тех пор, пока к при некотором К не станет
равным 0 . Соответствующая матрица xk является решением ТЗ.
Достоинством венгерского метода является возможность оценивать
близость результата каждой итерации к оптимальному плану перевозок, что
позволяет контролировать процесс вычислений и прекратить его при
достижении определенных точностных показателей. Особенно это свойство
существенно для задач большой размерности. Подробное изложение
алгоритма см. в книге: Гольштейн Е.Г., Юдин Д.Б. Задачи линейного
программирования транспортного типа.- М.: Наука, 1969.-382с.

2.4. Метод потенциалов для задачи Td

Метод потенциалов - модификация симплекс - метода решения задач


ЛП применительно к ТЗ. Он позволяет, отправляясь от некоторого
допустимого решения, получить оптимальное решение за конечное число
∑ a i= ∑ b j
итераций. В отличие от обычной задачи, где равенство i j
является необходимым и достаточным условием разрешимости задачи, здесь
∑ d ij <ai
оно является лишь необходимым условием. Например, если j , при
каком-то i, то задача решения не имеет. Поэтому достаточным условием
разрешимости задачи является существование хотя бы одного допустимого
решения.
Исходное решение строится по правилу минимального элемента с
учетом ограничений
x ij≤d ij . При этом, если на данном шаге заносимая в
клетку величина
x ij определяется размерами запасов или потребностей, то,
с
как обычно, в матрице { ij } вычеркивается строка или столбец и находится
новый минимальный элемент в укороченной матрице. Если же на данном
x
шаге величина ij определяется только ограничением ij , то в матрице
d
{с ij } вычеркивается только данный элемент c ij .
После заполнения всей таблицы может оказаться, что все ресурсы и
потребности исчерпаны, то полученное решение является исходным
опорным решением. Если же в какой-либо строке или столбце оказались
нераспределенные остатки, то вводят дополнительную строку (m+1) с
ресурсами
∑ (аi −∑ xij)
аm+1 = j и дополнительный (n+1) столбец с потребностями
bn+1 =∑ b j−∑ x ij
( j )
(аналогично открытой ТЗ). При этом сi, n+1=cm+1, j=M и
сm+1, n+1=0. Полученную расширенную задачу решают методом потенциалов,
пока не освободятся все блокированные клетки. Если это удается, то
получают опорное решение исходной задачи. В противном случае исходная
задача не имеет допустимого решения.
Для оптимальности решения необходимо и достаточно существование
потенциалов u1, u2,…, um, v1, v2, …, vn таких, что выполняются следующие три
условия:
с ij +ui −v j ≥0 , если x ij=0;
с ij +ui −v j ≤0 , если x ij=d ij ;
с ij +ui −v j =0 , если 0< x ij< d ij .
Второе условие указывает, что маршруты с отрицательными
приведенными затратами следует загружать максимально допустимой
величиной перевозки ( ij ij ).
x =d
Базисными переменными называются такие xij, которые удовлетворяют
строгим неравенствам ij x <d
ij . Однако, если их число окажется меньше
ранга r=m + n - 1, то к базисным переменным можно присоединить
необходимое число клеток, для которых
x ij=d ij или x ij=0 при условии
ацикличности.
2.5. Транспортная задача на сети

При графическом изображении транспортной сети реальный масштаб не


соблюдается. Каждому пункту сети отводят некоторую точку плоскости.
Такие точки называют вершинами и изображают кружками, а коммуникации,
связывающие между собой пункты (вершины) сети, изображают линиями и
называют ребрами. Две вершины называются смежными, если они
определяют ребро сети.
В каждой вершине, в верхней части кружка записывают номер или код;
нумерацию вершин проводят слева направо, сверху вниз. В нижней части
кружка записывают объем производства аi; причем аi > 0, если вершина i
отвечает пункту производства. Если же вершина соответствует пункту
потребления, то аi < 0. Если же в пункте ничего не производится и не
потребляется, то аi = 0, обычно такие пункты используют только при
транзитных перевозках.
Пусть исходная информация транспортной задачи на сети представлена на
рис.2.1.

24 -50
29 14
10
10 1 26

24 17 22 -8
18
5
18
0
11 4 3
3 -26
7 19 6
13
1
-19
-36 52
12
-11 8

Рис. 2.1. Исходная информация

В нашей задаче на каждом ребре указаны транспортные расходы Сk, то


есть стоимость перевозки единицы груза из пункта iк в пункт jк, которая не
зависит от направления перевозки. Если же задача стоит в отыскании
оптимального пути, то на ребрах указывают расстояния. Проверяют
равенство суммарного объема производства с суммарным объемом
потребления, то есть
n
∑ a i= 0
, i =1 (2.4)
Задача состоит в отыскании m – мерного вектора
X = (x , x , x , …, х m ) , 1 2 3
хk ¿ 0, к = 1,m ,
(2.5)
который доставляет наименьшее значение целевой функции
m
∑ С к xк
f (x) = , к =1 (2.6)
то есть требуется составить такой план перевозок, чтобы удовлетворить
запросы всех потребителей и при этом суммарные затраты на перевозку были
бы минимальными.
24 6
3 -50 9
29 14 10
10 1 26

1 12
17 22
24 7 -8
18 5
18
5
0 10 3
11 3
-26
4 7 19 6
13 1
13
2 8 -19
-36 12 52
11 8
-11

Рис.2.2. Кодирование пунктов

Прежде всего, заметим, что, если транспортная сеть является связной (в


ней нет изолированных вершин), то всегда можно построить допустимый
(опорный) план перевозок. План называется опорным, если удовлетворяет
следующим условиям:
1. Перевозки не должны образовывать замкнутых контуров (циклов).
(на рисунке 3 перевозки изображены кружком со стрелками).
2. Количество базисных (занятых перевозками) ребер должно быть на
единицу меньше числа вершин.
3. Все запасы должны быть вывезены, а потребности удовлетворены.
4. Все вершины должны быть задействованы, то есть к каждой
вершине должна подходить или выходить из нее хотя бы одна стрелка.
Если начальная вершина – поставщик, то продукция из нее
вывозится. Значит она - начало стрелки, которая должна входить в одну из
смежных вершин. Если же начальная вершина потребитель, то продукция в
нее ввозится, следовательно, она – конец стрелки, выходящей из любой
смежной вершины.
Для транспортной задачи на сети не существует особых алгоритмов
составления опорного плана. Следует придерживаться практического
совета – загружать ребра с меньшими Сij , что трудно удается.
5
50 6 14
24
3 -50 9
29 14 10
21 10 1 26

1 12
17 22
24 7 -8
3 18 18
5 6
18
5 50
0 10 3
11 3
-26
4 7 19 6
11 13
13 13
1 13
2 8 -19
-36 12 52
11 8
33
-11

Рис.2.3. Допустимый план перевозок

Алгоритм решения транспортной задачи на сети


n
∑ a i= 0
1. Проверка баланса i=1 .
2. Построение начального опорного плана.
3. Вычисление потенциалов.
4. Проверка плана на оптимальность.
5. Построение нового опорного плана, если начальный опорный план не
удовлетворяет условиям оптимальности и т. д.
Рассмотрим алгоритм решения на примере транспортной задачи на сети,
представленной на рисунке 1.
1. Проверяем равенство
n
∑ a i= 0
, i =1 (2.7)
где n =13 – количество пунктов, соединенных 19 коммуникациями.
n
∑ ai
i=1 = 24 + 29 + 13 + 52 + 18 + 14 – 36 – 50 – 26 – 8 – 19 – 11 = 0,
то есть суммарный объем производства совпадает с суммарным объемом
потребления.
2. В качестве начальной вершины выбираем произвольную вершину 2
которая является потребителем с потребностями 36 единиц. В вершину 2
направляем, например, 3 единицы из 1-ой вершины и 33 единицы продукции
из 8-й вершины. В 6-ю вершину отправим 50 единиц продукции из 1-й и 3-й
вершин. Из 7-й, 8-й и 4-й вершины транзитом через 5-ю вершину передается
в 10 вершину 50 единиц груза. Но 10 потребителю нужно только 26 единиц.
Лишняя часть груза в 24 единицы отправляется 11 и 13 потребителю. Из 9-й
вершины груз отправили 12 потребителю, удовлетворив его потребность в 8-
и единицах груза. Лишние 6 единиц груза отправили в 13 вершину.
В результате проведенных операций все запасы вывезены, потребности
всех потребителей удовлетворены.
План образует дерево, так как связная сеть не имеет замкнутых
контуров, каждый из которых бы начинался и заканчивался в одной и той же
вершине. Число базисных ребер равно 12, а вершин 13, то есть необходимое
условие существования опорного плана выполняется. В случае недостатка
базисных ребер вводят нулевую перевозку любого направления у ребра с
минимальной стоимостью, но таким образом, чтобы не образовался
замкнутый цикл.
Итак, получен опорный план перевозок, то есть он удовлетворяет всем
требованиям опорности. Значение целевой функции, соответствующее
опорному плану, равно:

f1 = 11*3 + 12*33 + 10*21 + 24*50 + 3*13 + 19*18 + 7*37 +4*50 + 1*11 + 6*13
+ 10*14 + 3*6 = 2926.
Проверяем найденный опорный план на оптимальность с помощью
потенциалов.
3. Вычисление потенциалов.
Берется произвольная вершина i, потенциалу которой присваивается
произвольное значение, например U i =0. Затем, двигаясь по базисным
коммуникациям (занятым ребрам) ,вычисляются потенциалы остальных
вершин с учетом направления перевозок. Так, если ребро (i, j) входит в базис
и перевозка направлена от i-той к j-той вершине, тогда потенциал j-той
вершины вычисляется по формуле
U j = U i + C i, j (2.8)
Если же перевозка направлена от j-той к i-той вершине, то
U j = U i - C i,j (2.9)
Процесс вычисления и порядок записи потенциалов смотреть на рис. 2.4.
5
50 6 14
24
3 -50 9
29 14 10
21 10 1 26
3
10 34
1
1 12
17 22 3
24 7 -8
3 18 18
5 6
18
5 50
0 10 3
11 3
-26
4 7 19 6
11 13
13 13
1 13

0 2 37 8
52
-19
13
-20
-36 12
11 8
33
-11

6 10

3
-1
16
11
11

Рис.2.4. Вычисление потенциалов

Потенциалу произвольной вершины, например 1, присваиваем


произвольное значение, например, равное 0 (U1= 0). Записываем его в рамку
около вершины 1.
Затем, двигаясь только по базисным ребрам, с учетом направления
стрелок, вычисляем потенциалы всех остальных вершин. Например,
вершины 1 и 3 являются смежными, и перевозка направлена от 1-й к 3-й
вершине, следовательно
U3 = U1 +C1,3 =0 + 10 = 10.
Аналогично вычисляются потенциалы U2 и U6:
U2 = U1 + C1,2 = 0 + 11,
U6 = U3 + C3,6 = 10 + 24 = 34.
Следуя из 2-й вершины в 8-ю, против направления стрелки, определяем
потенциал 8-й вершины:
U8 = U2 – C2,8 = 11 – 12 = -1.
Двигаясь из 8-й вершины в 5-ю по направлению стрелки, а в 7-ю вершину
против направления стрелки, получим потенциалы для 5-й и 7-й вершины:
U5 = U8 + C8,5 = -1 + 7 = 6,
U7 = U8 – C8,7 = -1 – 19 = -20.
Далее, следуя из 5-й вершины в 4-ю против направления стрелки, а в 10-ю по
направлению стрелки, найдем потенциалы для 4-й и 10-й вершины:
U4 = U5 - C5,4 = 6 – 3 = 3,
U10 = U5 + C5,10 = 6 + 4 =10.
И, наконец, следуя из 10-й вершины по направлению стрелки в 11-ю и 13
вершины, вычислим U11 и U13 :
U11 = U10 + С10,11 = 10 + 1 = 11,
U13 = U10 + C10,13 = 10 + 6 = 16.
Двигаясь из 13-й в 12-ю вершину, а из 12-й в 9-ю против стрелки вычисляем:
U12 = U13 – C13,12 = 16 - 3 = 13,
U9 = U12 – C12,9 = 13 - 10 = 3.
4. Проверка опорного плана на оптимальность.
Для этого необходимо найти оценки небазисных ребер, которые
вычисляются по правилу:
Из абсолютной величины разности потенциалов вычитается стоимость
перевозки единицы продукции C i,j, соответствующая данному ребру.
Δ i, j =|U i − U j|− Ci , j , (2.10)
или из большего потенциала вычитается меньший потенциал, а из
полученной стоимости вычитается стоимость перевозки.
Опорное решение оптимально, если все оценки небазисных ребер
неположительные. Если среди ребер имеются положительные оценки, то
следует перейти к построению нового опорного плана.
Выпишем все небазисные ребра:
(7,1), (7,6), (1,4), (9,10), (5,3), (11,13), (10,12)
Определим по формуле (6) оценки этих ребер:

Δ7,1 =|U 7 − U 1|− C7,1 = |−20−0|− 17 = 3 ,


Δ 7,6 =|U 7 − U 6|− C 7,6 = |−20−34|− 26 = 28 ,
Δ1,4 =|U 1 − U 4|− C 1,4 =| 0−3| −18 = −15 ,
Δ9,10 =|U 9 − U 10|− C 9 ,10 =|3−10|− 22 = - 15 ,
Δ5,3 =|U 5 − U 3|− C5,3 = |6 − 10| - 1 = 3 ,
.
Вычисленные оценки запишем около соответствующих ребер и обведем
треугольником так, чтобы одна вершина касалась ребра, рис.2.5.
Наличие положительных оценок означает, что построенный опорный
план не является оптимальным и его можно улучшить.
5
50 6 14
24

34 21 10
3
29
1
-50

26
9
14 10

10 0 1 17
37
22
12
-8
24
3 18 18
5 6
18

11 28 3
5
0
50

19
10
-26
6
3

4 7 11 13
13 13
1 13
-19
13
2 37 8

3 -15
-36 12 52

0 -20
11 8
33

33
-11

6
-15 10
-2

-3
16
11 -1
11

Рис.2.5. Оценка небазисных ребер

6. Построение нового опорного плана.

Ребро с наибольшей оценкой принимается за разрешающее. Ставится


разрешающая стрелка (пока пустая) с направлением от вершины с меньшим
потенциалом к вершине с большим потенциалом. Образуем цикл,
замыкающийся на разрешающей стрелке. Остальные ребра цикла должны
быть занятыми. Такой цикл всегда можно построить, причем только один.
Напомним, что цикл – замкнутая сеть, которая начинается и заканчивается в
одной и той же вершине. Ребро, соответствующее наибольшей оценке Δ 7,6
= 28, объявляем разрешающим и направляем разрешающую стрелку (пока
пустую) от 7-й к 6-й вершине, см. рис.2.5.

Ц:
( 7, 6) ( 6, 3) ( 3, 1) ( 1,2) ( 2,8) ( 8,7)
50 21 3 33 18
+ α - α - α + α - α - α
-----------------------------------------------------------------------
18 32 3 21 15

Стрелки над ребрами указывают направление перевозок, совпадающих


по направлению с разрешающей стрелкой или противоположных ей.
Например, перевозка Х2,1 имеет направление, совпадающее с направлением
разрешающей стрелки, а Х6,3 противоположное ей. Величина поставки α
равна минимальной величине перевозки среди тех перевозок, которые имеют
противоположное направление разрешающей стрелке.
Так, перевозки Х 6,3, Х3,1, Х2,8 , Х8,7 направлены в
противоположную сторону разрешающей стрелке, величина поставки

α= min { 50 , 21, 33 , 18 } =18 .


Объем перевозки Х8,7 полагаем равным величине поставки:
Х8,7 = α = 18.

Величина α прибавляется ко всем перевозкам, имеющим одинаковое


направление с разрешающей стрелкой, и вычитается из перевозок, имеющих
противоположное направление.
Ребро (7,6) включаем в базис, а ребро (8,7) исключаем из базиса. В
результате получаем:
х7,6 = 18, х6,3 = 32, х3,1 = 3, х1,2 = 21, х2,8 = 15.
Общее количество базисных ребер сохраняется. Перевозки не входящие в
цикл остаются неизменными. Получен новый опорный план Х 2 .
Значение целевой функции уменьшится на величину Δ f1 .

Δ fк= α (k)
* Δ (k)
i,j , (2.11)

где к–номер итерации, то есть


Δ f1 = α (1)
* Δ (1)
7,6 = 18 * 28 = 504.

Переходим к новому опорному плану Х 2 , значение целевой функции при


этом плане равно:
f2 = f1 - Δ f1 = 2926 – 504 = 2422.

Для контроля вычислим значение целевой функции непосредственно по


опорному плану Х 2 , который показан на рис.6.

f2 = 10*3 + 24*32 + 26*18 + 12*15 + 11*21 + 3*13 + 7*37 + 4*50 + 10*14 + 3*6
+ 1*11 + 6*13 =2422.

Как видим, результаты совпадают. Новый опорный план снова


подвергаем проверке на оптимальность. Для этого вычислим потенциалы
базисных ребер и запишем результаты вычислений прямо на схеме,
изображенной на рис. 2.6.
31
0
7 32 6 14
24
3 -50 9
29 14 10
3 10 1 26 10
-3 3
18 5 12
1 17 22 15
24 7 -8
-9 18 18
5 6
21
18 3 7 -2
5 50 -2
0 10 3
-15 3
-26
4 7 19 6
11 13
13 13
0 -10 1 13
2 37 8 -19
-36 12 52
11 8 13
15 -4
8 -11
-3
8

Рис.2.6. Новый опорный план

Например, 9-й вершине присваиваем потенциал U9 = 0, тогда


U12 = 10, U13 = 13, U10 = 7, U11 =8, U5 =3, U8 = -4,
U2 = 8, U1 = -3, U3 = -7, U6 = 31, U7 = 5, U4 = 0.

Из оценок всех небазисных ребер: (5,3), (1,4), (8,7), (7,1), (11,13), (9,10),
(10,12) наибольшая положительная оценка принадлежит ребру (5,3).
Δ 5,3 = 3. Направляем разрешающую стрелку от 5-й вершины (с меньшим
потенциалом) к 3-й вершине (с большим потенциалом). Образовался цикл,
замыкающийся на разрешающей стрелке:

Ц:
( 5,3) ( 3, 1) ( 1,2) ( 2,8) ( 8,5)
3 21 15 37
+ α - α + α - α + α
-----------------------------------------------------------------------
3 24 12 40
Объем поставки определяется среди перевозок х3,1 и х2,8, имеющих
противоположное направление с разрешающей стрелкой и равен их
минимальной величине:
α = min { х 3,1 ; х 2,8 } = min { 3; 15 } = 3.
Ребро (5,3) включаем в базис с объемом перевозки х5,3 = 3, а ребро (3,1)
исключаем из базиса. Общее количество базисных ребер сохраняется и
перевозки, не входящие в цикл, остаются неизменными. (При решении
транспортной задачи на сети иногда приходится вводить в базис ребро,
которое только что было исключено из базиса).

В результате получаем:

х5,3 = 3, х1,2 = 24, х2,8 = 12, х8,5 = 40.

Получаем новый опорный план Х 3 ,

Значение целевой функции изменится на величину Δ f2 ,

(2)
Δ f2 = α ( 2) ∗ Δ 5,3 = 3∗3= 9 ,
f3 = f2 - Δ f2 = 2422 – 9 = 2413.
Контроль:

f3 = 3*1 + 24*11 + 12*12 + 40*7 + 13*3 + 32*24 + 18*26 + 50*4 +


11*1 + 13*6 + 6*3 + 10*14 = 2413.

Проверяем новый опорный план Х 3 , на оптимальность.

Для этого присваиваем потенциалу, например 4- вершины,


произвольное значение 0 (U4 =0), тогда:

U5 = 3, U3 = 4, U6 =28, U7 = 2, U8 = -4, U2 = 8,
U1 = -3, U10 = 7, U13 = 13, U11 = 8, U12 = 10, U9 = 0.

Затем считаем оценки небазисных ребер при опорном плане Х 3 , где

Х 3 = Х 3 (24,12,40,13,3,32,50,18,14,6,13,11).

Результаты вычислений удобно представлять на рисунке. См. рис. 2.7.

Δ 3,1 = |U 3 − U 1|−C 3,1 =| 4 + 3 | − 10 = −3 ,


Δ 4,1 =|U 4 −U 1|− C 4,1 =| 0 − (−3 ) |− 18 = −15 ,
Δ 7,1 = |U 7 − U 1|− C7,1 =| 2 − (−3 ) | − 17 = −12,
Δ 7,8 = |U 7 − U 8|− C 7,8 =|2− (−4 ) |− 19 = −13 ,
Δ 10 ,9 =|U 10 −U 9| −C10 , 9 = | 7−0 |− 22= −15 ,
Δ 12, 10=|U 12−U 10|−C 12 ,10 =| 10−7 |−5 = −2,
Δ 13 ,11 =|U 13−U 11|−C13 , 11 =| 13−8 | −8= −3 .
28
0
4 32 6 14
24
3 -50 9
29 14 10
10 1 26 10
-3 -3
18 2 12
1 17 22
7 -15 -8
24
- 12 18 5 6
24 3
18 3 7 -2
5 50 -2
0 10 3
3
-15 -26
4 7 19 6
11 13
13 13
0 -13 1 13
2 40 8 -19
-36 12 52
11 8 13
12 -4
8 -11
-3
8

Рис.8

Рис. 2.7. Оптимальный план

Так как нет ни одной положительной оценки, то полученный опорный


план Х 3 является оптимальным Х , то есть
¿

¿
Х3 = Х (24,12,40,13,3,32,50,18,14,6,13,11).

Значение целевой функции, то есть значение минимальных затрат на


перевозку при этом плане равно f3 .
¿
f = f3 = 11*24 + 12*12 + 7*40 +3*13 + 1*3 + 24*32 + 4*50 + 26*18 + 10*14
+ 3*6 + 6 *13 + 1*11 =2413.

Этот метод называют методом потенциалов для решения транспортной


задачи на сети. Наличие в оптимальном плане нулевых оценок означает, что
оптимальный план не единственный. В нашем случае нет нулевых оценок,
значит оптимальный план единственный.

При больших сетях в практических задачах необходимо использовать


ЭВМ. В пакетах прикладных программ имеются стандартные программы.