Лекция 9
Методы решения транспортной задачи

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

при ограничениях

,

где cij - стоимость перевозки единицы продукции из пункта i в пункт j; xij – планируемая величина перевозок из пункта i в пункт j (план перевозок X – матрица размерности m ´ n); bj - потребности в продукте в пункте j; ai - запасы в пункте i.

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

Транспортная задача представляет собой задачу линейного программирования и, естественно, ее можно решить с использованием метода последовательного улучшения плана или метода последовательного уточнения оценок. В этом случае основная трудность бывает связана с числом переменных задачи (m ´ n) и числом ограничений (m + n). Поэтому специальные алгоритмы оказываются более эффективными. К таким алгоритмам относятся метод потенциалов и венгерский метод.

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

Метод северо-западного угла

Он позволяет найти некоторый допустимый план перевозок. Составим транспортную таблицу некоторой задачи.

bj
ai

3080203090
1202

30

4

80

2

10

38
30 356

10

6

20

2
4068 74

10

5

30

6034 214

60

В данном случае, имеем задачу закрытого типа, т.к. .

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

Заполнение начинается с верхнего левого угла таблицы. Величина перевозки устанавливается равной минимальной из величин: величины остатка запасов в пункте i или величины еще неудовлетворенного спроса в пункте j.

Если ресурс в данной строке исчерпан, то переходим к перевозке в следующей строке текущего столбца (на одну строку вниз).

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

Затраты на перевозку по построенному плану равны:

Q = 30´2 + 4´80 + 2´10 + 6´10 + 6´20 + 4´10 + 5´30 + 4´60 = 1010.

Естественно, что найденный план далек от оптимального.

Метод минимального элемента

В таблице отыскивается min{cij} и в первую очередь заполняется соответствующая клетка: xij = min{ai, bj}. Затем вычеркивается остаток соответствующей строки, если ai < bj, или столбца, если ai > bj, и корректируем остатки запасов и неудовлетворенного спроса. В оставшихся клетках таблицы снова отыскивается минимальная стоимость перевозки и заполняется соответствующая клетка и т.д.

bj
ai

3080203090
1202

30

4

80

238

10

30 356 62

30

4068 74 5

40

6034 2

20

1

30

4

10

Затраты на перевозку по построенному плану равны:

Q = 30´2 + 4´80 + 8´10 + 2´30 + 5´40 + 2´20 + 1´30 + 4´10 = 830.

Этот план лучше, но утверждать, что он оптимален, нельзя.

Набором называется произвольная совокупность перевозок транспортной таблицы.

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

Циклом называется цепь, крайние элементы которой находятся либо в одной строке, либо в одном столбце.

Метод потенциалов

Метод позволяет находить оптимальный план перевозок транспортной таблицы. В основе лежит следующая теорема.

Теорема. Для того, чтобы некоторый план X = [xij]m´n транспортной задачи был оптимальным, необходимо и достаточно, чтобы ему соответствовала такая система m + n чисел u1, u2, ..., um; v1, v2, ..., vn, для которой выполняются условия потенциальности:

vj - ui ≤ cij, i = 1, ..., m, j = 1, ..., n.

vj - ui = cij, для всех xij > 0.

ui и vj называются потенциалами соответствующих пунктов отправления и пунктов назначения.

План X будем называть потенциальным, если для него существует система ui и vj, удовлетворяющая условиям потенциальности. Тогда теорема коротко формулируется следующим образом.

Теорема. Для оптимальности транспортной задачи необходимо и достаточно, чтобы план был оптимален.

Достаточность. Пусть план X потенциален, так что существует система ui и vj, удовлетворяющая условиям потенциальности. Тогда для любого допустимого плана X ' = [x'ij]m´n

,
т.е. стоимость перевозок по любому плану X' не меньше стоимости перевозок по потенциальному плану X. Следовательно, план X оптимален.

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


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

  0 =
