Линейное программирование с матричными ограничениями


10

У меня есть проблема оптимизации, которая выглядит следующим образом

minJ,Bij|Jij|s.t.MJ+BY=X

Здесь мои переменные - это матрицы J и B , но вся проблема все еще является линейной программой; остальные переменные являются фиксированными.

Когда я пытаюсь ввести эту программу в мои любимые инструменты линейного программирования, у меня возникают проблемы. А именно, если я напишу это в «стандартной» линейной форме программы, матрицы параметров M и Y будут повторяться множество раз (по одному разу для каждого столбца X ).

Есть ли алгоритм и / или пакет, который может иметь дело с оптимизацией в форме выше? Прямо сейчас у меня заканчивается память, потому что M и Y нужно копировать так много раз!


Является ли B матрица параметров, или вы имеете в виду Y ? Каковы формы различных матриц?
Джеффри Ирвинг

[Привет, Джеффри!] J и B - переменные, остальные - параметры. В столбце B относительно мало столбцов, но все остальные размеры довольно большие (ничто не является квадратным).
Джастин Соломон

[Привет!] Вы должны отредактировать сообщение, чтобы дважды не говорить, что B является параметром.
Джеффри Ирвинг

1
Интересно, но, вероятно, бесполезно, версия этой проблемы с вместоможно решить с помощью пары SVD. | J я J |Jij2|Jij|
Джеффри Ирвинг

1
@ Джеффри, это не совпадение :-)
Джастин Соломон,

Ответы:


12

обзор

Возможно, вы захотите попробовать вариант метода множителей с альтернативными направлениями (ADMM), который, как было обнаружено, неожиданно быстро сходится для типа лассо. Стратегия состоит в том, чтобы сформулировать проблему с помощью расширенного лагранжиана, а затем выполнить градиентное восхождение по двойной задаче. Это особенно хорошо для этой конкретной регуляризованной задачи, потому что негладкая часть каждой итерации метода имеет точное решение, которое вы можете просто оценить элемент за элементом, в то время как гладкая часть включает в себя решение линейной системы.л 1l1l1

В этом посте мы

  • получить общую формулировку ADMM для обобщения вашей проблемы,
  • получить подзадачи для каждой итерации ADMM и специализировать их в вашей ситуации, а затем
  • исследовать полученную линейную систему , которая должна быть решена каждой итерации, и разработать быстрый решатель (или предобуславливатель) на основе предварительного вычисления собственного значения разложения (или низкий ранг приближения этого) для и .Y Y TMTMYYT
  • резюмируя несколько заключительных замечаний

Большинство важных идей здесь описаны в следующем превосходном обзоре:

Бойд, Стивен и др. «Распределенная оптимизация и статистическое обучение с помощью метода переменных множителей». Основы и тенденции в машинном обучении 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf

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

ADMM формулировка

В общем, предположим, что вы хотите решить

minxi|xi|s.t.Ax=b.

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

Вместо этого вы можете решить эквивалентную задачу: с лагранжевым L(x,z,λ,γ)=

минИкс,ZΣя|Икся|+α2||Икс-Z||2+β2||AZ-б||2улицаAZзнак равноб&Иксзнак равноZ,
L(Икс,Z,λ,γ)знак равноΣя|Икся|+α2||Икс-Z||2+β2||AZ-б||2+λT(AZ-б)+γT(Икс-Z)знак равноΣя|Икся|+α2||Икс-Z+1αγ||2+β2||AZ-б+1βλ||2+α2||1αγ||2+β2||1βλ||2,

Метод мультипликаторов с переменным направлением решает двойственную задачу, посредством градиентного подъема по двойственным переменным, за исключением неточные чередующиеся проекции на двойственные подзадачи. То есть каждый выполняет итерацию x k + 1

Максимумλ,γминИкс,ZL(Икс,Z,λ,γ),
ИксК+1знак равноaргмяNИксL(Икс,ZК,λК,γК)ZК+1знак равноaргмяNZL(ИксК+1,Z,λК,γК)γК+1знак равноγК+α(ИксК+1-ZК+1)λК+1знак равноλК+β(AZК+1-б),

