Juniper...Solver gets only local optimum point

Hello there,

Congratulations on the amazing conference of 2020 at first…Let me tell you my problem briefly
I have a non convex NLP (OPF or Optimal Power Flow) and I want to try different solvers on this problem. I decided first to try installing solvers like COUENNE but I got lost actually so until I figure my way out of this loop of installing solvers (why are not all solvers like IPOPT, Gosh) I decided to try something like Juniper since it is very easy to use with Julia
only these two lines and I can use Juniper
optimizer = Juniper.Optimizer
nl_solver = optimizer_with_attributes(Ipopt.Optimizer, “print_level”=>0)

So I used Juniper, but I get LOCALLY_SOLVED as a termination status, and as far as I understand this solver finds the global optimal point so how can this be explained ?


There are no guaranteed global optimizers that run in finite time. You might try different initiatizations or a GA, but still no guarantees.

It’s pretty good that you got an informative message at the end.

Juniper is a local solver. It does not is not guaranteed to find the global optimum.

On a related note. The only Julia-native global solver that I am aware of is Alpine.jl. It is not yet working with JuMP v0.19+, but you can track that progress here,

In the case of AC-OPF, last I recall, Alpine did not support trig functions yet, so it would not help you in that case.

If you switch to the rectangular voltage form of the AC-OPF you could then use Alpine or Gurobi v9 to get global optimality proofs for small to medium sized problems.

What I understand so far is that if I i want to get global optimum with a rather larger system, I have to make convex relaxation and use different solvers??

That is the most scaleable approach that I am aware of.

To my knowledge there is no off-the-self solver that can provide AC-OPF optimality proof for cases with more than 50 buses. I have seen research prototypes go up to 300 buses, larger than this the only approach I know that runs in a reasonable amount of time is to solve the non-convex problem locally with Ipopt and then get a lower bound with a convex relaxation of the problem. Depending on the specifics of the OPF problem you are considering, this can show gaps of less than 1% with just a few minutes of computation.

In most of the applications I have looked at, Ipopt’s local solutions are near optimal.

I will give the rectangular formulation with Gurobi a try.
My main objective is not the ACOPF but rather a multi objective OPF for example combining minimum losses and minimum generation cost, to make use of the great combination of formulations that PowerModels provide , will it be easy to edit code and have something with multiobjectives like that using PowerModels or currently not easy or possible ? @ccoffrin

I don’t recall where JuMP is with respect to multi-objective support. @odow, can you comment? At the very least you could explore multi-objective pareto front by solving a series of single objective problems. Modification of one of these JuMP models should be fairly strait forward.

1 Like

No, JuMP doesn’t have multi-objective support. It’s on my radar, but it involves some pretty broad changes.

Just scalarize the objective and solve different weights.

You could use something like NISE.

I started an implementation if you want some hints:

1 Like

SO I will concentrate on this path for me now… I will work with power models to investigate performance of the different formulations, then use to powermodelsannex to enable me to edit and put my own formulations
Thank you so much

great work…I will definitely need this after I start being confident on my opf with different formulations… I plan to use powermodelsannex to change something like the objective function…etc