Лекция 6: Двойственный симплекс – метод. Исследование моделей задач линейного программирования на чувствительность
Итак, последовательные переходы от одного сопряженного базиса к другому производят до тех пор , пока не получат решение задачи или не установят ее неразрешимость. Каждый переход от одного псевдоплана к другому составляет одну итерацию (один шаг) двойственного симплекс-метода.
Каждая итерация содержит два этапа. На первом этапе выясняют,
не является ли псевдоплан оптимальным планом прямой задачи, и если нет,
то разрешима ли задача. Для этого необходимо вычислить и установить их знаки.
Второй этап состоит в осуществлении элементарного преобразования -
(одной итерации) метода полного исключения Жордана-Гауса, приводящего
к новому псевдоплану с меньшим значением целевой функции.
Описание алгоритма. Задача ЛП должна быть задана в канонической
форме (1.1), (1.2) или сведена к ней. Отыскивают сопряженный
базис двойственной задачи и обозначают его . Разложим А0
по векторам базиса Аі1,.,Аіm
в соответствии с (1.9) и найдем псевдоплан
прямой задачи.
Исследуем знаки {хi0}. Если имеет место случай , то начальный
псевдоплан является оптимальным планом прямой задачи. При наличии
отрицательных компонент {хi0} вычисляем
коэффициенты разложения векторов Aj по векторами сопряженного базиса {хij} в соответствии с (1.8).
Если для некоторого r такого, что хr0<0,
все то задача не разрешима (второй случай), и на
этом процесс вычислений заканчивается.
Если имеет место третий случай (то есть для каждого r такого, что хr0<0, по крайней мере одна из компонент хrj<0 ), то переходим к второму этапу. С этой целью составляют таблицу k -й итерации (аналогичную симплекс-таблице), которая состоит (m+2) строк и (n+1) -го столбца (табл. 6.1).
Столбец Вx таблицы, как обычно, содержит векторы {Ai} базиса псевдоплана хk, а столбец А0 - базисные компоненти псевдоплана {хi0(k)}. Строка (m+1) -индексная,
ее заполняют параметрами , являющимися оценками
векторов Аj:
![\Delta_j = a_{0j} = \sum_{i \in I_{\delta}} c_i x_{ij} - c_j ,](/sites/default/files/tex_cache/bbc98ae8c1d1166255485a6cc9e29e25.png)
величина - значение целевой функции при псевдоплане
![\Delta_0 = \sum_{i \in I_{\delta}} c_i x_{i0}^{(K)}.](/sites/default/files/tex_cache/806e2ae9da679c16e09eb14c01099db6.png)
C | C1 | C2 | . | Cj | . | Cn | ||
Bx | A0 | A1 | A2 | . | Aj | . | An | |
C1 | X1 | X10 | X11 | X12 | . | X1j | . | X1n |
C2 | X2 | X20 | X21 | X22 | . | X2j | . | X2n |
. | . | . | . | . | . | . | . | . |
Ci | Xi | Xi0 | Xi1 | Xi2 | . | Xij | . | Xin |
. | . | . | . | . | . | . | . | . |
Cm | Xm | Xm0 | Xm1 | Xm2 | . | Xmj | . | Xmn |
![]() |
![]() |
![]() |
![]() |
. | ![]() |
. | ![]() |
|
![]() |
![]() |
![]() |
. | ![]() |
. |
На первом этапе (k+1) -и итерации выясняют, имеет ли место первый, второй или третий случай.
В третьем случае переходим ко второму этапу. Сначала определяют вектор Аr, который необходимо вывести из базиса. Его индекс r определяют из условия
![]() |
( 1.14) |
Затем заполняют элементы (m+2) -й строки, которые вычисляют по формуле
![]() |
( 1.15) |
В строке заполняют лишь те позиции, для которых xrj<0. Вектор Аl,
который должен быть введен в базис, находят из условия
![\Theta_i = \min_j \{ \Theta_j \} =
\min_j \left. \left\{ - \frac{\Delta_j}{x_{rj}} \right| x_{rj} < 0 \right\}.](/sites/default/files/tex_cache/3efe5cbbec596f179f6478cb1f9baa1e.png)
Определив направляющую строку r и столбец l, вычисляют элементы главной части таблицы (k+1) -й итерации по рекуррентным соотношениям
![]() |
( 1.15) |
Вычислительная схема алгоритма двойственного симплекс-метода похожа на вычислительную схему симплекс-метода. Аналогичны и формы таблиц.
Различие между методами заключается в том, что при симплекс-методе производят последовательный переход от одного допустимого базисного решения (опорного плана) задачи к другому, а при двойственном симплеск-методе - переход от одного псевдоплана к другому.
Формальное различие между вычислительными схемами этих методов проявляется только в правилах перехода от одного базиса к другому, а также в признаках оптимальности и неразрешимости задачи. В симплекс-методе сначала определяют вектор, вводимый в базис, а затем - вектор,исключаемый из базиса, а в двойственном симплекс-методе этот порядок - обратный.
Отметим некоторые важные свойства двойственного симплекс-метода.
В отличие от прямого симплекс-метода, двойственный симплекс-метод не требует нахождения начального базисного решения ( опорного плана ), а поиск начального псевдоплана часто может оказаться легче, чем поиск ДБР.
Рассмотрим, например, типичную задачу минимизации
![]() |
( 1.17) |
![]() |
( 1.18) |
![]() |
( 1.19) |
![]() |
( 1.20) |
Для задачи такого вида найти сразу начальный опорный план нельзя, и поэтому необходимо применить метод искусственных переменных и выполнить значительный объем вычислений. В то же время псевдоплан находится почти автоматически. Действительно, перейдем от (1.17) - (1.19) к эквивалентной задаче в расширенной форме, введя свободные переменные xn+1, xn+2, ., xn+m...
![]() |
( 1.21) |
![]() |
( 1.22) |
Запишем ограничения двойственной задачи
![]() |
( 1.23) |
![]() |
( 1.24) |
Из неравенств (1.23) - (1.24) видим, что поскольку решение yi при i=1,m удовлетворяет всем ограничениям (1.23), то сопряженный базис образуют векторы An+1,An+2,...,An+m при свободных переменных. При этом начальный псевдоплан такой:
![x_{n+i} = -b_i, \; i= \overline{1,m}.](/sites/default/files/tex_cache/7b84572169cb674364dc2a654e53ae90.png)
Итак, для задачи вида (1.17) - (1.18) пpи условии (1.20) применение двойственного симплес-метода оказывается предпочтительнее в сравнении с прямым.
Двойственный симплекс-метод позволяет в процессе итерации добавлять новые дополнительные ограничения к уже найденному некоторому промежуточному решению. Это важное его свойство широко используется при решении задач целочисленного программирования.