Алгоритм поиска опорного и оптимального решения

Геометрическая интерпретация, которой мы пользовались при решении задач линейного программирования, перестает быть пригодной для этой цели при числе свободных переменных n-m , а затруднительна уже при n-m=3. Для нахождения решения задачи линейного программирования в общем случае (при произвольном числе свободных переменных) применяются не геометрические, а вычислительные методы. Из них наиболее универсальным является так называемый симплекс-метод.

Идея симплекс-метода относительно проста. Пусть в задаче линейного программирования иметься n переменных и m независимых линейных ограничений, заданных в форме уравнений. Мы знаем, что оптимальное решение (если оно существует) достигается в одной из опорных точек (вершин ОДР), где, по крайней мере, k=n-m из переменных равны нулю. Выберем какие-то переменных в качестве свободных и выразим через них остальные m базисных переменных. Пусть, например, в качестве свободных выбраны первые k=n-m переменных х12,…,хk, а остальные m выражены через них:

(5.1)

Попробуем, что будет, если положить все свободные переменные х12,…,хk равными нулю:

При этом мы получим:

Это решение может быть допустимым или недопустимым. Оно допустимо, если все свободные члены βk+1, βk+2,…, βn неотрицательны. Предположим, что это условие выполнено. Тогда мы получили опорное решение. Но является ли оно оптимальным? Может быть да, а может быть и нет. Чтобы проверить это, выразим максимизируемую линейную функцию L через свободные переменные х12,…,х k:

(5.2)

Очевидно, что при х12=….=хk=0, L=γ0. Посмотрим, не можем ли мы улучшить решение, т.е. увеличить функцию L, увеличивая какие-нибудь из переменных х12,…,х k (уменьшить мы их не можем, так как все они равны нулю, а отрицательные значения переменных недопустимы). Если все коэффициенты γ1, γ2, …, γk в формуле (5.2) отрицательны, то, увеличивая какие-то из переменных х12,…,х k сверх нуля, мы не можем увеличить L; следовательно, найденное нами опорное решение является оптимальным. Если же среди коэффициентов γ1, γ2, …, γk в формуле (5.2) есть положительные, то, увеличивая некоторые из переменных х12,…,х k, а именно – те, коэффициенты при которых положительны, мы можем улучшить решение, т.е. увеличить L.

Пусть, например, коэффициент γ1 в формуле (5.2) положителен Значит, есть смысл увеличить х1, т.е. перейти от данного опорного решения к другому, где переменная х1 не равна нулю, а вместо нее равна нулю какая-то другая. Увеличение х1 «полезно» для линейной функции L, делает ее больше. Однако увеличивать х1 надо осторожно, так чтобы не стали отрицательными другие переменные хk+1k+2,…,хn, выраженные через свободные переменные, в частности, через х1 формулами (5.1).

Посмотрим, опасно ли для переменных хk+1k+2,…,хn увеличение х1, т.е. может ли оно сделать их отрицательными? Да, опасно, если коэффициент при х1 в соответствующем уравнении отрицателен. Если среди уравнений (5.1) нет уравнения с отрицательным коэффициентом при х1, то величину х1 можно увеличивать беспредельно, а, значит, линейная функция L не ограничена сверху и оптимального решения ОЗЛП не существует.

Допустим, что это не так и среди уравнений (5.1) есть такие, в которых коэффициент при х1 отрицателен. Для переменных, стоящих в левых частях этих уравнений, увеличение х1 опасно – оно может сделать их отрицательными.

Возьмем одну из таких переменных хi и посмотрим, до какой степени можно все же увеличить х1 пока переменная хi не станет отрицательной? Выпишем -е уравнение из системы (5.1):

Здесь свободный член βi ≥ 0, а коэффициент αi1 отрицателен. Легко понять, что если мы оставим х2=…=хk=0, то х1 мы можем увеличивать только до значения, равного - βi/ αi1 , а при дальнейшем увеличении х1 переменная хi станет отрицательной.

Выберем ту из перемeнных хk+1k+2,…,хn, которая раньше всех обратится в нуль при увеличении х1, т.е. ту, для которой величина - βi/ αi1 меньше всего. Пусть такая «наиболее угрожаемая» переменная будет хr. Тогда имеет смысл «переразрешить» систему уравнений (5.1) относительно других базисных переменных, выведя из числа свободных переменных х1 и переводя вместо нее в группу свободных переменных хr. Действительно, мы хотим перейти от опорного решения, задаваемого равенством х12=….=хk=0, к опорному решению, в котором уже х1 ≠0, х2=….=хkr=0. Первое опорное решение мы получили, положив равными нулю все прежние свободные переменные х12k; второе мы получим, если обратим в нуль все новые свободные переменные х2,…,хkr. Базисными переменными при этом будут х1, хk+1,…, хr-1, xr+1, …, xn.

