My optimisation problem has convex multivariate constraints with matrix operations: inverse and determinant. The matrices are symmetric PSD from dim 2x2 up to 10x10. I’ve solved the continuous case in JuMP and Ipopt, with user-defined multivariate constraints and analytical derivatives. This worked extremely well.
There’s been less luck with the integer case. What I’ve tried:
Define @NLconstraints in JuMP => The det and inv weren’t recognised
Use Pavito.jl and Ipopt with CbcSolver or CplexSolver => Requires Hessians, which isn’t possible in JuMP for multivariate user-defined functions, even though Ipopt doesn’t require exact Hessians
Juniper, POD, AmplNLWriter => No user-defined multivariate functions (to the best of my knowledge)
Convex.jl and SCS + Pajarito => some luck with the det, but slow convergence and inexact solutions, like -0.2039 for an Int x >= 0. Also, inv isn’t really allowed.
I’d very much appreciate any suggestions and recommendations of library tools, ideally open source. Many thanks!
If you have a JuMP model that is working for an NLP problem, I don’t foresee why Juniper would not work for an MINLP variant of that JuMP model. Can you indicate what type of error you are getting in that case?
@Olegg, glad to hear that you found a work around for Pavito.
Still, it would be a great help to us if you could provide a small JuMP model that exhibits this issue, then we can add it to the unit tests for various solvers to make sure they work for user defined functions.
@Olegg: I may have a similar problem here where I want to define constraints in JuMP involving matrix invs. Would you mind sharing how you registered a multivariate function / derivative? Or did you find an alternative approach?