다양한 R 2 차 프로그래밍 솔버의 차이점은 무엇입니까?


9

일부 이차 최적화 문제를 해결하는 데 도움이되는 패키지를 찾고 있으며 적어도 6 개의 다른 패키지가 있음을 알 수 있습니다. 페이지 에 따르면 :

QP (Quadratic programming, 90C20) : cplexAPI , kernlab , limSolve , LowRankQP , quadprog , Rcplex , Rmosek

이 중 일부 (Rmosek 및 cplexAPI)는 다른 독점 패키지에 의존하므로 관심이 없습니다.

다른 QP 패키지의 주목할만한 차이점은 무엇입니까?


주어진 참고 문헌을 보셨습니까? 동일한 절차 / 알고리즘은 다른 구현을 가질 수 있습니다. interior-point , trust-region 또는 active-set 방법을 사용하여 QP 문제를 해결할 수있는 것이 있으면 무엇입니까 ?
usεr11852

1
osqp 패키지도있다 - 스파 스 시스템은 R 훨씬 빠른 구현으로 볼 수 있습니다 지금 ...
톰 Wenseleers

답변:


11
  • Cplex (cplexAPI, Rcplex) : 오픈 소스가 아닙니다 (그러나 매년 재생 가능한 무료 아카데믹 라이센스가 있습니다). 희소 행렬을 지원합니다. QP를 사용하는 동안 QP를 포장해야 했습니까? 아카데믹 라이센스는 많은 코어 (예 :)에서 라이센스를 사용할 수 없다는 점에 유의하십시오 mclapply().
  • ipop (kernlab에있는 ipop)은 순수한 R로 구현되므로 큰 응용 프로그램에서는 불필요하게 느려집니다. 희소 행렬을 지원하지 않습니다.
  • limSolve는 본격적인 QP를 해결하지 않고 제약 조건 유형이 동일한 것만 해결합니다. 모든 QP 문제를 이러한 방식으로 구성 할 수있는 것은 아니지만 가능할 때 명확한 해결책이 있습니다. 희소 행렬을 지원하지 않습니다.
  • LowRankQP : 내 경험에 따르면 이것은 좋은 것입니다 (다른 오픈 소스에 비해 빠름). 희소 행렬을 지원하지 않습니다.
  • quadprog : Goldfarb & Idnani Dual 및 Primal-Dual 솔버의 기본 구현. 희소 행렬을 지원하지 않지만 적당한 크기의 문제에 대해서는 조용히 빠릅니다.
  • Rmosek : 시도한 적이 없습니다.

편집하다.

새로운 패키지 인이 답변을 썼기 때문에 이제 R-forge에서 ipoptr을 사용할 수 있습니다. R- 블로거 게시물은 순수한 QP에서의 성능과 quadprog를 비교합니다. 요컨대, ipoptr은 희소 행렬 삼중 항을 지원하며 설계 행렬이 희박한 경우 쿼드 프로드보다 훨씬 빠른 경향이 있습니다. 그러나 설계 행렬이 조밀 할 때 quadprog는 여전히 훨씬 더 빠른 것으로 보입니다.


2
제 경험은 중소형 문제의 경우 quadprog가 여전히 빠르며 문제가 상당히 클 때만 ipoptr이 빠릅니다.
Neal Fultz

2
이 주제에 관한 최신 블로그 게시물이 있습니다. 예를 들어, blog.ryanwalker.us/2015/02/…
chandler


1
또한 quadprog에는 2 차 형태의 양의 한정 행렬이 필요합니다 .
ae0709

osqp 패키지도있다 - 스파 스 시스템은 R 훨씬 빠른 구현으로 볼 수 있습니다 지금 ...
톰 Wenseleers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.