Предположим, что уравнения типа (5.1) для нового набора базисных и свободных переменных составлены. Тогда можно выразить через новые свободные переменные и линейную функцию L. Если все коэффициенты при переменных в этой формуле отрицательные, то мы нашли оптимальное решение: оно получится, если все свободные переменные положить равными нулю. Если среди коэффициентов при переменных есть положительные, то процедура улучшения решения продолжается: система вновь переразрешается относительно других базисных переменных, и так далее, пока не будет найдено оптимальное решение, обращающее функцию L в максимум.

Проследим описанную процедуру постепенного улучшая решения ОЗЛП на конкретном примере.

Пример. Имеется задача линейного программирования с ограничениями-неравенствами:

(5.3)

Требуется максимизировать линейную функцию

Решение. Приводя неравенства к стандартному виду (≥0) и вводя добавочные переменные у123, переходим к условиям-равенствам:

(5.4)

Число переменных n=7 на 4 превышает число уравнений m=3. Значит, четыре переменных могут быть выбраны в качестве свободных.

Попробуем выбрать в качестве свободных переменных х1234 и положить их равными нулю. При этом мы сразу получим опорное решение: х1234 = 0; у1=2;у2=5;у3=7.

При этих значениях переменных L=0.

Посмотрим, является ли это решение оптимальным? Нет! Потому что в выражении линейной функции L коэффициент при х3 положителен. Значит, увеличивая х3 , можно увеличить L.

Попробуем увеличить х3 . Проследим по уравнению (5.4), опасно ли это для других переменных? Да, опасно для у1 и у2 – в оба эти уравнения переменная х3 входит с отрицательным коэффициентом, значит, при увеличении х3 соответствующие переменные у1 и у2 могут стать отрицательными.

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

Поэтому выбираем переменную у1 и вводим ее в число свободных вместо х3. Чтобы «переразрешить» систему (5.4) относительно новой базисной переменной х3:

.

Это выражение подставим вместо х3 во второе уравнение, получим

Что касается третьего уравнения, то оно, как не содержащее х3 не изменится. Итак, мы привели систему (5.4) к виду:

(5.5)

со свободными переменными х1214 и базисными х323.

Выразим линейную функцию L через новые свободные переменные:

L= -5х1+5х121+2

или

L= х21+2 (5.6)

Положим теперь свободные переменные равными нулю. Линейная функция L станет равной 2. Это уже лучше, чем прежнее значение L=0. Но является ли это решение оптимальным? Все еще нет, так как коэффициент при х2 в выражении (5.6) положительный. Итак, будем увеличивать х2. Посмотрим, для какой из переменных, стоящих в левых частях системы (5.5) это может быть «опасно». Только для у2 (в первом уравнении х2 входит с положительным коэффициентом, а в третьем совсем не входит).

Итак, обменяем местами переменные х2 и у2 – первую из числа свободных, а вторую – введем. Для этого разрешим второе уравнение (5.5) относительно х2 и подставим это х2 в первое уравнение. Получим еще один вид системы (5.4):

(5.7)

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

L= -3х1-2у21+2х4+8-у1+2

или

L= -3х1- 2у2-2х4+ 10. (5.8)

Полагая х1124 =0, получим L=10.

Является ли это решение оптимальным? На этот раз – да, так как коэффициенты при всех свободных переменных в выражении (5.8) отрицательны.

Итак, оптимально решение ОЗЛП найдено:

При таких значениях переменных линейная функция L принимает максимальное значение:

Заметим, что в рассмотренном примере нам не пришлось искать опорного решения: оно сразу же получилось, когда мы положили свободные переменные равными нулю. Это объясняется тем, что в уравнениях (5.4) все свободные члены были неотрицательны и, значит, первое же попавшееся решение оказалось опорным. Если же окажется не так, можно будет прийти к опорному решению с помощью такой же процедуры обмена местами некоторых базисных и свободных переменных, переразрешая уравнения до тех пор, пока свободные члены не станут неотрицательными. Как это делается, мы увидим в дальнейшем (смотри параграф 6).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: