How can I apply a filter using fminunc?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a function f(x) to minimize using fminunc, but I want to apply a filter to x after every iteration. This is a simple example, just to explain:
x=4;
func=@(x)myfunct(x)
options=optimoptions('fminunc','SpecifyObjectiveGradient',true,'Display','iter');
x0=2;
[best_x, fval, exitflag, output] = fminunc(func,x0,options)
% myfunction
function [OF,grad_OF]=myfunct(x)
OF=3*x^2+2*x;
grad_OF=6*x+2;
In this case the solver starts from x0, until it finds the minimum; I would that after every iteration, my x0 is x0=2*best_x (or x0=best_x - 2....) Now it is not important the specific relation, but how can I use and modify the best_x in every iteration, using it as the new starting point in fminunc solver.
0 commentaires
Réponse acceptée
Matt J
le 25 Nov 2017
Modifié(e) : Matt J
le 25 Nov 2017
You can run fminunc in a loop with a single iteration in each pass (by setting MaxIter=1). Within the loop, you can also apply your filter.
options=optimoptions('fminunc','SpecifyObjectiveGradient',true,...
'Display','iter','MaxIter',1);
best_x=x0;
for i=1:N
[best_x, fval, exitflag, output] = fminunc(func,best_x,options)
best_x=myFilter(best_x);
end
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display 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!