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 ?

thxxxx

1 Like

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, https://github.com/lanl-ansi/Alpine.jl/pull/149.

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??
@ccoffrin

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.
https://www.tandfonline.com/doi/abs/10.1080/03052158508902504?journalCode=geno20

I started an implementation if you want some hints:
https://github.com/odow/MOO.jl/blob/master/src/algorithms/nise.jl

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

@odow
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