Главная > Математика > Исследование операций: задачи, принципы, методология
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

§ 9. Существование решения ОЗЛП и способы его нахождения

Рассмотрим основную задачу линейного программирования (ОЗЛП): найти неотрицательные значения переменных удовлетворяющие условиям-равенствам:

и обращающие в максимум линейную функцию этих переменных:

Для простоты предположим, что все условия (9.1) линейно независимы , и будем вести рассуждения в этом предположении .

Назовем допустимым решением ОЗЛП всякую совокупность неотрицательных значений удовлетворяющую условиям (9.1). Оптимальным назовем то из допустимых решений, которое обращает в максимум функцию (9.2). Требуется найти оптимальное решение.

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

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

Рис. 9.1.

Чтобы представить себе принципиальную сторону ОЗЛП, обратимся к геометрической интерпретации. Пусть число уравнений на два меньше числа переменных Такой частный случай дает возможность геометрической интерпретации ОЗЛП на плоскости.

Мы знаем, что линейно независимых уравнений (9.1) всегда можно разрешить относительно каких-то базисных переменных, выразив их через остальные, свободные, число которых равно (в нашем случае к ). Предположим, что свободные переменные — это (если это не так, то всегда можно заново перенумеровать переменные), а остальные: — базисные. Тогда вместо уравнений (9.1) мы получим тоже уравнений, но записанных в другой форме, разрешенных относительно

