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

58 次查看(过去 30 天)
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. :)

采纳的回答

John D'Errico
John D'Errico 2019-2-6
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.
  1 个评论
Aniket Kapse
Aniket Kapse 2019-2-11
编辑:Aniket Kapse 2019-2-14
Thanks John.
The approach you proposed in the 3rd paragraph is right. The points joining all the local minima is a curve.
As you suggested, I used 1st variable 't' into a for loop and calculated minima at every thickness 't' using 'fminbnd' and then chose the optimum value i.e. Global minima.
Thanks for your suggestion. :)

请先登录,再进行评论。

更多回答(3 个)

Matt J
Matt J 2019-2-6
编辑:Matt J 2019-2-6
You could try ga or MultiStart.
  1 个评论
Aniket Kapse
Aniket Kapse 2019-2-11
Thanks Matt. But I have already tried 'gamultiobj', 'ga' and 'MultiStart' as well. But the problem with ga and gamultiobj is a large number of iterations and their inconsistent answers.
Particleswarm seemed promising, but again, stochastic answers.
These optimization functions are taking more iterations than the regular branched for loops.
Anyways, thanks for your suggestion. :)

请先登录,再进行评论。


Matt J
Matt J 2019-2-6
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).
Why is that a problem? Since you only have two unknowns, an initial guess close to the global minimum is very easily found (as you have done above) by taking samples of the surface of the cost function

Jason Climer
Jason Climer 2023-8-7
I have found that the particle swarm optimizer is the best approach to problems with ugly surfaces like this one.

类别

Help CenterFile Exchange 中查找有关 Surrogate Optimization 的更多信息

产品


版本

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by