Why is fmincon giving me a wrong answer depending on which initial feasible point I am using?
3 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(2 个)
Shashank Prasanna
2013-1-25
编辑:Shashank Prasanna
2013-1-25
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 个评论
Sean de Wolski
2013-1-28
@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.
Greg Heath
2013-1-25
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
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!