Будем изображать пару значений свободных переменных точкой с координатами (рис. 9.1). Так как переменные должны быть неотрицательными, то допустимые значения свободных переменных лежат только выше оси (на которой и правее оси (на которой ).

Это мы отметим штриховкой, обозначающей «допустимую» сторону каждой оси.

Рис. 9.2.

Рис. 9.3.

Теперь построим на плоскости область допустимых решений или же убедимся, что ее не существует. Базисные переменные тоже должны быть неотрицательными и удовлетворять уравнениям (9.3). Каждое такое уравнение ограничивает область допустимых решений. Действительно, положим в первом уравнении получим уравнение прямой линии:

На этой прямой по одну сторону от нее по другую — . Отметим штриховкой ту сторону (полуплоскость), где (рис. 9.2). Пусть эта сторона оказалась правее и выше прямой . Значит, вся область допустимых решений (ОДР) лежит в первом координатном угле, правее и выше прямой . Аналогично поступим и со всеми остальными условиями (9.3). Каждое из них изобразится прямой со штриховкой, указывающей «допустимую» полуплоскость, где только и может лежать решение (рис. 9.3).

Таким образом, мы построили прямых: две оси координат прямых . Каждая из них определяет «допустимую» полуплоскость, где может лежать решение. Часть первого координатного угла, принадлежащая одновременно всем этим полуплоскостям, и есть ОДР. На рис. 9.3 показан случай, когда ОДР существует, т. е. система уравнений (9.3) имеет неотрицательные решения.

Заметим, что этих решений — бесконечное множество, так как любая пара значений свободных переменных, взятая из ОДР, «годится», а из могут быть определены и базисные переменные.

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

Рис. 9.4.

Предположим, что область допустимых решений существует, и мы ее построили. Как же теперь найти среди них оптимальное?

Для этого дадим геометрическую интерпретацию условию . Подставив выражения (9.3) в формулу (9.2), выразим L через свободные переменные После приведения подобных членов получим:

где — какие-то коэффициенты, — свободный член, которого в первоначальном виде у функции L не было; теперь, при переходе к переменным он мог и появиться. Однако мы его тут же и отбросим: ведь максимум линейной функции L достигается при тех же значениях что и максимум линейной однородной функции (без свободного члена):

Посмотрим, как изобразить геометрически условие Положим сначала , и построим на плоскости прямую с таким уравнением, очевидно, она проходит через начало координат (рис. 9.5). Назовем ее «опорной прямой». Если мы будем придавать V какие-то значения прямая будет перемещаться параллельно самой себе; при перемещении в одну сторону U будет возрастать, в другую — убывать. Отметим на рис. 9.5 стрелками, поставленными у опорной прямой, то направление, в котором U возрастает.

На рис. 9.5 это оказалось направление «паправо — вверх», но могло быть и наоборот: все зависит от коэффициентов . Теперь изобразим опорную прямую и ОДР на одном чертеже (рис. 9.6). Давайте будем мысленно двигать опорную прямую параллельно самой себе в направлении стрелок (возрастания L). Когда U достигнет максимума? Очевидно, в точке А (крайней точке ОДР в направлении стрелок). В этой точке свободные переменные принимают оптимальные значения , а из них можно по формулам (9.3) найти и оптимальные значения всех остальных (базисных) переменных Заметим, что максимум V достигается в одной из вершин ОДР, где по крайней мере две из базисных переменных (в нашем случае это ) обращаются в нуль. Могло бы обращаться в нуль и больше базисных переменных, если бы через точку А проходило более двух прямых .

Рис. 9.5.

Рис. 9.6.

А может ли оказаться, что оптимального решения не существует? Да, может, если в ОДР функция V (а значит и L) не ограничена сверху. Пример такого ненормального случая показан на рис. 9.7 (в разумно поставленных задачах обычно такого недоразумения не возникает).

На рис. 9.6 оптимальное решение существовало и было единственным.

А сейчас рассмотрим случай, когда оптимальное решение существует, но не единственно (их бесконечное множество). Это случай, когда максимум V достигается не в одной точке A, а на целом отрезке АВ, параллельном опорной прямой (рис. 9.8). Такой случай встречается на практике, но нас он не должен волновать.

Рис. 9.7.

Рис. 9.8.

Все равно и в этом случае максимум U достигается в какой-то из вершин ОДР (А или В — безразлично), и в поисках оптимального решения можно ограничиться вершинами ОДР.

Итак, мы рассмотрели в геометрической интерпретации случай и убедились в следующем: оптимальное решение (если оно существует) всегда достигается в одной из вершин ОДР, в точке, где по крайней мере две из переменных равны нулю.

Оказывается, аналогичное правило справедливо и в случае (только геометрическая интерпретация теряет в этом случае свою наглядность). Обойдемся без доказательства, просто сформулируем это правило.

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

При такая совокупность значений изображается точкой на плоскости, лежащей в одной из вершин многоугольника допустимых решений (ОДР). При ОДР представляет собой уже не многоугольник, а многогранник, и оптимальное решение достигается в одной из его вершин. При геометрическая интерпретация теряет наглядность, но все же геометрическая терминология остается удобной.

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

Отсюда вытекает идея, лежащая в основе большинства рабочих методов решения ОЗЛП, — идея «последовательных проб». Действительно, попробуем разрешить уравнения (9.1) относительно каких-нибудь базисных переменных и выразим их через остальные к свободных. Попробуем положить эти свободные переменные равными нулю — авось повезет, наткнемся на опорную точку. Вычислим базисные переменные при нулевых значениях свободных. Если все они оказались неотрицательными, значит, нам повезло, мы сразу же получим допустимое (опорное) решение, и его остается только оптимизировать. А если нет? Значит, данный выбор свободных и базисных переменных допустимого решения не дает; точка лежит не на границе, а вне ОДР. Что делать? Надо «переразрешить» уравнения относительно каких-то других базисных переменных, но не как попало, а так, чтобы это приближало нас к области допустимых решений (для этого в линейном программировании существуют специальные приемы, на которых мы останавливаться не будем). Пусть, наконец, несколько раз повторив такую процедуру, мы нашли опорное решение ОЗЛП. Браво! Но это еще не все. Тут надо поставить вопрос: а является ли это решение оптимальным? Выразим функцию L через последние получившиеся свободные переменные и попробуем увеличивать их сверх нуля. Если от этого значение L только уменьшается, значит, нам повезло, и мы нашли оптимальное решение, ОЗЛП решена. А если нет? Снова «переразрешаем» систему уравнений относительно других базисных переменных, и снова не как попало, а так, чтобы, не выходя за пределы допустимых решений, приблизиться к оптимальному. И опять-таки для этого в линейном программировании существуют специальные приемы, гарантирующие, что при каждом новом «переразрешении» мы будем приближаться к оптимальному решению, а не удаляться от него.

На этих приемах мы тоже здесь не будем останавливаться. После конечного числа таких шагов цель будет достигнута — оптимальное решение найдено. А если его не существует? Алгоритм решения ОЗЛП сам покажет вам, что решения нет.

Читатель, может быть, спросит: только-то и всего? Зачем было придумывать хитрые методы решения ОЗЛП, может быть, надо просто перебрать, одну за другой, все возможные комбинации к свободных переменных, полагая их равными нулю, пока, наконец, не будет найдено оптимальное решение?

Действительно, для простых задач, где число переменных невелико, такой «слепой перебор» может привести к решению, и довольно быстро. Но на практике часто встречаются задачи, в которых число переменных (и наложенных условий) очень велико, порядка сотен и даже тысяч. Для таких задач простой перебор становится практически невозможным: слишком велико число комбинаций свободных и базисных переменных. Пример: только при и число возможных комбинаций свободных переменных с базисными равно , т. е. свыше 30 миллионов! А эта задача — далеко не из сложных.

Разработанные в теории линейного программирования вычислительные методы («симплекс-метод», «двойственный симплекс-метод» и другие, см. [4, 6,8]) позволяют находить оптимальное решение не «слепым» перебором, а «целенаправленным», с постоянным приближением к решению. Добавим, что современные ЭВМУ как правило, снабжены подпрограммами для решения задач линейного программирования, так что лицу, желающему их решать, нет даже особой надобности обучаться решению таких задач «вручную» — труд крайне неприятный и изнурительный.

<< Предыдущий параграф Следующий параграф >>
Оглавление