finite difference step size value in fmincon

54 visualizaciones (últimos 30 días)
Akshay Bhapkar
Akshay Bhapkar el 4 de Ag. de 2020
Comentada: Mario Malic el 11 de Abr. de 2021
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 comentarios
Hainan Wang
Hainan Wang el 10 de Abr. de 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
Mario Malic el 11 de Abr. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 4 de Ag. de 2020
Editada: Matt J el 4 de Ag. de 2020
You might try the sqp or interior point algorithm, instead of whatever fmincon algorithm setting you are currently using. According to the documentation, the sqp algorithm in particular will take finite differencing steps that respect bounds
  4 comentarios
Akshay Bhapkar
Akshay Bhapkar el 4 de Ag. de 2020
You are right. During the first iteration, with the step size of magnitude 2, the 10th design variable exceeded the ub. But that is because the design variable (x) changes from x to 3x (with step size of 2) which is way too large. I want it to change from x to x+step size.
My question is, why does it (x) not change from x to x + step-size, like when we use step size of magnitude 1e-03 or 1e-04?
Thanks...
Matt J
Matt J el 4 de Ag. de 2020
Editada: Matt J el 4 de Ag. de 2020
Because the formula used for the actual step is what Mario posted previously
delta = v.*sign(x).*max(abs(x),TypicalX);

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by