Why does FMINCON finds a solution even when constraints are not satisfied?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi,
I'm using FMINCON solver as I need to set up Nonlinear 'OR' constraints (similar to this:http://uk.mathworks.com/help/optim/ug/or-instead-of-and-constraints.html). I'm basically searching whether some fixed points can be accommodated in feasible areas, and for that I'm using the nonlinear constraints. In theory if a feasible solution is found, the inequality constraint c is negative. However, I'm getting positive results in the vector c, and exitflags of 1, and FMINCON finds a solution and retrieve a value, however, it is wrong and I'm using that for further steps. Here is the constraint function and the lines where I call the solver:
function [c,ceq] = ConstraintsOR3n2 (x,e,t)
ex=e-e(1);ex(1)=e(1);u=1:2:length(t);
for i = u
Fx1(i)=minDist3(x+ex(1),t(i),t(i+1))
Fx2(i)=minDist3(x,t(i),t(i+1))
Fx3(i)=minDist3(x-ex(2),t(i),t(i+1))
end
Fx1=Fx1(u); Fx2=Fx2(u); Fx3=Fx3(u); %Fx4=Fx4(u);
c(1)=min(Fx1);c(2)=min(Fx2);c(3)=min(Fx3);
options=optimset('Algorithm','interior-point','Display','iter', 'FunValCheck','on');
[x, fval, exitflag]= fmincon(@(x) ObjFunction3n2(x,t,e), x0, [], [], [], [], [], [], @(x)ConstraintsOR3n2(x,e,t), options)
I appreciate very much if someone can give me clue of why is this happening, as I don't understand where is the error, I've checked plenty of times and for some runs where the exitflag is 1, the actual solution does not met the constraints.
Thanks a lot
Martha
댓글 수: 0
채택된 답변
John D'Errico
2016년 9월 1일
You might want to read about what the constraint tolerance means for fmincon. Constraints can be violated by a small amount in general.
Welcome to the wonderful, wacky world of floating point arithmetic.
댓글 수: 0
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!