Задача программирования конуса второго порядка имеет вид
удовлетворяющее ограничениям
f, x, b, beq, lb, и ub являются векторами и A, и Aeq матрицы. Для каждого i матрица A sc (i), векторы b sc (i) и d sc (i) и скалярные γ (i) находятся в ограничении конуса второго порядка, которое вы создаете используяsecondordercone
.
Другими словами, задача имеет линейную целевую функцию и линейные ограничения, а также набор конусных ограничений второго порядка вида .
coneprog
Алгоритм coneprog
решатель использует алгоритм, описанный в Андерсене, Роосе и Терлаки [1]. Этот метод является алгоритмом внутренней точки, подобным алгоритму линпрога внутренней точки.
Алгоритм начинается с того, что помещает задачу в standard form. Алгоритм добавляет неотрицательные переменные slack так, что задача имеет вид
удовлетворяющее ограничениям
Решатель расширяет размеры вектора линейного коэффициента f и матрицы линейных ограничений A чтобы учесть переменные slack.
Область K является перекрестным продуктом Lorentz cones Уравнения 1 и неотрицательной ортантной. Чтобы преобразовать каждый выпуклый конус
в 1 Уравнения конуса Лоренца создайте вектор-столбец переменных t 1, t 2,..., t n + 1:
Здесь количество переменных, n для каждого i конуса, является количеством строк в A sc (i). По своему определению, переменный вектор t удовлетворяет неравенству
(1) |
Уравнение 1 является определением конуса Лоренца в (n + 1) переменных. Переменные, t появляются в задаче вместо переменных, x в выпуклой области K.
Внутренне алгоритм также использует rotated Lorentz cone в переформуляции ограничений конуса, но эта тема не затрагивает этот случай. Для получения дополнительной информации см. Андерсена, Руса и Терлаки [1].
При добавлении переменных slack алгоритм сводит на нет переменные, при необходимости, и добавляет соответствующие константы так, чтобы:
Переменные с одной привязкой имеют нижнюю границу нуля.
Переменные с двумя границами имеют нижнюю границу нуля и, используя переменную slack, не имеют верхней границы.
Переменные без границ помещаются в конус Лоренца с переменной slack в качестве ограниченной переменной. Эта переменная slack не является частью какого-либо другого выражения, цели или ограничения.
Двойной конус
Двойственная проблема
таким, что
для некоторых
Двойственное оптимальное решение является точкой (y, s), которая удовлетворяет двойственным ограничениям и максимизирует двойственную цель.
Чтобы обработать потенциально недопустимые или неограниченные задачи, алгоритм добавляет еще две переменные τ и κ и формулирует задачу как однородную (равную нулю) и двойственную.
(2) |
наряду с ограничениями
(3) |
Вот, - K конуса, примыкающая к неотрицательной действительной линии, которая является пространством для (x; τ). Так же является конусом примыкает к неотрицательной действительной линии, которая является пространством для (s; κ). В этой формулировке следующая лемма показывает, что τ является масштабированием для возможных решений, и κ является показателем недопустимой задачи.
Лемма ([1] Лемма 2.1)
Позвольте (x, τ, y, s, κ) быть возможным решением Уравнения 2 наряду с ограничениями в Уравнении 3.
xTs + τκ = 0.
Если τ > 0, то (x, y, s )/ τ является основной-двойственным оптимальным решением стандартной формы задачи конуса второго порядка.
Если κ > 0, то по крайней мере одно из этих строгих неравенств содержит:
bTy > 0
fTx < 0.
Если первое неравенство имеет место, то стандартная форма, основная задача конуса второго порядка недопустима. Если удерживается второе неравенство, то стандартная форма, двойственная задача конуса второго порядка недопустима.
Сводные данные, для допустимых задач переменная τ масштабирует решение между исходной задачей стандартной формы и однородной самодвойственной задачей. Для неосуществимых проблем финал повторяет (x, y, s, τ, κ) предоставляет свидетельство о недопустимости для оригинальной стандартной проблемы формы.
Начальной точкой для итераций является допустимая точка:
x = 1 для каждой неотрицательной переменной, 1 для первой переменной в каждом конусе Лоренца и 0 в противном случае.
y = 0.
s = (1,0,..., 0) для каждого конуса, 1 для каждой неотрицательной переменной.
τ = 1.
κ = 1.
Алгоритм пытается следовать central path, которая является параметризованным решением следующих уравнений для γ уменьшения с 1 до 0.
(4) |
Каждая переменная с индексом 0 указывает начальную точку переменной.
X и S переменных являются arrow head матрицами, сформированными из векторов x и s, соответственно. Для вектора x = [x 1, x 2,..., xn] матрица со стрелкой X имеет определение
По своему определению X симметрична.
Переменная e является вектором с 1 в каждой координате конуса, соответствующей x 1 координате конуса Лоренца.
Переменная μ 0 имеет определение
где k - количество ненулевых элементов в x 0.
Центральный путь начинается в начальной точке и заканчивается оптимальным решением однородной двойственной задачи.
Андерсен, Роос и Терлаки [1] показывают в Лемме 3.1, что условие комплементарности xTs = 0, где x и s находятся в продукте Lorentz cones L, эквивалентно условию
для каждого i конуса. Здесь Xi = mat (xi), xi является переменной, связанной с i конуса Лоренца, Si = mat (si), и ei является вектором модуля [1,0,0,..., 0] соответствующей размерности. Это обсуждение показывает, что центральный путь удовлетворяет условию комплементарности в своей конечной точке.
Чтобы получить точки около центрального пути, когда γ параметра уменьшается с 1 до 0, алгоритм использует метод Ньютона. Переменные, чтобы найти маркированы (x, τ, y, s, κ). Позвольте dx представить направление поиска для переменных x и так далее. Затем шаг Ньютона решает следующую линейную систему, выведенную из уравнения 4.
Алгоритм получает свою следующую точку, делая шаг в d направлении.
для некоторого шага .
Для как численной устойчивости, так и ускоренной сходимости алгоритм масштабирует шаг согласно предложению у Нестерова и Тодда [8]. Кроме того, алгоритм корректирует шаг согласно варианту предиктора-корректора Мехротры [7]. (Для получения дополнительной информации см. Андерсена, Руса и Терлаки [1].)
Предшествующее обсуждение относится к LinearSolver
опция со значением 'augmented'
указано. Решатель имеет другие значения, которые изменяют вычисление шага в соответствии с различными типами задач.
'auto'
(по умолчанию) - coneprog
выбирает решатель шага:
Если задача разрежена, то решатель шага 'prodchol'
.
В противном случае решатель шага 'augmented'
.
'normal'
- Решатель использует вариант 'augmented'
шаг, который подходит, когда проблема является разреженной. См. Андерсена, Руса и Терлаки [1].
'schur'
- Решатель использует модифицированный метод Schur для обработки разреженной задачи с несколькими плотными столбцами. Этот способ также подходит для больших конусов. См. Андерсен [2].
'prodchol'
- Решатель использует методы, описанные в Goldfarb и Scheinberg ([4] и [5]), для обработки разреженной задачи с несколькими плотными столбцами. Этот способ также подходит для больших конусов.
На каждом k итерации алгоритм вычисляет три меры относительной сходимости:
Основной недопустимость
Двойная недопустимость
Недопустимость погрешностей
Можно просмотреть эти три статистики в командной строке, задав итеративное отображение.
options = optimoptions('coneprog','Display','iter');
Все три должны приблизиться к нулю, когда задача допустима, и решатель сходится. Для допустимой задачи κk переменной приближается к нулю, а τk переменной - к положительной константе.
Одно условие остановки в некоторой степени связано с недопустимостью зазора. Условие остановки, когда следующая мера оптимальности уменьшается ниже допуска оптимальности.
Эта статистическая величина измеряет точность целевого значения.
Решатель также останавливает и объявляет задачу недопустимой при следующих условиях. Три меры относительной недопустимости меньше c = ConstraintTolerance
, и
Если bTyk > 0, тогда решатель объявляет, что основная задача недопустима. Если fTxk < 0, тогда решатель заявляет, что двойственная задача недопустима.
Алгоритм также останавливается, когда
и
В этом случае, coneprog
сообщает, что задача численно нестабильна (выходной флаг -10
).
Оставшееся условие остановки возникает, когда, по крайней мере, одна мера недопустимости больше ConstraintTolerance
и вычисленный размер шага слишком мал. В этом случае, coneprog
сообщает, что поисковое направление стало слишком маленьким и не могло быть достигнуто никакого дальнейшего прогресса (выходной флаг -7
).
[1] Андерсен, Э. Д., К. Роос и Т. Терлаки. О реализации основного-двойственного метода внутренней точки для конической квадратичной оптимизации. Math. Program., Ser. B 95, pp. 249-277 (2003). https://doi.org/10.1007/s10107-002-0349-3
[2] Андерсен, К. Д. Модифицированный метод schur-complement для обработки плотных столбцов в методах interior-point для линейного программирования. Транзакции ACM на математическом программном обеспечении (TOMS), 22 (3): 348-356, 1996.
[3] Бен-Таль, Ахарон и Аркади Немировски. Выпуклая оптимизация в технике: моделирование, анализ, алгоритмы. (1998). Доступно в https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.455.2733&rep=rep1&type=pdf.
[4] Голдфарб, Д. и К. Шейнберг. Метод факторизации Холесского продукта для обработки плотных столбцов во внутренних методах точки для линейного программирования. Математическое программирование, 99 (1): 1-34, 2004.
[5] Голдфарб, Д. и К. Шейнберг. Форма продукта факторизации Холесского во внутренних точечных методах для программирования конуса второго порядка. Математическое программирование, 103 (1): 153-179, 2005.
[6] Ло, Чжи-Цюань, Жос Ф. Штурм и Шучжун Чжан. Двойственность и самодвойственность для конического выпуклого программирования. (1996). Доступно в https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.6432
[7] Мехротра, Санджай. «О реализации примитивно-двойственного метода точки». SIAM Journal на 2 оптимизации, № 4 (ноябрь 1992): 575-601. https://doi.org/10.1137/0802028.
[8] Нестеров, Ю. Э. и М. Дж. Тодд. Self-Scaled Barriers and Interior-Point Methods for Convex Programming (неопр.) (недоступная ссылка). Математика операций Исследования 22, № 1 (февраль 1997 года): 1-42. https://doi.org/10.1287/moor.22.1.1.