Двойственный симплекс-метод

Двойственный симплекс-метод можно применять при решении задачи линейного программирования, свободные члены системы уравнений которой могут быть любыми числами. В обычном симплексном алгоритме план всегда должен быть допустимым. Допустимый план — это такой план, который удовлетворяет всем ограничениям задачи при обязательном условии неотрицательности неизвестных, то есть любые числа в итоговом столбце положительны. План называется недопустимым (или условно-оптимальным), если в итоговом столбце имеются отрицательные числа, зато оценки целевой строки соответствуют целевой функции, то есть являются положительными при решении на максимум и отрицательными при решении на минимум. В процессе решения двойственным методом план является недопустимым. При использовании двойственного метода сначала применяют обычную симплекс-процедуру и добиваются того, чтобы все оценки соответствовали цели решения задачи, причем пока не обращают внимания на знаки чисел в итоговом столбце. Только когда такой условно-допустимый план достигнут, смотрят на эти знаки. Если в итоговом столбце оказались отрицательные числа, план изменяется так, чтобы недопустимость уменьшилась, а затем и исчезла, но чтобы двойственные оценки продолжали соответствовать при этом цели решения задачи. Возможность придавать в процессе решения отрицательные значения неизвестным, входящим в план, в случае, если ограничения заданы неравенствами, позволяет избавиться от искусственных неизвестных, это сокращает размеры задачи, а значит, и вычислений[21].

Рассмотрим алгоритм решения задач двойственным симплексным методом.

1. Математическая модель прямой задачи линейного программирования должна быть в стандартной форме записи. В противном случае ее надо привести к стандартной форме записи.

2. Для прямой задачи составляется двойственная.

3. Обе задачи приводят к каноническому виду.

4. Выражают базисные переменные обеих задач через основные переменные.

5. Находят исходное решение прямой и двойственной задач и проверяют его на оптимальность. Для этого заполняют симплекс-таблицу двойственного симплекс-метода. Строки таблицы 1-го шага (верхние части клеток) заполняют по данным системы ограничений и целевой функции прямой задачи. Столбцы таблицы 1-го шага (верхние части клеток) заполняют по данным системы ограничений и целевой функции двойственной задачи.

Симплексная таблица двойственного симплекс-метода имеет следующий вид:

yбаз ym+1 ym+2 ¼ ym+n  
yсв xсв xбаз - x1 - x2 ¼ - xn bi  
y1 xn+1 h11 h12 ¼ h1n l1  
 
y2 xn+2 h21 h22 ¼ h2n l2  
¼ ¼ ¼ ¼ ¼ ¼ ¼  
ym xn+m hm1 hm2 ¼ hmn lm  
cj - c1 - c2 ¼ - cn  

 

Решение является оптимальным, если в строке и столбце bi нет отрицательных элементов.

В противном случае следует провести изменения в базисных переменных.

6. Выбор разрешающей строки. Находят отрицательный элемент в строке . В столбце над этим найденным элементом выбирают любой положительный элемент, эта строка – разрешающая.

Если в столбце над найденным элементом нет положительных элементов, то ПЗЛП не имеет смысла (целевая функция не ограничена в области допустимых решений), а ДЗЛП не имеет решения.

7. Выбор разрешающего столбца. Элементы строки делят на соответствующие элементы разрешающей строки под переменными. Из полученных отношений выбирают максимальное отрицательное отношение, этот столбец – разрешающий (максимальным из отрицательных отношений может быть отношение – отрицательный ноль).

Если среди полученных отношений нет отрицательных, то ПЗЛП не имеет решения, ДЗЛП не имеет смысла или решения.

На пересечении разрешающей строки и разрешающего столбца получен разрешающий элемент.

8. Заполнение нижних частей клеток таблицы. Под разрешающим элементом всегда ставят «1». Остальные элементы разрешающей строки переписываются без изменений. Остальные элементы разрешающего столбца переписываются с противоположным знаком. Остальные элементы таблицы находят по правилу прямоугольника: искомый элемент умножают на разрешающий и из этого произведения вычитают произведение элементов, расположенных на противоположной диагонали прямоугольника, образуемого искомым и разрешающим элементами (все элементы из верхних клеток).

