Выпуклое программирование
Выпуклое программирование — это подобласть математической оптимизации, которая изучает задачу минимизации выпуклых функций на выпуклых множествах. В то время как многие классы задач выпуклого программирования допускают алгоритмы полиномиального времениШаблон:Sfn, математическая оптимизация в общем случае NP-труднаШаблон:SfnШаблон:SfnШаблон:Sfn.
Выпуклое программирование находит применение в целом ряде дисциплин, таких как автоматические системы управления, оценка и обработка сигналов, коммуникации и сети, схемотехникаШаблон:Sfn, анализ данных и моделирование, финансы, статистика (Шаблон:Не переведено 5)Шаблон:Sfn и Шаблон:Не переведено 5Шаблон:Sfn. Развитие вычислительной техники и алгоритмов оптимизации сделало выпуклое программирование почти столь же простым как линейное программированиеШаблон:Sfn.
Определение
Задача выпуклого программирования — это задача оптимизации, в которой целевая функция является выпуклой функцией и область допустимых решений выпукла. Функция , отображающая некоторое подмножество в , является выпуклой, если область определения выпукла и для всех , и всех в их области определения . Множество выпукло, если для всех его элементов и любого также и принадлежит множеству.
В частности, задачей выпуклого программирования является задача нахождения некоторого , на котором достигается
- ,
где целевая функция выпукла, как и множество допустимых решений Шаблон:SfnШаблон:Sfn. Если такая точка существует, её называют оптимальной точкой. Множество всех оптимальных точек называется оптимальным множеством. Если не ограничена на или инфимум не достигается, говорят, что оптимизации не ограничена. Если же пусто, говорят о недопустимой задачеШаблон:Sfn.
Стандартная форма
Говорят, что задача выпуклого программирования представлена в стандартной форме, если она записана как
- Минимизировать
- При условиях
где является переменной оптимизации, функции выпуклы, а функции аффинны Шаблон:Sfn.
В этих терминах функция является целевой функцией задачи, а функции и именуются функциями ограничений. Допустимое множество решений задачи оптимизации — это множество, состоящее из всех точек , удовлетворяющих условиям и . Это множество выпукло, поскольку множества подуровня выпуклой функции выпуклы, аффинные множества также выпуклы, а пересечение выпуклых множеств является выпуклым множествомШаблон:Sfn.
Многие задачи оптимизации можно привести к этой стандартной форме. Например, задача максимизации вогнутой функции может быть переформулирована эквивалентно как задача минимизации выпуклой функции , так что о задаче максимизации вогнутой функции на выпуклом множестве часто говорят как о задаче выпуклого программирования
Свойства
Полезные свойства задач выпуклого программированияШаблон:SfnШаблон:Sfn:
- любой локальный минимум является глобальным минимумом;
- оптимальное множество выпукло;
- если целевая функция сильно выпукла, проблема имеет максимум одну оптимальную точку.
Эти результаты используются в теории выпуклой минимизации вместе с геометрическими понятиями из функционального анализа (на гильбертовых пространствах), такими как Шаблон:Не переведено 5, теорема об опорной гиперплоскости и лемма Фаркаша.
Примеры

(LP: линейное программирование,
QP: квадратичное программирование,
SOCP: коническое программирования на конусе второго порядка,
SDP: полуопределённое программирование,
CP: коническое программирование,
GFP: программирование графических форм.)
Следующие классы задач являются задачами выпуклого программирования или могут быть сведены к задачам выпуклого программирования путём простых преобразованийШаблон:SfnШаблон:Sfn:
- Метод наименьших квадратов
- Линейное программирование
- Выпуклая квадратичная оптимизация с линейными ограничениями
- Шаблон:Не переведено 5
- Шаблон:Не переведено 5
- Геометрическое программирование
- Шаблон:Не переведено 5
- Полуопределённое программирование
- Принцип максимума энтропии с подходящими ограничениями
Метод множителей Лагранжа
Рассмотрим задачу выпуклой минимизации, заданную в стандартной форме с функцией цены и ограничениям-неравенствам для . Тогда область определения равна:
Функция Лагранжа для задачи
Для любой точки из , которая минимизирует на , существуют вещественные числа , называемые множителями Лагранжа, для которых выполняются одновременно условия:
- минимизирует над всеми
- по меньшей мере с одним
- (дополняющая нежёсткость).
Если существует «сильная допустимая точка», то есть точка , удовлетворяющая
то утверждение выше может быть усилено до требования .
И обратно, если некоторое из удовлетворяет условиям (1)-(3) для скаляров с , то определённо минимизирует на .
Алгоритмы
Задачи выпуклого программирования решаются следующими современными методами:[1]
- Методы пучков субградиентов} (Вольф, Лемерикал, Кивель),
- Субградиентные проекционные методы (Поляк),
- Метод внутренней точкиШаблон:Sfn, использующий самосогласованные барьерные функцииШаблон:Sfn и саморегулярные барьерные функцииШаблон:Sfn.
- Метод секущих плоскостей
- Метод эллипсоидов
- Субградиентные методы
- Шаблон:Не переведено 5
Субградиентные методы могут быть реализованы просто, потому они широко используютсяШаблон:SfnШаблон:Sfn. Двойственные субградиентные методы — это субградиентные методы, применённые к двойственной задаче. Шаблон:Не переведено 5 аналогичен двойственному субградиентному методу, но использует среднее по времени от основных переменных.
Расширения
Расширения выпуклого программирования включают оптимизацию Шаблон:Не переведено 5, псевдовыпуклых и квазивыпуклых функций. Расширения теории выпуклого анализа и итеративные методы для приблизительного решения невыпуклых задач оптимизации встречаются в области обобщённой выпуклости, известной как абстрактный выпуклый анализ.
См. также
- Двойственность
- Условия Каруша — Куна — Таккера
- Оптимизация (математика)
- Метод проксимального градиента
Примечания
Литература
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Книга
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Статья
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Еремин И. И., Астафьев Н. Н. Введение в теорию линейного и выпуклого программирования. - Шаблон:М., Наука, 1976. - 189 c.
- Каменев Г. К. Оптимальные адаптивные методы полиэдральной аппроксимации выпуклых тел. М.: ВЦ РАН, 2007, 230 с. ISBN 5-201-09876-2.
- Каменев Г. К. Численное исследование эффективности методов полиэдральной аппроксимации выпуклых тел. М: Изд. ВЦ РАН, 2010, 118с. ISBN 978-5-91601-043-5.
Ссылки
- Stephen Boyd, Lieven Vandenberghe, Convex optimization (pdf)
- EE364a: Convex Optimization I, EE364b: Convex Optimization II, Страница курса оксфордского университета
- 6.253: Convex Analysis and Optimization, страница курса MIT OCW
- Brian Borchers, An overview of software for convex optimization