Sự khác biệt giữa các bộ giải lập trình bậc hai R khác nhau là gì?


9

Tôi đang tìm kiếm một gói để giúp tôi giải quyết một số vấn đề tối ưu hóa bậc hai và tôi thấy có ít nhất nửa tá các gói khác nhau. Theo này trang:

QP (Lập trình bậc hai, 90C20): cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

Một số trong số này (Rmosek và cplexAPI) phụ thuộc vào các gói độc quyền khác, vì vậy tôi không quan tâm đến chúng.

Sự khác biệt đáng chú ý giữa các gói QP khác là gì?


Bạn đã xem các tài liệu tham khảo được đưa ra? Các thủ tục / thuật toán tương tự có thể có các triển khai khác nhau. Nếu bất cứ điều gì người ta có thể giải quyết vấn đề QP bằng cách sử dụng các phương pháp điểm nội bộ , vùng tin cậy hoặc thiết lập hoạt động .
usεr11852

1
Ngoài ra còn có gói osqp - đối với các hệ thống thưa thớt, đây là cách triển khai nhanh nhất hiện có trong R ...
Tom Wenseleers

Câu trả lời:


11
  • Cplex (cplexAPI, Rcplex): không phải là nguồn mở (nhưng có giấy phép học tập miễn phí có thể gia hạn hàng năm). Nó hỗ trợ ma trận thưa thớt. Là trình bao bọc gotto của tôi cho QP trong khi tôi đang sử dụng nó. Beaware rằng giấy phép học tập không cho phép sử dụng nó trên nhiều lõi (nói thông qua mclapply()).
  • ipop (một trong kernlab) được triển khai trong thuần R. Điều đó làm cho nó chậm một cách không cần thiết trong các ứng dụng lớn. Không hỗ trợ ma trận thưa thớt.
  • limSolve không giải quyết đầy đủ các QP chính thức, chỉ những người có các ràng buộc là loại bằng. Không phải tất cả các vấn đề QP có thể được đóng khung theo cách này, nhưng khi đó có thể, họ có một giải pháp rõ ràng. Không hỗ trợ ma trận thưa thớt.
  • LowRankQP: cái này theo kinh nghiệm của tôi là một cái tốt (nhanh so với các mã nguồn mở khác). Không hỗ trợ ma trận thưa thớt.
  • quadprog: triển khai cơ bản của bộ giải Goldfarb & Idnani Dual và Primal-Dual. Không hỗ trợ ma trận thưa thớt nhưng yên tĩnh nhanh cho các vấn đề có kích thước vừa phải.
  • Rmosek: không bao giờ thử.

Biên tập.

Vì tôi đã viết câu trả lời này, một gói mới, ipoptr hiện có sẵn trên R-forge. Bài đăng R-blogger này so sánh hiệu suất của nó trên QP thuần túy với quadprog. Nói tóm lại, ipoptr hỗ trợ bộ ba ma trận thưa thớt và có xu hướng nhanh hơn nhiều so với quadprod khi ma trận thiết kế thưa thớt. Tuy nhiên, khi ma trận thiết kế dày đặc, quadprog vẫn xuất hiện nhanh hơn đáng kể.


2
Kinh nghiệm của tôi là quadprog vẫn nhanh hơn đối với các vấn đề từ nhỏ đến trung bình và ipoptr chỉ nhanh hơn khi sự cố khá lớn.
Neal Fultz

2
Có một bộ bài viết blog gần đây về các chủ đề này. Xem, ví dụ: blog.ryanwalker.us/2015/02/ Khăn
chandler


1
Cũng lưu ý rằng quadprog yêu cầu ma trận xác định dương ở dạng bậc hai.
ae0709

Ngoài ra còn có gói osqp - đối với các hệ thống thưa thớt, đây là cách triển khai nhanh nhất hiện có trong R ...
Tom Wenseleers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.