Транспортная задача линейного программирования формулируется следующим образом. Необходимо минимизировать транспортные расходы:
при ограничениях
,
где cij - стоимость перевозки единицы продукции из пункта i в пункт j; xij – планируемая величина перевозок из пункта i в пункт j (план перевозок X – матрица размерности m ´ n); bj - потребности в продукте в пункте j; ai - запасы в пункте i.
Предполагается, что модель закрытого типа, то есть .
Если модель открытого типа
, то ее всегда можно привести к закрытому типу
введением фиктивного пункта производства или фиктивного пункта потребления:
Транспортная задача представляет собой задачу линейного программирования и, естественно, ее можно решить с использованием метода последовательного улучшения плана или метода последовательного уточнения оценок. В этом случае основная трудность бывает связана с числом переменных задачи (m ´ n) и числом ограничений (m + n). Поэтому специальные алгоритмы оказываются более эффективными. К таким алгоритмам относятся метод потенциалов и венгерский метод.
Алгоритм метода потенциалов, его называют еще модифицированным распределительным алгоритмом, начинает работу с некоторого опорного плана транспортной задачи (допустимого плана перевозок). Для построения опорного плана обычно используется один из двух методов: метод северо-западного угла или метод минимального элемента.
Он позволяет найти некоторый допустимый план перевозок. Составим транспортную таблицу некоторой задачи.
bj |
30 | 80 | 20 | 30 | 90 |
120 | 2 30 | 4 80 |
2 10 | 3 | 8 |
30 | 3 | 5 | 6 10 |
6 20 | 2 |
40 | 6 | 8 | 7 | 4 10 |
5 30 |
60 | 3 | 4 | 2 | 1 | 4 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 |
30 | 80 | 20 | 30 | 90 |
120 | 2 30 | 4 80 |
2 | 3 | 8 10 |
30 | 3 | 5 | 6 | 6 | 2 30 |
40 | 6 | 8 | 7 | 4 | 5 40 |
60 | 3 | 4 | 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 = |
-1 | … | 0 | … | 0 | 1 | … | 0 | … | 0 | c11 |
… | … | … | … | … | … | … | … | … | … | … | … |
x1n y1n = |
-1 | … | 0 | … | 0 | 0 | … | 0 | … | 1 | c1n |
… | … | … | … | … | … | … | … | … | … | … | … |
xi1 yi1 = |
0 | … | -1 | … | 0 | 1 | … | 0 | … | 0 | ci1 |
… | … | … | … | … | … | … | … | … | … | … | … |
xij yij = |
0 | … | -1 | … | 0 | 0 | … | 1 | … | 0 | cij |
… | … | … | … | … | … | … | … | … | … | … | … |
xin yin = |
0 | … | -1 | … | 0 | 0 | … | 0 | … | 1 | cin |
… | … | … | … | … | … | … | … | … | … | … | … |
xm1 ym1 = |
0 | … | 0 | … | -1 | 1 | … | 0 | … | 0 | cm1 |
… | … | … | … | … | … | … | … | … | … | … | … |
xmn ymn = |
0 | … | 0 | … | -1 | 0 | … | 0 | … | 1 | cmn |
1 w = |
a1 | … | ai | … | an | b1 | … | bj | … | bn | 0 |
Получаем, что двойственная задача имеет вид:
при ограничениях:
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. Найдем методом потенциалов оптимальное решение задачи, взяв в качестве опорного план, построенный методом северо-западного угла (1-й шаг предварительного этапа).
vj |
v1 | v2 | v3 | v4 | v5 |
u1 | 2 | 4 |
2 | 3 | 8 |
u2 | 3 | 5 | 6 |
– 6 20 |
+ 2 |
u3 | 6 | 8 | 7 | + 4 10 |
– 5 30 |
u4 | 3 | 4 | 2 | 1 | 4 |
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,j{αij = vj - ui - cij >0} среди тех клеток, для которых первое условие потенциальности не выполняется: αi0j0 = α25 = 5.
Начиная с клетки i0 j0 в направлении против часовой стрелки строится цепь из заполненных клеток таблицы (цикл). Совершая обход по цепи, помечаем клетки, начиная с i0 j0, попеременно знаками + и –. Клетки со знаками + образуют положительную полуцепь, а со знаками – отрицательную полуцепь. В клетках отрицательной полуцепи ищем минимальную перевозку θ = min{x-ij}.
Теперь улучшаем план следующим образом: перевозки отрицательной полуцепи уменьшаем на величину θ, а перевозки положительной полуцепи увеличиваем на θ. Новые
В нашем примере θ = min{x-ij} = 20.
1. Новому плану соответствует таблица.
vj |
v1 | v2 | v3 | v4 | v5 |
u1 | 2 | 4 |
2 | 3 | 8 |
u2 | 3 | 5 | – 6 10 |
6 |
+ 2 20 |
u3 | 6 | 8 | 7 | 4 |
5 |
u4 | 3 | 4 | + 2 | 1 | - 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 |
v1 | v2 | v3 | v4 | v5 |
u1 | 2 | 4 |
2 | 3 | 8 |
u2 | 3 | 5 | 6 | 6 |
2 |
u3 | 6 | 8 | 7 | - 4 30 |
+ 5 10 |
u4 | 3 | 4 | 2 | + 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 |
v1 | v2 | v3 | v4 | v5 |
u1 | 2 | 4 |
2 | 3 | 8 |
u2 | 3 | 5 | 6 | 6 | 2 |
u3 | 6 | 8 | 7 | 4 |
5 |
u4 | 3 | 4 | 2 | 1 |
4 |
Затраты на перевозку по построенному плану равны:
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 отрицательной полуцепи. В этом случае на каждом шаге в небазисные переменные переводится та минимальная перевозка отрицательной полуцепи, которая связана с пунктом производства, имеющим меньший номер. Это правило уменьшает вероятность возникновения зацикливания, что само по себе достаточно редкое явление в практических задачах.