Лінійне програмування з матричними обмеженнями


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 i j |Jij2|Jij|
Джеффрі Ірвінг

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

Відповіді:


12

Огляд

Можливо, ви захочете спробувати варіант методу помножувальних напрямків множників (ADMM), який виявив дивовижну швидку конвергенцію при проблемах типу lasso. Стратегія полягає у формулюванні задачі з розширеним лагранжаном, а потім зробіть градієнтне сходження на подвійну задачу. Особливо приємно для цієї конкретної регуляризації, оскільки в негладкій частині кожної ітерації методу є точне рішення, яке ви можете просто оцінити елемент за елементом, тоді як гладка частина передбачає вирішення лінійної системи.l 1л1л1

У цій посаді ми

  • отримати загальну формулювання ADMM для узагальнення вашої проблеми,
  • вивести підпрограми для кожної ітерації ADMM та спеціалізувати їх на своїй ситуації, а потім
  • досліджувати отриману лінійну систему , яка повинна бути вирішена кожної ітерації, і розробити швидкий вирішувач (або предобуславліватель) на основі попереднього обчислення власного значення розкладання (або низький ранг наближення цього) для і .У Й ТМТМYYТ
  • підсумуйте за допомогою декількох заключних зауважень

Більшість великих ідей тут висвітлено в наступному чудовому оглядовому документі,

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

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

Формулювання ADMM

Загалом, припустимо, ви хочете вирішити

хвхi|хi|вулАх=б.

Проблема в оригінальному дописі потрапляє в цю категорію після відповідної векторизації. (це лише в принципі - ми побачимо, що векторизацію не потрібно виконувати на практиці)

Ви можете замість цього вирішити еквівалентну проблему, який має лагранжець L(x,z,λ,γ)=

хвх,zi|хi|+α2||х-z||2+β2||Аz-б||2вулАz=б&х=z,
L(х,z,λ,γ)=i|хi|+α2||х-z||2+β2||Аz-б||2+λТ(Аz-б)+γТ(х-z)=i|хi|+α2||х-z+1αγ||2+β2||Аz-б+1βλ||2+α2||1αγ||2+β2||1βλ||2.

Метод змінного напряму множників вирішує подвійну задачу за допомогою градієнтного сходження на подвійні змінні, крім неточні чергування проекцій на подвійні підпрограми. Тобто, ітерація x k + 1

максλ,γхвх,zL(х,z,λ,γ),
хк+1=аrгмiнхL(х,zк,λк,γк)zк+1=аrгмiнzL(хк+1,z,λк,γк)γк+1=γк+α(хк+1-zк+1)λк+1=λк+β(Аzк+1-б).

За певних м'яких умов параметрів та (пояснено в зв'язаній вище роботі Boyd & Parikh) метод ADMM сходиться до справжнього рішення. Швидкість конвергенції лінійна, оскільки в основі лежить метод градієнтного сходження. Часто його можна прискорити, щоб бути суперлінійним шляхом 1) зміни параметрів та коли ви переходите на основі евристики, або 2) з використанням прискорення Нестерова. Примітки щодо зміни параметрів штрафу див. У дослідницькому документі Бойда, а про використання прискорення Нестерова з ADMM див. Наступний документ,β α βαβαβ

Гольдштейн, Том, Брендан О'Доног'ю та Саймон Сетцер. "Швидкі методи чергування напрямів оптимізації." Звіт про CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf

Однак, навіть якщо загальний коефіцієнт конвергенції є лише лінійним, для проблем спостерігається метод, щоб знайти швидкість розрідженості дуже швидко, а потім повільніше сходитися на точні значення. Оскільки пошук шаблону розрідження є найважчою частиною, це дуже вдало! Точні причини, чому, здається, є сферою сучасних досліджень. Усі бачать, як шаблони розрідження швидко сходяться, але, здається, ніхто точно не знає, чому це відбувається. Деякий час тому я запитав Бойда і Париха про це через електронну пошту, і Паріх подумав, що це можна пояснити інтерпретацією методу в контексті систем управління. Інше евристичне пояснення цього явища знаходиться в додатку до наступної статті,л1

