Эта статья требует внимания специалиста по математике . Конкретная проблема: некоторые элементы на этой странице нуждаются в разъяснении и / или экспертной проверке. Февраль 2017 г. ) ( |
Квадратичного программирования (QP) представляет собой процесс решения определенных математических оптимизационных задач , связанных с квадратичными функциями . В частности, каждый стремится оптимизировать (минимизировать или максимизировать) многомерную квадратичную функцию с учетом линейных ограничений на переменные. Квадратичное программирование - это разновидность нелинейного программирования .
«Программирование» в этом контексте относится к формальной процедуре решения математических задач. Это использование относится к 1940-м годам и не связано конкретно с более поздним понятием «компьютерное программирование». Чтобы избежать путаницы, некоторые практики предпочитают термин «оптимизация» - например, «квадратичная оптимизация». [1]
Постановка проблемы [ править ]
Задачу квадратичного программирования с n переменными и m ограничениями можно сформулировать следующим образом. [2] Дано:
- действительный n- мерный вектор c ,
- п × п - мерный вещественный симметричная матрица Q ,
- м × п - мерная вещественная матрица и
- м - мерный вещественный вектор Ь ,
цель квадратичного программирования - найти n -мерный вектор x , который будет
свести к минимуму при условии
где x T обозначает вектор, транспонированный к x . Обозначение A x ⪯ b означает, что каждый элемент вектора A x меньше или равен соответствующему элементу вектора b (покомпонентное неравенство).
Наименьшие квадраты [ править ]
В качестве особого случая, когда Q является симметричным положительно определенным , функция стоимости сводится к наименьшим квадратам:
свести к минимуму при условии
где Q = R T R следует из разложения Холецкого из Q и с = - R T D . И наоборот, любая такая программа наименьших квадратов с ограничениями может быть эквивалентно оформлена как QP, даже для общей неквадратной R- матрицы.
Обобщения [ править ]
При минимизации функции f в окрестности некоторой контрольной точки x 0 , Q устанавливается равной ее матрице Гессе H ( f ( x 0 )), а c устанавливается равным ее градиенту ∇ f ( x 0 ) . Связанная с этим проблема программирования, квадратично ограниченное квадратичное программирование , может быть поставлена путем добавления квадратичных ограничений на переменные.
Способы решения [ править ]
Для решения общих проблем обычно используются различные методы, в том числе
В случае, когда Q является положительно определенным , то задача является частным случаем более общего поля выпуклой оптимизации .
Ограничения равенства [ править ]
Квадратное программирование особенно просто , когда Q является положительно определенным и есть только ограничение равенства; в частности, процесс решения является линейным. Используя множители Лагранжа и ища экстремум лагранжиана, легко показать, что решение задачи с ограничениями равенства
задается линейной системой
где λ - набор множителей Лагранжа, которые выходят из решения вместе с x .
Самый простой способ приблизиться к этой системе - это прямое решение (например, факторизация LU ), что для небольших задач очень практично. Для больших задач система создает некоторые необычные трудности, в первую очередь то, что проблема никогда не бывает положительно определенной (даже если Q есть), что потенциально очень затрудняет поиск хорошего численного подхода, и существует множество подходов, из которых можно выбирать в зависимости от проблема. [5]
Если ограничения не связывают переменные слишком сильно, относительно простая атака состоит в том, чтобы изменить переменные так, чтобы ограничения были безоговорочно удовлетворены. Например, предположим, что d = 0 (обобщение до ненулевого несложно). Глядя на уравнения ограничений:
ввести новую переменную y, определенную как
где y имеет размерность x минус количество ограничений. потом
и если Z выбрано так, что EZ = 0, уравнение связи будет всегда удовлетворяться. Обнаружение таких Z регистрация требует нахождение в нуль - пространство в Е , который является более или менее простой в зависимости от структуры Е . Подстановка в квадратичную форму дает задачу безусловной минимизации:
решение которого дается формулой:
При определенных условиях на Q приведенная матрица Z T QZ будет положительно определенной. Можно написать вариации на сопряженном градиентный методе , который позволяет избежать явного вычисления Z . [6]
Лагранжева двойственность [ править ]
Лагранжиан, двойственный к КП, также является КП. Чтобы убедиться в этом, остановимся на случае, когда c = 0 и Q положительно определено. Запишем функцию Лагранжа в виде
Определение (лагранжиан) двойная функция г (Х) , как мы находим инфимум из L , используя и положительную определенность Q :
Следовательно, двойственная функция
и поэтому лагранжиан, двойственный к КП, есть
Помимо лагранжевой теории двойственности, существуют и другие пары двойственности (например, Вулфа и т. Д.).
Сложность [ править ]
Для положительно определенной Q , то эллипсоид метод решает задачу (слабо) полиномиальное время . [7] Если, с другой стороны, Q неопределенно, то задача NP-сложная . [8] Фактически, даже если Q имеет только одно отрицательное собственное значение , проблема является (сильно) NP-трудной . [9]
Целочисленные ограничения [ править ]
В некоторых ситуациях один или несколько элементов вектора должны принимать целочисленные значения. Это приводит к формулировке задачи смешанно-целочисленного квадратичного программирования (MIQP). [10] Приложения MIQP включают водные ресурсы [11] и построение индексных фондов . [12]
Решатели и языки сценариев (программирования) [ править ]
Имя | Краткая информация |
---|---|
ЦЕЛИ | Программный комплекс для моделирования и решения задач оптимизации и календарного планирования. |
АЛГЛИБ | Цифровая библиотека с двойной лицензией (GPL / проприетарная) (C ++, .NET). |
AMPL | Популярный язык моделирования для крупномасштабной математической оптимизации. |
APMonitor | Пакет моделирования и оптимизации для систем LP , QP, NLP , MILP , MINLP и DAE в MATLAB и Python. |
CGAL | Пакет вычислительной геометрии с открытым исходным кодом, который включает решатель квадратичного программирования. |
CPLEX | Популярный решатель с API (C, C ++, Java, .Net, Python, Matlab и R). Бесплатно для ученых. |
Функция решателя Excel | Нелинейный решатель, адаптированный к электронным таблицам, в которых оценки функций основаны на пересчете ячеек. Базовая версия доступна как стандартное дополнение для Excel. |
GAMS | Система моделирования высокого уровня для математической оптимизации |
Гуроби | Решатель с параллельными алгоритмами для крупномасштабных линейных программ, квадратичных программ и смешанно-целочисленных программ. Бесплатно для академического использования. |
IMSL | Набор математических и статистических функций, которые программисты могут встроить в свои программные приложения. |
IPOPT | Ipopt (Interior Point OPTimizer) - программный комплекс для крупномасштабной нелинейной оптимизации. |
Artelys Knitro | Интегрированный пакет для нелинейной оптимизации |
Клен | Универсальный язык программирования для математики. Решение квадратичной задачи в Maple выполняется с помощью его команды QPSolve . |
MATLAB | Универсальный матрично-ориентированный язык программирования для числовых вычислений. Квадратичное программирование в MATLAB требует Optimization Toolbox в дополнение к базовому продукту MATLAB. |
Mathematica | Универсальный язык программирования для математики, включая символьные и числовые возможности. |
МОСЕК | Решатель для крупномасштабной оптимизации с API для нескольких языков (C ++, Java, .Net, Matlab и Python) |
Цифровая библиотека NAG | Набор математических и статистических процедур, разработанных Numerical Algorithms Group для нескольких языков программирования (C, C ++, Fortran, Visual Basic, Java и C #) и пакетов (MATLAB, Excel, R, LabVIEW). Глава Оптимизация библиотеки NAG включает процедуры для задач квадратичного программирования как с разреженными, так и с неразреженными матрицами линейных ограничений, а также процедуры для оптимизации линейных, нелинейных сумм квадратов линейных или нелинейных функций с нелинейными, ограниченными ограничениями или без ограничений. . В библиотеке NAG есть процедуры как для локальной, так и для глобальной оптимизации, а также для непрерывных или целочисленных задач. |
GNU Octave | Бесплатный (его лицензия GPLv 3) универсальный и матрично-ориентированный язык программирования для численных вычислений, аналогичный MATLAB. Квадратичное программирование в GNU Octave доступно через команду qp |
R (Фортран) | Лицензированная GPL универсальная кроссплатформенная платформа статистических вычислений. |
SAS / OR | Набор решателей для линейной, целочисленной, нелинейной, без производной, сетевой, комбинаторной оптимизации и оптимизации с ограничениями; язык алгебраического моделирования OPTMODEL; и множество вертикальных решений, направленных на конкретные проблемы / рынки, все из которых полностью интегрированы с системой SAS . |
TK Solver | Программный комплекс для математического моделирования и решения задач, основанный на декларативном языке, основанном на правилах, коммерциализируется Universal Technical Systems, Inc. |
ТОМЛАБ | Поддерживает глобальную оптимизацию, целочисленное программирование, все типы наименьших квадратов, линейное, квадратичное и неограниченное программирование для MATLAB . TOMLAB поддерживает такие решатели, как Gurobi , CPLEX , SNOPT и KNITRO . |
XPRESS | Решатель для крупномасштабных линейных программ, квадратичных программ, общих нелинейных и смешанно-целочисленных программ. Имеет API для нескольких языков программирования, также имеет язык моделирования Mosel и работает с AMPL, GAMS . Бесплатно для академического использования. |
См. Также [ править ]
- Последовательное квадратичное программирование
- Линейное программирование
- Метод критической линии
Ссылки [ править ]
- ^ Райт, Стивен Дж. (2015), «Непрерывная оптимизация (нелинейное и линейное программирование)», у Николаса Дж. Хайэма; и другие. (ред.), Принстонский компаньон по прикладной математике , Princeton University Press, стр. 281–293
- ^ Нокедаль, Хорхе; Райт, Стивен Дж. (2006). Численная оптимизация (2-е изд.). Берлин, Нью-Йорк: Springer-Verlag . п. 449 . ISBN 978-0-387-30303-1..
- ^ a b Мурти, Катта Г. (1988). Линейная дополнительность, линейное и нелинейное программирование . Сигма-серия в прикладной математике. 3 . Берлин: Heldermann Verlag. с. xlviii + 629 с. ISBN 978-3-88538-403-8. Руководство по ремонту 0949214 . Архивировано из оригинала на 2010-04-01.
- ^ Delbos, F .; Гилберт, Дж. (2005). «Глобальная линейная сходимость расширенного лагранжевого алгоритма для решения выпуклых квадратичных задач оптимизации» (PDF) . Журнал выпуклого анализа . 12 : 45–69.
- ^ Поиск в Google.
- ^ Гулд, Николас IM; Hribar, Mary E .; Нокедаль, Хорхе (апрель 2001 г.). «О решении задач квадратичного программирования с ограничениями на равенство, возникающих при оптимизации». SIAM J. Sci. Comput . 23 (4): 1376–1395. CiteSeerX 10.1.1.129.7555 . DOI : 10.1137 / S1064827598345667 .
- ^ Козлов, МК; С.П. Тарасов; Леонид Григорьевич Хачиян (1979). «[Полиномиальная разрешимость выпуклого квадратичного программирования]». Доклады Академии Наук СССР . 248 : 1049–1051.Перевод на: Советская математика - Доклады . 20 : 1108–1111. Отсутствует или пусто
|title=
( справка ) - ^ Сахни, С. (1974). «Вычислительные проблемы» (PDF) . SIAM Journal on Computing . 3 (4): 262–279. CiteSeerX 10.1.1.145.8685 . DOI : 10.1137 / 0203021 .
- ^ Pardalos, Panos M .; Вавасис, Стивен А. (1991). «Квадратичное программирование с одним отрицательным собственным значением (сильно) NP-сложно». Журнал глобальной оптимизации . 1 (1): 15–22. DOI : 10.1007 / bf00120662 . S2CID 12602885 .
- ^ Lazimy, Рафаэль (1982-12-01). «Смешано-целочисленное квадратичное программирование». Математическое программирование . 22 (1): 332–349. DOI : 10.1007 / BF01581047 . ISSN 1436-4646 . S2CID 8456219 .
- ^ Пропато Марко; Убер Джеймс Г. (2004-07-01). «Проектирование системы повышения давления с использованием смешанного целочисленного квадратичного программирования». Журнал планирования и управления водными ресурсами . 130 (4): 348–352. DOI : 10.1061 / (ASCE) 0733-9496 (2004) 130: 4 (348) .
- ^ Cornuéjols, Жерар; Пенья, Хавьер; Tütüncü, Reha (2018). Методы оптимизации в финансах (2-е изд.). Кембридж, Великобритания: Издательство Кембриджского университета. С. 167–168. ISBN 9781107297340.
Дальнейшее чтение [ править ]
- Коттл, Ричард В .; Пан, Джонг-Ши; Стоун, Ричард Э. (1992). Проблема линейной дополнительности . Компьютерные науки и научные вычисления. Бостон, Массачусетс: Academic Press, Inc., стр. Xxiv + 762 стр. ISBN 978-0-12-192350-1. Руководство по ремонту 1150683 .
- Гарей, Майкл Р .; Джонсон, Дэвид С. (1979). Компьютеры и непоколебимость: руководство по теории NP-полноты . WH Freeman. ISBN 978-0-7167-1045-5. A6: MP2, стр. 245.
- Гулд, Николас И.М.; Тоинт, Филипп Л. (2000). "Библиография квадратичного программирования" (PDF) . Внутренний отчет Группы численного анализа RAL 2000-1.
Внешние ссылки [ править ]
- Страница о QP
- Руководство по оптимизации NEOS: квадратичное программирование
- Квадратичное программирование