При определенных мягких условиях для параметров и (объясненных в статье Бойда и Париха, связанной выше) метод ADMM будет сходиться к истинному решению. Скорость сходимости является линейной, так как в основе лежит метод градиентного всплытия. Часто он может быть ускорен до суперлинейности путем 1) изменения параметров и мере использования эвристики или 2) с использованием ускорения Нестерова. Примечания по изменению параметров штрафа см. В обзоре Бойда, а для использования ускорения Нестерова с ADMM - в следующей статье.β α βαβαβ

Гольдштейн, Том, Брендан О'Донохью и Саймон Сетцер. «Быстрые методы оптимизации переменных направлений». Отчет CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf

Однако, даже если общая скорость сходимости является только линейной, для задач наблюдался метод, позволяющий очень быстро найти образец разреженности, а затем медленнее сходиться к точным значениям. Поскольку найти образец разреженности - самая трудная часть, это очень случайно! Точные причины, по-видимому, являются областью современных исследований. Все видят, что шаблоны разреженности сходятся быстро, но никто, кажется, не знает точно, почему это происходит. Некоторое время назад я спросил об этом Бойда и Париха по электронной почте, и Парих подумал, что это можно объяснить интерпретацией метода в контексте систем управления. Другое эвристическое объяснение этого явления можно найти в приложении к следующей статье:L1

Гольдштейн, Том и Стэнли Ошер. «Метод расщепления Брегмана для L1-регуляризованных задач». SIAM Journal of Imaging Sciences 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf

Конечно, теперь трудность заключается в решении подзадач обновления и для вашей конкретной ситуации. Поскольку лагранжиан квадратичен по , подзадача обновления просто требует решения линейной системы. подзадача кажется сложнее , так как это недифференцируема, но оказывается, что есть точная формула для решения , которые могут быть применены поэлементно! Теперь мы обсудим эти подзадачи более подробно и укажем их на проблему в исходном посте.z z z xИксZZZИкс

Настройка для подзадачи update (линейная система)Z

Для обновления у нас есть a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αZ

aргмяNZL(ИксК,Z,λК,γК)знак равноaргмяNZα2||Икс-Z+1αγ||2+β2||AZ-б+1βλ||2,

Специализируется на вашей проблеме:

aргмяNZJ,ZВα2||JК+1-ZJ+1αΓJ||Fро2+α2||ВК+1-ZВ+1αΓВ||Fро2+β2||MZJ+ZВY-Икс+1αΛ||Fро2,

где обозначает норму Фробениуса (поэлементно ). Это задача квадратичной минимизации, где условия оптимальности первого порядка можно найти, взяв частные производные цели по и и установив их в ноль. Это л 2 Z J Z B 0||||FроL2ZJZВ

0знак равно-α2(JК+1-ZJ+1αΓJ)+β2MT(MZJ+ZВY-Икс+1βΛ),0знак равно-α2(ВК+1-ZВ+1αΓВ)+β2(MZJ+ZВY-Икс+1βΛ)YT,

Как отмечается в комментариях оригинального автора Джастина Соломона, эта система для является симметричной, поэтому сопряженный градиент является идеальным методом без матрицы. В следующем разделе обсуждается эта система и как ее решить / подготовить более подробно.ZJ,ZВ

Решение подзадачи update (решение для аналитического порога)Икс

Теперь обратимся к подзадаче , a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x i | х я | + αИкс

aргмяNИксL(Икс,ZК,λК,γК)знак равноaргмяNИксΣя|Икся|+α2||Икс-ZК+1αγК||2

Первое, что нужно увидеть, это то, что сумма может быть разбита по элементам,

Σя|Икся|+α2||Икс-ZК+1αγК||2знак равноΣя|Икся|+α2Σя(Икся-ZяК+1αγяК)2,

Таким образом, мы можем решить задачу оптимизации элемент за элементом параллельно, получив

