Які відмінності між різними розв'язниками R квадратичного програмування?


9

Я шукаю пакет, який допоможе мені вирішити деякі проблеми квадратичної оптимізації, і я бачу, що є щонайменше півдесятка різних пакетів. Відповідно до цієї сторінки:

QP (Квадратичне програмування, 90C20): cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

Деякі з них (Rmosek і cplexAPI) залежать від інших патентованих пакетів, тому мене вони не цікавлять.

Які помітні відмінності між іншими пакетами QP?


Ви подивилися наведені довідкові документи? Один і той же порядок / алгоритм може мати різні реалізації. Якщо що - то можна було б вирішити проблему QP з використанням внутрішніх точок , довірчі область або активно-набір методів.
usεr11852

1
Існує також пакет osqp - для розріджених систем - це на сьогоднішній день найшвидша реалізація, доступна в R ...
Tom Wenseleers

Відповіді:


11
  • Cplex (cplexAPI, Rcplex): не є відкритим кодом (але існує щорічна безкоштовна академічна ліцензія). Він підтримує розріджені матриці. Я був моєю обгорткою для QP, коли я ним користувався. Майте на увазі, що академічна ліцензія не дозволяє використовувати її на багатьох ядрах (скажімо через mclapply()).
  • ipop (той, у kernlab) реалізований у чистому Р. Це робить зайвим повільним у великих програмах. Не підтримує розріджені матриці.
  • limSolve не вирішує повноцінні QP, лише ті, де обмеження мають рівність типів. Не всі проблеми QP можуть бути вирішені таким чином, але коли це можливо, вони мають чітке рішення. Не підтримує розріджені матриці.
  • LowRankQP: цей мій досвід є хорошим (швидкий порівняно з іншими з відкритим кодом). Не підтримує розріджені матриці.
  • quadprog: реалізація базового рівня вирішувача Goldfarb & Idnani Dual і Primal-Dual. Не підтримує рідкісні матриці, але тихо швидко для проблем з помірними розмірами.
  • Рмосек: ніколи не пробував.

Редагувати.

Оскільки я написав цю відповідь, новий пакет ipoptr тепер доступний на R-forge. Цей пост R-блогера порівнює його продуктивність у чистому QP з чотирипрогірним. Коротше кажучи, ipoptr підтримує рідкісні матричні матриці і, як правило, набагато швидше, ніж чотирипроцесовий, коли матриці дизайну рідкі. Однак, коли дизайнерські матриці щільні, чотирипрог все ще виявляється значно швидшим.


2
Мій досвід полягає в тому, що квадропрог все ще швидший для малих та середніх проблем, а ipoptr - швидше лише тоді, коли проблема досить велика.
Ніл Фульц

2
Існує нещодавній набір публікацій в блогах на ці теми. Дивіться, наприклад, blog.ryanwalker.us/2015/02/…
chandler


1
Також зауважте, що для квадратику потрібні позитивні певні матриці у квадратичній формі.
ae0709

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