u1
0 =
-ui
0 =
-um
0 =
-v1
0 =
-vj
0 =
-vn
Q =
1
x11
y11 =
-10 01 0 0 c11
x1n
y1n =
-10 00 0 1 c1n
xi1
yi1 =
0-1 01 00 ci1
xij
yij
=
0-1 001 0 cij
xin
yin
=
0-1 000 1 cin
xm1
ym1 =
00 -11 00 cm1
xmn
ymn
=
00 -10 01 cmn
1
w =
a1 ai an b1 bj bn0

Получаем, что двойственная задача имеет вид:


при ограничениях:

yij = ui - vj + cij ≥ 0, i = 1, ..., m, j = 1, ..., n,
т.е.

vj - ui ≤ 0, i = 1, ..., m, j = 1, ..., n.

Пусть X = [xij]m´n – оптимальное решение транспортной задачи. Тогда на основании теоремы двойственности двойственная задача имеет оптимальное решение .

Убедимся, что эти числа являются потенциалами соответствующих пунктов транспортной задачи. Действительно, все как опорное решение двойственной задачи удовлетворяют первому условию потенциальности.

Если xij > 0, то по второй теореме двойственности соответствующее ограничение двойственной задачи обращается в строгое равенство .

Теорема доказана

Алгоритм метода потенциалов

Алгоритм метода потенциалов состоит из предварительного этапа и повторяющегося основного этапа.

Предварительный этап

  1. Каким-либо способом ищется допустимый план X (методом северо-западного угла или минимального элемента).
  2. Для полученного плана строится система m + n чисел u1, u2, ..., um; v1, v2, ..., vn, таких что vj - ui = cij, для всех xij > 0.
  3. Построенная система ui и vj исследуется на потенциальность (то есть план X исследуется на оптимальность). Для этого проверяется vj - ui ≤ cij, для всех xij = 0.

Если система непотенциальна, то переходят к основному этапу (т.к. план не оптимален), иначе оптимальный план найден.

Основной этап

  1. Улучшаем план, то есть от плана X переходим к плану X' такому, что Q(X) ≥ Q(X').
  2. Для плана X' строим новую систему u'i, v'j, i = 1, ..., m, j = 1, ..., n, такую, что v'j - u'i = cij, для всех xij > 0.
  3. Исследуем систему u'i, v'j на потенциальность. Если система непотенциальна, то переходим на п.1. Иначе найден оптимальный план.

1. Найдем методом потенциалов оптимальное решение задачи, взяв в качестве опорного план, построенный методом северо-западного угла (1-й шаг предварительного этапа).

vj
ui

v1v2 v3v4 v5
u1

2
30

4
80

2
10

38
u2 35

6
10

–    6
20
+   2
u3 687 +     4
10
–     5
30
u4 3421

4
60

2. Строим систему потенциалов:

v1 - u1 = 2, v2 - u1 = 4, v3 - u1 = 2, v3 - u2 = 6,

v4 - u2 = 6, v4 - u3 = 4, v5 - u3 = 5, v5 - u4 = 4.

Число неизвестных больше числа уравнений, поэтому можем взять, например, u1 = 0 и найти значения остальных потенциалов, u2 = -4, u3 = -2, u4 = -1, v1 = 2, v2 = 4, v3 = 2, v4 = 2, v5 = 3.

3. Проверяем систему на потенциальность:

v1 - u2 = 6 ≤ 3 (!), v1 - u3 = 4 ≤ 6, v1 - u4 = 3 ≤ 3, v2 - u2 = 8 ≤ 5 (!),

v2 - u3 = 6 ≤ 8, v2 - u4 = 5 ≤ 4 (!), v3 - u3 = 4 ≤ 7, v3 - u4 = 3 ≤ 2 (!),

v4 - u1 = 2 ≤ 3, v4 - u4 = 3 ≤ 1 (!), v5 - u1 = 3 ≤ 8, v5 - u2 = 7 ≤ 2 (!).

Система непотенциальна. Переходим к общему этапу.