ИксяК+1знак равноaргмяNИкся|Икся|+α2(Икся-ZяК+1αγяК)2,

Общая форма этого уравнения:

минs|s|+α2(s-T)2,

Функция абсолютного значения пытается потянуть оптимальную точку к , тогда как квадратичный член пытается потянуть оптимальную точку к . следовательно, истинное решение лежит где-то на отрезке между ними, причем увеличение стремится к вытягиванию оптимальной точки в направлении , а уменьшение вытягивает оптимальную точку в направлении .s = t [ 0 , t ) α t α 0sзнак равно0sзнак равноT[0,T)αTα0

Это выпуклая функция, но она не дифференцируема в нуле. Условием минимизации является то, что субпроизводное цели в этой точке содержит ноль. Квадратичный член имеет производную , а функция абсолютного значения имеет производную для , субпроизводную с множеством значений в качестве интервала при и производную для , Таким образом, мы получаем субпроизводную для общей целевой функции: - 1 s < 0 [ - 1 , 1 ] s = 0 1 s > 0 s ( | s | + αα(s-T)-1s<0[-1,1]sзнак равно01s>0

s(|s|+α2(s-T)2)знак равно{1+α(s-T)s>0[-1,1]+αT,sзнак равно0,-1+α(s-T),s<0.

Отсюда видно, что субпроизводное цели при содержит тогда и только тогда, когда , в этом случае - это минимизатор. С другой стороны, если не является минимизатором, то мы можем установить однозначную производную равной нулю и решить для минимизатора. Делая это, вы 0 | т | 1sзнак равно00 s=0s=0argmins| с| +α|T|1αsзнак равно0sзнак равно0

aргмяNs|s|+α2(s-T)2знак равно{T-1α,T>1α,0,|T|1α,T+1α,T<-1α

Снова специализируя этот результат на реальной проблеме, которую мы пытаемся решить в исходном вопросе, где приводит Обновление для просто J k + 1 i j ={ Z k i j - 1Tзнак равноZяJК-1αΓяJК

JяJК+1знак равно{ZяJК-1αΓяJК-1α,ZяJК-1αΓяJК>1α,0,|ZяJК-1αΓяJК|1α,ZяJК-1αΓяJК+1α,ZяJК-1αΓяJК<-1α,
В
ВК+1знак равноZВ-1αΓВ,

как отметил оригинальный постер Джастина Соломона в комментариях. В целом, выполнение обновления для просто требует циклического просмотра записей ваших матриц и оценки приведенных выше формул для каждой записи.J,В

Щур дополнение к системыZJ,ZВ

Самым дорогостоящим шагом итерации является решение системы,

0знак равно-α2(JК+1-ZJ+1αΓJ)+β2MT(MZJ+ZВY-Икс+1βΛ),0знак равно-α2(ВК+1-ZВ+1αΓВ)+β2(MZJ+ZВY-Икс+1βΛ)YT,

Для этого стоит приложить некоторые усилия для создания хорошего решателя / предобусловливателя для этой системы. В этом разделе мы делаем это путем векторизации , формирования дополнения Шура , выполнения некоторых манипуляций с продуктом Крнёкера, а затем отмены векторизации. Полученная система дополнения Шура представляет собой слегка модифицированное уравнение Сильвестра .

В дальнейшем абсолютно идентичны следующие понятия о векторизации и продуктах Кронекера:

  • vес(AВС)знак равно(СTA)vес(В),
  • (AВ)(СD)знак равноAСВD ,
  • (AВ)-1знак равноA-1В-1 и
  • (AВ)Tзнак равноATВT .

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

Векторизованная форма системы:

(αя+β[яMTM(YM)TYMYYTя])[vес(ZJ)vес(ZВ)]знак равно[vес(αJ+βMTИкс+ΓJ-MTΛ)vес(αВ+βИксYT+ΓВ-ΛYT)],

или

[я(αя+βMTM)β(YM)TβYM(αя+βYYT)я][vес(ZJ)vес(ZВ)]знак равно[vес(F)vес(г)],

где и - сокращенные обозначения для правой части. Теперь мы выполняем блок-гауссово-исключение / дополнение Шура, чтобы исключить нижний левый блок матрицы в процессе конденсации продуктов Кронекера. Это Fг

[я(αя+βMTM)β(YM)T0(αя+βYYT)я-β2YYTM(αя+βMTM)-1MT]...[vес(ZJ)vес(ZВ)]знак равно[vес(F)vес(г)-βYM(αя+βMTM)-1vес(F)],

Невекторизовав, два уравнения, которые мы должны решить последовательно:

  1. ZВ(αя+βYYT)-(βM(αя+βMTM)-1MT)ZВ(βYYT)...знак равног-βM(αя+βMTM)-1FYT
  2. (αя+βMTM)ZJзнак равноF-βMTZВY,

Решение системы дополнения Шура, когда квадратные, высокого рангаY,M

В этом разделе мы решаем систему дополнения Шура для (уравнение 1. выше), используя предварительно вычисленные полные SVD матриц и применяя модифицированную версию алгоритма Бартельс-Стюарта для Сильвестра уравнение. Алгоритм немного изменен по сравнению со стандартной версией, чтобы учесть дополнительный на втором члене, что делает его не совсем уравнением Сильвестра. Как только найден с помощью первого уравнения, может быть легко найден из второго уравнения. Второе уравнение тривиально для решения любым способом, который вам нравится.ZВYYT,MMT,MTMβYYTZВZJ

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

Способ развивается следующим образом. Пусть обозначает предварительно вычисленное полное сингулярное значение разложения, и конденсируется правая сторона , чтобы быть . Тогда первое уравнение становится: Умножение с помощью ортогональных факторов для очистки левого и правого и установки нового временного неизвестного , это далее становится,

QDQTзнак равноYYT,WΣWTзнак равноMMT,ВTВTзнак равноMTM
ЧАС
ZВQ(αя+D)QT-WβΣ(αя+Σ)-1ΣWTZВQDQTзнак равноЧАС,
Aзнак равноWTZВQ
A(αя+D)-βΣ(αя+Σ)-1ΣADзнак равноWЧАСQT,

Теперь мы можем найти , решив диагональную систему: A

((αя+D)я+DβΣ(αя+Σ)-1Σ)vес(A)знак равноvес(WЧАСQT),

Найдя , мы вычисляем , и, зная мы решаем второе уравнение выше для , которое является тривиальным, поскольку у нас уже есть разложение по собственным значениям для .AZBзнак равноWAQTZВZJMTM

Первоначальная стоимость - это вычисление двух симметричных положительно определенных разложений по собственным значениям и , а затем в цене за одну итерацию для полного решения преобладает несколько умножений матрица-матрица, которые имеют тот же порядок Величина как делает 1 CG сублитерации. Если предварительные разложения по собственным значениям слишком дороги, то их можно вычислить неточно, например, досрочно завершив итерацию Ланцоша и сохранив самые большие собственные векторы. Тогда этот метод можно использовать в качестве хорошего предварительного условия для CG, а не в качестве прямого решателя.MTMYYT

Метод решения, когда очень прямоугольные или имеют приближение низкого рангаM,Y

Теперь мы наше внимание на решение или предварительную подготовку когда либо a) входные матрицы очень прямоугольные - это означает, что у них намного больше строк, чем столбцов, или наоборот - или b) они имеют приближение низкого ранга. Вывод ниже включает в себя широкое использование формулы Вудбери, дополнения Шура и других подобных манипуляций.ZJ,ZВM,Y

Мы начнем с нашей системы дополнения Шура,

(αя+βYYT)я-β2YYTM(αя+βMTM)-1MT,

Несколько манипуляций превращают эту систему в более симметричную форму

(αя+βяMMT+βYYTя)vес(ZВ)знак равно(я(я+βαMMT))vес(ЧАС),

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

QD1/2Q2Tзнак равноYWΣ1/2ВTзнак равноM
YMQ2
(αя+βяWΣWT+βYYTя)-1,

Поскольку матрица, которую мы используем для инвертирования, является обновлением низкого ранга идентичности, логическая стратегия состоит в том, чтобы попытаться использовать формулу Вудбери,

(A+UСUT)-1знак равноA-1-A-1U(С-1+UTA-1U)-1UTA-1,

Тем не менее, требуется некоторая осторожность, так как младшие куски и не являются ортогональными. Таким образом, чтобы применить формулу Вудбери, мы собираем оба обновления низкого ранга в одно большое обновление. Поступайте так и применяя формулу Вудбери, яWYя

(1αя+β[яWQя][яΣDY][яΣTQTя])-1знак равноαя-βα2[яWQя][я(Σ-1+βαя)βαQWTβαQTW(D-1+βαя)Y]-1[яΣTQTя],

Обратное ядро ​​может быть вычислено по блочной обратной формуле 2x2:

[AВВTС]-1знак равно[(A-ВС-1ВT)-1-A-1В(С-ВTA-1В)-1-С-1ВT(A-ВС-1ВT)-1(С-ВTA-1В)-1],

Эта статья уже достаточно длинна, поэтому я позабочусь о длинных деталях вычислений, но в результате мы добавим необходимые подматрицы в блочную инверсию и умножим все на части, получая следующую явную форму для общей инверсии

(αя+βяMMT+βYYTя)-1знак равно1αя-βα2(T11+s11+T12+s12+T21+s21+T22+s22),

где

T11знак равноαβяWL-1WTs11знак равно(QWL-1)D11(QTL-1WT)T12знак равно-αβQчас-1QTWL-1WTs12знак равно-(Qчас-1WL-1)D22(час-1QTWT)T21знак равноT12s21знак равно-(Qчас-1W)D22(час-1QTL-1WT)T22знак равноαβQчас-1QTяs22знак равно(Qчас-1W)D22(час-1QTWT)D11знак равноαβ(чася-яL-1)-1D22знак равноαβ(яL-час-1я)-1Lзнак равноαβΣ-1+ячасзнак равноαβD-1+я,

В этой форме мы можем применить обратное и найти термин по через 8 левых и правых сэндвичей умножения матриц. Общая формула для применения суммы произведений Кронекера: ZВ

((A1В1)+(A2В2)+...)vес(С)знак равноvес(В1TСA1+В2TСA2+...),

Обратите внимание, что все явные инверсии, с которыми мы закончили, являются диагональными, так что нечего «решать».

Код линейного решателя

Я реализовал два решателя в Matlab. Кажется, работает хорошо. Код решателя здесь.ZJ,ZВ

https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m

Тестовый скрипт для проверки работы решателей находится здесь. На примере также показано, как вызывать код решателя.

https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m

Заключительные замечания

Методы ADMM-типа хорошо подходят для подобных задач, но вам нужно будет развернуть собственную реализацию. Общая структура метода довольно проста, поэтому его реализация не так сложна в чем-то вроде MATLAB.

Часть, отсутствующая в этом посте, которая должна быть указана для полного определения метода вашей проблемы, - это выбор параметров штрафа . К счастью, метод, как правило, довольно надежный, пока значения параметров не сумасшедшие. В статье Бойда и Париха есть раздел о параметрах штрафа, как и ссылки в нем, но я бы просто экспериментировал с параметрами, пока вы не получите разумную скорость сходимости.α,β

Представленные очень эффективны, если матрицы ограничений либо: а) плотные, квадратные и высокого ранга, либо б) имеют хорошее приближение низкого ранга. Другой полезный решатель , который может быть темой будущей работы будет решатель оптимизирован для следующего случая - ограничение матрица разрежена и squareish и высокого ранга, но существует хороший переобусловливатель для . Это имело бы место, если, например, является дискретным лапласианом.ZJ,ZВMαя+MMTM


Реализуем это сейчас! Чтобы проверить, матричное решение для и должно быть симметричным / положительно определенным, поскольку оно исходит из наименьших квадратов, верно? Эмпирически это похоже на правду :-). Итак, CG - лучший вариант, чем GMRES? ZВZJ
Джастин Соломон

