xj = β > 0. Тогда решение системы x1 = f1 − hijβ, ..., xm = fm − hmjβ, xm+1 = 0, ..., xj = β, xj+1=0, ..., xn = 0 будет неотрицательным, то есть дает план при любом β > 0. По (12) F (X) = F (X0) − jβ и при
β → +∞ будет F (X) → +∞). Форма принимает сколь угодно большие значения и максимума не имеет. Утверждение доказано.
VII. Симплексный метод решения невырожденной канонической задачи линейного программирования
Каноническая задача линейного программирования называется невырожденной, если все ее опорные планы невырожденные.
Предположим, что найден невырожденный опорный план
Xo = (x01, ..., x0m, 0, ..., 0), то есть допустимое базисное решение системы ограничений. Ранее было показано, как можно переходить от одного допустимого базисного решения к другому. Пусть ключевой столбец имеет номер s, а ключевая строка - номер r.
Тогда новый план X0 будет иметь компоненты, задаваемые формулами (90), и остальные компоненты равные нулю.
По формуле (12)
F X0 |
|
F X0 |
) − |
|
x0 |
|
F X0 |
) − |
|
fr |
. |
|
|
|
|
|
|||||||
( |
) = |
( |
s |
s |
= |
( |
s hrs |
||||
Если оценка s отрицательна: |
s < 0, то F (X0) > F (x0) и, следовательно, |
||||||||||
новый план X0 лучше начального плана X0. Таким образом, если план X0 не оптимальный, то хотя бы одна свободная неизвестная имеет отрицательную оценку и, заменяя какую-либо базисную неизвестную на эту свободную, мы получаем лучший план, дающий нашей форме большее значение. Для такой замены нужно чтобы в ключевом столбце был хотя бы один положительный коэффициент. Если этого нет, то форма неограничена и не имеет оптимального плана. Следовательно, если оптимальный план есть, то описанные замещения можно произвести и, так как опорных планов конечное число (не более Cnm) через несколько последовательных замещений базисных неизвестных будет получен опорный оптимальный план.
Указанный метод нахождения оптимального плана называется симплексным методом.Этот метод в основном и применяется на практике.
Опишем подробно содержание симплексного метода.
1-й шаг: имея невырожденный опорный план, приводим систему ограничений методом Гаусса-Жордана к виду, разрешенному относительно базисных неизвестных, отвечающих данному опорному плану.
2-й шаг: вычисляем оценки всех свободных неизвестных. Если все оценки неотрицательны, то исходный план является оптимальным и задача решена. В случае отрицательных оценки и всех коэффициентов при соответствующей неизвестной в системе (6) оптимального плана нет и задача поставлена плохо.
3-й шаг: если имеется отрицательная оценка и в столбце коэффициентов при соответствующей неизвестной есть положительные коэффициенты,то этот столбец можно принять за ключевой. Составим отношения правых частей уравнений (6) к положительным элементам ключевого столбца.
За ключевую строку принимаем ту, для которой это отношение минимально. 4-й шаг: преобразованием Гаусса-Жордана из числа базисных выводится неизвестная с номером ключевой строки и вводится неизвестная с номером
ключевого столбца. Полученный таким образом новый опорный план будет лучше исходного.
Процесс продолжается до получения неотрицательных оценок всех свободных неизвестных или до тех пор,пока не убедимся, что оптимального плана вообще нет.
Из сказанного вытекает Первая теорема о разрешимости: если каноническая задача линейного
программирования на максимум имеет опорные планы, является невырожденной и линейная форма задачи ограничена сверху на множестве всех планов, то она разрешима.
Справедлива и более общая Вторая теорема о разрешимости: если каноническая задача линейного
программирования на максимум(минимум) имеет хотя бы один план и линейная форма задачи ограничена сверху(снизу), то она разрешима.
Вычислительный алгоритм симплексного метода
Выпишем формулы пересчета всех величин при переходе от одного опорного плана к другому с помощью преобразования Гаусса-Жордана:
1) новые коэффициенты системы
|
|
hrj |
|
|
|
hrj |
|||||
hrj0 |
= |
|
|
, hij0 |
= hij − |
|
|
|
his |
||
hrs |
hrs |
||||||||||
2) правые части |
|
|
|
|
|
|
|
||||
|
fr0 = |
fr |
, fi0 |
= fi − |
fr |
||||||
|
|
|
his |
||||||||
|
hrs |
frs |
|||||||||
= hij − hrj0 his |
= hrj0 |
|
1 |
|
, |
||
|
|
|
hij |
his |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= fi − fr0his = |
fr0 |
1 |
|
, |
|
|
|
|
|
fi |
his |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3) значения линейной формы для нового опорного плана
F (X0) = F (X0) − s hrs |
= F (X0) − |
sfr0 = |
(fr0 |
) |
1s , |
|
|
fr |
|
|
F X0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(13)
(14)
(15)
4) оценки для нового опорного плана.
Напомним, что оценка свободной неизвестной xj вычисляется так:
m
X
j = cihij−cj. Здесь суммирование ведется по всем номерам базисных
i=1
неизвестных. В новом плане введена базисная неизвестная xs и выведена неизвестная xr, поэтому новая оценка 0j будет иметь вид
m |
m |
Xi |
X |
j0 = cihij0 + cshrj0 |
− cj = ci(hij − hrj0 his) + cshrj0 − cj. |
i=1 |
i=1 |
6 |
6 |
=r |
i=r |
Здесь использованы формулы (13). Если в скобке, стоящей под знаком
суммы, положить i = r, получится hrj − hrj0 |
· hrs = hrj − |
hrj |
|
|
|
hrs |
= 0. |
||
hrs |
||||
Поэтому, добавляя к сумме нуль, можно считать что в ней имеется и слагаемое с i = r. Тогда, раскрывая скобки, находим
m |
|
|
m |
|
m |
X |
ci(hij −hrj0 his)+cshis0 +cshrj0 −cj = |
X |
|
Xi |
|
j0 = |
|
cihij −cj −hrj0 ( cihis−cs) |
|||
i=1 |
|
|
i=1 |
|
=1 |
или |
j0 = j − shrj0 = |
hrj0 |
1s . |
(16) |
|
|
|||||
|
|
|
j |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Если все оценки неотрицательны, то новый план X0 оптимальный и F (X0) = maxF (X). Если имеются отрицательные оценки и существует оптимальный план, следует повторить шаг процесса.
Однотипная структура всех формул (13) - (16) подсказывает удобную запись результатов всех вычислений в таблице (см. таблицу 3).
Объясним составление этой таблицы, называемой симплексной.
Во втором столбце Б выписаны базисные неизвестные, в первом С - коэффициенты линейной формы, стоящие при этих неизвестных. В
третьем столбце стоят правые части уравнений, разрешенных относительно базисных неизвестных, в следующих - коэффициенты при неизвестных в этих уравнениях. Предпоследний столбец Σ служит для контроля за вычислениями. Указанная в нем сумма коэффициентов при неизвестных и правой части уравнений преобразуется по тем же формулам, что и каждое ее слагаемое. При переходе к новому плану ее можно вычислить двумя способами: по формулам и непосредственно как сумму новых коэффициентов. Если вычисления правильные, оба результата должны совпадать.
В последнем столбце записаны величины, служащие для выбора ключевой строки. Напомним, что их вычисляют только для положительных his и за ключевую строку берут ту, для которой эта величина наименьшая.
Опишем получение последней строки таблицы: в ней записывают оценки свободных неизвестных, то есть суммы произведений ci на элементы
столбца, сложенные с величинами −cj, стоящими в самой верхней строке,
m
X
а F (X) = cifi.
i=1
После того как таблица составлена и выбран ключевой элемент hrs, следующий шаг симплексного метода делается так: 1) в первом столбце cr заменяется на cs, во втором xr -на xs; 2) коэффициенты ключевой строки во всех остальных столбцах, кроме последнего, делятся на hrs; 3) каждый новый коэффициент в остальных строках вычисляется как определитель второго порядка, у которого в левом верхнем углу записан старый коэффициент, в правом верхнем углу - коэффициент из той же строки и ключевого столбца, в левом нижнем углу - коэффициент из того же столбца и преобразованной ключевой строки, в правом нижнем углу 1 (правило прямоугольника); 4) контролируется правильность вычислений; 5) если среди оценок есть отрицательные, то выбирается новый ключевой столбец, заполняется последний столбец таблицы и находится ключевая строка. После чего начинается следующий шаг процесса.
Отметим, что в случае вырожденного опорного плана, метод замещения базисных неизвестных может привести к тому же плану. Этот случай мы не рассматриваем.
Симплексная таблица
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 3 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С |
|
Б |
|
f |
|
|
|
|
|
|
|
|
P |
|
|
fi |
|
|
|
x1 |
... |
xm |
xm+1 |
... |
xs |
... |
xn |
|
|
is |
|||||
|
|
−c1 |
... |
−cm |
−cm+1 |
... |
−cs |
... |
−cn |
|
|
|
h |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
1 |
... |
0 |
|
... |
|
... |
|
P |
|
|
|
|
c1 |
|
x1 |
|
f1 |
h1(m+1) |
h1s |
h1n |
f1 + |
h1j |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
j=1 |
|
|
|
|
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
0 |
... |
0 |
|
... |
|
... |
|
P |
|
|
|
|
cr |
|
xr |
|
fr |
hr(m+1) |
hrs |
hrn |
fr + |
hrj |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
j=1 |
|
|
|
|
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
0 |
... |
1 |
hm(m+1) |
... |
|
... |
|
Pn |
|
|||
cm |
|
xm |
|
fm |
hms |
hmn |
fm + |
hmj |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
j=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
0 |
... |
0 |
|
... |
|
... |
|
P |
|
|
|
|
|
F (X) |
|
m+1 |
s |
n |
F (X) + |
j |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
j=m+1 |
|
|||
Пример 4. Решить каноническую задачу линейного программирования
|
F (X) = 3x1 − 2x2 − x5 − max |
|
|
|
||||
|
−3x11 + 8x22 |
3 + x4 |
|
4x5 |
= 10 |
|
|
|
|
x + 2x + x |
|
+ 3x5 |
= 7 |
|
|
|
|
|
4x1 |
|
− |
2x5 + x6 = 12 |
|
|
|
|
Система |
|
|
− |
|
3 |
4 |
6 |
, |
|
ограничений уже разрешена относительно переменных x |
, x |
, x |
|||||
которые являются базисными переменными. Составим симплексную таблицу
|
|
|
|
|
|
|
|
|
|
|
Таблица 4 |
||
|
|
|
|
|
|
|
|
|
P |
|
fi |
|
|
|
|
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
|
|
|||
|
|
|
|
his |
|
|
|||||||
С |
Б |
f |
-3 |
2 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
x3 |
7 |
-1 |
2 |
1 |
0 |
3 |
0 |
12 |
|
|
|
|
0 |
x4 |
10 |
3 |
8 |
0 |
1 |
-4 |
0 |
18 |
10 |
|
|
|
3 |
|
|
|||||||||||
0 |
x6 |
12 |
4 |
0 |
0 |
0 |
-2 |
1 |
15 |
3 |
|
|
|
F (X0) = 0 |
-3 |
2 |
0 |
0 |
1 |
0 |
|
|
|
|
|
||
В последней строке таблицы оценка переменной x1 равна -3. Первый столбец выберем ключевым. Третья строка является ключевой, так как
min( |
10 |
, 3) = 3. Применяя симплексный метод, получаем следующую |
|||||||||||||||||||
3 |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 4а |
||
таблицу |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
0 |
x3 |
|
|
10 |
0 |
2 |
1 |
0 |
5 |
|
1 |
|
63 |
|
||||
|
|
|
|
|
2 |
|
4 |
|
4 |
|
|||||||||||
|
|
|
0 |
x4 |
|
|
1 |
0 |
8 |
0 |
1 |
|
5 |
3 |
27 |
|
|||||
|
|
|
|
|
|
2 |
4 |
4 |
|
||||||||||||
|
|
|
3 |
x1 |
|
|
3 |
1 |
0 |
0 |
0 |
− |
1 |
−1 |
15 |
|
|||||
|
|
|
|
|
− |
2 |
4 |
|
4 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
F (X |
1 |
) = 9 |
0 |
2 |
0 |
0 |
− |
1 |
3 |
|
45 |
|
||||||
|
|
|
|
|
2 |
4 |
|
4 |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-1 |
x5 |
|
|
4 |
0 |
4 |
2 |
0 |
1 |
1 |
|
63 |
|
|||||
|
|
|
|
|
5 |
5 |
|
10 |
|
10 |
|
||||||||||
|
|
|
0 |
x4 |
|
|
11 |
0 |
10 |
1 |
1 |
0 |
1 |
45 |
|
||||||
|
|
|
|
|
2 |
2 |
|
||||||||||||||
|
|
|
3 |
x1 |
|
|
5 |
1 |
2 |
1 |
0 |
0 |
−3 |
69 |
|
||||||
|
|
|
|
|
5 |
5 |
|
10 |
|
10 |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
F (X |
2 |
) = 11 |
0 |
12 |
1 |
0 |
0 |
4 |
|
72 |
|
|||||||
|
|
|
|
|
5 |
5 |
5 |
|
5 |
|
|||||||||||
Ответ: F (X2) = max F (X) = 11. Оптимальным планом является
X2 = (5, 0, 0, 11, 4, 0).