- •Методы оптимизации в задачах большой размерности
- •Декомпозиция систем
- •Метод декомпозиции Данцига-Вульфа
- •Принцип декомпозиции
- •Описание алгоритма декомпозиции
- •Ограниченная координирующая задача
- •Варианты декомпозиции прямой задачи
- •10.2 Декомпозиция на основе разделения переменных
- •Метод разделения переменных Бендерса
- •10.3 Декомпозиция Корнаи-Липтака
- •10.4 Метод декомпозиции на основе агрегирования в задачах большой размерности.
- •Постановка и математическая модель задачи
- •Задача в агрегированных переменных
- •Локальная монотонность и сходимость метода.
- •Описание алгоритма агрегирования
- •Декомпозиция на основе агрегировання для общей модели отраслевого планирования.
- •10.5. Метод декомпозиции на основе агрегирования в задачах нелинейного программирования Задача квадратичного программирования
- •Задача выпуклого программирования
- •Описание алгоритма декомпозиции на основе агрегування для задач квадратичного программирования
Описание алгоритма декомпозиции
Дадим формальное описание алгоритма
декомпозиции Данцига-Вульфа для решения
задачи (29)-(32) (20). Пусть уже имеется
начальное допустимое базисное решение
задачи (18)-(21), которому соответствует
вектор разрешающих множителей
.
Каждая итерация алгоритма состоит из двух этапов.
Первый этап. 1. Используя вектор
оценок
предыдущей итерации, сформируем и решим
подзадачи (36)-(37) и найдем оптимальное
значение целевой функции, а также
соответствующие решения![]()
2. Вычислим минимальную оценку
(38)
3. Если
то
вычисление заканчивается и определяем
оптимальное решение задачи (29)-(32):
(39)
где
- предыдущее базисное решение координирующей
задачи, а
-крайняя точка
,
соответствующая базисной переменной
![]()
Если
то
переходим ко второму этапу.
Второй этап. Формируем столбец
который необходимо ввести в базис задачи
(18)-(21):
![]()
(.40)
Вводим вектор
в
базис, выполняем первый шаг симплекс-метода,
после чего находим новое допустимое
базисное решение:
![]()
а также новый вектор оценок
![]()
На этом итерация заканчивается и переходим к первому этапу очередной итерации.
Как видно из описания, алгоритм декомпозиции Данцига-Вульфа представляет собой двухуровневый алгоритм, где на первом уровне решаются подзадачи (36), (37), а на втором уровне - координирующая задача (18)-(21).
Если координирующая задача является невырожденной, то на каждой итерации значение целевой функции возрастает, и поскольку число базисов ее конечно и ни один из них не используется дважды, оптимальное решение находится за конечное число шагов.
Ограниченная координирующая задача
Как следует из приведенного выше описания алгоритма декомпозиции, оптимизационная задача в нем решается лишь на первом уровне, тогда как на втором фактически выполняется лишь одна итерация симплекс-метода. Однако возможна модификация этого метода, заключающаяся в решении оптимизационных задач на двух уровнях. В этом случае решается так называемая ограниченная координирующая задача, которая получается из координирующей задачи (18)-(21) в результате отбрасывания всех столбцов, за исключением базисных и претендующих на включение в базис на текущей итерации.
Такую ограниченную координирующую задачу можно представить в виде:
максимизировать
(41)
при ограничениях
![]()
(42)
где
-
переменные текущего базиса;
-
переменная, вводимая в базис (для нее
).
Если текущий базис является невырожденным,
то из него будет выведена переменная,
для которой
и полученное решение будет оптимальным.
Заметим, что возможны случаи, когда использование ограниченной координирующей задачи по сравнению с обычной координирующей задачей дает эффект.
Варианты декомпозиции прямой задачи
Существует много разных способов декомпозиции прямой задачи, каждый из которых приводит к своей форме координирующей и ограниченной координирующей задач.
Рассмотрим, например, вариант декомпозиции
для матрицы блочно-диагонального вида.
Обозначим решение системы
![]()
(43)
где
- крайние точки многогранника
;
![]()
Тогда координирующая задача будет иметь вид:
максимизировать
(44)
при ограничениях
(45)
(46)
где
![]()
Координирующая задача (44)-(46) отличается
от координирующей задачи (18)-(21). Во-первых,
она имеет не одно, а
ограничений
типа (46), во-вторых, решение для каждой
подсистемы
![]()
самостоятельно
выражается через переменные
,
тогда как в задаче (13)-(21) эти решения
рассматривались совместно. Применим
метод обратной матрицы с использованием
процедуры генерации столбцов для решения
задачи (44)-(46).
Пусть B- базисная матрица
размерности
а
- вектор относительных оценок для этого
решения (
-оценка ограничений (45), а
-
оценка дляi-го ограничения (46)).
Вычисляем теперь
оценки
для
векторов, соответствующих переменным
![]()
(47)
Для определения
при фиксированномIрешаем
подзадачу вида:
Минимизировать
(48)
при ограничениях
(49)
Если
![]()
то текущее решение - оптимально, в противном случае - в базис задачи (144)-(46) вводится переменная, для которой
(50)
Если
этот минимум достигается при
а
решение
подзадачи с индексомS,то в базис координирующей задачи
вводится столбец