Кроме того, я думаю, что обновление для B не так? Я прорабатываю это более подробно, но вспомните, что B не отображается в моей энергетической функции (нет term), поэтому я не уверен, что она должна принимать значения только в Я думаю об этом неправильно? Спасибо! |В|±(1-1/α),
Джастин Соломон

1
[скорее, ]Взнак равноZВ-ΓВ/α
Джастин Соломон

3
Удивительно! После добавления моих собственных формул для и (вероятно, близко / эквивалентно тому, что вы опубликовали, но что-то не работает), это намного превосходит метод IRLS. Спасибо! JВ
Джастин Соломон

1
Отличные новости. Так приятно видеть, когда вклады здесь приводят к реальным результатам.
Майкл Грант

5

Вы, вероятно, хотите использовать метод без матрицы для линейного программирования. Я не знаю ни одного метода, специально предназначенного для линейного программирования, но существуют методы без внутренних матриц для квадратичных программ и для общих нелинейных программ. Случай квадратичной программы в точности соответствует вашей задаче, где все коэффициенты квадратичной формы равны нулю. (Вы также можете адаптировать методы, которые используют точные линейные решения, к структуре вашей проблемы, но такая реализация на заказ может не стоить этого и менее практична, чем использование метода без матриц.)

Я не знаю ни одного коммерческого пакета оптимизации, который бы реализовывал безматричные варианты методов внутренних точек. Предполагается, что в IPOPT реализован метод внутренней матрицы без матрицы для нелинейного программирования, но я не смог отследить вызовы API, которые позволяют вам его использовать.

