Доказанная лемма указывает направление перебора множеств индексов Ák (а стало быть и многообразий), уменьшающее значение целевой функции f(x).
Из доказанной леммы вытекает
Алгоритм поиска оптимального вектора
Общий вид алгоритма метода субоптимизации для задачи выпуклого программирования приведен на рис. 1. Ниже приводятся описания блоков алгоритма, изображенных на этом рисунке.
Блок 1. Определяется допустимая начальная точка x1для исходной задачи. Это может быть точка, получаемая с помощью алгоритма построения начального базиса линейного симплекс-метода, или же решение в некотором смысле близкой линейной задачи. Предполагается Á1=Á(x1), k=1.
Блок 2. Находится оптимальный вектор x*k для задачи
Если x*k оказывается допустимой для исходной задачи (3.4.1), совершается переход к блоку 3, в противном случае осуществляется переход к блоку 4.
Блок 3. Вычисляется значение
Если
то в силу выполнения условий Куна-Таккера для исходной задачи (3.4.1) точка x*kявляется оптимальной точкой задачи (3.4.1) и работа алгоритма заканчивается.
Если
то предполагаем
и происходит переход к блоку 2.
Блок 4. Поскольку оптимальная точка вспомогательной задачи оказалась недопустимой для исходной, выбираем в качестве новой начальной точки ближайшую к ней точку, допустимую для исходной задачи (3.4.1), и лежащую на прямой, соединяющей оптимальные точки вспомогательной задачи, т.е.
Далее полагаем Ák+1=Á(xk+1), заменяем kна k+1, и переходим к блоку 2.
Таким образом построен итерационный процесс, позволяющий осуществить направленный перебор множеств индексов Ák, позволяющий найти оптимальный вектор исходной задачи. Сходимость процедуры будет рассмотрена позже.
3.5 Метод субоптимизации на многообразиях. Задача квадратичного программирования.
Рассмотрим применение метода субоптимизации, рассмотренного в (3.4)к задаче квадратичного программирования (3.1.2). Как было ранее отмечено, условием успешного применения метода субоптимизации на многообразиях в задаче выпуклого программирования является существенная простота решения задачи (3.4.2) по сравнению с исходной задачей (3.4.1).
Рассмотрим эквивалентную (3.1.2) задачу:
(3.5.1) |
Запишем условия Куна-Таккера для задачи (3.5.1) с произвольным набором индексов Á:
(3.5.2) |
Используя ранее введенные обозначения (3.2.3-3.2.4), систему условий Куна-Таккера (3.5.2) можно записать следующим образом:
(3.5.3) |
Если множество UÁпорождает базис, вследствие (3.5.3) поиск минимума на многообразии XÁпредставляет собой разложение вектора P0по этому базису, т.е. эквивалентен решению системы линейных уравнений. Таким образом, метод субоптимизации на многообразиях в случае задачи квадратичного программирования оказывается эффективнымв том случае, если в цепочке итерационного процесса встречаются только множества индексов, порождающие базисы.
Процедура метода строится на двух основных операциях, аналогичных блокам общего алгоритма субоптимизации на многообразиях для задачи выпуклого программирования.
Операция А.Пусть для некоторого набора индексов Á0 определена оптимальная точка x*и множители Лагранжа l*k и D*jудовлетворяющие условиям Куна-Таккера совместно с оптимальным вектором x. Рассмотрим вспомогательное многообразие
(3.5.4) |
Операция А состоит в нахождении оптимального вектора x*(q),а также множителей Лагранжа, удовлетворяющих условиям Куна-Таккера задачи минимизации квадратичного функционала на многообразии (3.5.4).
Запишем условия Куна-Таккера для этой вспомогательной задачи:
Если набор индексов Á0порождает базис, то существует разложение вектора Pm+j0по этому базису, имеющее следующий вид:
(3.5.6) |
Подставляя это разложение в (3.5.5), и учитывая оптимальность набора x*,l*,D*, получаем следующие выражения для компонент оптимальной точки на многообразии (3.5.4):
(3.5.7) |
Таким образом, в случае, если набор индексов Á0порождает базис, операция А осуществляется тривиально, и определяется выражениями (3.5.7).
Суть операции А состоит в нахождении оптимальной точки на новом многообразии (3.5.4) по известной оптимальной точке на многообразии (3.4.4).
Операция Б. Пусть некоторое вспомогательное многообразие XÁ0(q1) таково, что одна из базисных компонент вектора xобратилась в ноль:
(3.5.8) |
Суть операции Б состоит в переходе от многообразия XÁ0(q1) к другому многообразию XÁ1, соответствующему набору индексов Á1, определяемому следующим образом:
(3.5.9) |
т.е. индекс j0из (3.5.4) заменяется на индекс r из (3.5.8).
Учитывая (3.5.8), разложение (3.5.5) на многообразии XÁ0 можно представить следующим образом:
(3.5.10) |
Аналогично случаю, рассмотренному в операции А, что, если имеет место разложение:
(3.5.11) |
причем выполнено соотношение
(3.5.12) |
то условиям Куна-Таккера для задачи (3.5.1) соответствующей набору индексов Á1 , удовлетворяют переменные, получаемые с помощью следующих формул:
(3.5.13) |
где
(3.5.14) |
Учитывая вышеописанные условия, операция Б оказывается осуществимой в том случае, когда наборам индексов Á0 и Á1 соответствует базис UÁ1,Á0. Операция Б является аналогом блока 4 общей схемы метода субоптимизации на многообразиях для задачи выпуклого программирования.
Для большей наглядности можно определить множество LÁ1,Á0представляющее собой прямую, порождаемую базисом UÁ1,Á0 следующего вида:
(3.5.15) |
Здесь
- коэффициенты разложения вектора P0, а xir - вектора Pm+n+rпо базису UÁ1,Á0. Заметим, что LÁ1,Á0(0) есть оптимальный вектор многообразия (3.5.4) при q= . Переход от этой точки к новому многообразию с помощью операции Б представляет собой движение по указанной прямой от дельта равного нулю в положительную (как будет показано позже) сторону.