Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Линейное программирование Часть 2.doc
Скачиваний:
53
Добавлен:
16.08.2019
Размер:
1.63 Mб
Скачать

5.4. Двойственный симплекс-метод

Трудоемкость решения конкретной задачи симплекс-методом в боль­шей степени зависит от количества m ее ограничений, чем от количества n переменных (эксперименты показали, что при m<n число итераций обычно колеблется от 2m до 3m). Поэтому, если m>>n, то лучше решать не прямую задачу, а двойственную к ней. Двойственную задачу целесообразно ре­шать также и в случае, когда начальное опорное решение прямой задачи не оче­видно, а двойственной - очевидно (такой является классическая задача о диете). При решении задач целочисленного линейного программирования, обоб­щенного линейного программирования, анализе моделей на чувствительность и т.д. возникают серии линейных задач, получающихся одна из другой добавлением ограничений или изменением правых частей ограничений. Двой­ственный симплекс-метод позволяет не начинать решение каждой задачи сна­чала, а использовать оптимальную симплекс-таблицу предыдущей задачи. В литературе двойственный симплекс-метод иногда называют также методом последовательного уточнения оценок.

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

(8)

Перейдем к каноническим формам

(9)

Симплекс-таблица 2 двойственной задачи (с точностью до обозначения переменных ) получается транспонированием симплекс-таблицы 1 прямой задачи и умножением матрицы ограничений A на (-1). Как уже было от­мечено в п.5.2, решая одну из задач двойственной пары, мы одновременно решаем и другую. Если алгоритм решения двойственной задачи симплекс-ме­тодом переформулировать относительно симплекс-таблицы прямой задачи, то получается двойственный симплекс-метод.

Таблица 1 Таблица 2

x

y

u

+

A

=

b

v

+

-AT

=

-c

f

-c

=

0

b

=

0

Целевая функция прямой задачи двойственной пары ( 9) не содержит ба­зисных переменных . Если прямая задача имеет более общий вид

то рассмотренный выше частный случай можно получить выбрав базис (не­вырожденную mm подматрицу) B матрицы A и выразив базисные переменные через небазисные . Преобразованная задача принимает вид

(10)

где векторы , b и матрица A зависят от выбора базиса. Базис B, соответствующее ему базисное решение и симплекс-таблица называются прямо (двойственно) допустимыми, если b0 (0). Прямо и двойственно допустимое решение является оптимальным. Двойственно допустимое базисное решение называется также псевдорешением или псевдопланом.

В таблице 3 дано сравнительное описание основных этапов прямого и двойственного симплекс-методов для задачи (10). Для наглядности используются одинаковые обозначения для коэффициентов исходной и преобразованных задач.

Таблица 3

ПРЯМОЙ

ДВОЙСТВЕННЫЙ

1

Требование к начальной симплекс-таблице

b0

0

2

Условие оптимальности

0

b0

3

Выбор ведущего столбца (s)

Выбор ведущей строки (r)

4

Условие неразрешимости

7

Выбор ведущей строки (r)

Выбор ведущего столбца (s)

Таким образом, двойственный симплекс-метод начинает с двойствен­но допустимого базисного решения и сохраняет его двойственную допустимость на протяжении всех итераций. Двойственный симплекс- метод реализуется посредством таких же таблиц, что и прямой симплекс-метод. Сначала определяется, какая переменная должна быть выведена из базиса, а затем - какая должна быть введена в базис. Заметим, что ведущими элементами могут быть только отрицательные числа.

При переходе от одной итерации к следующей значение целевой функции монотонно убывает (для вырожденной задачи - монотонно не возрастает). Следовательно, в отличие от прямого симплекс-метода, где приближение к максимуму целевой функции происходит снизу, в двойственном симплекс-методе приближение к оптимуму осуществляется сверху. Иногда, при большом количестве ограничений и переменных, для решения одной и той же задачи используют одновременно оба метода и, если разность между соответствующими значениями целевой функции достаточно мала, вычисления прекращают, считая полученное прямым симплекс-методом решение приближенным оптимумом исходной задачи.

Пример 11. Решить двойственным симплекс-методом следующую задачу:

Перейдем к канонической форме

