finite difference step size value in fmincon
Show older comments
Hi
I'm using fmincon to solve an optimization problem.
I have question regarding step size in fmincon. When I use finite difference step size (ds) of the magnitude 1e-03, design variable (x) changes from x to x+ds.
But when I use step size (ds) of the magnitude 1, design varible(x) changes from x to 2x or when ds = 2, design variable changes from x to 3x.
Because of this very large change in design variables, the solver exceeds the upper bound (ub) and the solver tries to adjust the bounds which leads to errors.
Why is this happening?
TIA...
3 Comments
Mario Malic
on 4 Aug 2020
From documentation of fmincon - FiniteDifferenceStepSize
delta = v.*sign′(x).*max(abs(x),TypicalX);
As you can see, if your v equals to 1, steps will be equal to your variable.
I am not sure if it is only the delta that determines what x will be in next iteration, so it would be great if someone could verify this.
Hainan Wang
on 10 Apr 2021
Hi, Mario
I am curious for the equation in the document:
delta = v.*sign′(x).*max(abs(x),TypicalX);
What does v, x, and TypicalX mean?
Please enlight me, thank you!
Mario Malic
on 11 Apr 2021
v is the actual FiniteDifferenceStepSize scalar, or vector, if you would like to set the step size for each of your variables.
x is the value of your optimization variable(s) at current iteration
TypicalX is described well in the documentation.
Accepted Answer
More Answers (0)
Categories
Find more on Robust Control Toolbox 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!