Выпуклое программирование

Материал из testwiki
Перейти к навигации Перейти к поиску

Выпуклое программирование — это подобласть математической оптимизации, которая изучает задачу минимизации выпуклых функций на выпуклых множествах. В то время как многие классы задач выпуклого программирования допускают алгоритмы полиномиального времениШаблон:Sfn, математическая оптимизация в общем случае NP-труднаШаблон:SfnШаблон:SfnШаблон:Sfn.

Выпуклое программирование находит применение в целом ряде дисциплин, таких как автоматические системы управления, оценка и обработка сигналов, коммуникации и сети, схемотехникаШаблон:Sfn, анализ данных и моделирование, финансы, статистика (Шаблон:Не переведено 5)Шаблон:Sfn и Шаблон:Не переведено 5Шаблон:Sfn. Развитие вычислительной техники и алгоритмов оптимизации сделало выпуклое программирование почти столь же простым как линейное программированиеШаблон:Sfn.

Определение

Задача выпуклого программирования — это задача оптимизации, в которой целевая функция является выпуклой функцией и область допустимых решений выпукла. Функция f, отображающая некоторое подмножество n в {±}, является выпуклой, если область определения выпукла и для всех θ[0,1], и всех x,y в их области определения f(θx+(1θ)y)θf(x)+(1θ)f(y). Множество выпукло, если для всех его элементов x,y и любого θ[0,1] также и θx+(1θ)y принадлежит множеству.

В частности, задачей выпуклого программирования является задача нахождения некоторого 𝐱C, на котором достигается

inf{f(𝐱):𝐱C},

где целевая функция f выпукла, как и множество допустимых решений CШаблон:SfnШаблон:Sfn. Если такая точка существует, её называют оптимальной точкой. Множество всех оптимальных точек называется оптимальным множеством. Если f не ограничена на C или инфимум не достигается, говорят, что оптимизации не ограничена. Если же C пусто, говорят о недопустимой задачеШаблон:Sfn.

Стандартная форма

Говорят, что задача выпуклого программирования представлена в стандартной форме, если она записана как

Минимизировать f(𝐱)
При условиях
gi(𝐱)0,i=1,,mhi(𝐱)=0,i=1,,p,

где xn является переменной оптимизации, функции f,g1,,gm выпуклы, а функции h1,,hp аффинны Шаблон:Sfn.

В этих терминах функция f является целевой функцией задачи, а функции gi и hi именуются функциями ограничений. Допустимое множество решений задачи оптимизации — это множество, состоящее из всех точек xn, удовлетворяющих условиям g1(x)0,,gm(x)0 и h1(x)=0,,hp(x)=0. Это множество выпукло, поскольку множества подуровня выпуклой функции выпуклы, аффинные множества также выпуклы, а пересечение выпуклых множеств является выпуклым множествомШаблон:Sfn.

Многие задачи оптимизации можно привести к этой стандартной форме. Например, задача максимизации вогнутой функции f может быть переформулирована эквивалентно как задача минимизации выпуклой функции f, так что о задаче максимизации вогнутой функции на выпуклом множестве часто говорят как о задаче выпуклого программирования

Свойства

Полезные свойства задач выпуклого программированияШаблон:SfnШаблон:Sfn:

Эти результаты используются в теории выпуклой минимизации вместе с геометрическими понятиями из функционального анализа (на гильбертовых пространствах), такими как Шаблон:Не переведено 5, теорема об опорной гиперплоскости и лемма Фаркаша.

Примеры

Иерархия задач выпуклого программирования.
(LP: линейное программирование,
QP: квадратичное программирование,
SOCP: коническое программирования на конусе второго порядка,
SDP: полуопределённое программирование,
CP: коническое программирование,
GFP: программирование графических форм.)

Следующие классы задач являются задачами выпуклого программирования или могут быть сведены к задачам выпуклого программирования путём простых преобразованийШаблон:SfnШаблон:Sfn:

Метод множителей Лагранжа

Рассмотрим задачу выпуклой минимизации, заданную в стандартной форме с функцией цены f(x) и ограничениям-неравенствам gi(x)0 для 1im. Тогда область определения 𝒳 равна:

𝒳={xX|g1(x),,gm(x)0}.

Функция Лагранжа для задачи

L(x,λ0,λ1,,λm)=λ0f(x)+λ1g1(x)++λmgm(x).

Для любой точки x из X, которая минимизирует f на X, существуют вещественные числа λ0,λ1,,λm,, называемые множителями Лагранжа, для которых выполняются одновременно условия:

  1. x минимизирует L(y,λ0,λ1,,λm) над всеми yX,
  2. λ0,λ1,,λm0, по меньшей мере с одним λk>0,
  3. λ1g1(x)==λmgm(x)=0 (дополняющая нежёсткость).

Если существует «сильная допустимая точка», то есть точка z, удовлетворяющая

g1(z),,gm(z)<0,

то утверждение выше может быть усилено до требования λ0=1.

И обратно, если некоторое x из X удовлетворяет условиям (1)-(3) для скаляров λ0,,λm с λ0=1, то x определённо минимизирует f на X.

Алгоритмы

Задачи выпуклого программирования решаются следующими современными методами:[1]

Субградиентные методы могут быть реализованы просто, потому они широко используютсяШаблон:SfnШаблон:Sfn. Двойственные субградиентные методы — это субградиентные методы, применённые к двойственной задаче. Шаблон:Не переведено 5 аналогичен двойственному субградиентному методу, но использует среднее по времени от основных переменных.

Расширения

Расширения выпуклого программирования включают оптимизацию Шаблон:Не переведено 5, псевдовыпуклых и квазивыпуклых функций. Расширения теории выпуклого анализа и итеративные методы для приблизительного решения невыпуклых задач оптимизации встречаются в области обобщённой выпуклости, известной как абстрактный выпуклый анализ.

См. также

Примечания

Шаблон:Примечания

Литература

Шаблон:Refbegin

Шаблон:Refend

Ссылки

Шаблон:Rq

Шаблон:Методы оптимизации

  1. О методах выпуклого программирования см. книги Ирриарта-Уррути и Лемерикала (несколько книг) и книги Рушчиньского, Берцекаса, а также Бойда и Вандерберге (методы внутренней точки).