Quelles sont les différences entre les différents solveurs de programmation quadratique R?

9

Je recherche un package pour m'aider à résoudre certains problèmes d'optimisation quadratique et je vois qu'il existe au moins une demi-douzaine de packages différents. Selon cette page:

QP (programmation quadratique, 90C20): cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

Certains d'entre eux (Rmosek et cplexAPI) dépendent d'autres packages propriétaires, donc je ne suis pas intéressé par ceux-ci.

Quelles sont les différences notables entre les autres packages QP?

Henry Henrinson
la source
Avez-vous regardé les documents de référence fournis? La même procédure / algorithme peut avoir différentes implémentations. Si quelque chose peut résoudre un problème de QP en utilisant des méthodes de point intérieur , de région de confiance ou de jeu actif .
usεr11852
1
Il y a aussi le paquet osqp - pour les systèmes clairsemés, c'est de loin l'implémentation la plus rapide disponible dans R maintenant ...
Tom Wenseleers

Réponses:

11
  • Cplex (cplexAPI, Rcplex): n'est pas open source (mais il existe une licence académique gratuite renouvelable annuelle). Il prend en charge les matrices clairsemées. Était mon emballage gotto pour QP pendant que je l'utilisais. Attention, la licence académique ne permet pas de l'utiliser sur de nombreux cœurs (par exemple mclapply()).
  • ipop (celui de kernlab) est implémenté en pur R. Cela le rend inutilement lent dans les grandes applications. Ne prend pas en charge les matrices clairsemées.
  • limSolve ne résout pas les QP à part entière, seulement ceux où les contraintes sont de type égal. Tous les problèmes de QP ne peuvent pas être formulés de cette façon, mais lorsqu'ils le peuvent, ils ont une solution explicite. Ne prend pas en charge les matrices clairsemées.
  • LowRankQP: celui-ci dans mon expérience est bon (rapide par rapport aux autres open source). Ne prend pas en charge les matrices clairsemées.
  • quadprog: implémentation de base du solveur Goldfarb & Idnani Dual et Primal-Dual. Ne prend pas en charge les matrices clairsemées mais reste silencieuse rapidement pour les problèmes de taille moyenne.
  • Rmosek: jamais essayé.

Éditer.

Depuis que j'ai écrit cette réponse, un nouveau package, ipoptr est maintenant disponible sur R-forge. Ce billet R-blogger compare ses performances sur QP pur avec quadprog. En bref, ipoptr prend en charge les triplets à matrice clairsemée et a tendance à être beaucoup plus rapide que quadprod lorsque les matrices de conception sont clairsemées. Cependant, lorsque les matrices de conception sont denses, le quadrilatère semble être beaucoup plus rapide.

user603
la source
2
D'après mon expérience, quadprog est encore plus rapide pour les petits et moyens problèmes, et ipoptr n'est plus rapide que lorsque le problème est assez important.
Neal Fultz
2
Il existe un ensemble récent de billets de blog sur ces sujets. Voir, par exemple, blog.ryanwalker.us/2015/02/…
chandler
1
Notez également que quadprog nécessite des matrices définies positives sous la forme quadratique.
ae0709
Il y a aussi le paquet osqp - pour les systèmes clairsemés, c'est de loin l'implémentation la plus rapide disponible dans R maintenant ...
Tom Wenseleers