© Истомин Л. А., 2009
ИСТОМИН Леонид Александрович
Кандидат физико-математических наук, доцент кафедры высшей математики
Уральский государственный экономический университет
620144, РФ, г. Екатеринбург, ул. 8 Марта/Народной воли, 62/45 Контактный телефон: (343) 251-96-37 e-mail: [email protected]
Метод сокращения отрицательных компонент при поиске допустимого базисного решения задачи линейного программирования
Ключевые слова: линейное программирование; симплекс-метод; начальное базисное решение; начальное псевдооптимальное базисное решение.
Аннотация. Опираясь на произвольное базисное решение системы уравнений, автор рассматривает метод получения начального допустимого базисного решения задачи линейного программирования в симплекс-методе.
В теории и практике применения оптимизационных экономико-математических методов задаче линейного программирования (ЛП) отводится первостепенное значение. С ее постановки и решения начинается любой учебный курс по экономико-математическому моделированию. Это объясняется тем, что решение задачи ЛП опирается на методы решения систем линейных уравнений, считающихся наиболее простым математическим инструментом, который может использовать экономист в своих исследованиях.
Для решения задачи ЛП применяется широкоизвестный симплекс-метод, который имеет дело с канонической формой этой задачи, т. е. с задачей вида Ь:
шах {стх: А х = Ь, х > 0}.
Здесь задача ЛП записана в матричной форме, где хт = (х1, х2, ... хя) Е £”, ст = (с1, с2, ... ся), Ьт = (Ь1, Ь2, ... Ьт), А - числовая матрица размерности (т х п) ранга т. Задаче Ь ставится в соответствие двойственная ей задача Ь*:
шт {ЬТи : Ати > с},
где ит = (и1, и2, ... ит) Е Ят.
В основе решения задач Ь и Ь* симплекс-методом лежит принцип опорных (базисных, узловых) решений, состоящий в том, что если Ь и Ь* разрешимы, то для поиска их решений можно ограничиться рассмотрением опорных (базисных) решений системы уравнений Ах = Ь. При нахождении начального базисного решения можно исходить из каких-либо априорных гипотез относительно переменных х, входящих в оптимальное решение задачи Ь. Однако для того, чтобы начать решение задачи Ь, используя прямой или двойственный симплекс-метод, необходимо иметь либо начальное допустимое базисное решение задачи Ь, либо ее начальное псевдооптимальное решение [1, 2]. Затруднение возникает, когда начальное базисное решение не является ни допустимым, ни псевдооптимальным. В этом случае обычно прибегают к помощи искусственных переменных. Ниже будут представлены два способа, позволяющие выйти из данного затруднения, не прибегая к помощи искусственных переменных. Таким образом,
решение задачи Ь использует только базисные решения системы уравнений Ах = Ь. Отметим, что первый способ связан с процедурой прямого симплекс-метода, а второй с процедурой двойственного симплекс-метода. В данной работе будет рассмотрен лишь первый из этих способов.
Применяя к системе уравнений Ах = Ь процедуру Жордана-Гаусса (называемую методом полного исключения неизвестных), выделим систему базисных переменных, получая некоторое базисное решение системы уравнений Ах = Ь. В целях удобства будем считать, что такую систему базисных переменных образуют первые т неизвестных. Тогда исходная система уравнений преобразуется в эквивалентную ей систему уравнений вида
БхБ + Ах = Ь,
где хБг = (х1, х2,... хт) - совокупность базисных переменных;
—Т
х = (хт+1, хт+2,... хп) - совокупность небазисных (свободных) переменных;
Е - единичная матрица порядка т;
А - матрица размерности (т х (п - т));
Ь = (Ь1, Ь2,... Ьт ).
Вместе с этим задача Ь переходит в эквивалентную ей задачу Ь0: шах -{БхБ + сТх: ЕхБ + Ах = Ь, хБ > 0, х > о},
а двойственная задача Ь* переходит в эквивалентную ей задачу Ь*0:
АТV > с }
Эквивалентность задач Ь и Ь* задачам Ь0 и Ь* означает, что эти пары задач разрешимы или неразрешимы одновременно, их допустимые множества решений пусты или не пусты также одновременно.
Решение задачи Ь0 прямым или двойственным симплекс-методом в целях удобства проводят, применяя симплекс-таблицу, которая в агрегированной (блочной) форме имеет вид:
Симплекс-таблица задачи Ь0
шах с СТ ‘"Б -Т С1 -Т С2
Б СБ Т ХБ —Т XI —Т XI ь
СБ Е Ли Лі2 Ьі > 0
І21 А 22 Ь2 < 0
Аг > 0 0 II А Ах. > 0 Ах. < 0 х
В симплекс-таблице последняя строка (исключая элемент г) называется индексной, ее элементы Аг, рассчитываются по формуле
Аг, = сБ А. - с,,
где А, - столбец матрицы А, соответствующий переменной х ..
Для базисных переменных автоматически получается Аг, = 0, для свободных переменных при оптимальном решении должны выполнятся условия Аг, > 0.
шіп {оу : V > еБ
Из симплекс-таблицы текущее базисное решение читается как хБ = Ь, х = 0, а значение целевой функции задачи Ь0 для текущего базисного решения равно г = сБ ■ Ь. Если симплекс-таблица отвечает оптимальному базисному решению задачи Ь0, то оптимальным решением задачи Ь*0 будет V = сБ.
Предположим, что текущее базисное решение не является ни допустимым (об этом говорит наличие компонент Ь2 < 0), ни псевдооптимальным (об этом говорит наличие индексных элементов Аг, < 0). Находясь в данной ситуации, нельзя дальше использовать процедуру ни прямого симплекс-метода, ни двойственного.
Введем обозначения:
I = |1 = 1, 2, ... т} - совокупность индексов всех строк;
II = {. £ I: Ь > 0}-индексы строк, для которых Ь > 0;
12 = { г £ I: Ь < 0} -индексы строк, для которых Ь < 0;
] = {, = 1, 2, ... п} - индексы всех столбцов переменных;
]Б ={, £ I: ) = 1, 2, ..., т} - индексы столбцов базисных переменных;
] = {, £ ]:, € ]Б} - индексы столбцов небазисных переменных;
]1 = {, £ ]:, € ]Б, Аг, > 0} - индексы столбцов небазисных переменных, для которых условие оптимальности выполняется, т. е. Аг, > 0;
]2 = {, £ ]:, € ]Б, Аг, < 0} - индексы столбцов небазисных переменных, для которых условие оптимальности не выполняется, т. е. Аг, < 0.
Метод сокращения отрицательных компонент базисного решения
Рассмотрим величину у = 2(£1 Ь. Очевидно у < 0, если текущее базисное решение является недопустимым (т. е. х ^ 0), и у = 0, если текущее базисное решение является допустимым. Таким образом, если Ь0 (следовательно, и Ь) не имеет допустимых решений, тогда она не имеет и базисных допустимых решений и для всех ее базисных решений у < 0.
В основе рассматриваемого метода лежит следующее утверждение.
Утверждение 1. Если для некоторого подмножества 10 с 12 для всех , £ ] выполняется 2(£^ а, > 0, то задача Ь0 не имеет допустимых решений.
Действительно, суммируя левые и правые части уравнений задачи Ь0, входящих в совокупность 10, получим уравнение
£,£!„ х +,(^£10 а,)х, =тШо ь,,
являющееся следствием системы уравнений задачи Ь0. Очевидно, при любых х > 0 ( г £ 10) и х, > 0 (, £ ]) в силу выполнения условия утверждения 1 левая часть уравнения всегда будет неотрицательна, тогда как его правая часть отрицательна (Е£1 Ь . < 0, так как 10 С 12). Таким образом, данное уравнение является противоречащим условиям решений задачи Ь0, и следовательно, задача Ь0 (вместе с ней Ь) не имеет допустимых решений.
Отметим, что в литературе уделяющей внимание двойственному симплекс-методу обычно в качестве 10 рассматривается лишь частный случай, когда 10 = { /0}, т. е. когда 10 состоит из одного индекса. Тогда в качестве противоречивого выступает некоторое уравнение, входящее в систему уравнений задачи Ь0.
Схема метода.
Шаг 1. Возьмем 10 = 12 и сложим по всем столбцам , £ ] элементы строк, для которых Ь. < 0.
Если для всех , £ ] будет а,, > 0, то в силу утверждения 1 задача Ь0 не имеет допустимых решений и на этом ее решение прекращается.
Если для некоторого столбца ,0 £ ] будет Т,{£1 а,, < 0, то переходим к шагу 2.
Шаг 2. Выбор разрешающего столбца. Выберем в качестве разрешающего столбец ,0 для которого Х.£1 а,, < 0. В целях возможного ускорения получения допустимого базисного решения можно рекомендовать выбор такого столбца, для которого сумма
Z(E„ a.j < 0 является отрицательной и наибольшей по абсолютной величине, т. е. осуществлять выбор столбца в соответствии с правилом
2iE,2 aih = min{ZjEj2 atj: j e J, a,, < 0}.
Выбрав разрешающий столбец, переходим к шагу 3.
Шаг 3. Выбор разрешающей строки. Разрешающую строку определяем в соответствии с правилом
ь, Г ь. )
—— = min< : для Ь > 0, a,, > 0 и для Ь, < 0, a, < 0 >. (1)
* 0 j0 ) aj0 0 0 J
Наличие такой строки гарантируется выполнением условия £jeI a , < 0, из которого следует существование элемента a.. < 0 для некоторого Ь. < 0.
Для ускорения поиска допустимого базисного решения можно несколько усложнить правило выбора разрешающей строки 0.
Пусть
Ь ) Ь. )
—— = min : для Ь. > 0, a.. > 0>,
Ъ 1 j0 ) aj0 0 )
Ь ) ь. , ь . Ь 1
—— = max < —-: для Ь. < 0, a.. < 0 и-1- < —1 >.
a2j0 ) a.j0 0 a.0 a 1 j0
Тогда строка z'0 выбирается в соответствии с правилом:
(2)
При благоприятной ситуации правило (2) позволяет сделать одновременно положительными правые части нескольких уравнений для г Е 12.
Отметим, что если претендентов на разрешающую строку несколько, то лучше выбрать ее из числа тех, где Ь. < 0. В этом случае хотя бы на одну отрицательную переменную в базисном решении будет меньше.
Выбрав разрешающую строку г0, переходим к шагу 4.
Шаг 4. Выполнение преобразований симплекс-таблицы по методу Жордана-Гаусса относительно разрешающего элемента а. Как известно, данное преобразование состоит в следующем:
1) элементы любой другой строки (в том числе индексной, но кроме разрешающей) в новой таблице получаются сложением элементов этой строки старой таблицы с элементами разрешающей строки 0 старой таблицы, предварительно умноженными на
( „ А
число
a і і
Ч j0 J
2) элементы разрешающей строки і0 новой таблицы получаются делением элементов строки і0 старой таблицы на а ;
3) старая базисная переменная х. и коэффициент с., стоящие в столбцах Б и сБ, меняются на новые х. и с..
10 10
В результате такого преобразования столбец 10 становится единичным с 1 на месте элемента аи с 0 в остальных строках (в том числе индексной). Получив новое базисное решение, переходим к шагу 1.
Вышеописанную процедуру повторяем, пока не получим допустимое (неотрицательное) базисное решение и возможность продолжить далее решение задачи прямым симплекс-методом.
Покажем, что в результате такой процедуры с использованием правила (1) выбора разрешающей строки неотрицательные Ъ. > 0 останутся снова неотрицательными, число отрицательных Ъ. < 0, возможно, уменьшится или, по крайней мере, возрастет величина у, обеспечивая этим регулярность метода.
Действительно, для разрешающей строки новое значение Ъ. равно
Следовательно, если Ь. > 0, то в силу а.. > 0 будет Ь'. > 0, если Ь. < 0, то в силу а.. < 0, '0 4 '0/0 4 '0 '0 4 '0/0
будет Ь'. > 0, т. е. при этом Ь. < 0 меняется на Ь'. > 0.
0 0 0 Для других строк в соответствии с методом Жордана-Гаусса новые значения Ь'. равны
Г ъ ^ '
Ь' = Ъ - а
аі і V .0 >0 )
Ъ
Тогда, если Ъ. > 0 и а. < 0, то из —— > 0 следует Ъ> Ъ. > 0. Если Ъ. > 0 и а. > 0, то из
. >0 4 . . . >0
Ъ > Ъ0
условия - следует
аі>0 аі 0 >0
( и Л
Ъ, - а,.,
аі і
V .0>0 /
> 0 и Ъ'. > 0.
Таким образом, если было Ъ > 0, то и Ъ' > 0, т. е. неотрицательность правой части уравнений сохраняется, I’ С 12,11 С Гг
Далее покажем выполнение неравенства у' > у.
Случай, когда і0 Є 11. Если Ъ. < 0 и а.. > 0, то Ц = Ъ. - а
Ъ Ъ
то из —^ > —— следует Ъ( - а>
а. .
V .0 >0 )
< Ъ. < 0. Если Ъ. < 0 и а.. < 0,
< 0 и Ъ'. < 0.
Таким образом, для ' £ 12 либо Ь'' < 0 ( ' £ 7'2), либо Ь'' = 0 ( ' £ 12\1'2). Отсюда с учетом
Ъ
—— > 0 и 2 1е1 а.. < 0 получаем
а,.
г0 >0
у'=ъ;=^ Ъ^ (Ъ -а/ )=^Ъ а /0 =у ■- а /0 >у,
а ' / а , / а' /
1 '0 1 0 )/ 1 0 Л)
т. е. у' > у.
Случай, когда '0 £ 12 и строка '0 выбрана в соответствии с простым правилом (1).
Г и \
< Ъ < 0.
Тогда, если, Ъ. < 0 и а. > 0,то Ъ = Ъа.
Н і >0 ' >0 а
V і0>0 )
Ъ Ъ
Если Ъ. < 0 и а. < 0 ( і Ф г.), то из —> —— следует Ъ. - а
. >° 0 а> а.. . 1
>0 .0 >0
< 0 и Ъ’. < 0. Для і = і0
Ъ Ъ
будет Ъ.' = —— > 0. Отсюда с учетом —— > 0 и 2іЕІ2 а> < 0 получаем
(
у' = 2ІЕі, Ъ' = ТІЄІЬ’ = тк
Ъ, - а,:
= І(Еі, Ъ.-^ 2^ а. = У-— І(Еі, а> > У.
'0 >0 )
Итак, если разрешающая строка i0 выбирается по простому правилу (1), то у' > у,
b
а в предположении отсутствия зацикливания при —— > 0 будет у' > у. Кроме того,
а ,
b 0,0
видим, что Y-y =-— ZiEl a, =Ау(,0). Это позволяет связать выбор разрешающего
а,, 2 ,0 i0 ./0
столбца как с условием ZiE/ а, < 0, так и с наибольшим значением величины Ау(/0) (как вариант с наибольшим отрицательным значением ZiE/ а,).
Аналогично предыдущему исследуется вариант, когда выбор разрешающей строки осуществляется по правилу (2). В этом случае либо получим у' > у (в случае невырожденности базисного решения у' > у) либо увеличение числа положительных компонент b. для i G I2 более чем на одно.
Таким образом, применяя вышеописанную процедуру перехода к новому базисному решению либо увеличивается значение у, либо уменьшается число отрицательных компонент базисного решения, т. е. число отрицательных значений правых частей системы уравнений. Так как число базисных решений системы линейных уравнений Ax = b конечно, то через некоторое конечное число шагов либо придем к у = 0 и, следовательно, получим допустимое базисное решение задачи L0, либо придем к ситуации, указывающей на отсутствие допустимых решений в задаче L .
В заключение рассмотрим пример.
Требуется найти max (3x1 - x2) при ограничениях 3x1 + 2x2 > 18,
3x1 + 5x2 > 36,
-2x1 + 5x2 > 1,
3x1 - x2 < 31,
-x1 + 5x2 < 55, x1 > 0, x2 > 0.
Вводя дополнительные переменные x3, x4, x5, x6, x7, приведем исходную задачу к каноническому виду:
найти max (3x1 - x2 + 0x3 + 0x4 + 0x5 + 0x6 + 0x7) при ограничениях 3x1 + 2x2 - x3 = 18,
3x1 + 5x2 - x4 = 36,
-2x1 + 5x2 - x5 = 1,
3x, - x. + x, = 31,
12 6
-x1 + 5x2 + x7 = 55,
x 1> 0, x2 > 07, x > 0, x > 0, x > 0, x > 0, x > 0.
1 2 3 4 5 6 /
В отличие от традиционного подхода не будем требовать условия неотрицательности правых частей уравнений, а дополнительные переменные используем для формирования начального базисного решения системы уравнений.
Исходя из этого задача получает вид:
найти max (3x1 - x2 + 0x4 + 0x5 + 0x6 + 0x7) при ограничениях -3x1 - 2x2 + x3 = -18,
-3x1 - 5x2 + x4 = -36,
2x1 - 5x2 + x5 = -1,
3x, - x. + x. = 31,
12 6
-x1 + 5x2 + x7 = 55,
x 1> 0, x2 > 07, x > 0, x > 0, x > 0, x > 0, x > 0.
1 2 3 4 5 6 7
Решение задачи проведем, используя симплекс-таблицу (симплекс-таблица 1). Суммируя по столбцам элементы строк с отрицательными правыми частями b. < 0, получаем, что для столбцов x1 и x2 эти суммы равны -4 и -12. В качестве разрешающего столбца выбираем x2, так как для него отрицательная сумма наибольшая по абсолютной величине. Выбор столбца x2 отмечаем вертикальной стрелкой внизу таблицы.
Симплекс-таблица 1
шах с 3 -1 0 0 0 0 0
баз. Сбаз Х1 Х2 Х3 Х4 Х5 Х6 Х7 Ъ X
хз 0 -3 —2 1 0 0 0 0 -18
Х4 0 -3 —5 0 1 0 0 0 -36
Х5 0 2 -5 0 0 1 0 0 -1
Х6 0 3 -1 0 0 0 1 0 31
Х7 0 -1 5 0 0 0 0 1 55
Ах. > 0 -3 1 0 0 0 0 0 0
Чтобы определить разрешающую строку, вычисляем элементы вспомогательного столбца X. Для этого неотрицательные элементы Ъ. > 0 делим на положительные элементы столбца х , отрицательные Ъ. < 0 делим на отрицательные элементы столбца х . Там, где такое деление невозможно, в столбце X ставим прочерк. После этого в соответствии с правилом (1) в качестве разрешающей выбираем строку с наименьшим значением X. Выбор строки отмечаем горизонтальной стрелкой справа от таблицы.
На пересечении разрешающих столбца и строки отмечаем разрешающий элемент таблицы. В результате вышеописанных действий таблица 1 примет вид таблицы 2.
Симплекс-таблица 2
шах с 3 -1 0 0 0 0 0
баз. Сбаз Х1 Х2 Х3 Х4 Х5 Х6 Х7 Ъ X
Х3 0 -3 —2 1 0 0 0 0 -18 9
Х4 0 -3 —5 0 1 0 0 0 -36 36/5
Х5 0 2 С-і") 0 0 1 0 0 -1 1/5
Х6 0 3 -1 0 0 0 1 0 31 -
Х7 0 -1 5 0 0 0 0 1 55 11
Ах. > 0 -3 1 0 0 0 0 0 0
—*
Далее проводим преобразование симплекс-таблицы 2 относительно разрешающего элемента (-5) по методу Жордана-Гаусса.
Получаем симплекс-таблицу 3.
Симплекс-таблица 3
шах с 3 -1 0 0 0 0 0
баз. Сбаз Х, Х2 Х3 Х4 Х5 Х6 Х7 Ъ X
Х3 0 С-І95) 0 1 0 2/5 0 0 -88/5 88/19
Х4 0 -5 0 0 1 1 0 0 -35 7
Х2 -1 -2/5 1 0 0 -1/5 0 0 1/5 -
Х6 0 13/5 0 0 0 -1/5 1 0 156/5 12
Х7 0 1 0 0 0 1 0 1 54 54
Ах. > 0 -13/5 0 0 0 1/5 0 0 -1/5
—*
Здесь Ь = -88/5 и Ъ2 = -35 < 0. Сложив элементы этих строк для столбцов х1 и х5, получим (-44/5) для столбца х1 и (-7/5) для столбца х5. Выбираем столбец х1.
От симплекс-таблицы 3 переходим к следующей таблице.
Симплекс-таблица 4
max с 3 -1 0 0 0 0 0
баз. сбаз X1 X2 X3 X4 X5 x6 X7 b X
X1 3 1 0 -5/19 0 2/19 0 0 88/19 -
X4 0 0 0 (-25/19) 1 -9/19 0 0 -225/19 9
X2 -1 0 1 -2/19 0 -3/19 0 0 39/19 -
X6 0 0 0 13/19 0 -9/19 1 0 364/19 28
X7 0 0 0 5/19 0 17/19 0 1 938/19 938/5
Az. > 0 / 0 0 -13/19 0 9/19 0 0 -225/19
—*■
1
Здесь Ъ2 = -225/19 < 0, для столбца х3 элемент (-25/19) < 0, для столбца х5 элемент (-9/19) < 0. Выбираем столбец х3.
От симплекс-таблицы 4 переходим к следующей таблице.
Симплекс-таблица 5
max с 3 -1 0 0 0 0 0
баз. с, баз X1 X2 X3 X4 X5 x6 X7 b X
X1 3 1 0 0 1/5 1/5 0 0 7 -
X3 0 0 0 1 —19/25 9/25 0 0 9 -
X2 -1 0 1 0 -2/25 -3/25 0 0 3 -
X6 0 0 0 0 (Тз/25) -18/25 1 0 13 25
X7 0 0 0 0 1/5 4/5 0 1 47 235
Az. > 0 / 0 0 0 -13/25 18/25 0 0 18
—*
1
В симплекс-таблице 5 получили допустимое базисное решение, все Ь. > 0. Далее действуем в соответствии с прямым симплекс-методом, получая следующую симплекс-таблицу.
Симплекс-таблица 6
max с 3 -1 0 0 0 0 0
баз. сбаз X1 X2 X3 X4 X5 x6 X7 b X
X1 3 1 0 0 0 —1/13 5/13 0 12 -
X3 0 0 0 1 0 —9/13 19/13 0 28 -
X2 -1 0 1 0 0 -3/13 2/13 0 5 -
X4 0 0 0 0 1 -18/13 25/13 0 25 -
X7 0 0 0 0 0 14/13 -5/13 1 42 -
Az. > 0 / 0 0 0 0 0 1 0 31
Очевидно, последняя таблица дает оптимальное решение задачи, а именно x1 = 12; x. = 5; x. = 28; x. = 25; xc = 0; x. = 0; x. = 42; x_ = 42 и z = 31.
2 ’3 ’4 ’5 ’6 ’7 ’7 max
Отметим, что в симплекс-таблице 2 можно было бы выбрать разрешающую строку в соответствии с правилом (2). Для b . > 0 наименьшее значение X = 11, для b . < 0 значения X < 11 будут 9, 36/5 и 5, среди которых наибольшим является 9. Следовательно, в качестве разрешающей строки можно взять первую. Тогда симплекс-таблица 2 имела бы вид симплекс-таблицы 2(б).
Симплекс-таблица 2(б)
шах с 3 -1 0 0 0 0 0
баз. сй баз Х1 Х2 Х3 Х4 Х5 Х6 Х7 Ъ X
Х3 0 -3 С-2^> 1 0 0 0 0 -18 9
Х4 0 -3 -5 0 1 0 0 0 -36 36/5
Х5 0 2 -5 0 0 1 0 0 -1 1/5
Х6 0 3 -1 0 0 0 1 0 31 -
Х7 0 -1 5 0 0 0 0 1 55 11
Ах. > 0 -3 1 0 0 0 0 0 0
—*
Преобразовав симплекс-таблицу 2(б), получаем таблицу 3(б).
Симплекс-таблица 3(б)
шах с 3 -1 0 0 0 0 0
баз. сбаз Х1 Х2 Х3 Х4 Х5 Х6 Х7 Ъ X
Х2 -1 3/2 1 -1/2 0 0 0 0 9
Х4 0 9/2 0 -5/2 1 0 0 0 9
Х5 0 19/2 0 -5/2 0 1 0 0 44
Х6 0 9/2 0 -1/2 0 0 1 0 40
Х7 0 -17/2 0 5/2 0 0 0 1 10
Ах. > 0 -9/2 0 1/2 0 0 0 0 -9
Как видно, симплекс-таблица 3(б) сразу дает допустимое базисное решение задачи. Далее, действуя в соответствии с прямым симплекс-методом, находим ее оптимальное решение.
Источники
1. Гасс С. Линейное программирование. М. : ФМ, 1961.
2. Юдин Д. Б., Гольштейн Е. Г. Задачи и методы линейного программирования. М. : Сов. радио, 1961.