lanl-ansi / PowerModels.jl

A Julia/JuMP Package for Power Network Optimization
https://lanl-ansi.github.io/PowerModels.jl/stable/
Other
390 stars 145 forks source link

Merging QCQP and Conic Formulations #436

Open ccoffrin opened 5 years ago

ccoffrin commented 5 years ago

Based on discussion with @mlubin and @blegat, the best longterm strategy is to implement all formulations in PowerModels using MOI's SOC and RSOC constraints. Bridges then can be used to send those JuMP models to QCQP or NLP solvers. These bridges may be implemented in InfrastructureModels or as optional bridges provided as part of MOI.

To that end, cleaning up the conic PowerModel types will wait until PowerModels moves to JuMP v0.19.

CC @frederikgeth, @jd-lara

jd-lara commented 5 years ago

@ccoffrin but it is still feasible to clean up the upper level of the type tree to implement it in PowerSimulations?

ccoffrin commented 5 years ago

Yes, the active power only type is independent and will get into the next release of PowerModels.

frederikgeth commented 5 years ago

That's great. Excited about all the features JuMP 0.19 is going to offer!

ccoffrin commented 2 years ago

@blegat and @odow, the ecosystem has come a long way since this issue was originally posted. What is the current best practice on this topic?

At least in the near term, a good implementation of quadratic objective functions in the conic solvers that only support linear objectives will keep these two types around, but I would be nice if there was a path to remove these in the future.

odow commented 2 years ago

All solvers have a quadratic to SOC bridge by default, but the SOC to quadratic is opt-in. So you can use the QCQP formulations with all solvers.

Ideally, you could just keep the conic formulations. But you'd probably need to add the SOCtoNonConvexQuadBridge{Float64} bridge to your JuMP model.

@blegat can say more.

blegat commented 2 years ago

So in short, just enter it as you have it. If you have L, use a SOC formulation, if you have Q use a quadratic formulation. For the objective, probably go for the quadratic objective even if you have L with a TODO note to change when we have DCP.