
Karmazin_-_Teoria_Igr_Uchebnik / P6_3
.DOCТема 6. РЕШЕНИЕ ЗАДАЧ
ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
ДВОЙСТВЕННЫМ СИМПЛЕКС-МЕТОДОМ
Из теории двойственности вытекает ряд методов решения задач линейного программирования. Синтез симплекс-метода (метода последовательного улучшения плана) и основных идей двойственности приводит к двойственному симплекс-методу (методу последовательного улучшения оценок).
Рассмотрим пару взаимно двойственных задач, прямую каноническую задачу линейного программирования
(1)
,
, (2)
(3)
и двойственную к ней:
, (4)
. (5)
Допустимое решение
двойственной задачи (т.е. удовлетворяющее
ограничениям (5)) будем называть опорным
планом, если
среди (5), которые
обращает в равенства, имеется
линейно независимых условий.
Базисом
опорного плана
назовем произвольную систему из
линейно независимых векторов столбцов
прямой задачи (1)
(3) ,
для которых
. (6)
Базис опорного плана двойственной задачи будем называть двойственным базисом.
Опорный план
называется невырожденным,
если для любого вектора
,
не входящего в его базис ,
.
С каждым опорным
планом
двойственной задачи (точнее с его
базисом) удобно связывать некоторый
-мерный
вектор
,
удовлетворяющий условиям (2) прямой
задачи. Такое соответствие позволит в
дальнейшем формулировать в терминах
прямой задачи все построения, относящиеся
к опорным решениям двойственной задачи.
Разложим вектор
ограничений
задачи (1)
(3) по двойственному базису
.
Обозначим соответствующие коэффициенты
разложения через
;
-мерный
вектор
,
-е
компоненты которого
совпадают с
,
а остальные равны нулю,
будем называть псевдопланом
прямой задачи. Компоненты
назовем базисными, а остальные
внебазисными.
Будем в дальнейшем пользоваться терминами
"двойственный базис" и "базис
псевдоплана" как синонимами.
Заметим, что некоторые из компонент псевдоплана могут быть отрицательными, так что он, вообще говоря, не является допустимым решением прямой задачи.
Псевдоплан можно
определять и независимо от двойственной
задачи. Пусть
произвольная система линейно независимых
векторов условий (2). Обозначим систему
индексов
через
,
разложим векторы условий
и вектор ограничений
по векторам
:
, (7)
. (8)
Введем такое обозначение:
. (9)
Теорема 1.
-мерный
вектор
,
для которого
,
а
при
,
является псевдопланом в том и только в
том случае,
если все
.
Рассмотрим некоторое
опорное решение
двойственной задачи. Базис опорного
решения
состоит из векторов
.
Ему соответствует
псевдоплан
с базисными компонентами
.
Теорема 2 (критерий
оптимальности псевдоплана). Если
псевдоплан
является допустимым решением задачи
(1)
(3), то он является её оптимальным опорным
решением.
Теорема 3
(об улучшении псевдоплана). Если для
псевдоплана
с положительными небазисными оценками
есть
такие, что среди
есть
,
то получим новый псевдоплан с меньшим
значением целевой функции, если выведем
из базиса вектор
и
введем в базис вектор
,
для которых выполняются условия
и
для всех
и
.
(10)
Теорема 4.
Если псевдоплан (но не допустимое опорное
решение) задачи (1)
(3) таков, что среди
есть хотя бы одно
,
и такое, что все
,
то данная задача линейного программирования
не имеет допустимых решений.
Алгоритм двойственного симплекс-метода
Теоремы 2
4, вместе взятые, дают основание
сформулировать алгоритм двойственного
симплекс-метода. Пусть имеется псевдоплан
задачи (1)
(3) и
его базис.
-
Проверяем условие:
. Если оно выполняется, то процесс решения задачи окончен: данный псевдоплан есть оптимальное опорное решение задачи (1) (3).
Если среди
есть отрицательные, то
-
Разлагаем все вектора
по базису рассматриваемого псевдоплана (иными словами, находим все числа
) и просматриваем поочередно все
для тех k, для которых
.
Если есть такое
,
что для него все
,
то процесс окончен: задача не имеет
допустимых решений.
Если таких
нет, то
-
Выбираем одну из
(пусть это будет
) и для неё вычисляем отношения
для всех
. Из этих соотношений выбираем минимальное по абсолютной величине (пусть это будет
). Переходим к новому псевдоплану, заменяя в базисе вектор
вектором
. Переходим к п.1, имея ввиду новый псевдоплан. Координаты нового псевдоплана и, если потребуется, числа
находим по основным симплекс-формулам. Оценки
для нового базиса находим по формуле (9) .
Каждый переход к новому базису будем называть итерацией двойственного симплекс-метода.
Пример 1. Решить двойственным симплекс-методом каноническую задачу линейного программирования, где
.
Найдем исходный псевдоплан непосредственно из двойственной задачи:
Вектор
=(0,
0, 0) удовлетворяет всем ограничениям
двойственной задачи и превращает три
последние из них (с явно линейно
независимыми векторами коэффициентов)
в равенства. Следовательно,
является опорным решением двойственной
задачи с базисом
.
Тогда этот базис определяет псевдоплан
прямой задачи. Найдем этот псевдоплан,
разложив вектор
по базису
(а значит решаем систему вида
):
О
.
Следовательно,
псевдоплан прямой задачи. Так как
не является допустимым, то оптимальное
решение не найдено. Следуя двойственному
симплекс-методу, заполняем исходную
симплекс-таблицу.
Таблица 1
|
№ |
Базис |
Сбаз |
A0 |
-1 |
-10 |
0 |
0 |
0 |
|
|
|
|
|
A1 |
A2 |
A3 |
A4 |
A5 |
|
1 |
A3 |
0 |
-2 |
"-2" |
1 |
1 |
0 |
0 |
|
2 |
A4 |
0 |
-1 |
-4 |
1 |
0 |
1 |
0 |
|
3 |
A5 |
0 |
-1/2 |
-1 |
-1 |
0 |
0 |
1 |
|
4 |
- |
- |
0 |
1 |
10 |
0 |
0 |
0 |
При этом числа
определяются также как и
,
только в правой части решаемой системы
находятся компоненты векторов
соответственно.
Первые три строки
соответствуют отрицательным координатам
рассматриваемого псевдоплана. В каждой
из них есть отрицательные
.
Следовательно, у нас нет основания
сделать вывод о недопустимости задачи.
Процесс необходимо продолжить.
Найдем вектор,
который следует вывести из базиса.
Выберем в качестве ведущей первую
строку, соответствующую наименьшей
отрицательной координате псевдоплана
().
Чтобы определить вектор, который следует
ввести в базис вместо вектора
,
найдем абсолютные величины отношений
оценок
к соответствующим им
для всех отрицательных
:
.
Получим
.
Следовательно, в нашем случае выбор
ограничен одним вектором. Таким образом,
в базис вводим вектор
.
Выводимый и вводимый векторы отмечены
стрелками. Ведущий элемент
(он выделен жирным шрифтом и отмечен
кавычками) стоит на пересечении ведущей
строки и столбца. Строим новую таблицу
(так же, как и в обычном симплекс-методе).
При этом учитываем, что целесообразно,
прежде всего, найти базисные координаты
нового псевдоплана, т.е. новые значения
элементов столбца
по основным симплекс-формулам. Получаем:
.
Так как все они неотрицательны, то
согласно критерию оптимальности
псевдоплана, имеем оптимальное решение
задачи :
.
Заполнять остальную часть таблицы нет необходимости, так как исходная задача решена.
Задание.
Решить двойственным симплекс-методом
каноническую задачу линейного
программирования для значений
,
и
заданных в 6.1
6.108.
6.1 A=; B=.
|
6.2 A=; B=.
|
6.3 A=; B=.
|
6.4 A=; B=.
|
6.5 A=; B=.
|
6.6 A=; B=.
|
6.7 A=; B=.
|
6.8 A=; B=.
|
6.9 A=; B=.
|
6.10 A=; B=.
|
6.11 A=; B=.
|
6.12 A=; B=.
|
6.13 A=; B=.
|
6.14 A=; B=.
|
6.15 A=; B=.
|
6.16 A=; B=.
|
6.17 A=; B=.
|
6.18 A=; B=.
|
6.19 A=; B=.
|
6.20 A=; B=.
|
6.21 A=; B=.
|
6.22 A=; B=.
|
6.23 A=; B=.
|
6.24 A=; B=.
|
6.25 A=; B=.
|
6.26 A=; B=.
|
6.27 A=; B=.
|
6.28 A=; B=.
|
6.29 A=; B=.
|
6.30 A=; B=.
|
6.31 A=; B=. |
6.32 A=; B=. |
6.33 A=; B=.
|
6.34 A=; B=.
|
6.35 A=; B=.
|
6.36 A=; B=.
|
6.37 A=; B=.
|
6.38 A=; B=.
|
6.39 A=; B=.
|
6.40 A=; B=.
|
6.41 A=; B=.
|
6.42 A=; B=.
|
6.43 A=; B=.
|
6.44 A=; B=.
|
6.45 A=; B=.
|
6.46 A=; B=.
|
6.47 A=; B=. |
6.48 A=; B=. |
6.49 A=; B=.
|
6.50 A=; B=.
|
6.51 A=; B=.
|
6.52 A=; B=.
|
6.53 A=; B=.
|
6.54 A=; B=.
|
6.55 A=; B=.
|
6.56 A=; B=.
|
6.57 A=; B=.
|
6.58 A=; B=.
|
6.59 A=; B=.
|
6.60 A=; B=.
|
6.61 A=; B=.
|
6.62 A=; B=.
|
6.63 A=; B=. |
6.64 A=; B=. |
6.65 A=; B=.
|
6.66 A=; B=.
|
6.67 A=; B=.
|
6.68 A=; B=.
|
6.69 A=; B=.
|
6.70 A=; B=.
|
6.71 A=; B=.
|
6.72 A=; B=.
|
6.73 A=; B=.
|
6.74 A=; B=.
|
6.75 A=; B=.
|
6.76 A=; B=.
|
6.77 A=; B=.
|
6.78 A=; B=.
|
6.79 A=; B=. |
6.80 A=; B=. |
6.81 A=; B=.
|
6.82 A=; B=.
|
6.83 A=; B=.
|
6.84 A=; B=.
|
6.85 A=; B=.
|
6.86 A=; B=.
|
6.87 A=; B=.
|
6.88 A=; B=.
|
6.89 A=; B=.
|
6.90 A=; B=.
|
6.91 A=; B=.
|
6.92 A=; B=.
|
6.93 A=; B=.
|
6.94 A=; B=.
|
6.95 A=; B=. |
6.96 A=; B=. |
6.97 A=; B=.
|
6.98 A=; B=.
|
6.99 A=; B=.
|
6.100 A=; B=.
|
6.101 A=; B=.
|
6.102 A=; B=.
|
6.103 A=; B=.
|
6.104 A=; B=.
|
6.105 A=; B=.
|
6.106 A=; B=.
|
6.107 A=; B=.
|
6.108 A=; B=.
|