Автор работы: Пользователь скрыл имя, 05 Сентября 2013 в 21:25, реферат
Блочное программирование — метод решения сложных задач линейного программирования путем разложения модели на блоки. Крупноразмерная модель сводится к нескольким моделям меньшей размерности. Получившиеся задачи решаются вместе по специальным правилам согласования.
Необходимость такого подхода обосновывается тем, что с ростом размерности трудоемкость решения задач растет невероятно быстро. “Проклятие размерности”, по меткому выражению американского математика Р. Беллмана, характерно для большинства реальных задач математического программирования.
Широко применяется Б. п. в отраслевых задачах оптимизации, где естественно разложение, “декомпозиция” общей модели отрасли либо на блоки — модели предприятий, либо на блоки, соответствующие последовательным стадиям переработки сырья.
Введение в понятие блочное программирование……………………………….3
Блочное программирование……………………………………………………...4
Метод декомпозиции Данцига – Вулфа…………………………………………5
Решение транспортной задачи методом Данцига-Вулфа………………………9
Метод Корнаи – Липтака………………………………………………………..15
Вывод……………………………………………………………………………..21
Список используемой литературы……………………………………....……...22
откуда для сбалансированной задачи следует
Поэтому при решении основной задачи условие (6.44) из модели исключается.
Для определения статуса текущего базисного решения основной задачи необходимы относительные оценки. Как и в предыдущем разделе, нахождение оценок связано с решением вспомогательной задачи. Для построения вспомогательной задачи сделаем ряд преобразований:
Dv= pTPv - sv =
Так как основная задача решается на минимум, то оптимальному статусу соответствуют неположительные оценки. Поэтому нужно искать максимальную оценку. Если она окажется не больше нуля, то все оценки неположительны и признак оптимальности выполнился. В противном случае необходимо продолжить решение основной задачи.
Значит, задача ставится так:
Вместо поиска максимума на дискретном множестве вершин перейдем к эквивалентной задаче поиска на всем непрерывном множестве D1:
(6.46)
(6.47)
"Xij ³ 0. (6.48)
Эта задача и является вспомогательной. Очевидно, что в оптимальном решении этой задачи Теперь остается выяснить, как найти его.
Вспомогательная задача включает одну группу условий (6.47). Раньше было показано, что каждая переменная входит в такие условия только один раз. Поэтому равенства (6.47) оказываются независимыми и, следовательно, вспомогательная задача распадается на n простейших независимых задач, каждая из которых имеет всего одно условие:
(6.49)
(6.50)
"Xij ³ 0. (6.51)
Критерий вспомогательной
Оптимальное решение задачи (6.49)-(6.51), как линейной, находится на границе. При этом только одна переменная не равна нулю (базис имеет размерность 1). Поэтому ее решение состоит в определении максимального коэффициета в критерии (6.49). Пусть максимум достигается на индексе i*, то есть
Тогда имеем следующее решение задачи (6.49)-(6.51):
Xvi*j
=bj, Xvij=0, "i, i¹i*,
и максимальная оценка определится как
Если L*всп £ 0, то положительных оценок нет и текущее решение основной задачи будет оптимальным.
При L*всп > 0 начинается новая итерация:
1. пo (6.41) и (6.40) находим Рv и sv;
2. вычисляем элементы
av=P-1BPv;
3. проводим симплекс-
4. вычисляем pT=sTBP-1B;
5. решаем вспомогательную задачу: вычисляем разности , находим оптимальные решения n задач (6.49)-(6.51) и максимальную оценку основной задачи.
Из рассмотренной
Пример.
Решим транспортную задачу с двумя пунктами отправления и четырьмя пунктами назначения:
bi ai |
8 |
4 |
10 |
8 |
10 |
2 |
5 |
1 |
4 |
20 |
1 |
3 |
4 |
2 |
Числа в ячейках таблицы - затраты на перевозки Cij.
Исходная модель задачи:
L = SSCijXij àmin
(6.54)
(6.55)
Координирующая задача формируется по условиям (6.54):
"Zv³0.
Для построения начального решения вводим искусственные переменные:
и модифицируем критерий
Составим начальную таблицу координирующей задачи:
sv |
Базисные перемен. |
P0 |
Pn+1 |
Pn+2 |
M |
Zn+1 |
10 |
1 |
0 |
M |
Zn+2 |
20 |
0 |
1 |
pТ |
M |
M |
В последней строке значения pi получены умножением первого столбца на столбцы Pn+i.
Решение вспомогательной задачи представляем в таблице:
bj |
8 |
4 |
10 |
8 |
p1-C1j |
M-2 |
M-5 |
M-1 |
M-4 |
p2-C2j |
M-1 |
M-3 |
M-4 |
M-2 |
v=1 |
X121=8 |
X122=4 |
X113=10 |
X124=8 |
Значения переменных в последней строке таблицы получены согласно (6.53). Например, при j=1 максимальная разность равна M-1, поэтому X121=b1= 8. Клетки с максимальными разностями выделены цветом фона. Вычисляем значение критерия по формуле (6.46):
Так как признак оптимальности не выполняется, переходим к итерациям. Находим s1 согласно (6.40):
s1=1*8 + 3*4 + 1*10 + 2*8 = 46.
Вычисляем компоненты вектора Р1:
Р11= X113=10;
P21= X121+ X122+ X124= 8+4+8 = 20.
Следовательно, . Находим его разложение по начальному базису:
Добавляем столбец P1 с элементами a1 в начальную таблицу в качестве направляющего столбца:
sv |
Базисные перемен. |
P0 |
Pn+1 |
Pn+2 |
P1 |
q |
M |
Zn+1 |
10 |
1 |
0 |
10 |
1 |
M |
Zn+2 |
20 |
0 |
1 |
20 |
1 |
pТ |
M |
M |
Взяв 1-ю строку за направляющую и выполнив симплекс-преобразование, получаем новое решение основной задачи:
Для выяснения статуса этого решения снова находим максимальную оценку основной задачи, решая вспомогательную задачу:
Очевидно, что L2всп>0, то есть решение основной задачи не является оптимальным.
Вычисляем коэффициент критерия при Z2:
s2=1*8 + 3*4 + 4*10 + 2*8 = 8+12+40+16 = 76.
Определяем компоненты вектора Р2:
Р12=0, P22= 8+4+10+8 = 30
Имея , находим элементы направляющего столбца
и добавляем его к последней таблице основной задачи:
В результате симплекс-преобразования получаем:
Соответствующая вспомогательная задача:
Критерий этой заачи L3всп =(23/15)*8–(7/15)*4–(22/15)*
Находим значения исходных переменных по формуле (6.37), которая для нашей задачи принимает вид:
Таким образом, получено следующее оптимальное решение исходной задачи: X*21 = 8, X*22 = 4, X*13 = 10, X*24 = 8.
Проверка: L = SSCijXij=1*8 + 3*4 + 1*10
Метод Корнаи – Липтака
Пусть имеется задача ЛП вида:
максимизировать cTx (10.3.1)
при условиях (10.3.2) (10.3.3)
где cT=[c1,c2,.,cn]; xT=[x1,x2,.,x
Рассмотрим подход к ее решению, использующий
метод декомпозиции Корнаи-Липтака (20;
31). Разобьем матрицу А0 на подматрицы
, где при каждом
матрица
имеет размерность m x nj. Тогда соответственно разбиваем вектор с на подвектора с1, с2, ., сj, ., с и х - на подвектора х1, х2, ., хjn, где cj, xj - вектора, имеющие размерность
, тогда задача (10.3.1)-(10.3.3) преобразуется
к виду максимизировать
(10.3.4)
при условиях
(10.3.5)
(10.3.6)
Введем m-мерные вектора-столбцы уі, удовлетворяющие условию
(10.3.7)
Сформулируем J задач ЛП: максимизировать
(10.3.8)
при условиях
(10.3.9)
(10.3.10)
Рассмотрим вектор y = [y1, y2, ., yJ]. Обозначим через Му множество всех векторов у таких, что выполняется условие (10.3.7)
и задачи (10.3.8)-(10.3.10) имеют решения. Оптимальные
значения функционалов задач (10.3.8)-(10.3.10)
зависят от уj, как от параметров. Указанную зависимость
представим в виде fj(yj). Обозначим
. Тогда задача (10.3.8)-(10.3.10) сводится к следующей
координирующей задаче:
Максимизировать F(y) (10.3.11)
при ограничениях
Если разложение матрицы А0 интерпретируется как разбиение системы
на J подсистем, а вектор b0рассматривается как общий ресурс системы,
то задача (10.3.11),(10.3.12) заключается в нахождении
оптимального распределения общего ресурса.
Заметим, что здесь не вводится ограничения
на знак величины yj (это означает, что система может как
потреблять(+), так и производить ресурсы
(-)). Рассмотрим задачу (10.3.11), (10.3.12). Ее анализ
усложняется, поскольку функция F(y) аналитически
не известна, а задана лишь алгоритмически.
Для ее вычисления необходимо решить задачу
ЛП (10.3.8)-(10.3.10).
Применение той или иной схемы максимизации
функции F(y) порождает соответствующий
метод разложения на основе принципа Корнаи-Липтака.
Так, в работе Корнаи-Липтака предлагалось
сведение этой задачи к минимаксной, далее
решаемой методами теории игр. Рассмотрим
этот подход.
Запишем двойственные задачи к задаче
(10.3.8)-(10.3.10):
минимизировать
(10.3.13) при ограничениях
(10.3.14)
, (10.3.15) где вектор-столбец
имеет m компонент
.
Пусть через
обозначены выпуклые многогранники в
пространстве Rm, задаваемые условиями (10.3.14), (10.3.15). Введем
вектор
с компонентами
и множество
. В соответствии с основной теоремой
двойственности справедливо
. (10.3.16)
Таким образом,
(10.3.17) и окончательно задача (10.3.11),
(10.3.12) сводится к отысканию седловой точки:
найти
(10.3.18)
где
-фиксированы,
и
.
Задачу (10.3.18) можно решать методом матричных
игр для фиктивной игры Брауна.
Указанный метод представляет собой итеративный
процесс, где каждая итерация в терминах
теории игр представляет собой определенную
партию игры и соответствует выбору некоторых
стратегий двух игроков. Эти стратегии
в данной задаче являются векторами
и y. Стратегии каждого игрока берутся
наиболее выгодными с учетом ответа его
противника.
Оптимальные стратегии для задачи (10.3.18)
определяются в виде:
(10.3.19)
. (10.3.20)
Итеративный процесс, согласно методу
Брауна, состоит из следующих шагов (52).
Начальная итерация (k=1). Выбирается
произвольная стратегия
;
Полагаем
Определяем
согласно (10.3.19)
Полагаем
Пусть уже проведено (k-1) итераций, в результате
которых определены
и
.
k -ая итерация.
Определяем
согласно (10.3.20);
Вычисляем
;
Определяем
согласно (10.3.19);
Вычисляем
.
В силу теоремы Робинсона о сходимости
метода Брауна последовательность
при
сходится к седловой точке задачи (10.3.18).
Метод разложения Корнаи-Липтака наиболее
эффективен в случае, когда часть ограничений
имеет блочно-диагональную структуру.
Введем в задачу (10.3.1)-(10.3.2) дополнительные
блочные ограничения:
при ограничениях
, (10.3.23)
где bj - mj -мерный вектор-столбец, а матрица Aj имеет размерность mj x nj.
Составим функцию Лагранжа для задачи
(10.3.8)-(10.3.10):