Общая теория симплекс-метода на базе линейной алгебры
Рассмотрим задачу линейного программирования
|
L = c0 +c1x1 + c2x2+ ... +cnxn → min, 0 ≤ xi.
Будем считать, что система уравнений (2.17) содержит r линейно независимых уравнений, где r ≤ m. Эти r переменных на первом шаге являются базисными переменными, т.е. определяют базис. Строго говоря, с практической точки зрения можно считать, что r = m, так как в противном случае равенства (2.17) или несовместны, или хотя бы одно из них представляет линейную комбинацию остальных и поэтому является лишним. Разрешив уравнения (2.17) относительно этих переменных, получим
i = 1, 2, ..., r.
|
на единичные векторы, направленные по координатным осям (ортам) p1, p2, ..., pr, где
p1 = (1,0,...,0);
p2 = (0,1,0,...,0);
pr = (0,0,...,1).
Векторы p1, p2, ..., pr образуют базис в m-мерном пространстве (рис. 2.8). При этом матрица разложений векторов p0, p1, p2,..., pn в базисе p1, p2, ..., pr представляется в виде
|
В этой матрице первые r столбцов представляют собой орты системы координат. Столбец r+1 состоит из свободных членов ограничений. Последние n–r столбцов состоят из компонент проекций вектор-столбцов pr+1, ..., pn на орты p1, p2, ..., pr. В целом матрица состоит из n + 1 вектор-столбцов с m компонентами каждый.
Рис. 2.8. Геометрическая интерпретация базисных переменных для трехмерного случая
Cимплекс-таблица теперь примет вид.
Таблица 2.5
xr+1 | … | xn | ||
x1 | b1 | a1,r+1 | ... | a1n |
x2 | b2 | a2,r+1 | ... | a2n |
. | . | |||
. | . | |||
. | . | |||
xr | bm c0 | ar,r+1 c1 | ... ... | arn cn |
Причем, соотношение для L запишется как
L = c0 – , j = 1, 2, ..., r.
После процедуры включения в базис небазисных переменных и исключения базисных, отвечающих ряду требований, получим группу векторов p1, p2, ... , pi1, ..., pr образующих новый базис. Их определитель, записанный в старой системе координат, отличен от нуля.
Следовательно, эти векторы независимы и могут быть выбраны за новый базис. Повторяя этот процесс до тех пор, пока все числа в последней строке симплекс-таблицы 2.5 станут неположительны, получим оптимальное решение. Еще раз напомним, что в практически важных случаях r = m.
Обсудим методы отыскания начальной вершины многоугольника.
Допустим, задача линейного программирования записана в виде
|
Cx → min;
x ³ 0,
где b ³ 0; C = ||c1, c2, ..., cn||. Стартовый базис считается найденным, если ограничения, содержащиеся в задаче (2.20), записаны как
xv = bv – (av,m+1xm+1+ ... + avnxn), v = 1, 2, ..., m,
где bv ³ 0, так как, положив небазисные переменные xm+k = 0 (k = 1, 2, ..., n–m), получим значения xv = bv ³ 0, которые являются допустимыми и соответствуют одной из вершин.
Иногда сразу удается выделить первый базис. Однако в общем случае это непростая задача.
|
Ax + z = b; x ³ 0, z ³ 0.
Без нарушения общности считаем, что b неотрицательна, так как этого всегда можно достигнуть, поменяв соответствующие знаки в строках матрицы А. Поэтому допустимым базисным решением будет х = 0, z = b. Соответствующая симплекс-таблица на первом шаге запишется в виде
z = b – Ax,
т.е. за базис взят вектор z.
На первом шаге минимизируется функция цели ∑zj при ограничениях (2.21). Непосредственно из этих ограничений следует, что если минимум функции ∑zj является положительной величиной, то система (2.21) не имеет неотрицательных решений, для которых z1,...,zm =0, так как в противном случае min∑zj = 0. Это означает, что исходная система (2.21) не имеет неотрицательных решений. Если min∑zj = 0, т.е. zj = 0 для всех j, то вектор zявляется базисным. Отправляясь от этого базиса, мы стремимся прийти к базису, не содержащему ни одной вспомогательной переменной:
xv = bv – (av,m+1xm+1 + ... + avnxn + av1z1 + ... + avmzm), v = 1, 2, ..., m,
где bv ³ 0. Полагая в системе (2.21) zj = 0, придем к системе
xv = bv – (av,m+1xm+1 + ... + avnxn), v = 1, 2, ..., m,
которая равносильна исходной (2.20). Но здесь х1, х2, ..., xm – базисные переменные. Следовательно, задача нахождения базиса решена. Может получиться, что при переходе от базиса z1, z2, ..., zm к следующему эти переменные будут оставаться в следующем базисе. Тогда необходимо постепенно их перевести в небазисные.
Если среди неизвестных х1, х2, ..., xm имеется такая переменная, например х1, которая входит только в одно уравнение, например в первое, причем коэффициент при этой переменной a11 имеет тот же знак, что и свободный член b1, тогда не имеет смысла вводить для первого уравнения искусственную переменную, так как х1 сразу войдет в базис. Действительно, первое уравнение можно представить в виде
x1 = b′1 – (a′12x2 + ... + a′1nxn),
где b′1 = b1/a11 ³ 0. Если таких неизвестных несколько, то все их можно сразу включить в базис.
Пример. Дана система
x1 – 2x2 + x3 = 2;
–x1 – 4x2 + x4 = –8;
x1 + x2 + x5 = 10;
–2x1 + x2 + x6 = 2,
рассмотренная в примере ранее. Так как x3, х5, х6 входят каждая только в одно ограничение и коэффициенты при них имеют тот же знак, что и соответствующие свободные члены, включаем их сразу в базис. Для оставшегося ограничения вводим искусственную переменную z1. В итоге получаем:
x3 = 2 – (x1 – 2x2);
x5 = 10 – (x1 + x2);
|
z1 = 8 – (x1 + 4x2 – x4);
x1 ³ 0; z1 ³ 0.
С помощью симплекс-метода требуется минимизировать форму
L1 = z1 = 8 – (x1 + 4x2 – x4)
при ограничениях (2.22). Составляем симплекс-таблицу на первом шаге.
Таблица 2.6
x1 | x2 | x4 | ||
x3 x5 x6 z1 L1 L | –2 | –2 –1 | –1 –1 –1 |
Необходимо минимизировать L. Опорный элемент выбираем на пересечении строки x3 и столбца x1. После первого шага получаем базис (х1, х5, x6, z1). На втором шаге опорный элемент выбирается на пересечении строки z1 и столбца x4, поэтому искусственная переменная z1 выводится из базиса. При этом L1 = 0. Таким образом, базис найден и состоит из х1, х2, x5, x6:
x1 = 4 – 2/3x3 + x4;
x2 = 1 + 1/6x3 + 1/6x4;
x5 = 5 + 1/2x3 – 1/2x4;
x6 = 9 – 3/2x3 + 1/2x4;
L = –15 + 17/6x3 – 7/6x4.