9. Построение новой симплекс-таблицы. Изменяют базисные переменные: меняют местами переменные из разрешающей строки и разрешающего столбца. Элементы из нижних клеток предыдущей симплекс-таблицы делят на верхний разрешающий элемент и записывают на соответствующие места в верхние клетки новой симплекс-таблицы.

Если в новой таблице в строке есть отрицательные элементы, то следует сделать следующий шаг симплекс-метода. (Нецелесообразно выбирать за разрешающую строку – те же строки, что и на предыдущих шагах).

Если в новой таблице в строке нет отрицательных элементов, а в столбце свободных членов остались отрицательные элементы, то строка с отрицательным значением выбирается за разрешающую, и выполняется следующий шаг симплекс-метода.

Если в строке есть нулевой элемент, то это признак альтернативного оптимума для ПЗЛП. Для нахождения альтернативного решения выполняется еще один шаг симплекс-метода: Столбец с нулевым элементом в строке выбирается за разрешающий. Находят неотрицательные отношения столбца свободных членов к соответствующим элементам разрешающего столбца. Из полученных отношений выбирают минимальное неотрицательное отношение – это разрешающая строка, разрешающий элемент найден. Затем выполняют еще один шаг симплекс-метода.

Если в столбце есть нулевой элемент, то это признак альтернативного оптимума для ДЗЛП. Для нахождения альтернативного решения выполняется еще один шаг симплекс-метода. При этом строка с нулевым элементом в столбце выбирается за разрешающую.

Рассмотрим решение задачи из п. 4.3 двойственным симплекс-методом.

Канонический вид:

Выразим базисные переменные через свободные:

Введем соответствие основных переменных прямой задачи и дополнительных переменных двойственной задачи, а также дополнительных переменных прямой задачи и основных переменных двойственной задачи:

х1 y4 х2 y5 х3 y1 х4 y2 х5 y3

 

Составим симплекс-таблицу

yбаз y4 y5
yсв xсв xбаз - x1 - x2 bi
y1 x3 2 4
y2 x4 «1»
y3 x5 1 8
cj - 3 - 4 0

 

Решение ПЗЛП выписывается по строкам, значения базисных переменных берутся из столбца bi, если переменная с соответствующим индексом не входит в базис, то ее значение равно нулю: = (0, 0, 4, 3, 8), = 0.

Решение ДЗЛП выписывается по столбцам, значения базисных переменных берутся из строки cj, если переменная с соответствующим индексом не входит в базис, то ее значение равно нулю: = (0, 0, 0, -3, -4), = 0.

Данное решение не является оптимальным, поскольку решение не допустимое (не выполнено условие неотрицательности переменных), ему соответствуют отрицательные элементы в строке .

Над минимальным отрицательным элементом «-4» в строке выбираем положительный, например «1», в строке x4, следовательно, эта строка – разрешающая (выделена жирным шрифтом).

Находим максимальное отношение среди отношений элементов в строке целевой функции к соответствующим элементам разрешающей строки

.

Поскольку максимальное отношение соответствует первому столбцу, то – он разрешающий (выделен жирным шрифтом).

Разрешающий элемент «1» находится на пересечении разрешающей строки и разрешающего столбца.

Заполняем нижние части клеток. Под разрешающим элементом ставим «1». В разрешающей строке остальные элементы переписываем без изменения, а в разрешающем столбце остальные элементы записываем с противоположным знаком. Оставшиеся клетки заполняем по правилу прямоугольника:

клетка на пересечении первой строки и второго столбца:

2
«1»

2×1 - 1×1 = 1;

клетка на пересечении третьей строки и второго столбца:

«1»
1

1×1 - 2×1 = -1;

клетка на пересечении четвертой строки и второго столбца:

«1»
¼ ¼
- 3 - 4

- 4×1 - (-3)×1 = -1;

