Çeşitli R kuadratik programlama çözücüleri arasındaki farklar nelerdir?


9

İkinci dereceden optimizasyon problemlerini çözmeme yardımcı olacak bir paket arıyorum ve en az yarım düzine farklı paket olduğunu görüyorum. Bu sayfaya göre :

QP (İkinci dereceden programlama, 90C20): cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

Bunlardan bazıları (Rmosek ve cplexAPI) diğer tescilli paketlere bağlıdır, bu yüzden bunlarla ilgilenmiyorum.

Diğer QP paketleri arasındaki önemli farklar nelerdir?


Verilen referans belgelerine baktınız mı? Aynı prosedür / algoritma farklı uygulamalara sahip olabilir. Herhangi bir şey bir QP problemini iç nokta , güven bölgesi veya aktif küme yöntemleri kullanarak çözebilir .
22852 22:05

1
Osqp paketi de var - seyrek sistemler için şu anda R'de bulunan en hızlı uygulama ...
Tom Wenseleers

Yanıtlar:


11
  • Cplex (cplexAPI, Rcplex): açık kaynak değildir (ancak yıllık yenilenebilir ücretsiz akademik lisans vardır). Seyrek matrisleri destekler. Ben kullanırken QP için benim gotto sarıcı oldu. Akademik lisansın birçok çekirdekte (izinli olarak) kullanılmasına izin vermediğini unutmayın mclapply().
  • ipop (kernlab'daki) saf R'de uygulanır. Bu, büyük uygulamalarda gereksiz yere yavaşlatır. Seyrek matrisleri desteklemez.
  • limSolve tam teşekküllü QP'leri değil, sadece kısıtların tip eşitliği olanları çözer. Tüm QP problemleri bu şekilde çerçevelenemez, ancak o zaman ne zaman açık bir çözüme sahiptirler. Seyrek matrisleri desteklemez.
  • LowRankQP: Deneyimlerime göre bu iyi bir tane (diğer açık kaynaklı olanlara kıyasla hızlı). Seyrek matrisleri desteklemez.
  • quadprog: Goldfarb & Idnani Dual ve Primal-Dual çözücüsünün temel uygulaması. Seyrek matrisleri desteklemez, ancak orta büyüklükteki problemler için sessiz hızlıdır.
  • Rmosek: Hiç denemedim.

Düzenle.

Yeni bir paket olan bu cevabı yazdığımdan beri, ipoptr artık R- forge'da mevcut. Bu R-blogger yayını, saf QP'deki performansı quadprog ile karşılaştırır. Kısacası, ipoptr seyrek matris üçüzlerini destekler ve tasarım matrisleri seyrek olduğunda quadprod'dan çok daha hızlı olma eğilimindedir. Bununla birlikte, tasarım matrisleri yoğun olduğunda, quadprog hala önemli ölçüde daha hızlı görünmektedir.


2
Benim deneyimim quadprog'un küçük-orta problemler için hala daha hızlı olması ve ipoptr sadece problem oldukça büyük olduğunda daha hızlı olmasıdır.
Neal Fultz

2
Bu konularla ilgili yeni bir blog yayını grubu var. Örneğin, bkz. Blog.ryanwalker.us/2015/02/…
chandler


1
Ayrıca, quadprog'un kuadratik formda pozitif belirli matrisler gerektirdiğini unutmayın .
ae0709

Osqp paketi de var - seyrek sistemler için şu anda R'de bulunan en hızlı uygulama ...
Tom Wenseleers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.