В дополнение к CVX, вы, возможно, могли бы использовать GAMS или AMPL для однократного ввода матрицы и установки ограничений на языке моделирования для использования этой матрицы. Однако методы, используемые бэкэндами решателя для CVX, GAMS и AMPL, не используют решатели без матрицы; для всех потребуется полная матрица коэффициентов для линейной программы в стандартной форме, которая будет огромной (это будет произведение матриц Кронекера). Вероятно, случится так, что вы введете свою линейную программу в форму выше, используя язык моделирования, а затем язык моделирования преобразует данные в форму, используемую бэкэнд-решателями. Эта форма потребует огромных матриц, и я подозреваю, что вы столкнетесь с такими же ошибками (если только вы не запускаете на машине с достаточным объемом памяти).


Похоже, я попробовал все правильные вещи! Сначала я экспериментировал с CVX, но он не удался, поэтому я переключился на IPOPT. Но у IPOPT была та же проблема. Я не знал, что у него есть опция без матрицы, поэтому я посмотрю, смогу ли я это выяснить.
Джастин Соломон

Я не уверен, поможет ли GAMS / AMPL моей проблеме. Я с радостью закодирую проблему в любой форме, и это поможет решающему делать правильные вещи, но, как вы говорите, закулисный выбор продукта Kronecker не сработает.
Джастин Соломон

