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

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

Коническая проблема программирования второго порядка имеет форму

minxfTx

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

Asc(i)xbsc(i)dкв/смT(i)xγ(i)AxbAeqx=beqlbxub.

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

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

coneprog Алгоритм

coneprog решатель использует алгоритм, описанный в Андерсене, Кенгуру и Terlaky [1]. Этот метод является алгоритмом внутренней точки, похожим на Внутреннюю точку linprog Алгоритм.

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

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

minxfTx

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

Ax=bxK.

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

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

Asc(i)xbsc(i)dкв/смT(i)xγ(i)

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

XiSiei=SiXiei=0

для каждого конического i. Здесь Xi = циновка (xi), xi является переменной, сопоставленной с конусом Лоренца i, Si = циновка (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]. (Для получения дальнейшей информации смотрите Андерсена, Кенгуру и Terlaky [1].)

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

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

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

    • Если проблема разреженна, решателем шага является 'prodchol'.

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

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

  • '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] Андерсен, E. D., C. Кенгуру и Т. Терлэки. При реализации основного двойного метода внутренней точки для конической квадратичной оптимизации. Математика. Программа., Сер. B 95, стр 249–277 (2003). https://doi.org/10.1007/s10107-002-0349-3

[2] Андерсен, K. D. Модифицированный дополнительный Шуром метод для обработки плотных столбцов в методах внутренней точки для линейного программирования. Транзакции на Mathematical Software (TOMS) ACM, 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] Goldfarb, D. и К. Шайнберг. Метод факторизации Холесского формы продукта для обработки плотных столбцов в методах внутренней точки для линейного программирования. Математическое программирование, 99 (1):1–34, 2004.

[5] Goldfarb, D. и К. Шайнберг. Факторизация Холесского формы продукта в методах внутренней точки для конического программирования второго порядка. Математическое программирование, 103 (1):153–179, 2005.

[6] Ло, Чжи-Цюань, Джос Ф. Стерм и Шучжун Чжан. Дуальность и Самодуальность для Конического Выпуклого программирования. (1996). Доступный в https://citeseerx.ist.psu.edu/viewdoc/summary? doi=10.1.1.48.6432

[7] Mehrotra, Санджай. “На Реализации Основного Двойного Метода внутренней точки”. SIAM Journal на Оптимизации 2, № 4 (ноябрь 1992): 575–601. https://doi.org/10.1137/0802028.

[8] Нестеров, Ю. E. и М. Дж. Тодд. “Самомасштабированные Барьеры и Методы внутренней точки для Выпуклого программирования”. Математика Исследования операций 22, № 1 (февраль 1997): 1–42. https://doi.org/10.1287/moor.22.1.1.

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте