Решение транспортной задачи начинается с нахождения опорного плана. Клетки таблицы, в которых стоят ненулевые перевозки, являются базисными. Их число должно равняться m + n – 1. Необходимо отметить также, что встречаются такие ситуации, когда количество базисных клеток меньше чем m + n – 1. В этом случае распределительная задача называется вырожденной. И следует в одной из свободных клеток поставить количество перевозок равное нулю.
Составляя план по способам минимальных стоимостей в отличие от плана по способу «северо-западного угла» мы учитываем стоимости перевозок Ci,j, но все же не можем утверждать, что составленный нами план является оптимальным. Циклом в транспортной задаче мы будем называть несколько занятых клеток, соединённых замкнутой ломанной линией, которая в каждой клетке совершает поворот на 90.
Существует несколько вариантов цикла:
1.) 2.) 3.)
Нетрудно убедиться, что каждый цикл имеет чётное число вершин и значит, чётное число звеньев (стрелок). Условимся отмечать знаком «+» те вершины цикла, в которых перевозки необходимо увеличить, а знаком «– «те вершины, в которых перевозки необходимо уменьшить. Цикл с отмеченными вершинами будем называть «означенным». Перенести какое-то количество единиц груза по означенному циклу – это значит увеличить перевозки, стоящие в положительных вершинах цикла, на это количество единиц, а перевозки, стоящие в отрицательных вершинах уменьшить на то же количество. Очевидно, при переносе любого числа единиц по циклу равновесие между запасами и заявками не меняется. По прежнему сумма перевозок в каждой строке равна запасам этой строки, а сумма перевозок в каждом столбце – заявке этого столбца. Таким образом, при любом циклическом переносе, оставляющем перевозки неотрицательными допустимый план остаётся допустимым. Стоимость же плана при этом может меняться: увеличиваться или уменьшатся. Назовём ценой цикла увеличение стоимости перевозок при перемещении одной единицы груза по означенному циклу. Очевидно цена цикла ровна алгебраической сумме стоимостей, стоящих в вершинах цикла, причём стоящие в положительных вершинах берутся со знаком «+», а в отрицательных со знаком «– «. Обозначим цену цикла через . При перемещении одной единицы груза по циклу стоимость перевозок увеличивается на величину . При перемещении по нему k единиц груза стоимость перевозок увеличиться на k. Очевидно, для улучшения плана имеет смысл перемещать перевозки только по тем циклам, цена которых отрицательна. Каждый раз, когда нам удаётся совершить такое перемещение, стоимость плана уменьшается на соответствующую величину k. Так как перевозки не могут быть отрицательными, мы будем пользоваться только такими циклами, отрицательные вершины которых лежат в базисных клетках таблицы, где стоят положительные перевозки. Если циклов с отрицательной ценой в таблице больше не осталось, это означает, что дальнейшее улучшение плана невозможно, то есть оптимальный план достигнут.
Метод последовательного улучшения плана перевозок и состоит в том, что в таблице отыскиваются циклы с отрицательной ценой, по ним перемещаются перевозки, и план улучшается до тех пор, пока циклов с отрицательной ценой уже не останется. При улучшении плана циклическими переносами, как правило, пользуются приёмом, заимствованным из симплекс-метода: при каждом шаге (цикле) заменяют одну свободную переменную на базисную, то есть заполняют одну свободную клетку и взамен того освобождают одну из базисных клеток. При этом общее число базисных клеток остаётся неизменным и равным m + n – 1. Этот метод удобен тем, что для него легче находить подходящие циклы.
Можно доказать, что для любой свободной клетке транспортной таблице всегда существует цикл и притом единственный, одна из вершин которого лежит в этой свободной клетке, а все остальные в базисных клетках. Если цена такого цикла, с плюсом в свободной клетке, отрицательна, то план можно улучшить перемещением перевозок по данному циклу. Количество единиц груза k, которое можно переместить, определяется минимальным значением перевозок, стоящих в отрицательных вершинах цикла (если переместить большее число единиц груза, возникнут отрицательные перевозки).
Применённый выше метод отыскания оптимального решения транспортной задачи называется распределённым; он состоит в непосредственном отыскании свободных клеток с отрицательной ценой цикла и в перемещении перевозок по этому циклу.
Распределительный метод решения транспортной задачи обладает одним недостатком: нужно отыскивать циклы для всех свободных клеток и находить их цены.
Оптимальный план транспортной задачи находится в результате упорядоченного преобразования одного опорного плана в другой так, что транспортные расходы после каждого образования уменьшаются. Упомянутые преобразования осуществляются непосредственно в распределительной таблице. При этом используется следующее свойство циклов: если в распределительной таблице содержится опорный план, то для каждой свободной клетки можно образовать, и притом только один, цикл, содержащий эту свободную клетку и некоторую часть загруженных клеток. Интересующие нас циклы изображаются в распределительной таблице контурами, одна вершина которых находится в свободной клетке, а остальные – только в загруженных клетках.
Операция сдвига оправдала лишь в случае, когда новому опорному плану соответствует меньшее расходы, чем прежнему опорному плану, а это будет тогда, когда приращение целевой функции отрицательно.
(2.1.4)
Обозначим алгебраическую сумму тарифов следующим образом:
. (2.1.5)
Тогда равенство (2.1.4) запишется в виде:
+
. (2.1.6)
Из равенства (2.1.5) видно, что величина зависит от значений тарифов cij и однозначно определяется структурой цикла клетки (k; s). Поэтому называется оценкой свободной клетки (k; s).
Из равенства (2.1.6) следует, что < 0, если < 0 (всегда величина неотрицательная), т.е. если оценка свободной клетки отрицательная, то ее следует загружать. Такие клетки называются перспективными. Если же оценки всех свободных клеток неотрицательные, то содержащийся в распределительной таблице опорный план является оптимальным. Если в распределительной таблице, содержащей оптимальный план, имеются свободные клетки с нулевыми оценками, то задача имеет не единственный опорный план. Загружая свободную клетку с нулевой оценкой, можно найти еще один оптимальный план.