1. Выбираем клетку, для которой неравенство вида vj - ui ≤ cij нарушается в наибольшей степени, то есть, находится число αi0j0 = maxi,jij = vj - ui - cij >0} среди тех клеток, для которых первое условие потенциальности не выполняется: αi0j0 = α25 = 5.

Начиная с клетки i0 j0 в направлении против часовой стрелки строится цепь из заполненных клеток таблицы (цикл). Совершая обход по цепи, помечаем клетки, начиная с i0 j0, попеременно знаками + и –. Клетки со знаками + образуют положительную полуцепь, а со знаками – отрицательную полуцепь. В клетках отрицательной полуцепи ищем минимальную перевозку θ = min{x-ij}.

Теперь улучшаем план следующим образом: перевозки отрицательной полуцепи уменьшаем на величину θ, а перевозки положительной полуцепи увеличиваем на θ. Новые

В нашем примере θ = min{x-ij} = 20.

1. Новому плану соответствует таблица.

vj
ui

v1v2 v3v4 v5
u1

2
30

4
80

2
10

38
u2 35 –   6
10

6
0

+   2
20
u3 687

4
30

5
10

u4 34 +   21 -   4
60

Затраты на перевозку по построенному плану равны:

Q = 30´2 + 4´80 + 2´10 + 6´10 + 4´30 + 2´20 + 5´10 + 4´60 = 910.

2. Строим систему потенциалов

v1 - u1 = 2, v2 - u1 = 4, v3 - u1 = 2, v3 - u2 = 6,

v5 - u2 = 2, v4 - u3 = 4, v5 - u3 = 5, v5 - u4 = 4.
Полагаем u1 = 0 и находим значения остальных потенциалов:

u2 = -4, u3 = -7, u4 = -6, v1 = 2, v2 = 4, v3 = 2, v4 = -3, v5 = -2.

3. Проверяем систему на потенциальность:

v1 - u2 = 6 ≤ 3 (!), v1 - u3 = 9 ≤ 6(!), v1 - u4 = 8 ≤ 3(!), v2 - u2 = 8 ≤ 5 (!),

v2 - u3 = 11 ≤ 8(!), v2 - u4 = 10 ≤ 4 (!), v3 - u3 = 9 ≤ 7(!), v3 - u4 = 8 ≤ 2 (!),

v4 - u1 = -3 ≤ 3, v4 - u4 = 3 ≤ 1 (!), v5 - u1 = -2 ≤ 8, v4 - u2 = 1 ≤ 6.

Система непотенциальна.

1. Находим αi0j0 = α43 = 6, строим цикл, θ = min{x-ij} = 10. Улучшаем план. Новому плану соответствует таблица:

vj
ui

v1v2 v3v4 v5
u1

2
30

4
80

2
10

38
u2 35

6
0

6
0

2
30

u3 687 -   4
30
+   5
10
u4 34

2
10

+   1 -   4
50

Затраты на перевозку по построенному плану равны:

Q = 30´2 + 4´80 + 2´10 + 2´10 + 4´30 + 2´30 + 5´10 + 4´50 = 850.

2. Строим систему потенциалов

v1 - u1 = 2, v2 - u1 = 4, v3 - u1 = 2, v3 - u4 = 2,

v5 - u2 = 2, v4 - u3 = 4, v5 - u3 = 5, v5 - u4 = 4.
Полагаем u1 = 0 и находим значения остальных потенциалов:

u2 = 2, u3 = -1, u4 = 0, v1 = 2, v2 = 4, v3 = 2, v4 = 3, v5 = 4.

3. Проверяем систему на потенциальность:

v1 - u2 = 0 ≤ 3, v1 - u3 = 3 ≤ 6, v1 - u4 = 2 ≤ 3, v2 - u2 = 2 ≤ 5,

v2 - u3 = 5 ≤ 8, v2 - u4 = 4 ≤ 4, v3 - u3 = 3 ≤ 7, v3 - u2 = 0 ≤ 6,