Голдштейн, Том і Стенлі Ошер. "Метод розщеплення Брегмана для задач, регульованих L1." Журнал SIAM про візуалізацію 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf

Звичайно, зараз складність полягає у вирішенні підпроблем оновлення та для вашої конкретної ситуації. Оскільки лагранжан є квадратичним в , підпрограма оновлення вимагає просто розв'язання лінійної системи. подзадача здається складніше , так як це недіфференціруемого, але виявляється, що є точна формула для вирішення , які можуть бути застосовані поелементно! Зараз ми обговоримо ці підпрограми більш детально та уточнимо їх до проблеми в початковому дописі.z z z xхzzzх

Налаштування підпрограми оновлення (лінійна система)z

Для оновлення ми маємо a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz

аrгмiнzL(хк,z,λк,γк)=аrгмiнzα2||х-z+1αγ||2+β2||Аz-б+1βλ||2.

Це спеціалізується на вашій проблемі:

аrгмiнZJ,ZБα2||Jк+1-ZJ+1αΓJ||Жrо2+α2||Бк+1-ZБ+1αΓБ||Жrо2+β2||МZJ+ZБY-Х+1αΛ||Жrо2,

де позначає норму Frobenius (елементарно ). Це квадратична проблема мінімізації, де умови оптимальності першого порядку можна знайти, взявши часткові похідні цілі відносно та та встановивши їх на нуль. Це, l 2 Z J Z B 0||||Жrол2ZJZБ

0=-α2(Jк+1-ZJ+1αΓJ)+β2МТ(МZJ+ZБY-Х+1βΛ),0=-α2(Бк+1-ZБ+1αΓБ)+β2(МZJ+ZБY-Х+1βΛ)YТ.

Як зазначається в коментарях оригінального плаката Джастіна Соломона, ця система для є симетричною, тому спряжений градієнт є ідеальним методом без матриць. У подальшому розділі розглядається ця система та як її вирішити / передумовити більш детально.ZJ,ZБ

Розв’язання підпрограми update (аналітичне порогове рішення)х

Тепер ми переходимо до підзадачі, a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x i | х i | + αх

аrгмiнхL(х,zк,λк,γк)=аrгмiнхi|хi|+α2||х-zк+1αγк||2

Перше, що слід помітити, це те, що суму можна розбити елементом на елемент

i|хi|+α2||х-zк+1αγк||2=i|хi|+α2i(хi-ziк+1αγiк)2,

Таким чином, ми можемо вирішити елемент задачі оптимізації по елементам паралельно, отримуючи

хiк+1=аrгмiнхi|хi|+α2(хi-ziк+1αγiк)2.

Загальна форма цього рівняння -

хвс|с|+α2(с-т)2.

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

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

