How can I apply a filter using fminunc?
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Matt J
on 25 Nov 2017
Edited: Matt J
on 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 Comments
More Answers (0)
See Also
Categories
Find more on Genetic Algorithm in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!