28.5. Симплекс-метод.
Реальные задачи
линейного программирования содержат, как правило, большое число ограничений и
неизвестных. Поэтому естественно, что решение таких задач связано с большим
объемом вычислений. Это затруднение преодолевается с помощью быстродействующих
электронно-вычислительных машин (ЭВМ). Для каждой задачи разрабатываются
алгоритм и программа, и затем ЭВМ в короткий срок дает решение поставленной
задачи.
Существуют и
другие общие методы, позволяющие найти решение любой задачи линейного
программирования в обозримое число шагов.
Таким является симплекс-метод.
Опишем идею этого метода.
Пусть надо найти
минимум линейной функции
(11)
Среди значений
, удовлетворяющих
равенствам
.
(4)
Неотрицательные
решения системы (4)
мы условимся называть допустимыми, а
точку
- допустимой
точкой. Покажем, как эту задачу можно решить, применяй симплекс-метод.
Пусть ранг
матрицы
равен
(
- ранг
). Будем считать, что
система (4) разрешима относительно
:
,
(12)
и числа
неотрицательны
.
В этом случае
говорят, что переменные
образуют базис - базис
. Остальные
переменные называются свободными или небазисными. Следует обратить внимание,
что здесь понятие базиса не совпадает с понятием базиса из § 16.
Вопрос о
возможности перехода от системы (4) к системе (12) будет рассмотрен ниже в п.
28.8.
Системы (4) и
(12) равносильны, поэтому допустимая точка
системы (4) есть допустимая точка
системы (12), и обратно.
Очевидно, точка
допустимая, ее
называют базисным решением, отвечающим базису
. Будем писать
. В силу равенств (12) функцию
можно
записать в виде линейной функции от переменных
:
.
(13)
Очевидно, что
.
Первый этап
симплекс-метода связан с рассмотрением функции
, определяемой равенством (13), и
системы ограничений в виде равенств (12).
Рассмотрим
четыре возможных случая
.
Случай
. Пусть
для всех
. Тогда минимум
, определяемой
равенством (13), относительно всех
, будет равен
:
Этот минимум
остается тем же для допустимых
. Этим задача на минимум решена.
Случай
. Пусть для некоторого
и все коэффициенты
матрицы
неположительны:
.
Тогда при любом
точка
.
(14)
где
вычисляются по
формулам (12), будет допустимой, и если ее подставить в
, то получим
при
. Поэтому
,
и нашу задачу о
минимуме можно считать решенной.
Случай
. Пусть для
некоторого
коэффициент
функции
положительный
и имеются
положительные коэффициенты
в
- м столбце матрицы
:
,
(15)
где
- множество индексов
, для
которых выполняется неравенство (15).
Пусть
.
(16)
Элемент
называется
разрешающим элементом.
Рассмотрим
отдельно случай
и
, которые
будем обозначать через
, и
соответственно.
Случай
. Точка (14) для значений
, удовлетворяющих неравенствам
,
допустимая. В самом деле, в силу (12) при
непосредственно видно, что
,
а при
в силу соотношений
(15), (16) имеем
.
Если
непрерывно
возрастает от
до
, то все
, а
к тому же
непрерывно убывает от
до
. При дальнейшем возрастании
переменная
становится
отрицательной и точка (14) перестает быть допустимой.
Функция
при возрастании
от
до
убывает от
до
, где
(17)
и
стоит на
- м месте.
Таким образом,
.
Отметим, что
координата
в
(17) равна нулю:
.
Так как
, то
- е уравнение
системы (12) можно решить относительно
:
(18)
Мы выразили
через
и остальные
переменные
.
Можно выразить через эти переменные также любую переменную
, если подставить выражение
(18) вместо
в
равенства (12), соответствующие любым
.
Итак, в случае
удается решить
систему (12) относительно переменных
(19)
Условно запишем
соответствующую систему равенств так:
,
(20)
хотя на самом
деле в этих равенствах только переменные
остались прежними, а переменные
и
поменялись местами.
Покажем, что
свободные члены
.
(21)
В самом деле,
если
, то
.
Если же
, то
и неравенства
(21) доказаны.
Итак, переменные
в системе
(20) образуют базис - базис
(см. также (19)).
Для базисного
решения
.
Базис
отличен от базиса
, и для него можно
начать второй этап рассуждений (случай
). Таким образом, случай
, рассмотрен.
Случай
. Пусть
для
. В этом случае
(см. (16)) и
равенство с номером
в (12) имеет вид
. (22)
Если в равенстве
(22) все коэффициенты
положительные, то система (12)
имеет единственное допустимое решение
. Значение функции
на этом базисном решении
будет:
.
Задача на минимум функции
в этом случае решена.
Допустим, что в
(22) имеются коэффициенты
для некоторого значения
. Тогда, как и в
случае
,
переходим к новому базису
(вводим в базис переменную
и выводим из него
,
- разрешающий элемент).
Отметим, что в этом случае значение
.
Итак,
рассматривая базис
,
мы либо решим нашу задачу на минимум, либо придем к новому базису
. К базису
снова применяем наш
метод - это приведет к решению задачи либо к новому базису
. Продолжая этот процесс,
получим цепочку базисов
. (23)
Если для
некоторого
будет
иметь место случай
или
, то
цепочка на этом
оборвется
и задача будет решена. Иначе от базиса
, переходим к базису
.
Однако может
случиться цикл. Он заключается в том, что хотя каждый последующий базис цепочки
и отличается от предыдущего, но для некоторых
и
будет происходить совпадение базисов:
.
Разберемся, что
здесь происходит. Для базиса
, произошел случай
, т. е. оказалось, что
существует
и
такое
,
что
, (24)
и это привело к
базису
.
Но пара чисел
, вообще говоря, неединственна,
и какая-то другая пара
, для которой выполняются свойства (24),
может привести к базису, отличному от базиса
. Это на самом деле и имеет место, как
учит теория (см. ниже теорему 1 и замечания к ней).
Таким образом,
если для некоторых
и
случится
цикл, то его можно устранить. В этом случае для базиса
надо перебрать всевозможные
пары
, обладающие
свойствами (24). Каждая такая пара приводит к некоторому базису. Среди них есть
отличный от базисов
.
28.6.
Устранение цикла.
На практике
циклы бывают очень редко. Все же объясним, как их можно «разорвать»
(устранить).
Отметим теорему,
доказательство которой будет намечено в п. 28.7.
Теорема 1. От
любого базиса
существует
путь, ведущий к решению задачи на минимум, т. е. существует цепочка базисов,
получаемых симплекс-методом, приводящая к минимуму (или к
).
Итак, пусть
имеем цикл
.
Тогда, очевидно,
.
Пусть
- наименьшее
неотрицательное целое число, для которого
Очевидно, для
базисов
(25)
имеет место
случай
.
Переход от любого из этих базисов
к последующему совершается посредством
разрешающего элемента
. Но базису
может
соответствовать и другой разрешающий элемент, который переводит
, в базис
, отличный от
.
Может случиться,
что для любого
базис
содержится
в цепочке (25). Тогда все базисы (25) решают задачу на минимум, т. е.
. Ведь по теореме 1
существует путь, ведущий от
к минимуму. Но в данном случае все пути
от
ведут к
базисам цепочки (25).
Однако может
случиться, что для некоторого
разрешающий элемент базиса
переводит
в базис
, не входящий в
цепочку (25). Тогда мы получим новую цепочку
(26)
с новым последним
базисом
,
который подлежит исследованию симплекс-методом.
Но указанных
значений
может
оказаться и много. Одна из цепочек может и не привести к нужному результату.
Необходимо произвести перебор всех цепочек. Отметим, что сам перебор цепочек
становится громоздким.
Если произошел
цикл, то можно порекомендовать специальный метод выбора разрешающего элемента.
Этот метод связан с дополнительными вычислениями, но зато последовательное его
применение необходимо приводит к решению задачи без зацикливания (без
образования циклов).