Есть несколько библиотек, которые включают решатели QP. Существуют как открытые, так и коммерческие варианты. В существующих ответах перечислены некоторые из них. Хочу уточнить вопрос с матрицей.
Я предполагаю, что вы имеете в виду объективную матрицу. Матрица ограничений должна привести только к непустому допустимому множеству. Вы упомянули, что матрица не подходит для разложения Холецкого. Поскольку разложение Холецкого может быть сформировано для любой положительно определенной матрицы, подразумевается, что ваша матрица не является положительно определенной.
Если матрица является положительно полуопределенной (т. е. имеет одно или несколько нулевых собственных значений), то задача является выпуклой КП и может быть решена эффективно. Однако многие решатели требуют положительно определенной цели. Поскольку цель положительно полуопределенного QP имеет нетривиальное нулевое пространство, может быть много решений. На самом деле множество решений может быть даже неограниченным. Численные алгоритмы в любом случае дадут только приближенное решение, поэтому редко важно, чтобы собственные значения матрицы были точно равны нулю. Вы можете сделать матрицу положительно определенной, добавив диагональную матрицу с небольшим положительным значением на диагонали. Это по существу выберет решение с наименьшей 2-нормой. На практике рекомендуется делать это, даже если матрица положительно определена, потому что матрицы с собственными значениями, близкими к нулю, часто могут вызывать проблемы с численными решателями. Сколько диагонали добавить — это компромисс между стабильностью и точностью.
Если матрица неопределенная (т. е. имеет хотя бы одно отрицательное собственное значение), то задача является NP-трудной. Это означает, что любые коды, основанные на доступных в настоящее время алгоритмах, будут иметь необоснованное время работы в худшем случае даже для задач среднего размера. Если ваша проблема имеет какую-то особую структуру или вам не требуется глобально оптимальное решение, то вы можете быть в порядке. Типичный подход состоит в поиске выпуклой релаксации.
person
MichaelJ
schedule
30.12.2013