Borrar filtros
Borrar filtros

Why is fmincon giving me a wrong answer depending on which initial feasible point I am using?

3 visualizaciones (últimos 30 días)
I am using fmincon to solve a minimization problem with nonlinear constraints. The problem is that, it is giving me a wrong answer, a point that is not a minimizer (not even close), and that is not within the tolerance. I made sure to use a feasible initial point.
However, when I use another initial feasible point, it gives me a correct answer.
Here is the problem:
min f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
s.t. constraints= [1-(x(1)*x(2));-x(1)-(x(2))^2;x(1)-0.5] <= 0
The minimizer is [0.5 ; 2] with optimal objective value: 306.5000
However when I use the feasible initial point x0=[-1 ; -2], this gives me the answer: [-0.7921; -1.2624] (which is not feasible and has an f value of 360.3798 !!) (to within options.TolCon = 1e-06)
and when I use the initial point x0=[0.4;4], this gives me the correct answer [.5;2].
Note that my constraints do not require the variables to be non-negative.
Any idea what I am doing wrong here?

Respuestas (2)

Shashank Prasanna
Shashank Prasanna el 25 de En. de 2013
Editada: Shashank Prasanna el 25 de En. de 2013
Del, it is untrue that x0=[-1 ; -2] is feasible. Lets take a look at your constraint:
1-x1*x2 <= 0 ==> x1 and x2 should be of the same sign
-x1-x2^2 <= 0 ==> x1 >= 0 (Hmmm, x2 is always +ve implies x1 >= 0)
x1 - 0.5 <= 0 ==> x1 < 1/2 (this is a bound constraint, put it in ub)
your second constraint is not satisfied by the initial point.
  9 comentarios
Sean de Wolski
Sean de Wolski el 28 de En. de 2013
@Del:
x = 1:0.1:10;
y = 1- sqrt(x);
y(15) = y(15)-0.3;
plot(x,y)
Basically if you're sledding down that hill, there is a chance the sled might jump the gap.

Iniciar sesión para comentar.


Greg Heath
Greg Heath el 25 de En. de 2013
Since the problem is only 2-dimensional, you can start by plotting the four separate contour plots of f, C1, C2 and C3. Then the three overlays of the contours for the Cis(red,blue,green), i = 1,2,3 on top of the contours for f(black)
Hope this helps.
Thank you for formally acceptin my answer.
Greg

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!

Translated by