
Karmazin_-_Teoria_Igr_Uchebnik / P3_3
.DOCТема 3. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ СИМПЛЕКС-МЕТОДОМ
С ИСПОЛЬЗОВАНИЕМ ИСКУССТВЕННОГО БАЗИСА
Для начала работы симплекс-алгоритма необходимо знать некоторое опорное решение задачи. Поэтому обычно каноническую задачу (1) (3) из темы 2, введением искусственного базиса сводят к решению вспомогательной задачи линейного программирования с очевидным опорным решением, причем с единичным базисом.
Предположим, что задача записана в виде:
(1)
где
.
Здесь выделены переменные
с различными единичными векторами
( таких переменных может и не быть,
тогда
).
Рассмотрим вспомогательную задачу:
(2)
Здесь
некоторое достаточно большое положительное
число. Переменные
называются искусственными
переменными,
а соответствующие им единичные векторы
искусственными
векторами.
Задачу (2) будем называть M-задачей.
Легко видеть,
что задача (2) имеет опорное решение
с единичным базисом
.
Следовательно, можно использовать для
решения задачи (2) симплекс алгоритм.
При этом найти оптимальное решение или
убедиться в неограниченности целевой
функции M-задачи
можно,
не придавая M
конкретного значения.
В самом деле, и
критерий оптимальности опорного решения,
и признак неограниченности целевой
функции связаны со знаками оценок
,
вычисляемых по формуле из темы 2. Так
как среди коэффициентов целевой функции
задачи (2) есть коэффициенты вида M,
и так как M
не входит в коэффициенты ограничений,
то
можно представить в виде:
(3)
где
и
уже не зависят от M.
Из (3) видно,
что
(4)
Легко видеть также,
что номер s,
для которого
среди
,
определяется следующим образом:
для
или же,
если все
для
,
то
для
.
Теорема 1.
Если задача (2) имеет при достаточно
больших M
неограниченную сверху на допустимом
множестве целевую функцию, то целевая
функция задачи (1) также не ограничена
сверху на допустимом множестве, если
оно не пусто. Если же задача (2) разрешима
и
некоторое её оптимальное опорное
решение, то возможны два случая:
-
, тогда задача (1) не имеет допустимых решений;
-
, тогда вектор
является оптимальным опорным решением задачи (1).
Пример 1. Решить симплекс-методом каноническую задачу линейного программирования (2), где
Рассмотрим M-задачу:
Опорным решением
M-задачи
является вектор
с единичным базисом
.
Будем решать M-задачу
симплекс-методом. Результаты вычислений
оформляем в виде симплекс-таблиц. В
табл. 1 находится симплекс-таблица,
соответствующая опорному решению
.
Таблица 1
|
№ |
Базис |
Сбаз |
A0 |
6 |
-1 |
2 |
-1 |
1 |
-M |
-M |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
|
1 |
A6 |
-M |
2 |
-1 |
"1" |
1 |
0 |
0 |
1 |
0 |
|
2 |
A4 |
-1 |
11 |
5 |
2 |
1 |
1 |
1 |
0 |
0 |
|
3 |
A7 |
-M |
6 |
3 |
2 |
0 |
0 |
1 |
0 |
1 |
|
4 |
- |
- |
-11 |
-11 |
-1 |
-3 |
0 |
-2 |
0 |
0 |
|
5 |
- |
- |
-8 |
-2 |
-3 |
-1 |
0 |
-1 |
0 |
0 |
В данной таблице
в столбце
содержатся числа
а в 4-й и 5-й позициях этого столбца
числа
.
При этом числа
определяют по формуле (3),
а числа
по формуле
.
Анализируя табл.
1,
видим,
что отрицательными оценками являются
,
причем
наименьшая из них:
.
При этом ни для одной из отрицательных
оценок все числа соответствующего
столбца не являются неположительными.
Это означает,
что данное опорное решение не оптимально,
и нет основания утверждать, что целевая
функция задачи не ограничена сверху на
допустимом множестве. Таким образом,
вектор
следует ввести в базис (этот факт отмечен
стрелкой сверху). Затем ищем вектор,
который следует вывести из базиса. Для
этого находим отношения:
Минимальное
отношение
=2.
Следовательно, из базиса выводим первый
(по занимаемому месту) вектор
.
Этот факт отмечен стрелкой слева. Ведущий
элемент
выделен жирным шрифтом и кавычками.
Заполняем симплекс-таблицу, соответствующую новому опорному решению. Для этого используем основные симплекс-формулы. При этом, сначала, заполняем 1-ю строку таблицы, полагая
Из табл. 2 следует,
что текущий базис не оптимальный, в
новый базис вводим вектор
.
Находим отношения:
Следовательно,
и вектор
выводим из базиса.
Таблица
2
|
№ |
Базис |
Сбаз |
A0 |
6 |
-1 |
2 |
-1 |
1 |
-M |
-M |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
|
1 |
A2 |
-1 |
2 |
-1 |
1 |
1 |
0 |
0 |
1 |
0 |
|
2 |
A4 |
-1 |
7 |
7 |
0 |
-1 |
1 |
1 |
-2 |
0 |
¬ |
3 |
A7 |
-M |
2 |
"5" |
0 |
-2 |
0 |
1 |
-2 |
1 |
|
4 |
- |
- |
-9 |
-12 |
0 |
-2 |
0 |
-2 |
1 |
0 |
|
5 |
- |
- |
-2 |
-5 |
0 |
2 |
0 |
-1 |
3 |
0 |
Заполняем новую
симплекс-таблицу. При этом обращаем
внимание на то,
что новый базис не содержит искусственных
базисных векторов (т.е.
и
),
а значит 5-я строка симплекс-таблицы не
нужна (она будет состоять из нулей) и
столбцы
,
не нужны и в дальнейшем не используются.
Таблица 35
|
№ |
Базис |
Сбаз |
A0 |
6 |
-1 |
2 |
-1 |
1 |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
|
1 |
A2 |
-1 |
12/5 |
0 |
1 |
3/5 |
0 |
1/5 |
¬ |
2 |
A4 |
-1 |
21/5 |
0 |
0 |
"9/5" |
1 |
-2/5 |
|
3 |
A1 |
6 |
2/5 |
1 |
0 |
-2/5 |
0 |
1/5 |
|
4 |
- |
- |
-21/5 |
0 |
0 |
-34/5 |
0 |
2/5 |
|
|
|
|
|
|
|
|
|
¯ |
¬ |
1 |
A2 |
-1 |
1 |
0 |
1 |
0 |
-1/3 |
"1/3" |
|
2 |
A3 |
2 |
7/3 |
0 |
0 |
1 |
5/9 |
-2/9 |
|
3 |
A1 |
6 |
4/3 |
1 |
0 |
0 |
2/9 |
1/9 |
|
4 |
- |
- |
35/3 |
0 |
0 |
0 |
34/9 |
-10/9 |
|
|
|
|
|
|
|
|
|
|
|
1 |
A5 |
1 |
3 |
0 |
3 |
0 |
-1 |
1 |
|
2 |
A3 |
2 |
3 |
0 |
2/3 |
1 |
1/3 |
0 |
|
3 |
A1 |
6 |
1 |
1 |
-1/3 |
0 |
1/3 |
0 |
|
4 |
- |
- |
15 |
0 |
10/3 |
0 |
8/3 |
0 |
Указанный факт
означает, что получено опорное решение
непосредственно исходной задачи и
дальнейшие итерации симплекс-метода
состоят в его улучшении (т.е. решается
непосредственно исходная, а не M-задача).
Из табл. 3 следует,
что все оценки
неотрицательны,
а значит на 4-й итерации симплекс-метода
получено оптимальное опорное решение
x*
= (1, 0, 3, 0, 3), а оптимум
l*
= 15. Заметим, что нулевые оценки в последней
таблице соответствуют только базисным
векторам. Откуда следует единственность
оптимального опорного решения в данной
задаче.
Задание. В задачах 3.1 3.102 для заданных
,
и
решить симплекс-методом
каноническую задачу линейного
программирования
;
3.1 A=; B=.
|
3.2 A=; B=.
|
3.3 A=; B=.
|
3.4 A=; B=.
|
3.5 A=; B=.
|
3.6 A=; B=.
|