MATLAB Answers

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

39 views (last 30 days)
Frank
Frank on 6 Mar 2019
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!

Answers (4)

Matt J
Matt J on 6 Mar 2019
Edited: Matt J on 6 Mar 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 Comments

Sign in to comment.


Matt J
Matt J on 7 Mar 2019
Edited: Matt J on 7 Mar 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 on 6 Mar 2019
Yes, you need to specify that constraint as ignoring this will lead infeasibilty. This is true for any optimizer

Walter Roberson
Walter Roberson on 6 Mar 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 .

Community Treasure Hunt

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

Start Hunting!

Translated by