Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

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

Asked by Del

Del (view profile)

on 25 Jan 2013

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?



Del (view profile)


No products are associated with this question.

2 Answers

Answer by Shashank Prasanna

Shashank Prasanna (view profile)

on 25 Jan 2013
Edited by Shashank Prasanna

Shashank Prasanna (view profile)

on 25 Jan 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.


Walter Roberson

Walter Roberson (view profile)

on 26 Jan 2013

fmincon does not necessarily find the local min that is "closest" to the initial point. If the local min is narrow enough, the gradient calculations could overshoot it and continue on to another local min.


Del (view profile)

on 28 Jan 2013

what does it mean for a local min to be narrow?

Sean de Wolski

Sean de Wolski (view profile)

on 28 Jan 2013


x = 1:0.1:10;
y = 1- sqrt(x);
y(15) = y(15)-0.3;

Basically if you're sledding down that hill, there is a chance the sled might jump the gap.

Shashank Prasanna

Shashank Prasanna (view profile)

Answer by Greg Heath

Greg Heath (view profile)

on 25 Jan 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 Heath

Greg Heath (view profile)

Contact us