с(|с|+α2(с-т)2)={1+α(с-т)с>0[-1,1]+αт,с=0,-1+α(с-т),с<0.

З цього ми бачимо, що субдериват цілі при містить якщо і тільки тоді , у цьому випадку є мінімізатором. З іншого боку, якщо не є мінімізатором, то ми можемо встановити однозначну похідну, рівну нулю, і вирішити для мінімізатора. Виконуючи це, 0 | т | 1с=00 s=0s=0argmins| s| +α|т|1αс=0с=0

argmins|s|+α2(st)2={t1α,t>1α,0,|t|1α,t+1α,t<1α

Знову спеціалізуючи цей результат на справжню проблему, яку ми намагаємося вирішити в оригінальному питанні, де виходить, Оновлення для просто J k + 1 i j ={ Z k i j - 1t=Zijk1αΓijk

Jijk+1={Zijk1αΓijk1α,Zijk1αΓijk>1α,0,|Zijk1αΓijk|1α,Zijk1αΓijk+1α,Zijk1αΓijk<1α.
B
Bk+1=ZB1αΓB,

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

Щур доповнення до системиZJ,ZB

Найдорожчим кроком ітерації є розв’язання системи,

0=α2(Jk+1ZJ+1αΓJ)+β2MT(MZJ+ZBYX+1βΛ),0=α2(Bk+1ZB+1αΓB)+β2(MZJ+ZBYX+1βΛ)YT.

З цією метою варто докласти певних зусиль, щоб створити для цієї системи хороший вирішувач / попередній кондиціонер. У цьому розділі ми робимо це за допомогою векторизації , формуючи доповнення Щура , робимо кілька маніпуляцій з продуктом Krnoecker і потім невекторизуючи. Отримана система доповнення Шура є дещо модифікованим рівнянням Сильвестра .

Далі викладено наступні відомості щодо векторизації та продуктів Kronecker:

  • vec(ABC)=(CTA)vec(B),
  • (AB)(CD)=ACBD ,
  • (AB)1=A1B1 , і
  • (AБ)Т=АТБТ .

Ці тотожності дотримуються, коли розміри матриць і оберненість такі, що кожна сторона рівняння є дійсним виразом.

Векторизована форма системи -

(αЯ+β[ЯМТМ(YМ)ТYМYYТЯ])[vеc(ZJ)vеc(ZБ)]=[vеc(αJ+βМТХ+ΓJ-МТΛ)vеc(αБ+βХYТ+ΓБ-ΛYТ)],

або,

[Я(αЯ+βМТМ)β(YМ)ТβYМ(αЯ+βYYТ)Я][vеc(ZJ)vеc(ZБ)]=[vеc(Ж)vеc(Г)],

де і - конденсовані позначення для правої частини. Тепер ми виконуємо блоко-гауссова елімінація / доповнення Шура для усунення нижнього лівого блоку матриці в процесі конденсації продуктів Kronecker. Це, ЖГ

[Я(αЯ+βМТМ)β(YМ)Т0(αЯ+βYYТ)Я-β2YYТМ(αЯ+βМТМ)-1МТ][vеc(ZJ)vеc(ZБ)]=[vеc(Ж)vеc(Г)-βYМ(αЯ+βМТМ)-1vеc(Ж)].

Розкриваючи два рівняння, які ми повинні вирішити послідовно, це:

  1. ZБ(αЯ+βYYТ)-(βМ(αЯ+βМТМ)-1МТ)ZБ(βYYТ)=Г-βМ(αЯ+βМТМ)-1ЖYТ
  2. (αЯ+βМТМ)ZJ=Ж-βМТZБY.

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

У цьому розділі ми вирішуємо систему доповнення Шура для (рівняння 1. вище), використовуючи попередньо обчислені повні SVD матриць і застосовуючи модифіковану версію алгоритму Бартелса-Стюарта для Сільвестра рівняння. Алгоритм трохи змінений зі стандартної версії для врахування додаткового на другому члені, що робить його не зовсім рівнянням Сильвестра. Після через перше рівняння, можна легко знайти з другого рівняння. Друге рівняння тривіальне для вирішення будь-яким способом, який вам подобається.ZБYYТ,ММТ,МТМβYYТZБZJ

Цей метод вимагає попередньої вартості для попереднього обчислення двох повних SVD до запуску процесу ADMM, але потім швидко застосовуватись у фактичних ітераціях ADMM. Оскільки метод стосується повних SVD матриць обмеження, він доцільний, коли вони близькі до квадратного та високого рангу. Також можливий більш складний метод з використанням СВД низького рангу, але представлений у наступному розділі.

Метод розвивається наступним чином. Нехай позначає попередньо обчислене повне сингулярне значення розкладання, і конденсується права сторона , щоб бути . Тоді першим рівнянням стає Множення ортогональними чинниками, щоб очистити ліворуч і праворуч і встановивши нову тимчасову невідому , це далі стає

QDQТ=YYТ,WΣWТ=ММТ,VТVТ=МТМ
Н
ZБQ(αЯ+D)QТ-WβΣ(αЯ+Σ)-1ΣWТZБQDQТ=Н.
А=WТZБQ
А(αЯ+D)-βΣ(αЯ+Σ)-1ΣАD=WНQТ.

Тепер ми можемо знайти , вирішивши діагональну систему, А

((αЯ+D)Я+DβΣ(αЯ+Σ)-1Σ)vеc(А)=vеc(WНQТ).

Знайшовши , ми обчислимо , і знаючи ми вирішимо друге рівняння вище для , яке є тривіальним, оскільки у нас вже є власне значення розкладу для .АZБ=WАQТZБZJМТМ

Попередня вартість - це обчислення двох симетричних позитивних визначених власних значень декомпозицій і , і тоді ціна на ітерацію для повного вирішення переважає жменькою множин матриці-матриці, що знаходиться в тому самому порядку величина як 1 CG сублітерація. Якщо попередні розробки власних значень є надто дорогими, то їх можна обчислити недостовірно, наприклад, припинивши ітерацію Ланцоса на початку та утримуючи найбільші власні вектори. Тоді метод може бути використаний як хороший попередній засіб для CG, а не прямий вирішувач.МТМYYТ

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

Тепер ми звертаємо свою увагу на розв’язання або попереднє коли або а) вхідні матриці дуже прямокутні - це означає, що вони мають набагато більше рядків, ніж стовпці, або навпаки - або б) вони мають низький наближення до ранжу. Виведення нижче передбачає широке використання формули Вудбері, доповнення Шура та інші подібні маніпуляції.ZJ,ZБМ,Y

Почнемо з нашої системи доповнення Шура,

(αЯ+βYYТ)Я-β2YYТМ(αЯ+βМТМ)-1МТ.

Кілька маніпуляцій перетворюють цю систему в більш симетричну форму,

(αЯ+βЯММТ+βYYТЯ)vеc(ZБ)=(Я(Я+βαММТ))vеc(Н).

Тепер ми вносимо низькі рангові наближення. Нехай - або зменшені наближення SVD, або наближення низького рангу і ( є заповнювачем і не є б / в). Заміщення їх у нашій системі дає наступну матрицю, зворотну, яку ми хочемо застосувати,

QD1/2Q2Т=YWΣ1/2VТ=М
YМQ2
(αЯ+βЯWΣWТ+βYYТЯ)-1.

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

(А+UСUТ)-1=А-1-А-1U(С-1+UТА-1U)-1UТА-1.

Однак потрібна певна обережність, оскільки фігури низького рангу і не є ортогональними. Таким чином, щоб застосувати формулу Вудбері, ми збираємо обидва оновлення низького рангу в одне велике оновлення. Вчиніть так і застосовуючи формулу Вудбері, ЯWYЯ

(1αЯ+β[ЯWQЯ][ЯΣDY][ЯΣТQТЯ])-1=αЯ-βα2[ЯWQЯ][Я(Σ-1+βαЯ)βαQWТβαQТW(D-1+βαЯ)Y]-1[ЯΣТQТЯ].

Обернене ядро ​​можна обчислити за зворотною формулою 2x2, зворотною формулою,

[АББТС]-1=[(А-БС-1БТ)-1-А-1Б(С-БТА-1Б)-1-С-1БТ(А-БС-1БТ)-1(С-БТА-1Б)-1].

Цей пост вже досить довгий, тому я пошкодую тривалих деталей обчислення, але кінцевим результатом є те, що підключення необхідних підматриць до обернено зворотних блоків і множення всього через отримання наступної явної форми для загального оберненого,

(αЯ+βЯММТ+βYYТЯ)-1=1αЯ-βα2(т11+с11+т12+с12+т21+с21+т22+с22),

де

т11=αβЯWл-1WТс11=(QWл-1)D11(QТл-1WТ)т12=-αβQгод-1QТWл-1WТс12=-(Qгод-1Wл-1)D22(год-1QТWТ)т21=т12с21=-(Qгод-1W)D22(год-1QТл-1WТ)т22=αβQгод-1QТЯс22=(Qгод-1W)D22(год-1QТWТ)D11=αβ(годЯ-Ял-1)-1D22=αβ(Ял-год-1Я)-1л=αβΣ-1+Ягод=αβD-1+Я.

У цій формі ми можемо застосувати зворотний і знайти термін за терміном через 8 бутербродів множення лівої та правої матриць. Загальна формула застосування суми продуктів Kronecker: ZБ

((А1Б1)+(А2Б2)+)vеc(С)=vеc(Б1ТСА1+Б2ТСА2+).

Зауважте, що всі явні звороти, у яких ми закінчились, діагональні, тому "вирішити" нічого.

Лінійний розв'язувальний код

Я реалізував вищевказані два в Matlab. Здається, добре працює. Код розв’язувача тут.zJ,ZБ

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

Тестовий скрипт для перевірки роботи розв’язувачів тут. Він також на прикладі показує, як викликати розв'язувальний код.

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

Прикінцеві зауваження

Методи типу ADMM добре підходять для подібних проблем, але вам потрібно прокрутити власну реалізацію. Загальна структура методу досить проста, тому реалізація не є надто складною у чомусь подібному MATLAB.

Частина, відсутня в цій публікації, яку потрібно було б вказати для повного визначення методу вашої проблеми, - це вибір параметрів штрафу . На щастя, метод, як правило, досить надійний до тих пір, поки паралелі параметрів не божевільні. У роботі "Бойд і Парих" є розділ про параметри штрафу, як і посилання на них, але я б просто експериментував з параметрами, поки ви не отримаєте розумні показники конвергенції.α,β

Представлені стратегії розв’язування є високоефективними, якщо матриці обмеження є або a) щільними, квадратними та високими рангами, або b) мають гарне наближення низького рангу. Інший корисний вирішувач , який може бути темою майбутньої роботи буде вирішувач оптимізований для наступного випадку - обмеження матриця розріджена і squareish і високого рангу, але існує хороший переобусловліватель для . Це було б у випадку, якщо, наприклад, - це дискретний лаплаціан.ZJ,ZБМαЯ+ММТМ


