Алгоритм программирования конуса второго порядка

Определение программирования конуса второго порядка

Задача программирования конуса второго порядка имеет вид

minxfTx

удовлетворяющее ограничениям

Asc(i)xbsc(i)dscT(i)xγ(i)AxbAeqx=beqфунтxub.

f, x, b, beq, lb, и ub являются векторами и A, и Aeq матрицы. Для каждого i матрица A sc (i), векторы b sc (i) и d sc (i) и скалярные γ (i) находятся в ограничении конуса второго порядка, которое вы создаете используяsecondordercone.

Другими словами, задача имеет линейную целевую функцию и линейные ограничения, а также набор конусных ограничений второго порядка вида Asc(i)xbsc(i)dscT(i)xγ(i).

coneprog Алгоритм

coneprog решатель использует алгоритм, описанный в Андерсене, Роосе и Терлаки [1]. Этот метод является алгоритмом внутренней точки, подобным алгоритму линпрога внутренней точки.

Стандартная форма

Алгоритм начинается с того, что помещает задачу в standard form. Алгоритм добавляет неотрицательные переменные slack так, что задача имеет вид

minxfTx

удовлетворяющее ограничениям

Ax=bxK.

Решатель расширяет размеры вектора линейного коэффициента f и матрицы линейных ограничений A чтобы учесть переменные slack.

Область K является перекрестным продуктом Lorentz cones Уравнения 1 и  неотрицательной ортантной. Чтобы преобразовать каждый выпуклый конус

Asc(i)xbsc(i)dscT(i)xγ(i)

в  1 Уравнения конуса Лоренца создайте вектор-столбец переменных t 1, t 2,..., t n + 1:

t1=dTxγt2:(n+1)=Ascxbsc.

Здесь количество переменных, n для каждого i конуса, является количеством строк в A sc (i). По своему определению, переменный вектор t удовлетворяет неравенству

t2:(n+1)t1.(1)

Уравнение 1 является определением конуса Лоренца в (n + 1) переменных. Переменные, t появляются в задаче вместо переменных, x в выпуклой области K.

Внутренне алгоритм также использует rotated Lorentz cone в переформуляции ограничений конуса, но эта тема не затрагивает этот случай. Для получения дополнительной информации см. Андерсена, Руса и Терлаки [1].

При добавлении переменных slack алгоритм сводит на нет переменные, при необходимости, и добавляет соответствующие константы так, чтобы:

  • Переменные с одной привязкой имеют нижнюю границу нуля.

  • Переменные с двумя границами имеют нижнюю границу нуля и, используя переменную slack, не имеют верхней границы.

  • Переменные без границ помещаются в конус Лоренца с переменной slack в качестве ограниченной переменной. Эта переменная slack не является частью какого-либо другого выражения, цели или ограничения.

Двойная задача

Двойной конус

K*={s:sTx0xK}.

Двойственная проблема

maxybTy

таким, что

ATy+s=f

для некоторых

sK*.

Двойственное оптимальное решение является точкой (y, s), которая удовлетворяет двойственным ограничениям и максимизирует двойственную цель.

Однородная самодвойственная рецептура

Чтобы обработать потенциально недопустимые или неограниченные задачи, алгоритм добавляет еще две переменные τ и κ и формулирует задачу как однородную (равную нулю) и двойственную.

Axbτ=0ATy+sfτ=0fTx+bTyκ=0(2)

наряду с ограничениями

(x;τ)K¯,(s;κ)K¯*.(3)

