Karmazin_-_Teoria_Igr_Uchebnik / P2_3
.DOCТема 2. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ СИМПЛЕКС-МЕТОДОМ
В данном разделе речь пойдет об основном методе решения задач линейного программирования симплекс-методе (методе последовательного улучшения плана). Для решения этим методом задачу надо привести к каноническому виду.
Канонической задачей линейного программирования будем называть следующую задачу:
(1)
, , (2)
, (3)
где заданные вещественные числа, причем ; искомые неизвестные. Предполагается, что .
Любую задачу линейного программирования можно привести к каноническому виду.
Функция , подлежащая максимизации, называется целевой функцией. Условия (2.2) и (2.3) называются ограничениями задачи.
Любой вектор , удовлетворяющий всем ограничениям (2.2), (2.3) , называется допустимым решением задачи, а совокупность всех допустимых решений допустимым множеством. Допустимое решение задачи называется ее оптимальным решением или решением , если
,
где D допустимое множество задачи. Множество всех оптимальных решений называется оптимальным. Величина называется оптимальным значением целевой функции или оптимумом.
Теорема 1. Допустимое и оптимальное множества задачи (1) (3) замкнуты и выпуклы, если не пусты.
Для формулировки метода решения задачи (1) (3) запишем ее в следующем виде:
,
,
³ 0, ,
где .
Допустимое решение называется опорным решением (опорным планом) задачи (1) (3), если векторы , соответствующие компонентам , в совокупности линейно независимы.
Опорное решение будем называть невырожденным, если оно имеет положительных компонент, и вырожденным в противном случае.
Любую совокупность мерных линейно независимых векторов, содержащую в качестве подсистемы все вектора , соответствующие положительным компонентам опорного решения , будем называть базисом опорного решения . Положительные компоненты опорного решения будем также называть базисными. Ясно, что базис невырожденного опорного решения определен однозначно.
Теорема 2. Для того чтобы точка являлась вершиной допустимого множества задачи (1) (3), необходимо и достаточно, чтобы вектор являлся опорным решением этой задачи.
Задача (1) (3) всегда имеет опорные решения, если её допустимое множество не пусто.
Соседним вершинам допустимого многогранника D (т.е. лежащим на одном и том же ребре) соответствуют опорные решения, базисы которых отличаются лишь одним вектором.
Пусть опорное решение задачи (1) (3) с базисом
. (4)
Обозначим через - ю координату вектора , в базисе (4). Ясно, что , ; , , , , .
В общем случае вектор является решением следующей системы линейных алгебраических уравнений:
. (5)
Для каждого вектора ( ) определим величину
, (6)
которую будем называть оценкой для Aj в базисе (4). Ясно, что .
Теорема 3 (критерий оптимальности опорного плана). Опорное решение тогда и только тогда является оптимальным решением задачи, когда все оценки .
Теорема 4 (признак неограниченности целевой функции задачи). Если для какого-нибудь опорного решения существует хотя бы одна оценка такая, что для неё все , то это означает, что целевая функция данной задачи линейного программирования, не ограничена сверху на допустимом множестве.
Пусть теперь для некоторого номера , система векторов
(7)
также является базисом в .
Обозначим через -ю координату вектора в базисе (7). Тогда имеют место основные симплекс-формулы:
(8)
Теорема 5 (о возможности улучшения опорного решения). Если для данного опорного решения есть такая отрицательная оценка , что среди координат вектора в данном базисе (т.е. среди чисел ) есть положительные, то базис, которому соответствует лучшее опорное решение, получим, заменив вектором тот вектор исходного базиса, для которого , причем для всех .
Теорема 6 (критерий единственности оптимального опорного решения). Если для данного опорного решения все оценки , причем нулевые оценки соответствуют только базисным векторам, то данное опорное решение является единственным оптимальным опорным решением задачи.
Алгоритм симплекс-метода
Пусть известно какое-нибудь опорное решение задачи (1) (3) с базисом (4).
-
Полагаем . Для находим , решая систему (5).
-
Для каждого вычисляем оценку по формуле (6), причем . Если все , то процесс решения задачи окончен. Рассматриваемое опорное решение оптимально. Оптимум целевой функции
. (9)
Если есть , то:
-
Выясняем, существует ли хотя бы одна такая , что все .
Если существует, то процесс решения задачи окончен целевая функция не ограничена сверху на допустимом множестве.
Если таких нет (т.е. для любой есть хотя бы одно ), то:
-
Выбираем одну из (например, для); вычисляем отношения для всех k, для которых , и найдем минимальное из этих отношений (пусть это будет ).
-
Осуществляем переход к новому опорному решению (базис которого получается заменой вектора в предыдущем базисе вектором ), вычислив координаты векторов в новом базисе по основным симплекс-формулам (8).
Переходим к шагу 2.
Каждый переход к новому базису называется итерацией симплекс-метода. В невырожденном случае через конечное число итераций процесс закончится либо на п.2 , либо на п.3. В вырожденном случае возможно зацикливание, но оно маловероятно.
Пример 1. Решить симплекс-методом задачу линейного программирования
Сначала приведем задачу к каноническому виду, для этого в каждое ограничение введем неотрицательные переменные , и заменим знаки неравенств на знаки равенств. В результате получим задачу линейного программирования, в канонической форме, эквивалентную исходной задаче.
(10)
.
О
Таблица 1
|
№ |
Базис |
Сбаз |
A0 |
6 |
7 |
0 |
0 |
0 |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
|
1 |
A3 |
0 |
3 |
3 |
-5 |
1 |
0 |
0 |
|
2 |
A4 |
0 |
39 |
5 |
3 |
0 |
1 |
0 |
|
3 |
A5 |
0 |
9 |
-5 |
"3" |
0 |
0 |
1 |
|
4 |
- |
- |
0 |
-6 |
-7 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
В колонке "Базис" перечислены наименования базисных векторов, эта последовательность векторов всегда должна образовывать единичную матрицу. В колонке "Сбаз" для удобства вычислений приведены значения коэффициентов целевой функции при базисных переменных, в алгоритме они обозначены символами , где k номер строки в таблице. В колонках табл. 1 содержатся коэффициенты системы ограничений-равенств (10). В алгоритме эти коэффициенты обозначены символами , где i номер строки в табл. 1, а индекс j соответствует индексу в столбце . В 4-й строке записываются значения и критериев , которые вычисляются по формулам (6).
Анализируя табл. 1 видим, что отрицательными оценками являются , причем является наименьшей из них: . Во всех столбцах с отрицательными присутствуют положительные элементы. Это означает, что данное опорное решение не оптимально и нет основания утверждать, что целевая функция задачи не ограничена сверху на допустимом множестве. Таким образом, вектор следует ввести в базис (этот факт отмечен стрелкой сверху). Затем ищем вектор, который следует вывести из базиса. Для этого находим отношения
Минимальное отношение =3. Следовательно, из базиса выводим третий (по занимаемому месту) вектор . Этот факт отмечен стрелкой слева. Ведущий элемент выделен жирным шрифтом и апострофами.
Заполняем симплекс-таблицу, соответствующую новому опорному решению. Для этого используем основные симплекс-формулы (8). При этом сначала заполняем 3-ю строку табл.2, полагая
|
№ |
Базис |
Сбаз |
A0 |
6 |
7 |
0 |
0 |
0 |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
|
1 |
A3 |
0 |
18 |
-16/3 |
0 |
1 |
0 |
5/3 |
|
2 |
A4 |
0 |
30 |
"10" |
0 |
0 |
1 |
-1 |
|
3 |
A2 |
7 |
3 |
-5/3 |
1 |
0 |
0 |
1/3 |
|
4 |
- |
- |
21 |
-53/3 |
0 |
0 |
0 |
7/3 |
Из табл. 2, видим, что отрицательной оценкой является , следовательно новый опорный план неоптимальный и его можно улучшить, если введем в базис вектор .
В столбце, соответствующем , только элемент второй строки положителен, следовательно выводим из базиса вектор . Выделяем ведущий элемент и заполняем следующую табл. 3.
Таблица 3
|
№ |
Базис |
Сбаз |
A0 |
6 |
7 |
0 |
0 |
0 |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
|
1 |
A3 |
0 |
34 |
0 |
0 |
1 |
8/15 |
17/15 |
|
2 |
A1 |
6 |
3 |
1 |
0 |
0 |
1/10 |
-1/10 |
|
3 |
A2 |
7 |
8 |
0 |
1 |
0 |
1/6 |
1/6 |
|
4 |
- |
- |
74 |
0 |
0 |
0 |
53/30 |
17/30 |
Сначала вычисляем элементы 2-й строки, затем элементы остальных строк. В новой симплекс таблице все неотрицательные, следовательно, получен оптимальный опорный план канонической задачи: , а максимальное значение целевой функции.
Оптимальным опорным решением исходной задачи является вектор .
Задание. Задачу линейного программирования из 1.11.104 привести к каноническому виду и решить симплекс-методом.