Начальная симплекс-таблица 4 двойственно допустима (все относительные оценки неотрицательны), но не является прямо допустимой, т.к. b1 = - 3< 0, b2 = - 6 < 0. Для вывода из базиса выбирается переменная x5 (вторая строка таблицы 4 - ведущая). Поскольку,

,

то для ввода в базис выбирается переменная x2 (второй столбец таблицы 4 - ведущий). Таблица 5 оптимальна, т.к. удовлетворяет условию прямой и двойственной допустимости; -опти­маль­ное решение; - оптимальное значение целевой функции.

Таблица 4 Таблица 5

-1 -1

1

0

4

-3 -4

-4 -3

1 1

=

=

=

-3

-6

3

7/3 -4/3

4/3 -1/3

-1/3 1/3

=

=

=

5

2

1

f

2 1

=

9

f

2/3 1/3

=

7

Нахождение двойственно допустимого базисного плана (псев­до­пла­на). Процесс решения задачи линейного программирования двойственным симплекс-методом начинается с двойственно допустимого базиса и соответствующего ему плана. Для большинства практических задач определение такого базиса не представляет труда. Тем не менее, существуют задачи, для которых построение начального псевдоплана требует не меньше вычислений, чем поиск оптимального плана.

Рассмотрим два частных случая.

  1. Если задача линейного программирования имеет вид

то целевая функция обычно характеризует затраты и все ее коэффициенты - неотрицательные числа. Двойственно допустимый базис в этом случае очевиден. Это единичная матрица порядка m , соответствующая дополнительным переменным, необходимым для приведения задачи к каноническому виду.

2. Пусть в задаче (10) базисное решение не является двойственно допустимым, т.е. существуют отрицательные относительные оценки . Физический смысл задачи или особенности ограничений часто позволяют определить верхние границы соответствующих переменных .

Для получения начального псевдоплана достаточно перейти к переменным

. (11)

После подстановки их в целевую функцию и ограничения задачи (10), получаем задачу

;

;

где

; ;

.

Все относительные оценки преобразованной задачи неотрицательны, следовательно ее начальный псевдоплан очевиден.

Преобразование (11) легко осуществляется с помощью симплекс-таблиц. Предположим вначале, что задача (10) имеет единственную отрицательную оценку и построена начальная симплекс-таблица, соответствующая базисному решению .

Замене соответствуют следующие преобразования симплекс-таблицы:

а) из последнего столбца вычитается столбец, соответствующий переменной , умноженный на ;

б) столбец, соответствующий , умножается на (-1).

Если задача (10) имеет несколько отрицательных оценок , то описанные выше преобразования симплекс-таблицы нужно выполнить для каждого .

Пример 12. Решить двойственным симплекс-методом следующую задачу:

Начальная симплекс-таблица 6 не является ни прямо ни двойственно допустимой. Из 1-го ограничения исходной задачи и неотрицательности переменных следует, что . Таким образом, нужна замена (таблица 7) и (таблица 8). Таблица 8 двойственно допустима, но не является прямо допустимой. После двух

итераций двойственного симплекс-метода получаем оптимальную таблицу 10.

Таблица 6 Таблица 7

1 1

-1 -1

1 -1

-4 -1

=

=

=

=

5

-3

4

-4

-1 1

1 -1

-1 -1

4 -1

=

=

=

=

0

2

-1

16

f

-2 -1

=

0

f

2 -1

=

10 10

Таблица 8 Таблица 9

-1 -1

1 1

-1 1

4 1

=

=

=

=

- 5

7

4

21

1 -1

0 1

-2 1

3 1

=

=

=

=

5

2

-1

16

f

2 1

=

15

f

1 1

=

10 10

Таблица 10

1/2 -1/2

0 1

-1/2 -1/2

3/2 5/2

=

=

=

=

9/2

2

1/2

29/2

Находим оптимальное решение

и оптимальное значение задачи

.

f

1/2 3/2

=

19/2

Алгоритм нахождения начального псевдоплана для задачи линейного программирования общего вида описан в [1]. С помощью несложных преобразований находится допустимое решение двойственной задачи. Если оно не является опорным, то применяется градиентный алгоритм для перехода от неопорного к опорному решению. Полученное опорное решение двойственной задачи определяет базис псевдоплана исходной задачи. Соответствующий псевдоплан, как правило, является достаточно близким к оптимальному.