4

Можете ли вы позволить себе те SVD, о которых упоминал Джеффри Ирвинг? Если вы можете, я бы рассмотрел подход с наименьшими квадратами (IRLS) . Этот подход позволил бы решить проблемы вида где - весовая матрица.

минимизироватьΣяJWяJJяJ2при условииMJ+ВYзнак равноИкс
W

Итерации начинаются с как матрицы всех единиц; это дает оптимальный . Итерации продолжаются с где небольшая постоянная, которая предотвращает деление на ноль. Я не совсем уверен в критериях конвергенции, но, возможно, ссылка на Википедию, которую я предложил выше, может дать вам ссылки. J ( 0 ) W ( k + 1 ) i j = | max { J ( k ) i j , ϵ } | - 1 ϵW(0)J(0)

WяJ(К+1)знак равно|Максимум{JяJ(К),ε}|-1
ε

Вы также можете рассмотреть сглаженный метод первого порядка. TFOCS, который я в соавторстве, мог бы справиться с этим, используя свой решатель «сглаженное коническое двойное» (SCD), но он не будет таким простым в использовании.

Если вы хотите попробовать метод внутренней матрицы без матрицы, прочитайте работу Яцека Гондзио.

РЕДАКТИРОВАТЬ: хм, это может быть случай, когда IRLS не сможет использовать SVD для вычисления решений. Если так, я бы остановился на одном из других вариантов.


