MATLAB: Which solver / Optimization algorithm is best to solve the function with multiple local minima.

global minimamathematical optimization algorithmsOptimization Toolbox

I am trying to solve a 'Constrained Non-linear' objective function having 2 variables (Height and Thickness).
But as figure shows, function contains multiple local minima.
GFK_U_Profile_Stiffness Difference Pattern.jpg
I have tried using all applicable solvers from MATLAB Optimization Toolbox. Also tried Hooke-Jeeves pattern search algorithm.
But calculated solution is always one of the local minima unless starting point / initial guess is given somewhere closer to the actual solution (Global Minimum).
Could you please suggest me any better solvers or optimization algorithms?
Thanks in advance. 🙂

Best Answer

As Matt says, ga or multistart is an option. The idea is that no general optimizer will be good at this. They are too easily trapped in a local minimum. And you get into a local min that depends on where you start. What you need to do is find the BEST local min.
And that is the fundamental problem. You need an intelligent start point for any tool to work well, if it depends on the start point. The nice thing about multistart methods here is they will throw lots of start points out, and you hope that at least one of them is good. So they are somewhat dependent on luck, but you reduce the luck needed by taking more start points.
However, I'd find a completely different approach, were it my problem to solve. The picture you show clearly has a set of solutions that all lie strongly along a path in 2 dimensions. Is that a straight line? Or a curve? I cannot see. Regardless, I would sped just a few minutes to look at the equations of your surface. Is it obvious what the equation of that path is? Even if not, I may well be able to infer that that curve is just from the surface itself. Anyway I can do it, I would resolve that path that contains the set of local minima.
Having done that, then I have just reduced the TWO dimensional problem to effectively a ONE dimensional problem. Now just sample sufficiently many points along that path. Find the point that is minimal from the set of sampled points. Use THAT as your start point.
Essentially, the idea is to reduce the problem to a multistart optimization in ONE dimension. It is far more efficient to search in one dimension than in multiple dimensions.
I don't have your objective function, so I cannot show you how this would work.