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

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

1.      Найти исходное опорное решение.

2.      Найти потенциалы из системы уравнений ui + vj = cij, справедливых для занятых клеток. Так как занятых клеток m+n-1, то система будет состоять из m+n-1 уравнений с m+n неизвестными. Эта система имеет бесконечное множество решений. Для того чтобы найти частное решение системы, придадим одному из неизвестных любое числовое значение, например u1=0, и найдем значения остальных.

Потенциалы ui и vj записываем в столбце и в строке, которые добавляем к таблице.

3.      Для всех свободных клеток найти оценки Dij= ui + vj - cij.

4.      Проверка решения на оптимальность.

Если все Dij£0, то найденное решение оптимально.

Если среди оценок есть хотя бы одно положительное число, то найденное решение не оптимально и его надо улучшить.

5.      Выбирается клетка с наибольшей положительной оценкой, и соответствующую переменную вводят в базис, для этого строят цикл для этой клетки. Даем поставку в эту клетку l. Тогда нарушится баланс и в строке, и в столбце, следовательно, нужно отнимать l от одной из поставок данного столбца и строки до тех пор, пока цикл не замкнется.

Свойства цикла:

1)     в цикле всего одна свободная клетка, в которую пишем +l;

2)     если строка или столбец участвует в цикле, то двумя клетками +l и -l;

3)     число клеток цикла четно.

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

6.      Определяется l так, чтобы одна из занятых клеток освободилась и чтобы оставшиеся поставки xij ³0, т.е. l=min íxijý для четных клеток цикла.

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

8.      Переход в п. 2.