1
Я не уверен, смогу ли я использовать SVD здесь, но IRLS - отличная идея! Скорость не так важна, как память, и смущающе я использовал IRLS для исследования, проведенного несколько месяцев назад, и это сработало замечательно (извините себя за то, что я не пробовал раньше!). Даже без SVD для IRLS должна быть возможность сделать это с помощью линейного решателя, такого как CG, который не нуждается в полной системе. На самом деле, CG может быть остановлен с довольно свободными ограничениями, прежде чем настраивать как вы предлагаете. Также изучаю подход ADMM, но у меня меньше опыта с этим. WяJ
Джастин Соломон

Да, ADMM тоже подойдет. Я на самом деле написал раздел, предлагающий вам полностью исключить Y, но позже я увидел, что не было квадратным. M
Майкл Грант

1
Реализована стратегия IRLS - она ​​сходится, но численно не очень хорошо, так как линейная система, которую нужно решить, плохо обусловлена ​​благодаря широкому диапазону ; используя GMRES для решения системы. Попробую ADMM дальше! вес
Джастин Соломон

2

Вы можете попробовать использовать CVX , что позволит вам закодировать его именно в той форме, в которой вы его написали (то есть с в качестве матрицы, а не вектора). Возможно, это будет решено с использованием более общего выпуклого решателя вместо LP-решателя, но если выпуклый решатель преуспеет, то, я полагаю, вы не будете возражатьИкс

Другая возможность: использовать решатель, который позволяет вашим матрицам ограничений храниться как разреженные матрицы. Это по-прежнему потребует намного больше памяти, чем нужно, но гораздо меньше, чем если бы вы хранили их в виде плотных матриц. В CVX, если вы используете, kronвы получаете разреженную матрицу, так что было бы тривиально попробовать это.


Если Python по какой-либо причине будет удобнее, чем MATLAB, то есть и cvxpy, хотя он не так хорошо отточен, как cvx.
k20

Я подозреваю, что этот подход будет работать поверхностно, а затем потерпит неудачу после того, как язык моделирования CVX преобразует входные данные в форму, используемую его внутренними решателями (которая будет решать линейные программы, квадратичные программы, конусные программы второго порядка, полуопределенные программы и геометрические программы). Я объясняю почему в моем ответе. Бэкэнд Gurobi является лучшим в своем роде решателем LP (среди других типов), поэтому использование CVX с этим алгоритмом, вероятно, лучшее, что вы можете сделать с точки зрения реализации, если не считать вызова CVX из API скомпилированного языка.
Джефф Оксберри

1
Как говорит Джефф, никакой слой моделирования вам здесь не поможет. Полученный LP имеет данные, повторенные для любого стандартного универсального решателя. Чтобы обойти это, вам придется использовать (разработать) решатель на основе оракула, то есть решатель, который, по сути, основан на возврате остатка для заданного значения и / или некоторого подходящий разрез, а затем работать с этим описанием вместо. J , YMJ+ВY-ИксJ,Y
Йохан Лёфберг

Да, я испытываю именно ту проблему, о которой упоминает Джефф. На самом деле, я использовал CVX для моей первоначальной догадки. Я также пытался дозвониться до Гуроби напрямую, но единственный способ, которым я могу подумать, это сделать то же самое, что и развертывание.
Джастин Соломон

1
Я думаю, что вам придется кататься самостоятельно
Йохан Лёфберг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.