- Разложение Данцига-Вулфа
-
Метод декомпозиции Данцига и Вульфа представляет собой специализированный вариант симплекс-метода.
В 1960 г. Данциг и Вульф разработали метод декомпозиции для решения задач высокой размерности со специальной структурой матрицы ограничений [1].
Этот метод оказался наиболее эффективным для решения задач, матрица ограничений которых имеет блочно-диагональный вид с небольшим числом переменных. Однако, как показали дальнейшие исследования, метод применим также и для задач ЛП с матрицей общего вида. Соответствующий метод предложен Д.Б.Юдиным и Э.Г.Гольштейном и называется 'блочным программированием'.
Отличительной особенностью метода декомпозиции является использование координирующей задачи, которая имеет, по сравнению с исходной, небольшое число строк и большое число столбцов.
Содержание
Метод генерации столбцов
Существенным является то, что для решения координирующей задачи не требуется задания всех столбцов в явном виде. Они генерируются в процессе использования симплекс-метода. Такой подход называют методом генерации столбцов.
Достаточно уметь генерировать столбец и иметь процедуру, выбирающую столбец для ввода в базис.
Часто такая процедура сводится к решению определенной подзадачи (не обязательно линейного программирования).
Принцип декомпозиции
Лемма Пусть
- непустое замкнутое ограниченное множество,
- его крайние точки. Тогда любая точка
может быть представлена в виде выпуклой комбинации крайних точек множества R, т.е.(1)
, где
,
.Пусть поставлена задача
Максимизировать
(2)
![c[N] x[N]](2a159c152cc13d3931c541f157c9d636.png)
при ограничениях
(3)
![A[M_1,N] x[N] = b[M_1]](1e9b8198ad3dd29d0af19d0377d32806.png)
(4)
![A[M_2,N] x[N] = b[M_2]](1b5738a29798a1418a737db4999bab2b.png)
(5)
![x[N] \ge 0[N]](0bc4543a0c9094d1bfeb03ed78040f76.png)
Ограничения (3) задают симплекс S, пусть
- его крайние точки.Пусть x – допустимое решение По лемме
![x=z[N, K] \cdot \delta[K]](53ee1fe8ecf4897f1fac38d5feb307a2.png)
Подставим последнее выражение в (2) и (3).
Задача примет вид
Максимизировать (6)
![(c[N] \cdot z[N, K]) \cdot \delta[K] = g[k] \cdot \delta[K]](6660ee3ded66b24b83cf7bfdb728f1de.png)
при ограничениях
(7)
![(A[M_1,N] \cdot z[N, K]) \cdot \delta[K] = D[M_1, K] \cdot \delta[K] = b[M_1]](42dd2df6a702cb0941625faefeb067b7.png)
(8)
.Эта задача эквивалентна исходной (2)-(5) и называется координирующей задачей.
Она имеет только
строк ограничений по сравнению с
строками исходной задачи, и очень большое число столбцов
, равное числу крайних точек множества
. Чтобы не хранить все эти столбцы в памяти ЭВМ, будем получать их по мере необходимости, пользуясь методом генерации столбцов.Алгоритм
Решаем задачу (6)-(8) симплекс-методом с использованием метода генерации столбцов.
Для простоты предположим, что уже известно некоторое допустимое базисное решение.
Обозначим через
ограничение (8), тогда двойственные переменные - это вектор
.Для ввода в базис необходимо найти
, такой, что![d[M_1] D[M_1,K] + d[\delta] < g[m]](8a5a0064c31deb7679b5e6412764f164.png)
Таким образом достаточно найти m, на котором достигается минимум
(9)
![d[M_1] A[M_1,N] \cdot z[N, m] + d[\delta] - c[N] z[N, m]](fb6f60f01f90617ca11f293ec20f7497.png)
что эквивалентно решению задачи
минимизировать (10)
![(d[M_1] A[M_1,N] - c[N]) \cdot x[N])](7f0f1a292f54010388e2caff486eb0bf.png)
при ограничениях (4) и (5).
Если найденный минимум не будет больше
, задача решена.В противном случае столбец
, соответствующий найденному решению, вводим в базис.Блочные задачи
Пусть ограничения (4) имеют блочную структуру
Задача (10),(4),(5) распадается на отдельные подзадачи
Найти минимум
(11)
![(d[M_k] A[M_k,N_k] - c[N_k]) z[N_k] + d[\delta]](292915d90c66179125003f1b4354fbfb.png)
при условиях
(12)
![A[M_k,N_k] z[N_k] = b[M_k]](8091de8245a557880625d74cffdbe053.png)
Примечания
- ↑ George B. Dantzig (1960). «Decomposition Principle for Linear Programs». Operations Research 8: 101–111.
Литература
- Хемди А. Таха Глава 3. Симплекс-метод // Введение в исследование операций = Operations Research: An Introduction. — 7-е изд. — М.: «Вильямс», 2007. — С. 95-141. — ISBN 0-13-032374-8
- Гольштейн E. Г., Юдин'Д Новые направления в линейном программировании.. — М.: Советское радио, 1966.
- Юдин Д. Б., Голыптейн Е. Г. Линейное программирование (теория, методы и приложения). — М.: Наука, 1969.
Методы оптимизации Одномерные Метод золотого сечения • Дихотомия • Метод парабол • Перебор по сетке • Метод Фибоначчи • Троичный поиск Прямые методы Метод Гаусса • Метод Нелдера — Мида • Метод Хука — Дживса • Метод конфигураций • Метод Розенброка Первого порядка Градиентный спуск • Метод Зойтендейка • Покоординатный спуск • Метод сопряжённых градиентов • Квазиньютоновские методы • Алгоритм Левенберга — Марквардта Второго порядка Метод Ньютона • Метод Ньютона — Рафсона Стохастические Метод Монте-Карло • Имитация отжига • Эволюционные алгоритмы • Дифференциальная эволюция • Муравьиный алгоритм • Метод роя частиц Методы линейного
программированияСимплекс-метод • Алгоритм Гомори • Метод эллипсоидов • Метод потенциалов Методы нелинейного
программированияПоследовательное квадратичное программирование 
Для улучшения этой статьи желательно?: - Проставив сноски, внести более точные указания на источники.
- Викифицировать статью.
Категория:- Алгоритмы оптимизации
Wikimedia Foundation. 2010.
![\begin{pmatrix}
A[M_1,N_1] & 0[M_1,N_2] & \cdots & 0[M_1,N_n] \\
0[M_2,N_1] & A[M_2,N_2] & \cdots & 0[M_2,N_n] \\
\cdots & \cdots & \cdots & \cdots & \\
0[M_n,N_1] & 0[M_n,N_2] & \cdots & A[M_n,N_n] \\
\end{pmatrix}](00a96e117110f86d7dc58981e9a64493.png)