Вот, K¯ - K конуса, примыкающая к неотрицательной действительной линии, которая является пространством для (x; τ). Так жеK¯* является конусом K* примыкает к неотрицательной действительной линии, которая является пространством для (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.

Axbτ=γ(Ax0bτ0)ATy+scτ=γ(ATy0+s0fτ0)fTx+bTyκ=γ(fTx0+bTy0κ0)XSe=γμ0eτκ=γμ0.(4)
  • Каждая переменная с индексом 0 указывает начальную точку переменной.

  • X и S переменных являются arrow head матрицами, сформированными из векторов x и s, соответственно. Для вектора x = [x 1, x 2,..., xn] матрица со стрелкой X имеет определение

    X=mat(x)=[x1x2:nTx2:nx1I].

    По своему определению X симметрична.

  • Переменная e является вектором с 1 в каждой координате конуса, соответствующей x 1 координате конуса Лоренца.

  • Переменная μ 0 имеет определение

    μ0=x0Ts0+τ0κ0k+1,

    где k - количество ненулевых элементов в x 0.

Центральный путь начинается в начальной точке и заканчивается оптимальным решением однородной двойственной задачи.

Андерсен, Роос и Терлаки [1] показывают в Лемме 3.1, что условие комплементарности xTs = 0, где x и s находятся в продукте Lorentz cones L, эквивалентно условию

XiSiei=SiXiei=0

для каждого i конуса. Здесь Xi = mat (xi), xi является переменной, связанной с i конуса Лоренца, Si = mat (si), и ei является вектором модуля [1,0,0,..., 0] соответствующей размерности. Это обсуждение показывает, что центральный путь удовлетворяет условию комплементарности в своей конечной точке.

Направление поиска

Чтобы получить точки около центрального пути, когда γ параметра уменьшается с 1 до 0, алгоритм использует метод Ньютона. Переменные, чтобы найти маркированы (x, τ, y, s, κ). Позвольте dx представить направление поиска для переменных x и так далее. Затем шаг Ньютона решает следующую линейную систему, выведенную из уравнения 4.

Adxbdτ=(γ1)(Ax0bτ0)ATdy+dsfdτ=(γ1)(ATy0+s0fτ0)fTdx+bTdydκ=(γ1)(fTx0+bTy0κ)X0ds+S0dx=X0S0e+γμ0eτ0dκ+κ0dtau=τ0κ0+γμ0.

Алгоритм получает свою следующую точку, делая шаг в d направлении.

[x1τ1y1s1κ1]=[x0τ0y0s0κ0]+α[dxdτdydsdκ]

для некоторого шага α[0,1].

Для как численной устойчивости, так и ускоренной сходимости алгоритм масштабирует шаг согласно предложению у Нестерова и Тодда [8]. Кроме того, алгоритм корректирует шаг согласно варианту предиктора-корректора Мехротры [7]. (Для получения дополнительной информации см. Андерсена, Руса и Терлаки [1].)

Изменения решателя шага

Предшествующее обсуждение относится к LinearSolver опция со значением 'augmented' указано. Решатель имеет другие значения, которые изменяют вычисление шага в соответствии с различными типами задач.

  • 'auto' (по умолчанию) - coneprog выбирает решатель шага:

    • Если задача разрежена, то решатель шага 'prodchol'.

    • В противном случае решатель шага 'augmented'.

  • 'normal' - Решатель использует вариант 'augmented' шаг, который подходит, когда проблема является разреженной. См. Андерсена, Руса и Терлаки [1].

  • 'schur' - Решатель использует модифицированный метод Schur для обработки разреженной задачи с несколькими плотными столбцами. Этот способ также подходит для больших конусов. См. Андерсен [2].

  • 'prodchol' - Решатель использует методы, описанные в Goldfarb и Scheinberg ([4] и [5]), для обработки разреженной задачи с несколькими плотными столбцами. Этот способ также подходит для больших конусов.

Итерационные условия отображения и остановки

На каждом k итерации алгоритм вычисляет три меры относительной сходимости:

  • Основной недопустимость

    InfeasОсновнойk=Axkbτkmax(1,Ax0bτ0).

  • Двойная недопустимость

    InfeasДвойнойk=ATyk+skfτkmax(1,ATy0+s0fτ0).

  • Недопустимость погрешностей

    InfeasПромежутокk=|fTxk+bTykκk|max(1,|fTx0+bTy0κ0|).

Можно просмотреть эти три статистики в командной строке, задав итеративное отображение.

options = optimoptions('coneprog','Display','iter');

Все три должны приблизиться к нулю, когда задача допустима, и решатель сходится. Для допустимой задачи κk переменной приближается к нулю, а τk переменной - к положительной константе.

Одно условие остановки в некоторой степени связано с недопустимостью зазора. Условие остановки, когда следующая мера оптимальности уменьшается ниже допуска оптимальности.

Optimalityk=|fTxkbTyk|τk+|bTyk|=|fTxk/τkbTyk/τk|1+|bTyk/τk|.

Эта статистическая величина измеряет точность целевого значения.

Решатель также останавливает и объявляет задачу недопустимой при следующих условиях. Три меры относительной недопустимости меньше c = ConstraintTolerance, и

τkcmax(1,κk).

Если bTyk > 0, тогда решатель объявляет, что основная задача недопустима. Если fTxk < 0, тогда решатель заявляет, что двойственная задача недопустима.

Алгоритм также останавливается, когда

μkcμ0

и

τkcmax(1,κk).

В этом случае, 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.

См. также

|

Похожие темы