Was sind die Unterschiede zwischen verschiedenen quadratischen R-Programmierlösern?

9

Ich suche nach einem Paket, das mir hilft, einige quadratische Optimierungsprobleme zu lösen, und ich sehe, dass es mindestens ein halbes Dutzend verschiedene Pakete gibt. Laut dieser Seite:

QP (Quadratic Programming, 90C20): cplexAPI , Kernlab , limSolve , LowRankQP , Quadprog , Rcplex , Rmosek

Einige davon (Rmosek und cplexAPI) hängen von anderen proprietären Paketen ab, daher interessieren mich diese nicht.

Was sind die bemerkenswerten Unterschiede zwischen den anderen QP-Paketen?

Henry Henrinson
quelle
Haben Sie sich die angegebenen Referenzpapiere angesehen? Das gleiche Verfahren / der gleiche Algorithmus kann unterschiedliche Implementierungen haben. Wenn überhaupt, könnte man ein QP-Problem mit Interior-Point- , Trust-Region- oder Active-Set- Methoden lösen .
usεr11852
1
Es gibt auch das osqp-Paket - für spärliche Systeme ist es die mit Abstand schnellste Implementierung, die derzeit in R verfügbar ist ...
Tom Wenseleers

Antworten:

11
  • Cplex (cplexAPI, Rcplex): ist nicht Open Source (es gibt jedoch eine jährlich erneuerbare kostenlose akademische Lizenz). Es unterstützt spärliche Matrizen. War mein Gotto Wrapper für QP, während ich es benutzte. Beachten Sie, dass die akademische Lizenz es nicht erlaubt, sie auf vielen Kernen zu verwenden (etwa durch mclapply()).
  • ipop (das in Kernlab) ist in reinem R implementiert. Das macht es in großen Anwendungen unnötig langsam. Unterstützt keine spärlichen Matrizen.
  • limSolve löst keine vollwertigen QPs, sondern nur solche, bei denen die Einschränkungen gleichberechtigt sind. Nicht alle QP-Probleme können auf diese Weise umrahmt werden, aber wenn dies möglich ist, haben sie eine explizite Lösung. Unterstützt keine spärlichen Matrizen.
  • LowRankQP: Dieser ist meiner Erfahrung nach gut (schnell im Vergleich zu den anderen Open Source). Unterstützt keine spärlichen Matrizen.
  • Quadprog: Basisimplementierung des Goldfarb & Idnani Dual- und Primal-Dual-Solvers. Unterstützt keine spärlichen Matrizen, ist aber bei Problemen mittlerer Größe sehr schnell.
  • Rmosek: Ich habe es nie versucht.

Bearbeiten.

Seit ich diese Antwort geschrieben habe, ein neues Paket, ist ipoptr jetzt auf R-forge verfügbar. Dieser R-Blogger-Beitrag vergleicht die Leistung auf reinem QP mit Quadprog. Kurz gesagt, ipoptr unterstützt spärliche Matrixtripletts und ist tendenziell viel schneller als quadprod, wenn die Entwurfsmatrizen dünn sind. Wenn die Entwurfsmatrizen jedoch dicht sind, scheint Quadprog immer noch deutlich schneller zu sein.

user603
quelle
2
Ich habe die Erfahrung gemacht, dass Quadprog bei kleinen bis mittleren Problemen immer noch schneller ist und ipoptr nur dann schneller ist, wenn das Problem ziemlich groß ist.
Neal Fultz
2
Zu diesen Themen gibt es kürzlich eine Reihe von Blog-Posts. Siehe zum Beispiel blog.ryanwalker.us/2015/02/…
Chandler
1
Beachten Sie auch, dass Quadprog positive bestimmte Matrizen in quadratischer Form erfordert .
ae0709
Es gibt auch das osqp-Paket - für spärliche Systeme ist es die mit Abstand schnellste Implementierung, die derzeit in R verfügbar ist ...
Tom Wenseleers