Квадратичное программирование

Материал из testwiki
Версия от 06:18, 6 апреля 2022; imported>InternetArchiveBot (Спасено источников — 9, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Квадратичное программирование (Шаблон:Lang-en, QP) — это процесс решения задачи оптимизации специального типа, а именно — задачи оптимизации (минимизации или максимизации) квадратичной функции нескольких переменных при линейных ограничениях на эти переменные. Квадратичное программирование является частным случаем нелинейного программирования.

Формулировка задачи

Задача квадратичного программирования с n переменными и m ограничениями можно сформулировать следующим образомШаблон:Sfn.

Дано:

Целью задачи квадратичного программирования является поиск n-мерного вектора Шаблон:Math, который

минимизирует 12𝐱TQ𝐱+𝐜T𝐱
при условиях A𝐱𝐛,

где Шаблон:Math обозначает транспонированный вектор. Обозначение Шаблон:Math означает, что любой элемент вектора Шаблон:Math не превосходит соответствующего элемента вектора Шаблон:Math.

Связанная задача программирования, Шаблон:Нп5 имеет квадратичные ограничения на переменные.

Методы решения

Для общих значений используются различные методы, среди них

В случае, когда Q является положительно определённой, задача является частным случаем более общей задачи выпуклой оптимизации.

Ограничения – равенства

Задача квадратичного программирования несколько проще, если Q является положительно определённой и все ограничения являются равенствами (нет неравенств), поскольку в этом случае можно свести задачу к решению системы линейных уравнений. Если использовать множители Лагранжа и искать экстремум лагранжиана, можно легко показать, что решение задачи

минимизировать 12𝐱TQ𝐱+𝐜T𝐱
при условиях B𝐱=𝐝

определяется системой линейных уравнений

[QBTB0][𝐱λ]=[𝐜𝐝]

где λ — множество множителей Лагранжа, которые появляются вместе с решением 𝐱.

Самый лёгкий способ решить эту систему — решить её прямыми методами (например, с помощью LU-разложения, очень удобного для небольших задач). Для больших задач возникают некоторые необычные трудности, наиболее заметные, когда задача не положительно определена (даже если Q положительно определена), что делает потенциально очень трудно найти хороший математический подход и существует много подходов, зависящих от задачиШаблон:Нет АИ.

Если число ограничений не равно числу переменных, можно попробовать относительно простую атаку, заменив переменные таким образом, что ограничения будут выполняться безусловно. Например, допустим, что 𝐝=0 (переход к ненулевым значениям достаточно прост). Рассмотрим ограничения

B𝐱=0

Введём новый вектор 𝐲, определённый равенством

Z𝐲=𝐱

где 𝐲 имеет размерность 𝐱 минус число ограничений. Тогда

BZ𝐲=0

и если матрица Z выбрана так, что BZ=0, равенства в ограничениях будут выполняться всегда. Поиск матрицы Z подразумевает нахождение ядра матрицы B, что более или менее просто, в зависимости от структуры матрицы B. Подставляя новый вектор в исходные условия, получаем квадратичную задачу без ограничений:

12𝐱TQ𝐱+𝐜T𝐱12𝐲TZTQZ𝐲+(ZT𝐜)T𝐲

и решение можно будет найти, решив уравнение

ZTQZ𝐲=ZT𝐜

При некоторых ограничениях на Q сокращённая матрица ZTQZ будет положительно определена. Можно написать вариант метода сопряжённых градиентов, при котором нет необходимости явного вычисления матрицы ZШаблон:Sfn.

Лагранжева двойственность

Шаблон:See also

Двойственная задача Лагранжа для квадратичного программирования является также задачей квадратичного программирования. Чтобы это понять, остановимся на случае c=0 с положительно определённой матрицей Q. Выпишем множители Лагранжа функции

L(x,λ)=12xTQx+λT(Axb).

Если определим (лагранжеву) двойственную функцию g(λ) как g(λ)=infxL(x,λ), мы ищем нижнюю границу L, используя xL(x,λ)=0 и положительную определённость мaтрицы Q:

x*=Q1ATλ.

Следовательно, двойственна функция равна

g(λ)=12λTAQ1ATλλTb,

и двойственной задачей Лагранжа для исходной задачи будет

минимизировать 12λTAQ1ATλλTb
при условиях λ0.

Кроме теории двойственности Лагранжа, существуют другие двойственные пары задач (например, Шаблон:Нп5).

Сложность

Для положительно определённой матрицы Q метод эллипсоидов решает задачу за полиномиальное времяШаблон:Sfn. Если, с другой стороны, Q не является положительно определённой, то задача становится NP-труднойШаблон:Sfn. Фактически, даже если Q имеет единственное отрицательное собственное значение, задача NP-труднаШаблон:Sfn.

Пакеты для решения и скриптовые языки

Название Описание
Шаблон:Нп5 Система для моделирования и решения задач оптимизации и расписаний
Шаблон:Нп5 Библиотека программ (C++, .NET) численного анализа с двойным лицензированием (GPL/proprietary).
AMPL Популярный язык моделирования для математической оптимизации большого размера.
Шаблон:Нп5 Моделирование и оптимизация для задач LP (линейное программирование), QP (квадратичное программирование), NLP (нелинейное программирование), MILP (целочисленное программирование), MINLP (смешанное целочисленное нелинейное программирование) и Шаблон:Нп5 (дифференциально-алгебраические уравнения) в MATLAB и Python.
Шаблон:Нп5 Вычислительный геометрический пакет с открытым кодом, который включает систему решения задач квадратичного программирования.
CPLEX Популярная система решения задач с API (C, C++, Java, .Net, Python, Matlab и R). Бесплатна для академического использования.
Система поиска решений в Excel Система решения нелинейных задач, приспособленная для электронных таблиц, в которой вычислений функций основывается на значении ячеек. Базовая версия доступна как стандартное дополнение для Excel.
Шаблон:Нп5 Система моделирования высокого уровня для математической оптимизации
Шаблон:Нп5 Система решения задач с параллельными алгоритмами для задач линейного программирования большого размера, задач квадратичного программирования и смешанно–целочисленных задач. Бесплатна для академического использования.
Шаблон:Нп5 Набор математических и статистических функций, которые может программист включить в своё приложение.
Шаблон:Нп5 Пакет IPOPT (Interior Point OPTimizer, Оптимизатор внутренней точки) — это пакет программирования для нелинейных задач большого размера
Шаблон:Нп5 Коммерческий интегрированный пакет для нелинейной оптимизации
Maple Язык программирования общего назначения для математики. Для решения квадратичных задач в Maple используется команда QPSolve Шаблон:Wayback.
MATLAB Матрично-ориентированный язык программирования общего назначения для численных вычислений. Для решения задач квадратичного программирования в MATLAB требуется вдобавок к базовому продукту MATLAB дополнение «Optimization Toolbox»
Mathematica Язык программирования общего назначения для математики, включающий символьные и численные возможности.
Шаблон:Нп5 Система для решения задач оптимизации большого размера, включает API для нескольких языков (C++, Java, .Net, Matlab и Python)
Шаблон:Нп5 Набор математических и статистических процедур, разработанных компанией Шаблон:Нп5 для нескольких языков программирования (C, C++, Fortran, Visual Basic, Java и C#) и пакетов (MATLAB, Excel, R, LabVIEW). Раздел оптимизации библиотеки NAG включает процедуры для задач квадратичного программирования с редкими и плотными матрицами ограничений, а также процедуры для оптимизации линейных и нелинейных функций, сумм квадратов линейных и нелинейных функций. В библиотеке NAG имеются процедуры как для локальной, так и глобальной оптимизации, а также для задач целочисленного программирования.
Шаблон:Нп5 Свободно распространяемый, основанный на Java язык моделирования для оптимизации и поддерживающий несколько целевых систем решений. Существует плагин для Eclipse Шаблон:SfnШаблон:Sfn
R Универсальный кросс-платформенный вычислительный пакет с лицензией GPL (см. раздел quadprog Шаблон:Wayback этого пакета). Переведён на javascript Шаблон:Wayback под лицензией MIT. Переведён на C# Шаблон:Wayback под лицензией LGPL.
Шаблон:Нп5/OR Система для решения линейных, целочисленных , комбинаторных, нелинейных, недиференцируемых задач, задач на сетях и оптимизации в ограничениях. Шаблон:Нп5 OPTMODEL Шаблон:Wayback и ряд вертикальных решений, нацеленных на специфичные задачи, полностью интегрированы с |SAS/.
Шаблон:Нп5 Система математического моделирования и решения задач, основанная на декларативном языке, базирующемся на продукционных правилах. Система коммерциализирована компанией Universal Technical Systems, Inc. Шаблон:Wayback.
Шаблон:Нп5 Поддерживает глобальную оптимизацию, решение задач целочисленного программирования, все типы метода наименьших квадратов, решение задач линейного квадратичного программирования для MATLAB. TOMLAB поддерживает системы решения Gurobi, CPLEX, Шаблон:Нп5 и Шаблон:Нп5.

См. также

Примечания

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

Литература

Шаблон:Refbegin

Шаблон:Refend

Ссылки

Шаблон:Rq