How to use fmincon's constraintviolation option
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
xone92_
el 17 de Abr. de 2023
Hello there,
I'm trying to use fmincon for an optimization problem.
I use Nonlinear constraints and my function returns a ceq value. This however is not "0" it is 0.0014693, hence fmincon will give me an exitflag of -2 (no feasible point was found). I then try to use the 'ConstraintTolerance' option (which by default is 1e-6) and put it to 0.01. However, still no feasible solution could be found (now the ceq value is 0.0012396).
Can you tell me what I'm doing wrong?
0 comentarios
Respuesta aceptada
Torsten
el 17 de Abr. de 2023
Movida: Matt J
el 17 de Abr. de 2023
Can you tell me what I'm doing wrong?
You try to betray yourself that your problem has a solution. But it has none.
2 comentarios
Torsten
el 17 de Abr. de 2023
Editada: Torsten
el 17 de Abr. de 2023
ConstraintTolerance is defined as:
ConstraintTolerance is an upper bound on the magnitude of any constraint functions. If a solver returns a point x with c(x) > ConstraintTolerance or |ceq(x)| > ConstraintTolerance, the solver reports that the constraints are violated at x. ConstraintTolerance can also be a relative bound. See Tolerance Details.
We cannot tell you more than this.
To diagnose why you get an exitflag of -2 although you set the constraint tolerance to 0.01 and the real error in the constraint is only 0.0012396 - we are not able to without your code. Maybe another constraint is now violated. Or the solver takes the relative error instead of the absolute error.
Más respuestas (0)
Ver también
Categorías
Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!