Коническая проблема программирования второго порядка имеет форму
удовлетворяющее ограничениям
f, x, b, beq, lb и ub являются векторами, и A и Aeq являются матрицами. Для каждого i, матричный кв/см A (i), векторы кв/см b (i) и кв/см d (i) и скалярный γ (i) находится в коническом ограничении второго порядка, что вы создаете использование secondordercone
.
Другими словами, проблема имеет линейную целевую функцию и линейные ограничения, а также набор конических ограничений второго порядка формы .
coneprog
Алгоритм coneprog
решатель использует алгоритм, описанный в Андерсене, Кенгуру и Terlaky [1]. Этот метод является алгоритмом внутренней точки, похожим на Внутреннюю точку linprog Алгоритм.
Алгоритм запускается путем размещения проблемы в standard form. Алгоритм добавляет неотрицательные слабые переменные так, чтобы проблема имела форму
удовлетворяющее ограничениям
Решатель расширяет размеры линейного вектора коэффициентов f и линейной матрицы ограничений A с учетом слабых переменных.
Область K является векторным произведением уравнения 1 Lorentz cones и неотрицательного orthant. Преобразовывать каждый выпуклый конус
к уравнению 1 конуса Лоренца создайте вектор-столбец переменных t 1, t 2, …, t n +1:
Здесь, количество переменных n для каждого конического i является количеством строк в кв/см A (i). По его определению переменный векторный t удовлетворяет неравенству
(1) |
Уравнение 1 является определением конуса Лоренца в (n +1) переменные. Переменные t появляются в проблеме вместо переменных x в выпуклой области K.
Внутренне, алгоритм также использует rotated Lorentz cone в переформулировке конических ограничений, но эта тема не обращается к тому случаю. Для получения дополнительной информации смотрите Андерсена, Кенгуру и Terlaky [1].
При добавлении слабых переменных алгоритм инвертирует переменные, по мере необходимости, и добавляет соответствующие константы так, чтобы:
Переменные с только одним связанным имеют нижнюю границу нуля.
Переменные с двумя границами имеют нижнюю границу нуля и, с помощью слабой переменной, не имеют никакой верхней границы.
Переменные без границ помещаются в конус Лоренца со слабой переменной как ограниченная переменная. Эта слабая переменная не является частью никакого другого выражения, цели или ограничения.
Двойной конус
Двойная проблема
таким образом, что
для некоторых
Двойное оптимальное решение является точкой (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.
Центральный путь начинается в стартовой точке и концах в оптимальном решении гомогенной самодвойственной проблемы.
Андерсен, Кенгуру и Terlaky [1] показывают в Лемме 3.1 что условие взаимозависимости xTs = 0, то, где x и s находятся в продукте конусов Лоренца L, эквивалентно условию
для каждого конического i. Здесь Xi = циновка (xi), xi является переменной, сопоставленной с конусом Лоренца i, Si = циновка (si), и ei является единичным вектором [1,0,0, …, 0] соответствующей размерности. Это обсуждение показывает, что центральный путь удовлетворяет условию взаимозависимости в своей конечной точке.
Чтобы получить точки около центрального пути как параметр, γ уменьшается от 1 к 0, алгоритм использует метод Ньютона. Переменные, чтобы найти помечены (x, τ, y, s, κ). Позвольте dx представлять поисковое направление для переменных x и так далее. Затем шаг Ньютона решает следующую линейную систему, выведенную из уравнения 4.
Алгоритм получает свой следующий вопрос путем получения шаг в направлении d.
для некоторого шага .
И для числовой устойчивости и для ускоренной сходимости, алгоритм масштабирует шаг согласно предложению в Нестерове и Тодде [8]. Кроме того, алгоритм корректирует шаг согласно варианту корректора предиктора Мехротры [7]. (Для получения дальнейшей информации смотрите Андерсена, Кенгуру и Terlaky [1].)
Предыдущее обсуждение относится к LinearSolver
опция со значением 'augmented'
заданный. Решатель имеет другие значения, которые изменяют вычисление шага, чтобы удовлетворить различным типам проблем.
'auto'
(значение по умолчанию) — coneprog
выбирает решатель шага:
Если проблема разреженна, решателем шага является 'prodchol'
.
В противном случае решателем шага является 'augmented'
.
'normal'
— Решатель использует вариант 'augmented'
шаг, который подходит, когда проблема разреженна. Смотрите Андерсена, Кенгуру и Terlaky [1].
'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] Андерсен, 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.