Симплекс-алгоритм.
Геометрическая интерпретация, которой мы пользовались при решении задач линейного программирования (ЛП), перестает быть пригодной для этой цели при числе свободных переменных n – m >= 3.
Для нахождения решения задачи ЛП в общем случае (при произвольном числе свободных переменных) применяются не геометрические, а вычислительные методы. Из них наиболее универсальным является так называемый симплекс-метод.Идея симплекс-метода относительно проста. Пусть в задаче ЛП имеется n переменных и m независимых линейных ограничений, заданных в форме уравнений, т.е. задача ЛП формулирована в канонической форме. Мы знаем, что оптимальное решение (если оно существует) достигается в одной из угловых точек (вершин ОДР), где по крайне мере k = n – m из переменных равны нулю. Выберем какие-то k переменных в качестве свободных и выразим через них остальные m базисных переменных. Пусть, например, в качестве свободных выбраны первые k = n – m переменных x1 , x2 , … xk , а остальные m выражены через них:
xk+1 = ak+1,1x1 + ak+1,2x2 + … + ak+1,kxk + bk+1
xk+2 = ak+2,1x1 + ak+2,2x2 + … + ak+2,kxk + bk+2
… (1)
xn = an,1x1 + an,2x2 + … + an,kxk + bn Если положить все свободные переменные x1 , x2 , … xk равными нулю, то мы получим решение: x1 = 0, x2 = 0, … xk = 0, xk+1 = bk+1, xk+2 = bk+2, … , xn = bn, которое называется базисным.
Это решение может быть допустимым или недопустимым. Оно допустимо, если все свободные члены bk+1, bk+2, … , bn неотрицательны. Если это условие выполняется, то полученное решение называется допустимым базисным решением или опорным решением. Допустимое базисное решение соответствует одной из угловых точек ОДР (вершин ОДР). Предположим, что условие не отрицательности свободных членов выполнено. Тогда мы имеем допустимое базисное решение, но является ли оно оптимальным? Чтобы проверить это, выразим целевую функциюz = c1x1 + c2x2 + … + cnxn , (2)
которую требуется минимизировать, через свободные переменные x1 , x2 , … xk:
z = d0 + d1x1 + … + dkxk , (3)
Для этого надо в (2) подставить (1), выражение базисных переменных через свободные и привести подобные члены. Очевидно, что при x1 = 0, x2 = 0, … xk = 0 z = d0 , т.е. d0 – это значение целевой функции при допустимом базисном решении. Посмотрим, не можем ли мы улучшить решение, т.е. уменьшить целевую функцию z, увеличивая какие-нибудь из переменных x1, x2, … xk (уменьшать их мы не можем, т.к. все они равны нулю, а отрицательные значения переменных недопустимы). Если все коэффициенты d1, d2 , … dk в формуле (3) положительны, то, увеличивая какие-то из переменных x1, x2 , … xk сверх нуля, мы не сможем уменьшить целевую функцию z; следовательно, найденное нами допустимое базисное решение является оптимальным. Если же среди коэффициентов d1, d2 , … dk в формуле (3) есть отрицательные, то, увеличивая некоторые из переменных x1, x2 , … xk , а именно – те, коэффициенты при которых отрицательны, мы можем улучшить решение, т.е.
уменьшить z.Пусть, например, коэффициент d1 в формуле (3) отрицателен. Значит, есть смысл увеличить х1, т.е. перейти от данного допустимого базисного решения (опорного решения) к другому, где переменная х1 не равна нулю, а вместо нее равна нулю какая-то другая, т.е. перейти от одной вершины ОДР к другой вершине. Увеличение х1 “полезно” для целевой функции z, делает меньше. Однако увеличивать х1 надо осторожно, так чтобы не стали отрицательными другие переменные xk+1, xk+2 , … , xn , выраженные через свободные переменные, в частности, через х1 формулами (1). Так как остальные свободные переменные x2 , … xk остаются равными нулю, то изменения базисных переменных xk+1, xk+2 , … , xn от увеличения х1 выражаются формулами:
xk+1 = ak+1,1x1 + b1
xk+2 = ak+2,1x1 + b2
… (4)
xn = an,1 x1 + bn Посмотрим, опасно ли для переменных xk+1, xk+2 , … , xn увеличение х1 , т.е. может ли оно делать их отрицательными? Да, опасно, если коэффициент при х1 в соответствующем уравнении отрицателен. Если среди уравнений (4) нет уравнения с отрицательным коэффициентом при х1 , то величину х1 можно увеличивать беспредельно, а, значит, целевая функция z не ограничена снизу и оптимального решения задачи ЛП не существует. Допустим, что это не так и что среди уравнений (4) есть такие, в которых коэффициент при х1 отрицателен. Для переменных, стоящих в левых частях уравнений, увеличение х1 опасно – оно может сделать их отрицательными. Возьмем одну из таких переменных хl и посмотрим, до какой степени можно все же увеличить х1, пока переменная хl не станет отрицательной? Выпишем l–ое уравнение из системы (4)
xl = al,1x1 + bl
Здесь свободный член bl >= 0, а коэффициент al,1 отрицателен.
Легко понять, что мы можем увеличивать х1 только до значения, равного - bl / al,1 , а при дальнейшем увеличении х1 переменная хl станет отрицательной.Выберем ту из переменных xk+1, xk+2 , … , xn , которая раньше всех обратиться в нуль при увеличении х1 , т.е. ту, для которой величина - bl / al,1 меньше всего. Пусть этой переменной будет хr . Тогда имеет смысл “пере разрешить” систему уравнений (1) относительно базисных переменных, выведя из числа свободных переменных х1 и переведя вместо нее в группу свободных переменных хr . Действительно, мы хотим перейти от допустимого базисного решения, задаваемого равенствами x1 = 0, x2 = 0, … xk = 0, к допустимому базисному решению, в котором уже x1 0, а x2 = 0, … xk = 0,хr = 0. Первое допустимое базисное решение мы получили, если обратим в нуль все новые свободные переменные x1, x2, … xk ; второе мы получим, если обратим в нуль прежние переменные x2, … xk, хr . Базисными переменными при этом будут x1,xk+1 , … ,хr-1, хr+1, … , хn .
Предположим, уравнения типа (1) для нового набора базисных и свободных переменных составлены. Тогда можно выразить через новые свободные переменные и целевую функцию z. Если все коэффициенты при переменных в этой формуле положительны, то мы нашли относительное решение: оно получится, если все свободные переменные положить равными нулю. Если среди коэффициентов при переменных есть отрицательные, то процедура улучшения решения продолжается: система вновь пере разрешается относительно других базисных переменных, и так далее, пока не будет найдено оптимальное решение, обращающее целевую функцию z в минимум, или не будет установлено, что целевая функция не ограничена снизу, т.е. задача ЛП не имеет решения.
Изложенное выше является содержанием симплекс-алгоритма. Суть симплекс-алгоритма состоит в установлении для имеющегося допустимого базисного решения является ли оно оптимальным. Если нет, то в указании как перейти к новому допустимому базисному решению, в котором значение целевой функции будет не больше, чем в предыдущем решении.
1.
Еще по теме Симплекс-алгоритм.:
- Симплекс-метод, общая характеристика. Основные идеи и их геометрическая иллюстрация.
- 36. Двойственный симплекс-метод. Основные идеи. Критерий оптимальности. Правило выбора очередного столбца, вводимого в базис.
- 38. Особенности применения и преимущества двойственного симплекс-метода.
- 47 Метод Гомори: основные идеи и краткое описание алгоритма. Экономический смысл введения дополнительного ограничения.
- Симплекс-метод решения задачи линейного программирования.
- Симплекс-алгоритм.
- Примеры использования симплекс-алгоритма для решения задачи линейного программирования.
- 6.5.3. Симплексный метод планирования
- 19. Задача о потоке наименьшей стоимости. Симплексный алгоритм.
- Квазиньютоновские алгоритмы.
- 11.7.Алгоритм конкурирующих точек