Why is not possible to put the SpecifyObjectiveGradient option to true in case of Levenberg-Marquardt?
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
As I know from the theory, the Levenberg-Marquardt algorithm also needs to compute the Gradient and the Hessian. If I set the SpecifyObjectiveGradient property to true and I define the gradients explicitly, the lsqnonlin command chooses the trust-region-reflective method instead of the Levenberg-Marquardt to solve the problem. I don't understand, why I cannot reduce the number of function evaluations for the Levenberg-Marquardt algorithm by defining the gradient? Thanks for your help!
0 commentaires
Réponses (1)
Elizabeth Reese
le 6 Sep 2017
The default algorithm for lsqnonlin is the trust-region-reflective method. In order to use the Levenberg-Marquardt algorithm and the SpecifyObjectiveGradient flag, you need you specify both in the options for the lsqnonlin problem. For example:
options = optimoptions(@lsqnonlin,'Algorithm','levenberg-marquardt','SpecifyObjectiveGradient',true);
Then you can specify the gradient using the input function described at the link below.
Finally, you can call lsqnonlin as with the following syntax:
x = lsqnonlin(fun,x0,lb,ub,options);
2 commentaires
Alan Weiss
le 11 Sep 2017
I cannot reproduce your observation. When I run lsqnonlin with Algorithm = 'levenberg-marquardt' and SpecifyObjectiveGradient = true, and use the debugger to follow the code path that lsqnonlin takes, then I see it using the Levenberg-Marquardt algorithm.
Alan Weiss
MATLAB mathematical toolbox documentation
Voir également
Catégories
En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!