1.15.2.3. Специальный алгоритм поиска оптимального решения т-задачи (метод потенциалов)
Необходимо сказать, что существует не один вариант таких алгоритмов (смотри, например, Венгерский метод). Здесь будет рассмотрен лишь алгоритм, реализующий идеи симплекс-метода, так как для этого имеются все необходимые теоретические сведения.
Прежде чем изложить сам алгоритм, укажем на те его вычислительные особенности, которые отличают его от ранее рассмотренных алгоритмов симплекс-таблиц:
1) Алгоритм работает со структурой данных, не являющейся симплекс-таблицей. Основными компонентами этой структуры являются матрица перевозок x[i,j], базисное множество N(Bk), значения рассчитанных симплекс-разностей ∆сij для небазисных переменных, а также значения потенциалов , , являющихся аналогами двойственных переменных и использующихся для расчета ∆сij;
2) Специальным способом рассчитываются значения симплекс-разностей для небазисных компонент. При этом используется особая структура ограничений двойственной задачи (1.153). Известно (1.104), что симплекс-разности исходной задачи могут быть определены как разность правой и левой частей ограничений двойственной задачи для ее базисного решения, т.е. в данном случае:
. (1.158)
Известно также что:
для . (1.159)
Исходя из этих соотношений, можно составить следующую систему линейных уравнений для двойственных переменных:
. (1.160)
Число двойственных переменных равно числу ограничений двойственной задачи, т.е. m+n, а число уравнений системы (1.160) равно размерности базиса (m+n-1), т.е. на единицу меньше, чем число неизвестных. Такая система решается путем задания одной из переменных произвольного значения и вычисления остальных переменных. Система уравнений (1.160) обладает таким математическим свойством, что какую бы двойственную переменную ни выбрать и какое бы значение ей ни присвоить, ее решение удовлетворяет следующему условию:
. (1.161)
Поэтому v[i] и w[j] называют потенциалами соответствующих пунктов производства и потребления (по аналогии с понятием потенциалов в электрическом поле), а сам рассматриваемый метод – методом потенциалов. Используя (1.161) и соотношение (1.158), можно после определения потенциалов следующим образом рассчитать симплекс-разности для небазисных пар (i, j):
для . (1.162)
Система (1.160), учитывая особую ее структуру, решается алгоритмически довольно просто. Для определенности первоначально полагают v[1]=0. Исходя из этого, находят те w[j], которые входят в уравнения системы (1.160) вместе с v[1]. Затем по найденным w[j] аналогичным образом находят соответствующие v[i] и т.д. до тех пор, пока все и не будут определены.
3) Решаемая Т-задача не преобразуется к направлению оптимизации на максимум. Следовательно, учитывая сущность симплекс-разностей (1.74), следующим образом изменяются условия оптимальности базисного решения Т-задачи:
для (1.163)
и правила выбора столбца (il, jl), вводимого в базис:
(il, jl) – первая по порядку расположения в матрице перевозок пара, для которой , где . (1.164)
Сравните с соответствующими условиями и правилами обычного алгоритма (1.78 и 1.82).
4) Особым образом осуществляется определение пары, выводимой из базиса, и корректировка базисного решения. При этом опять используется понятие цепочки.
После добавления к базисным элементам матрицы перевозок пары (il, jl) в соответствии со свойством 8 из некоторых базисных элементов сразу же образуется цепочка, замкнутая на элемент (il, jl).
Алгоритм определения этой цепочки аналогичен приведенному выше. Отличие заключается лишь в том, что в п.1 алгоритма никогда не вычеркивается строка il, а в п.2 – столбец jl. После завершения процедуры вычеркивания строк и столбцов матрицы перевозок выявление последовательности базисных элементов в этой цепочке осуществляется следующим образом:
-начинают с просмотра строки il, находят не вычеркнутый элемент (il , j) (il, jl); затем меняют направление поиска, ищут не вычеркнутый элемент в столбце j (пусть это будет элемент (j,k)); снова изменив направление поиска, ищут не вычеркнутый элемент в строке k, и т.д. до тех пор, пока для очередного из найденных таким образом не вычеркнутых элементов номер столбца совпадет с jl..
- все базисные элементы цепочки последовательно нумеруются. Элементы, стоящие на нечетных местах, включаются в подмножество , а элемент на четных местах в подмножество .
Пример реализации соответствующей процедуры приведен на рис. 1.31, где базисные элементы отмечены знаком «+».
При введении (il, jl) в базисное множество соответствующая перевозка x[il, jl] в соответствии с правилом перебора допустимых базисных решений должна увеличиваться. Тогда, чтобы не выйти из области допустимых решений (см. свойство 3 Т-задачи) необходимо перевозки, стоящие на нечетных местах в цепочке, уменьшать на ту же величину, а перевозки на четных местах – увеличивать. Такое изменение будет, как и раньше, соответствовать перемещению по ребру, исходящему из крайней угловой точки прежнего базисного решения. Ограничением на перемещение, соответствующим переходу в соседнюю по ребру крайнюю точку, будет первый выход на ноль одной из уменьшающихся перевозок (т.е. одной из перевозок, входящих в подмножество ). Соответствующая пара (ir, jr) и будет той парой, которая из базиса выводится.
Если выходят на ноль сразу несколько перевозок, то одна из них определяется как пара
(ir, jr), а другие остаются в базисном множестве: базисное решение при этом будет вырожденным.
Формальные соотношения для определения (ir, jr) имеют следующий вид:
, (1.165)
(ir, jr) – первая в множестве пара, для которой x[ir,jr]=u.
Корректировка прежнего базисного решения осуществляется в соответствии со следующими соотношениями:
; (1.166)
(1.167)
. (1.168)
Алгоритм
Шаг 1. k=1.
Шаг 2. Расчет симплекс-разностей , :
- в соответствии с N(Bk) и C[ij] формируется и решается система уравнений (1.160);
- рассчитываются , ,(1.162).
Шаг 3. Проверка условия оптимальности (1.163).
Если условие выполняется, то выводится оптимальное решение , и алгоритм завершает свою работу.
Шаг 4. Определение пары (il, jl) в соответствии с (1.164).
Шаг 5. Определение цепочки и подмножеств и .
Шаг 6. Определение пары (ir, jr) в соответствии с (1.165).
Шаг 7. Корректировка базисного решения в соответствии с (1.166)÷(1.168).
Шаг 8. k:=k+1, переход на шаг 2.
Еще раз необходимо отметить, что исхода в соответствии со свойством 2 Т-задачи алгоритм не предусматривает.