Общая теория симплекс-метода на базе линейной алгебры

 

Рассмотрим задачу линейного программирования

 

(2.17)
ai1x1 + ai2x2 + ... + ainxn = bi, i = 1, ..., m;

L = c0 +c1x1 + c2x2+ ... +cnxn → min, 0 ≤ xi.

 

Будем считать, что система уравнений (2.17) содержит r линейно независимых уравнений, где r ≤ m. Эти r переменных на первом шаге являются базисными переменными, т.е. определяют базис. Строго говоря, с практической точки зрения можно считать, что r = m, так как в противном случае равенства (2.17) или несовместны, или хотя бы одно из них представляет линейную комбинацию остальных и поэтому является лишним. Разрешив уравнения (2.17) относительно этих переменных, получим

i = 1, 2, ..., r.

(2.18)
Без потери общности можно считать, что независимы первые r уравнений (2.17). Предположим, что свободные коэффициенты bi неотрицательны. Каждое из этих уравнений можно рассматривать как проекцию векторного уравнения

на единичные векторы, направленные по координатным осям (ортам) 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 представляется в виде

(2.19)

В этой матрице первые 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.

Обсудим методы отыскания начальной вершины многоугольника.

Допустим, задача линейного программирования записана в виде

(2.20)
Ах = b;

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, которые являются допустимыми и соответствуют одной из вершин.

Иногда сразу удается выделить первый базис. Однако в общем случае это непростая задача.

(2.21)
Для каждого ограничения вводим вспомогательную переменную zi (i = 1, ..., m). Тогда ограничения системы (2.20) будут выглядеть как

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);

(2.22)
x6 = 2 – (-2x1 + 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.