Square root in objective function must appear as nonlinear constraints for optimization?

26 visualizaciones (últimos 30 días)
The title already described my question. Let me give a specific example:
If I have in my objective function for fmincon to optimize. During the iterations, may be smaller than 0.
Therefore, do I need to write as nonlinear constraints or does Matlab already take account of the problem?
Thank you very much!

Respuestas (4)

Matt J
Matt J el 6 de Mzo. de 2019
Editada: Matt J el 6 de Mzo. de 2019
You should omit square roots, because they introduce both unneccesary additional computation and non-differentiability into the cost function, which breaks the theoretical assumptions of fmincon. In your example, the problem could be equivalently posed without square roots as
min x^2
s.t. x^2>=100
  6 comentarios
Matt J
Matt J el 6 de Mzo. de 2019
Editada: Matt J el 6 de Mzo. de 2019
Lastly, Matt, could you please kindly tell me what is the non-differentiability issue? I can differentiate my objective function and nonlinear constraints easily.
The function sqrt(z) has no derivative at z=0. In your case, the function f and hence also t(f) is non-differentiable wherever -x^3+2*x+99=0. So, if the optimal solution lies near such a point, fmincon will not be able to use gradients to find its way there.
What is |t(f)-data|? Is it a least squares objective or is it the L1 norm error between t(f) and |data|? The L1 norm also has differentiability issues.
Frank
Frank el 6 de Mzo. de 2019
Editada: Frank el 6 de Mzo. de 2019
Thanks! I can understand your answer. It is a least square.

Iniciar sesión para comentar.


Matt J
Matt J el 7 de Mzo. de 2019
Editada: Matt J el 7 de Mzo. de 2019
One general way to get rid of sqrt expressions in the objective is to replace them with an additional nonlinearly constrained variable, e.g., instead of
f=a+b^2+sqrt(-x^3+2*x+99)
have instead,
f=a+b^2+c
s.t. c^2=-x^3+2*x+99
c>=0;
All of the above expressions, both in the objective and the constraints, are now differentiable everywhere.

SandeepKumar R
SandeepKumar R el 6 de Mzo. de 2019
Yes, you need to specify that constraint as ignoring this will lead infeasibilty. This is true for any optimizer

Walter Roberson
Walter Roberson el 6 de Mzo. de 2019
if you have fractional power of a polynomial (not a multinomial) then manually solve for the bounds and express them as bounds constraints . Bounds constraints are respected in most situations .
You might end up with discontinuous ranges. If so it can often be more efficient to run the ranges as separate problems and take the best solution afterwards . Nonlinear constraints are much less efficient to deal with .

Productos


Versión

R2014b

Community Treasure Hunt

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

Start Hunting!

Translated by