v4 - u1 = 3 ≤ 3, v4 - u4 = 3 ≤ 1 (!), v5 - u1 = 4 ≤ 8, v4 - u2 = 1 ≤ 6.

Система непотенциальна.

1. Находим αi0j0 = α44 = 2, строим цикл, θ = min{x-ij} = 30. Улучшаем план. Новому плану соответствует таблица:

vj
ui

v1v2 v3v4 v5
u1

2
30

4
80

2
10

38
u2 35 66

2
30

u3 687

4
0

5
40

u4 34

2
10

1
30

4
20

Затраты на перевозку по построенному плану равны:

Q = 30´2 + 4´80 + 2´10 + 2´10 + 1´30 + 2´30 + 5´40 + 4´20 = 790.

2. Строим систему потенциалов

v1 - u1 = 2, v2 - u1 = 4, v3 - u1 = 2, v3 - u4 = 2,

v5 - u2 = 2, v4 - u4 = 1, v5 - u3 = 5, v5 - u4 = 4.
Полагаем u1 = 0 и находим значения остальных потенциалов:

u2 = 2, u3 = -1, u4 = 0, v1 = 2, v2 = 4, v3 = 2, v4 = 1, v5 = 4.

3. Проверяем систему на потенциальность:

v1 - u2 = 0 ≤ 3, v1 - u3 = 3 ≤ 6, v1 - u4 = 2 ≤ 3, v2 - u2 = 2 ≤ 5,

v2 - u3 = 5 ≤ 8, v2 - u4 = 4 ≤ 4, v3 - u3 = 3 ≤ 7, v3 - u2 = 0 ≤ 6,

v4 - u1 = 1 ≤ 3, v4 - u4 = 1 ≤ 1, v5 - u1 = 4 ≤ 8, v4 - u2 = 1 ≤ 6.

Система потенциальна, следовательно, план оптимален и окончательные затраты Qmin = 790.

Допустимый опорный план транспортной задачи называется невырожденным, если число заполненных клеток транспортной таблицы, т.е. число положительных перевозок xij > 0, равно
m + n +1, где m – число пунктов отправления, n – число пунктов назначения.

Если допустимый опорный план содержит менее m + n + 1 элементов xij > 0, то он называется вырожденным, а транспортная задача называется вырожденной транспортной задачей.

Следующая теорема позволяет определить вырожденность задачи до ее решения.

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

Другими словами, это условие означает, что для любых двух систем индексов i1, i2, ..., it, j1, j2, ..., js, где t + s < n + m, имеет место неравенство . (Доказательство не сложно, от противного.)

Для решения транспортной задачи методом потенциалов строится система потенциалов vj - ui = cij, для всех xij > 0. Если опорное решение невырожденно, то число неизвестных на 1 больше числа уравнений. При вырожденном опорном решении число этих уравнений еще меньше. По аналогии симплекс-методом, в невырожденном решении xij > 0 представляют собой базисные переменные, а xij = 0 – небазисные. Если опорное решение вырожденно, то часть базисных переменных принимает нулевые значения.

Пусть первое опорное решение, найденное методом северо-западного угла или методом минимального элемента, является вырожденным. Тогда, чтобы решать задачу методом потенциалов необходимо выбрать в качестве базисных переменных некоторые перевозки xij = 0 и для них также составить уравнения vj - ui = cij по второму условию потенциальности. Какие перевозки вида xij = 0 включать в базисные? Выбираются такие клетки таблицы с xij = 0, чтобы из базисных переменных нельзя было организовать ни одного цикла!

При переходе к новому улучшенному плану задачи в небазисные переменные переводится перевозка в отрицательной полуцепи, которая находится следующим образом θ = min{x-ij}. В вырожденной задаче это значение может достигаться на нескольких перевозках xij отрицательной полуцепи. В этом случае на каждом шаге в небазисные переменные переводится та минимальная перевозка отрицательной полуцепи, которая связана с пунктом производства, имеющим меньший номер. Это правило уменьшает вероятность возникновения зацикливания, что само по себе достаточно редкое явление в практических задачах.