ความแตกต่างระหว่างตัวแก้ปัญหาการเขียนโปรแกรม 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 ไม่รองรับเมทริกซ์กระจัดกระจาย แต่เงียบเร็วสำหรับปัญหาที่มีขนาดปานกลาง
  • Rmosek: ไม่เคยลอง

แก้ไข

ตั้งแต่ที่ฉันเขียนคำตอบนี้แพ็คเกจใหม่ipoptrก็พร้อมใช้งานบน R-forge นี้โพสต์ R-blogger เปรียบเทียบประสิทธิภาพการทำงานบน QP บริสุทธิ์ที่มี quadprog ในระยะสั้น ipoptr สนับสนุนสามเมทริกซ์กระจัดกระจายและมีแนวโน้มที่จะเร็วกว่า quadprod มากเมื่อเมทริกซ์การออกแบบกระจัดกระจาย เมื่อเมทริกซ์การออกแบบมีความหนาแน่นอย่างไรก็ตาม quadprog ยังคงปรากฏขึ้นอย่างรวดเร็ว


2
ประสบการณ์ของฉันคือ quadprog ยังเร็วกว่าสำหรับปัญหาขนาดเล็กถึงปานกลางและ ipoptr นั้นเร็วขึ้นเมื่อปัญหามีขนาดใหญ่พอสมควร
Neal Fultz

2
มีการโพสต์บล็อกชุดล่าสุดในหัวข้อเหล่านี้ ดูตัวอย่างเช่นblog.ryanwalker.us/2015/02/…
chandler

1
ดูเพิ่มเติมที่blog.ryanwalker.us/2014/01/…และblog.ryanwalker.us/2015/03/…
chandler

1
โปรดทราบว่า quadprog ต้องการเมทริกซ์แน่นอนบวกในรูปแบบสมการกำลังสอง
ae0709

นอกจากนี้ยังมีแพคเกจ osqp - สำหรับระบบที่ห่างไกลมันเป็นการใช้งานที่เร็วที่สุดใน R ตอนนี้ ...
Tom Wenseleers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.