Реалізуємо це зараз! Щоб перевірити, рішення матриці для та має бути симетричним / позитивним, оскільки воно походить з найменших квадратів, правда? Це емпірично здається правдою :-). Тож чи є CG кращим варіантом, ніж GMRES? ZБZJ
Джастін Соломон

Крім того, я думаю, що оновлення для B неправильне? Я працюю над цим детальніше, але нагадую, що B не відображається в моїй енергетичній функції (немає термін), тому я не впевнений, що він повинен приймати значення лише в Я думаю про це неправильно? Дякую! |Б|±(1-1/α).
Джастін Соломон

1
[помилка, швидше, ]Б=ZБ-ΓБ/α
Джастін Соломон

3
Дивовижний! Після введення моїх власних формул для та (ймовірно, близько / еквівалентно тому, що ви розмістили, але щось не працювало), це значно перевершує метод IRLS. Дякую! JБ
Джастін Соломон

1
Чудова новина. Так приємно бачити, коли внески тут призводять до реальних результатів.
Майкл Грант

5

Напевно, ви хочете використовувати метод без матриць для лінійного програмування. Я не знаю жодного методу, спеціально орієнтованого на лінійне програмування, але існують безматричні методи внутрішніх точок для квадратичних програм та загальних нелінійних програм. Випадок квадратичної програми точно відповідає вашій задачі, де коефіцієнти квадратичної форми - це всі нулі. (Ви також можете підлаштувати методи, які використовують точні лінійні рішення для структури вашої проблеми, але така відповідна реалізація, можливо, не варта, і є менш практичною, ніж використання методу без матриць.)

