|
|||
Запишем условия Куна-Таккера для задачи (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= . Переход от этой точки к новому многообразию с помощью операции Б представляет собой движение по указанной прямой от дельта равного нулю в положительную (как будет показано позже) сторону.
Заметим, что если множество индексов Á порождает базис UÁ , то задача (3.5.1), соответствующая этому множеству индексов имеет единственный оптимальный вектор x* , обладая при этом свойством единственности, введенным ранее для задачи выпуклого программирования.
Выше были описаны вспомогательные задачи метода субоптимизации на многообразиях, однако не были сформулированы правила применения этих операций. Ниже будут доказаны две теоремы, дающие способ определения неизвестных шагов q и d. Для их доказательства потребуется несколько вспомогательных утверждений.
Лемма 1. Пусть вектора x0, x1 удовлетворяют системе уравнений условий Куна-Таккера и пусть f(x) - неотрицательно определенный квадратичный функционал вида xTDx, а D1 вектор ограниценных по знаку множителей Лагранжа, удовлетворяющих условиям Куна-Таккера совместно с вектором x1 . Тогда имеет место следующее неравенство:
(3.6.1)
Доказательство:
Преобразуем левую часть следующим образом:
Здесь можно воспользоваться условием выполнения теоремы Куна-Таккера:
Требуемое неравенство непосредственно вытекает из последнего соотношения.
Следствие. Пусть x0, x0(q) - оптимальные точки задачи (3.5.1) с некоторым множеством индексов Á и вспомогательной задачи поиска минимума на многообразии (3.5.4). Тогда имеет место неравенство:
Доказательство. Так как x0, x0(q) удовлетворяют условиям Куна-Таккера, то выполняется неравенство Леммы 1:
В силу особенностей решений x0, x0(q) правую часть неравенства можно записать в виде
что и доказывает справедливость следствия.
Лемма 2. Пусть x0, x1 - оптимальные точки многообразий XÁ0 и XÁ1 соответственно, удовлетворяющие условиям Куна-Таккера совместно с множителями Лагранжа D0 и D1. Тогда справедливо соотношение:
Доказательство: Аналогично доказательству Леммы 1, получаем, что:
Складывая эти два равенства, получаем:
Из выполнения условий Куна-Таккера следует, что:
Раскрывая скобки в левой части неравенства получаем искомое неравенство.
Ниже будет доказана теорема, дающая направление движения и условия применения операции А.
Теорема 1. Пусть оптимальная точка x0 - оптимальная точка многообразия XÁ0 , причем совокупность индексов Á0 порождает базис UÁ0 . Тогда, если среди множителей Лагранжа, соответствующих x0 , существует отрицательный (предположим, что он имеет индекс j0)
то новый набор индексов
также порождает базис и в единственной оптимальной точке на многообразии выполнено условие
Доказательство. Если для набора индексов существует оптимальный вектор , то в силу утверждения леммы 2 и определения нового набора индексов имеем
с другой стороны, в силу условия единственности,
Итак, если оптимальная точка на новом многообразии существует, то доказываемое неравенство верно. Существование же оптимальной точки вытекает из того факта, что новый набор индексов порождает базис. Это так, если коэффициент Dj0j0 в разложении (3.5.6) не равен нулю.
Предположим, что этот коэффициент равен нулю. В этом случае, в силу следствия из леммы и условия отрицательности Dj0 квадратичный функционал f(x) оказывается отрицательно определенным. Теорема доказана.
Теорема 1 указывает направление движения по многообразиям с помощью операции А. Переход от многообразия XÁ0 к многообразию осуществляется с помощью движения по многообразиям XÁ0 (q) при возрастании q от нуля до некоторой величины
В силу вида нового множества индексов величина q0 определяется из условия обращения в ноль соответствующего множителя Лагранжа:
Сформулируем и докажем аналогичную теорему для операции Б:
Теорема 2. Пусть Á0 и Á1 наборы индексов, порождающие базис UÁ1,Á0 , такие, что:
причем в разложении
(3.6.2)
коэффициент . Пусть также для множества индексов
существует оптимальный вектор для задачи (3.5.1), причем такой, что он не является допустимым для исходной задачи (3.1.2), т.е.
Тогда, если x1 - оптимальная точка задачи (3.5.1) на многообразии XÁ1 , то Á1 порождает базис UÁ1 , а оптимальная точка x1 принадлежит прямой (3.5.15):
(3.6.3)
Доказательство. Разложим вектор P0 по базису UÁ1 , а вектор Pm+n+r по базису UÁ1,Á0 :
подставляя второе выражение в первое, и учитывая определение прямой (3.5.15) получаем очевидное следствие:
Кроме того, учитывая разложение (3.6.2), получаем, что
(3.6.4)
А согласно лемме 2, имеем:
Отсюда и из условия теоремы следует, что
Отсюда и из (3.6.4) вытекает доказываемое неравенство. Кроме того, из (3.6.4) также следует отличие от нуля коэффициента , что приводит к выводу о линейной независимости системы векторов UÁ1 . Это доказывает второе утверждение теоремы.
Теорема 2 указывает направление перехода от одного многообразия к другому с помощью операции Б, утверждая положительность величины шага d1 .
Ранее (см 3.4) была приведена общая схема алгоритма субоптимизации на многообразиях для случая задачи выпуклого программирования и получена блочная структура алгоритма. Конкретизируем теперь структуру блоков для случая задачи квадратичного программирования.
Блок1.
Определяется начальный набор индексов Á1 , порождающий базис UÁ1 , для которого оптимальная точка задачи (3.5.1) является одновременно допустимой для исходной задачи (3.1.2). Такая точка в [2] называется дополняющей.
В кочестве начального множества индексов можно взять начальный базис, получаемый в ходе решения первой фазы двухфазного симплекс-метода, или же решение задачи линейного программирования, близкой к решаемой квадратичной:
Блок 3. Блок полностью идентичен приведенному ранее в описании алгоритма субоптимизации на многообразиях для задачи выпуклого программирования.
Блок 2. В данном блоке определяется решение вспомогательной задачи (3.5.1). Способ определения решения зависит от предыдущего блока алгоритма:
Блок 2(А). Эта часть блока вступает в действие после блока 3. Оптимальный вектор задачи (3.5.1) находится с помощью операции А. Если полученный оптимальный вектор допустим для исходной задачи (3.1.2), осуществляется переход в блок 3. В противном случае осуществляется переход в блок 4.
Критерием выбора следующего шага является сравнение двух величин:
Первая величина задает момент обращения в ноль выбранной минимальной величины Dj0 , вторая величина задает момент обращения в ноль первой из базисных компонент вектора x . Если вторая величина оказывается меньше первой, это означает, что новое решение задачи (3.5.1), полученное в результате операции А, не является допустимым для исходной задачи (3.1.2), и необходим переход в блок 4.
Блок 2(Б). Эта часть блока вступает в действие после блока 4. В этом блоке минимум в задаче (3.5.1) находится с помощью операции Б. Если получаемое решение оказывается допустимым для исходной задачи (3.1.2), то осуществляется переход в блок 3. В противном случае осуществляется переход в блок 4.
Критерием выбора следующего шага в этой части блока является сравнение двух величин:
Блок 4. Этот блок полностью соответствует соответствующему блоку в общем алгоритме субоптимизации на многообразиях для задачи выпуклого программирования.
В этой части будет рассмотрен вычислительный аспект процедуры субоптимизации и показаны некоторые ее замечательные свойства.
Выше было показано, что решение каждой вспомогательной задачи метода субоптимизации сводится к поиску разложения некоторого вектора R размерности (m+n) по базису UÁ1,Á2 ; при этом на соседних итерациях базисы отличаются лишь каким-то одним из векторов.
Как было показано выше, существуют четыре возможных альтернативы при переходе от одного базиса к другому, задающие четыре типа операций:
1. От UÁ1 к UÁ2 (Á2=Á1 \ j0 ) при помощи замены в базисе вектора Pm+n+j0 на Pm+j0 .
2. От UÁ1 к UÁ2,Á1 (Á2=Á1 \ j0 U r) при помощи замены в базисе вектора Pm+r на Pm+j0 .
3. От UÁ2,Á1 (Á2=Á1 \ j0 U r) к UÁ2 при помощи замены в базисе вектора Pm+n+j0 на Pm+n+r .
4. От UÁ2,Á1 (Á2=Á1 \ j0 U r) к UÁ2',Á2' (Á'2=Á2 U r', Á'1=Á1 U r' ) при помощи замены в базисе вектора Pm+r на Pm+n+r' .
Процедура разложения вектора R по базису эквивалентна решению системы линейных уравнений вида
где B - базисная часть матрицы P (то есть матрица, составленная из столбцов матрицы P , соответствующих векторам данного базиса). Решение уравнения есть процедура, эквивалентная обращению матрицы B.
Из общего вида матрицы P (3.2.4) можно получить общий вид матрицы B, которая также имеет блочную структуру следующего вида:
Можно показать, что
Видно, что зная матрицу S1-1 можно легко получить значение матрицы B-1 . Используя общий вид переходов, а также их общее свойство, сводящееся к замене одного вектора на другой, можно применить для нахождения S1-1 известную формулу Фробениуса, и получить рекуррентные формулы, связывающие матрицы S1-1 на соседних итерациях. Это позволяет избежать непосредственного обращения матрицы на каждом шаге алгоритма, прибегая к нему через определенный промежуток времени с целью коррекции накопившейся ошибки вычисления.
Задачей параметрического квадратичного программирования с параметром в правых частях ограничений будем называть следующую задачу выпуклого программирования:
(4.1.1)
Требуется найти вектор-функцию x*(m) , минимизирующую целевую функцию при каждом m . Интервал изменения параметра может быть и неограниченным.
Пусть получено решение задачи (4.1.1) при некотором значении параметра, равном m0 . Это означает, что получен вектор x*(m0) , а также набор индексов Á(m0) , и порожденный им оптимальный базис. Рассмотрим множество таких m , для которых это решение остается оптимальным и допустимым. Для этого запишем условия Куна-Таккера:
(4.1.2)
Как следует из постановки задачи, правую часть выражения (4.1.2) можно представить в следующем виде:
(4.1.3)
Разложив вектор R по указанному базису, и подставив это разложение в (4.1.3), получим следующие выражения для коэффициентов разложения (4.1.2):
(4.1.4)
Здесь - коэффициенты разложения вектора R по базису. Условием нарушения оптимальности решения является факт обращения в ноль одного из неотрицательных коэффициентов (4.1.4). Отсюда следует, что интервал, на котором исходное решение является оптимальным, является отрезком следующего вида:
(4.1.5)
где
(4.1.6)
а
(4.1.7)
Из выражений (4.1.4) вытекает также тот факт, что на интервалах (4.1.5) вектор-функция x*(m) представляет собой отрезок прямой в пространстве En , и является линейной. Стало быть, значения целевой функции на интервале представляют собой параболу.
Непосредственно из вышеизложенного следует алгоритм решения задачи квадратичного программирования с параметром в правых частях ограничений:
1. В начальной точке интервала допустимых значений параметра строится решение задачи квадратичного программирования с помощью метода субоптимизации, описанного выше.
2. С помощью формул (4.1.6-4.1.7) определяется интервал на котором полученное решение остается оптимальным.
3. В правой точке полученного интервала строится решение задачи квадратичного программирования методом субоптимизации на многообразиях. Поскольку в этой точке существуют два оптимальных базиса, с целью предотвращения зацикливания в качестве начального базиса для решения задачи предлагается использовать предыдущий оптимальный базис (если решение потеряло оптимальность) или предыдущий оптимальный базис с исключенными векторами, чьи базисные переменные обратились в ноль.
Рассмотрим применение описанной теории к задаче определения оптимального портфеля ценных бумаг. Сформулируем задачу:
Имеется n видов ценных бумаг, имеющих доходности выражающиеся случайными величинами , распределенными по нормальному закону с параметрами . Помимо этого, имеется один вид ценных бумаг, дающий гарантированную доходность . Некий финансист ищет такой способ вложения единицы капитала в эти ценные бумаги, который обеспечил бы максимальный уровень дохода с заданной вероятностью a.
Покажем, что указанную задачу можно свести к задаче математического программирования:
Предположим, что вектор задает вложения финансиста в ценные бумаги соответствующего типа, а величина вложения в ценные бумаги с гарантированной доходностью. Тогда доход финансиста представляет собой случайную величину:
Очевидно, что характеристики этой случайной величины зависят от решения финансиста, и что эта величина распределена по нормальному закону:
Чтобы перейти от задачи максимизации к задаче минимизации, запишем необходимую нам функцию распределения следующим образом:
Запишем функцию квантили уровня a для этой функции распределения:
При заданном уровне a нам требуется минимизировать эту функцию, тем самым, максимизируя искомый доход R .
Для этого заметим, что случайная величина (-R) распределена также по нормальному закону с параметрами . Тогда можно записать функцию распределения этой величины, используя функцию Лапласа:
Следовательно, можно заключить, что:
Обозначим квантиль уровня a , т.е. решение уравнения
Учитывая монотонность функции Лапласа, неравенство можно записать в следующем виде:
Отсюда можно легко получить выражение, дающее ключ к виду функции квантили:
Учитывая определение функции квантили:
получаем
Характеристики распределения случайной величины R выглядят следующим образом:
Таким образом, исходная задача сводится к следующей задаче математического программирования:
Покажем, как указанная задача математического программирования может быть сведена к задаче квадратичного программирования с параметром в правых частях ограничений:
Введем в рассмотрение параметр
Тогда задачу можно записать в следующем эквивалентном виде:
При каждом фиксированном значении параметра данная задача может быть сформулирована следующим образом:
Это задача квадратичного программирования с параметром в правой части ограничений. Решая эту задачу для каждого значения параметра получаем значения функции , а, следовательно, и значения искомой минимизируемой функции
Таким образом исходная задача сводится к последовательному решению двух задач - задачи квадратичного программирования с параметром в правой части ограничений и задаче одномерной оптимизации.
1. Бахшиян Б.Ц., Назиров Р.Р, Эльясберг П.Е. Определение и коррекция движения (гарантирующий подход) - М.: Наука, 1980.
2. Зангвилл У.И. Нелинейное программирование. Единый подход. - М.: Советское Радио, 1973.
3. Муртаф Б. Современное линейное программирование. - М.:Мир, 1984.
4. Пропой А.И., Ядыкин А.Б. Параметрическое квадратичное и линейное программирование. - Автоматика и телемеханика, 1978, т.12, NN 2,4.
5. Хедли Дж. Нелинейное и динамическое программирование. - М.: Мир, 1967.
6. Ядыкин А.Б. Параметрический метод в задачах квадратичного программирования с вырожденной квадратичной формой. - Журнал вычислительной математики и математической физики, 1975, т.8, N4.
7. Boot J. Quadratic Programming. - Amsterdam: North-Holland Publ. Co., 1964.
8. Van de Pann C. Methods for Linear and Quadratic Programming. - Amsterdam: North-Holland Publ. Co., 1975.
Страницы: 1, 2