где
-мерный вектор, все компоненты которого
равны 0, за исключением
-й
компоненты, равной 1.
Пример 1.Для иллюстрации метода декомпозиции рассмотрим задачу ЛП:
Максимизировать
(1)
при ограничениях
(2)
(3)
(4)
Эта
задача имеет одно связывающее ограничение
и два независимых блока. Области
допустимых решений неравенств обоих
подсистем представлены на рис. 10.1.
Разбиение задачи (1)-(4) может быть
осуществлено разными способами, и
каждому из них будет соответствовать
своя координирующая задача с определенным
типом ограничений вида
![]()
Воспользуемся видом ограничений и
построим ограниченную координирующую
задачу, которая будет иметь два
ограничения. Пусть
и
-
допустимые решения блоков (1) и (2)
соответственно.
Тогда справедливо соотношение:
и![]()
где
- крайние точки множеств
и
соответственно определяемые
ограничениями (3) и (4).
Целевая функция (1) в векторном виде запишется:
![]()
а связывающее ограничение:
![]()
где
![]()
Запишем теперь координирующую задачу:
Максимизировать
(5)
при условиях
(6)
(7)
(8)
(9)
Выберем
в качестве начального допустимого
базисного решения
,
, ![]()
Будем решать эту задачу методом обратной матрицы. Начальная симплекс-таблица будет иметь вид Табл. 10.1.
Таблица 1
|
С |
|
|
|
|
|
|
0 |
|
40 |
1 |
|
|
|
0 |
|
1 |
|
1 |
|
|
0 |
|
1 |
|
|
1 |
|
|
|
0 |
0 |
0 |
0 |
В
последней строке таблицы находятся
переменные
![]()
![]()
где
соответствует
ограничению (7);
-
ограничению (8), а
и
-
ограничению (9).
Первая итерация.
Первый этап. Составим и решим подзадачи, отвечающие начальному ДБР:
1) минимизировать
![]()
при
ограничениях ![]()
2) минимизировать
![]()
при
ограничениях
![]()
Оптимальные решения этих задач легко находятся графически и равны:
![]()

Найдем минимальные оценки векторов-столбцов:
![]()
Тогда
оптимальные решения подзадач
и
образуют
новые столбцы координирующей задачи,
которые имеют вид:

Второй этап. Запишем ограниченную координирующую задачу, используя ее текущий базис и эти столбцы:
максимизировать (14)
![]()
при условиях:

Для решения этой задачи используем
метод обратной матрицы, как наиболее
подходящий для реализации процедуры
генерации новых столбцов, и введем их
в исходное ограничение. Используя
ее, получим последовательность основных
таблиц 2-4 и вспомогательную таблицу 5,
где приводятся оценки
для
векторов задачи. Решение, полученное в
табл. 4 (цикл 2) , оказывается оптимальным,
так как для него все оценки
в
табл. 5 будут положительными. В табл. 2
вводится
а выводитсяS
|
Таблица 2 |
|
Таблица 3 | ||||||||||||||
|
|
|
|
|
|
|
|
Цикл |
|
|
|
|
|
|
|
Цикл | |
|
0 |
S |
40 |
1 |
|
|
25 |
|
0 |
S |
15 |
1 |
|
-25 |
22 |
| |
|
0 |
|
1 |
|
1 |
|
0 |
0 |
|
|
1 |
|
1 |
|
1 |
1 | |
|
0 |
|
1 |
|
|
1 |
|
|
|
|
1 |
|
|
1 |
0 |
| |
|
|
|
0 |
0 |
0 |
0 |
-25 |
|
|
|
25 |
|
|
25 |
-14 |
| |
|
Таблица 4 |
Таблица 5 | |||||||||||||
|
|
|
|
|
|
|
Цикл |
|
| ||||||
|
14 |
|
|
|
|
|
|
S |
|
|
|
|
Цикл | ||
|
0 |
|
|
|
1 |
|
2 |
0 |
1 |
0 |
-14 |
-25 |
0 | ||
|
0 |
|
1 |
0 |
|
1 |
|
0 |
0 |
25 |
-14 |
0 |
0 | ||
|
|
|
|
|
0 |
|
|
|
0 |
|
0 |
0 |
2 | ||
В результате получили новое оптимальное решение задачи:

При
этом значение целевой функции равно
![]()
Вторая итерация.
Первый этап. Из последней строки табл. 4 находим вектор оценок
![]()
Используем
это значение
для формирования целевых функций
подзадач.
Подзадача 1. Минимизировать
![]()
при
условии
![]()
Подзадача 2. Минимизировать
![]()
при
условии ![]()
Решив эти подзадачи, получим оптимальные решения
![]()
![]()
которым отвечают следующие минимальные оценки:

и столбцы

Так
как
то
необходимо перейти ко второму этапу.
Второй этап. Составим новую ограниченную координирующую задачу, которая включает базисные столбцы оптимального решения предыдущей задачи и новые столбцы:
минимизировать
![]()
при ограничениях

Решаем
эту задачу методом обратной матрицы,
использовав в качестве начального
базиса оптимальный базис предыдущей
координирующей задачи (табл. 10.4).
Результаты решения приводятся в табл.
10.6-10.8. В табл. 10.6 выводится
,
вводится
.
Табл. 10.8 является вспомогательной. В ней приведены только оценки векторов.
Таблица 10.6 Таблица 10.7

Таблица 10.8

Итак,
в результате решения координирующей
задачи получено новое решение:
.
Ему соответствует следующее решение
исходной задачи:
![]()
и
значение ц.ф.
.
Третья
итерация. Первый этап. Вектор оценок
имеет
вид (см.табл.10.7.):
![]()
Составим подзадачи.
Подзадача
1. Минимизировать
при
следующих ограничениях:
.
Подзадача
2. Минимизировать
при
следующих ограничениях:
.
Решив эти задачи находим оптимальные решения:
![]()
И значения минимальных оценок векторов:

Так
как они неотрицательны, то полученное
на второй итерации решение
является
оптимальным.
