How to get to know if APOPT Solver from Gekko found the global optimum in MINLP problem?

Viewed 259

I am currently optimizing a mixed integer nonlinear problem in python with Gekko. Therefore I am using APOPT solver and I have made quite good experiences with that solver so far. My problem is not so big in terms of decicion variables and restrictions. I have 5 decicion variables, whereas 2 of them are arrays with a dimension of 1-5 x 3-50 and 1-5 x 3-50 x 2-35 x 1-4 depending on the case. So this "decicion arrays" are what make my problem really hard (when their seperate dimensions are big), I would say. In my problem I have 9 restrictions. Only the second, big array is an integer decicion variable.

So I guess I have a nonconvex problem (?) where I have read in the web, that most of the solvers do not guarantee to find the global optimum.

When I run APOPT on my problem I have chosen a maximum of 10 000 iterations and most of the time APOPT finds a solution. Most of the time APOPT stops at iteration Nr. 10 000. But sometimes the solver says: "no more possible trial points, returning the best integer solution". Does this mean this solution is a global optimum? Furthermore APOPT sometimes shows "successful solution" after displaying a "Gap" of 0 or less. Does this also mean APOPT has found the global optimum?

I am using "lowest objective leaf" as branch method and a gap tolerance of 0.

Any help is very much appreciated. Thank you and greetings from Austria!

1 Answers

Non-convex solutions require multi-start methods or else specialized solvers such as BARON. APOPT is a branch and bound MINLP solver that finds local optima. You do not necessarily have a non-convex problem. You can test this if the 2nd derivative (Hessian) is negative definite. If the 2nd derivative (Hessian) is positive definite everywhere in the feasible search area then the problem is convex and the local solution is also the global solution.

When the solver reports a gap of 0 then the best integer solution is found although it may be a local optimum. If it returns an integer solution after 10,000 iterations then you'll need to consider the gap and decide if the solution is good enough. Here is additional information on solver options: https://apmonitor.com/wiki/index.php/Main/OptionApmSolver

Related