Я не знаю жодного комерційного пакету оптимізації, який реалізує варіанти без матриць методів точок інтер'єру. IPOPT повинен реалізувати метод внутрішніх точок без матриць для нелінійного програмування, але я не зміг відстежити виклики API, які дозволяють вам використовувати його.

На додаток до CVX, ви, ймовірно, можете використовувати GAMS або AMPL для введення матриці один раз і встановити свої обмеження в мові моделювання для використання цієї матриці. Однак методи, що використовуються розв'язувальним пакетом для CVX, GAMS та AMPL, не використовують розв'язувачі без матриць; всім знадобиться матриця повної коефіцієнта для лінійної програми в стандартній формі, яка буде величезною (це буде добуток матриць Kronecker). Що, мабуть, станеться, що ви введете свою лінійну програму у форму вище, використовуючи мову моделювання, а потім мова моделювання переведе дані у форму, яку можна використовувати за допомогою вирішувальних програм. Ця форма потребує величезних матриць, і я підозрюю, що ви зіткнетесь з тими ж помилками (якщо тільки ви не працюєте на машині з достатньою кількістю пам'яті).


Схоже, я спробував усі правильні речі! Я спочатку експериментував з CVX, і це не вдалося, тому я перейшов на IPOPT. Але в IPOPT була така ж проблема. Я не усвідомлював, що в ньому є опція без матриць, тому я побачу, чи зможу це зрозуміти.
Джастін Соломон

Я не впевнений, чи допоможуть GAMS / AMPL в моїй проблемі. Я радий вирішити проблему в будь-якій формі, яка допоможе вирішувачу зробити все правильно, але, як ви кажете, за кадром вивезти продукт Kronecker не буде працювати.
Джастін Соломон

4

Чи можете ви дозволити собі згадані СВД, про які згадував Джеффрі Ірвінг? Якщо ви можете, я б розглядав ітераційно підзаряджений підхід з найменшими квадратами (IRLS) . Такий підхід вирішить проблеми форми де - вагова матриця.

мінімізуватиijWijJij2на темуМJ+БY=Х
W

Ітерації починаються з як матриці всіх; це дає оптимальний . Ітерації продовжуються з де - це мала константа, яка перешкоджає діленню на нуль. Я не зовсім впевнений у критеріях конвергенції, але, можливо, посилання на Вікіпедію, яке я запропонував вище, може дати вам посилання.W(0)J(0)

Wij(к+1)=|макс{Jij(к),ϵ}|-1
ϵ

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

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

EDIT: Хм, можливо, IRLS не зможе використовувати SVD для обчислення рішень. Якщо так, я б перейшов до одного з інших варіантів.


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

Так, ADMM також буде чудовим. Я насправді написав розділ, в якому пропонував вам взагалі усунути Y, але пізніше я побачив, що не є площею. М
Майкл Грант

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

2

Ви можете спробувати скористатися CVX , який дозволить вам кодувати його в тій самій формі, яку ви написали (тобто з як матриця, а не вектор). Це, мабуть, було б вирішено за допомогою більш загального розпуклого розв'язувача замість розв'язувача LP, але якщо опуклий розв'язувач вдасться, то, гадаю, ви не заперечуєте.Х

Інша можливість: використовувати розв'язувач, який дозволяє зберігати матриці обмежень як рідкісні матриці. Для цього знадобиться набагато більше пам’яті, ніж те, що вам потрібно, але набагато менше, ніж якщо ви зберігаєте їх як щільні матриці. У CVX, якщо ви використовуєте, kronви отримуєте розріджену матрицю, тому було б тривіально спробувати це.


Якщо Python був би зручнішим, ніж MATLAB з будь-якої причини, то також є cvxpy, хоча він не настільки відшліфований, як cvx.
k20

Я підозрюю, що такий підхід буде працювати поверхнево, а потім не вдасться після того, як мова моделювання CVX перетворить вхідні дані у форму, яка може бути використана її резервними рішеннями (які вирішуватимуть лінійні програми, квадратичні програми, програми конусу другого порядку, напіввизначені програми та геометричні програми). Я пояснюю, чому у своїй відповіді. Запуски Gurobi - це найкращий розв'язувач LP (серед інших типів), тому використання CVX з цим алгоритмом, мабуть, найкраще, що ви можете зробити з точки зору реалізації, окрім виклику CVX з API компільованої мови.
Джефф Оксберрі

1
Як каже Джефф, жоден шар моделювання вам тут не допоможе. Отриманий LP має дані, які повторюються для будь-якого стандартного загального рішення. Щоб обійти це, вам доведеться використовувати (розробляти) розв’язувач на основі оракула, тобто розчинник, який, по суті, заснований на поверненні залишкового для заданого значення та / або деякого підходить вирізання, а потім працюйте з цим описом. МJ+БY-ХJ,Y
Йохан Лефберг

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

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