клетка на пересечении первой строки и третьего столбца:

¼ 4
«1» ¼

4×1 - 3×1 = 1;

клетка на пересечении третьей строки и третьего столбца:

«1» ¼
¼ 8

8×1 - 3×2 = 2;

клетка на пересечении четвертой строки и третьего столбца:

«1» ¼
¼ ¼ ¼
- 3 ¼ 0

0×1 - 3×(-3) = 9;

Таким образом, получаем следующую таблицу:

yбаз y4 y5
yсв xсв xбаз - x1 - x2 bi
y1 x3 -1 2 1 4 1
y2 x4 «1»
y3 x5 -2 1 -1 8 2
cj - 3 - 4 -1 0 9

 

Переходим к следующей симплекс-таблице. При этом в базис включается пара переменных х1, у4, соответствующих разрешающему столбцу, а из базиса выводится пара переменных х4, у2, соответствующая разрешающей строке. В следующей таблице данные пары переменных меняются местами. Верхние части клеток заполняются элементами, полученными в результате деления соответствующих (стоящих на аналогичном месте) элементов из предыдущей таблицы в нижних частях клеток на разрешающий элемент «1»:

yбаз y2 y5
yсв xсв xбаз - x4 - x2 bi
y1 x3 -1 1
y3 x1 1 3
y3 x5 -2 -1 2
cj 3 -1 9

 

Решение ПЗЛП на втором шаге двойственного симплекс-метода также выписывается по строкам: = (3, 0, 1, 0, 2), = 9, решение ДЗЛП выписывается по столбцам: = (0, 3, 0, 0, -1), = 9. Данное решение также не оптимальное, поскольку еще остался отрицательный элемент «-1». Необходим еще один шаг двойственного симплекс-метода.

Над отрицательным элементом «-1» в строке выбираем положительный, предпочтительнее «1», в строке x3, поскольку вторая строка была выбрана на предыдущем шаге метода, следовательно, первая строка – разрешающая (выделена жирным шрифтом).

Находим максимальное отношение среди отношений элементов в строке целевой функции к соответствующим элементам разрешающей строки

.

Поскольку максимальное отношение соответствует второму столбцу, то – он разрешающий (выделен жирным шрифтом).

Разрешающий элемент «1» находится на пересечении разрешающей строки и разрешающего столбца.

Заполняем нижние части клеток. Под разрешающим элементом ставим «1». В разрешающей строке остальные элементы переписываем без изменения, а в разрешающем столбце остальные элементы записываем с противоположным знаком. Оставшиеся клетки заполняем по правилу прямоугольника аналогично предыдущему шагу метода, получаем следующую таблицу:

yбаз y2 y5
yсв xсв xбаз - x4 - x2 bi
y1 x3 -1 -1 «1» 1
y3 x1 1 2 -1 3 2
y3 x5 -2 -3 -1 1 2 3
cj 3 2 -1 1 9 10

 

Переходим к следующей симплекс-таблице. При этом в базис включается пара переменных х2, у5, соответствующих разрешающему столбцу, а из базиса выводится пара переменных х3, у2, соответствующая разрешающей строке. В следующей таблице данные пары переменных меняются местами. Клетки следующей таблицы заполняются элементами, полученными в результате деления соответствующих элементов из предыдущей таблицы в нижних частях клеток на разрешающий элемент «1». Поскольку в нижних частях клеток таблицы все элементы положительные и разрешающий элемент также положительный, то в следующей таблице будет получено оптимальное решение и нет необходимости делить на две части клетки в последней таблице:

yбаз y2 y1
yсв xсв xбаз - x4 - x3 bi
y5 x2 -1 1 1
y3 x1 2 -1 2
y3 x5 -3 1 3
cj 2 1 10

 

Оптимальное решение ПЗЛП: = (2, 1, 0, 0, 3), = 10, оптимальное решение ДЗЛП: = (1, 2, 0, 0, 0), = 10.

Данное решение аналогично решению, полученному в соответствии с методом одновременного решения пары взаимодвойственных задач.