Avoiding local minimum with fmincon
64 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Felippe Trigueiro Angelo
am 6 Sep. 2019
Kommentiert: Felippe Trigueiro Angelo
am 9 Sep. 2019
Hi, i'm doing a non linear optimization using the fmincon (interior point) function with matlab, but i'm stucking in local minimum. I also did this optimization using the gradient descent and together with it, I implemented a heuristic to avoid local minimum, which was:
if (actual objective function value > anterior objective function value)
step of gradient descent reduces in 10%
actual objective function increases in a little step.
This implementation returned me good results.
I've already done this for trying to use this heuristic with fmincon, but I didn't get out of the local minimum. So my question is: Is there any way to avoid local minimum using fmincon or fminunc?
PS: I've already done the GlobalSearch and MultiStart implementation and the results were worse thatn the gradient descent.
6 Kommentare
Matt J
am 8 Sep. 2019
Bearbeitet: Matt J
am 8 Sep. 2019
No, I'm afraid I still don't really have a clear picture of the method. The iterations of steepest/gradient descent are entirely guided by the objective's gradient and the step-size. The value of the objective at each iteration doesn't figure into it, unless maybe you are talking about some sort of line search that you are doing to help choose the step-size. But even then, its not clear how perturbing the objective values during a line search would be helpful for climbing out of a local minimum.
It is also still not clear how you would have applied your heuristic to fmincon, as you claim to have done. fmincon doesn't offer the user any options for controlling/altering its step-size selections.
Antworten (1)
Matt J
am 6 Sep. 2019
Bearbeitet: Matt J
am 8 Sep. 2019
So my question is: Is there any way to avoid local minimum using fmincon or fminunc?
There is no systematic, problem-independent way. You must, through problem-specific ingenuity, choose an initial guess close enough to the global minimum so that your algorithm falls into its capture basin.
The fact that GlobalSearch and MultiStart are having such a hard time suggests to me that your cost function is extremely dense with local minima. You might want to try ga() or one of the other global solvers.
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!