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

Рассматривая симплекс-метод, мы предполагали, что задача линейного программирования является невырожденной, т.е. каждый опорный план содержит ровно img01 положительных компонент, где img02 – число ограничений в задаче. В вырожденном опорном плане число положительных компонент оказывается меньше числа ограничений: некоторые базисные переменные, соответствующие данному опорному плану, принимают нулевые значения.

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

img05Аналогично при img06 в вы­рож­денной задаче в одной вершине пересекается более 3-х плоскостей img07.

В предположении о невырож­ден­ности задачи находилось только одно значение, соответствующее минимуму img08, по кото­рому определялся индекс выводимого из базиса вектора условий (выводимой из числа базисных переменной).

В вырожденной задаче img09 может достигаться на нескольких индек­сах сразу (для нескольких строк). В этом случае в находимом опорном плане несколько базисных переменных будут нулевыми.

Если задача линейного програм­ми­рования оказывается вырожденной, то при плохом выборе вектора условий, выводимого из базиса, может возникнуть бесконечное движение по базисам одного и того же опорного плана. Так называемое явление зацик­ливания. Хотя в практических задачах линейного программирования зацикливание явление крайне редкое, возможность его не исключена.

Один из приемов борьбы с вырожденностью состоит в преобразовании задачи путем “незначительного” изменения вектора правых частей системы ограничений на величины img10, таким образом, чтобы задача стала невырож­денной и, в то же время, чтобы это изменение не повлияло реально на оптимальный план задачи.

Чаще реализуемые алгоритмы включают в себя некоторые простые правила, снижающие вероятность возникновения зацикливания или его преодоления.

Пусть переменную img11 необходимо сделать базисной. Рассмотрим мно­жество индексов img12, состоящее из тех img13, для которых достигается img14. Множество индексов img15, для которых выполняется данное условие, обозначим через img16. Если img17 состоит из одного элемента, то из базиса исключается вектор условий img18 (переменная img19 делается небазисной).

Если img20 состоит более чем из одного элемента, то составляется множество img21, которое состоит из img22, на которых достигается img23. Если img24 состоит из одного индекса img25, то из базиса выводится переменная img26. В противном случае составляется множество img27 и т.д.

Практически правилом надо пользоваться, если зацикливание уже обнаружено.


Hosted by uCoz