Jakie są różnice między różnymi rozwiązaniami kwadratowymi programowania R?

9

Szukam pakietu, który pomoże mi rozwiązać niektóre kwadratowe problemy z optymalizacją i widzę, że istnieje co najmniej pół tuzina różnych pakietów. Według tej strony:

QP (programowanie kwadratowe, 90C20): cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

Niektóre z nich (Rmosek i cplexAPI) zależą od innych zastrzeżonych pakietów, więc nie jestem nimi zainteresowany.

Jakie są zauważalne różnice między innymi pakietami QP?

Henry Henrinson
źródło
Czy spojrzałeś na podane dokumenty referencyjne? Ta sama procedura / algorytm może mieć różne implementacje. Jeśli cokolwiek można rozwiązać problem QP przy użyciu metod punktu wewnętrznego , regionu zaufania lub zestawu aktywnego .
usεr11852
1
Istnieje również pakiet osqp - dla rzadkich systemów jest to zdecydowanie najszybsza implementacja dostępna teraz w R ...
Tom Wenseleers

Odpowiedzi:

11
  • Cplex (cplexAPI, Rcplex): nie jest oprogramowaniem typu open source (ale istnieje roczna odnawialna bezpłatna licencja akademicka). Obsługuje rzadkie macierze. Było moje opakowanie getto dla QP, gdy go używałem. Pamiętaj, że licencja akademicka nie pozwala na korzystanie z niej na wielu rdzeniach (powiedz przezmclapply() ).
  • ipop (ten w kernlab) jest zaimplementowany w czystej wersji R. To sprawia, że ​​jest niepotrzebnie powolny w dużych aplikacjach. Nie obsługuje rzadkich matryc.
  • limSolve nie rozwiązuje pełnowartościowych QP, tylko te, w których ograniczenia są równe dla typu. Nie wszystkie problemy związane z QP można sformułować w ten sposób, ale kiedy to możliwe, mają one jednoznaczne rozwiązanie. Nie obsługuje rzadkich matryc.
  • LowRankQP: ten z mojego doświadczenia jest dobry (szybki w porównaniu do innych otwartych źródeł). Nie obsługuje rzadkich matryc.
  • quadprog: podstawowe wdrożenie solvera Goldfarb & Idnani Dual i Primal-Dual. Nie obsługuje rzadkich matryc, ale działa cicho szybko w przypadku problemów o średniej wielkości.
  • Rmosek: nigdy nie próbowałem.

Edytować.

Ponieważ napisałem tę odpowiedź, nowy pakiet ipoptr jest teraz dostępny na R-forge. Ten post R-blogger porównuje jego wydajność na czystym QP z quadprogiem. Krótko mówiąc, ipoptr obsługuje trojaczki z rzadkimi matrycami i wydaje się być znacznie szybszy niż quadprod, gdy matryce projektowe są rzadkie. Gdy matryce projektowe są gęste, quadprog nadal wydaje się znacznie szybszy.

użytkownik603
źródło
2
Z mojego doświadczenia wynika, że ​​quadprog jest nadal szybszy w przypadku małych i średnich problemów, a ipoptr jest szybszy tylko wtedy, gdy problem jest dość duży.
Neal Fultz
2
Istnieje najnowszy zestaw postów na blogach na te tematy. Zobacz na przykład blog.ryanwalker.us/2015/02/…
chandler,
1
Zauważ też, że quadprog wymaga dodatnich określonych macierzy w postaci kwadratowej.
ae0709
Istnieje również pakiet osqp - dla rzadkich systemów jest to zdecydowanie najszybsza implementacja dostępna teraz w R ...
Tom Wenseleers