2014-11-11 6 views
2

최적화 문제를 공식화하기 위해 MathProgBase 인터페이스를 사용하고 싶습니다. 또한, NLopt (또는 다른 어떤 것)과 같은 오픈 소스 솔버를 사용하고 싶습니다.MathProgBase와 함께 NLopt 솔버를 사용하는 방법은 무엇입니까?

https://github.com/JuliaOpt/NLopt.jl#using-with-mathprogbase의 의사는 을 통해 NLopt을 호출 할 수 있다고 언급합니다. 불행히도, 나는 바보 같은 예를 찾을 수 없습니다. 반면에 MathProgBase에는 NLopt이 언급되어 있지 않습니다. 그럼 해보 죠.

using NLopt, MathProgBase 
quadprog([0., 0., 0.],[2. 1. 0.; 1. 2. 1.; 0. 1. 2.],[1. 2. 3.; 1. 1. 0.],'>',[4., 1.],-Inf,Inf,NLoptSolver(algorithm=:NLOPT_AUGLAG)) 

내가받을 다음과 같은 오류 메시지가 : 여기에 코드입니다

`loadproblem!` has no method matching loadproblem!(::NLoptMathProgModel, ::Array{Float64,2}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Symbol) 
while loading In[1], in expression starting on line 2 

in quadprog at /Users/harmeling/.julia/v0.3/MathProgBase/src/HighLevelInterface/quadprog.jl:46 

문제점은 무엇입니까? 다른 오픈 소스 솔버와도 잘 맞습니다. 중요한 것은 quadprog 같은 MathProgBase 호출 규칙을 사용하는 것입니다. 당신의 도움을 주셔서 감사합니다!

답변

0

NLopt에는 일반적인 비선형 최적화 문제를 해결하기위한 알고리즘 모음이 포함되어 있습니다. 현재 비선형 인 derivative-based interface 만 구현됩니다. 따라서 이차 문제를 해결하려면이보다 일반적인 인터페이스를 따라야합니다. 이 작업이 자동으로 수행 될 수도 있지만 아직 구현되지 않았습니다.

quadprog의 경우, Ipopt는 NLopt보다 훨씬 더 강력한 해결사가됩니다. Ipopt는 현재 선형 인터페이스와 비선형 인터페이스를 지원하지만 아직 2 차 인터페이스는 지원하지 않습니다. 나는 이것을 곧 시행 할 생각이다.

+0

는 사실, 그 사이에 나는 Ipopt에 대한 quadprog 인터페이스를 구현했던 MathProgBase 인터페이스를 통해 점프를 사용하는 등의 예를 가지고있다. github.com/harmeling/Quadprog.jl에서 다운로드 할 수 있습니다. 바로 지금 METADATA에 대한 요청서를 첨부합니다. 그러나 Ipopt에 대한 인터페이스를 제공하기 위해 올바른 위치에 자유롭게 포함 시키십시오. 나는 당신이 그것을 어디에 둘지 알 것입니다. – user2979331

관련 문제