Error using the fmincon function

조회 수: 4 (최근 30일)
Giacomo
Giacomo 2025년 5월 12일
댓글: Giacomo 2025년 5월 15일
This is my code:
nonlcon = @(x) deal(g_fun_vec(x), []);
options = optimoptions('fmincon','Algorithm','sqp','Display','iter');
[x_sol,~,exitflag, output] = fmincon(@(x) 0, x0, [], [], [], [], lb, ub, nonlcon, options);
And I get this error message:
The strange things is that, as you can see on the screenshoot of the Command Window, the constraint fuction is defined correctly at x0
  댓글 수: 1
Walter Roberson
Walter Roberson 2025년 5월 12일
Although nonlcon is not specifically documented as having to return real values,
Nonlinear constraints, specified as a function handle or function name. nonlcon is a function that accepts a vector or array x and returns two arrays, c(x) and ceq(x).
  • c(x) is the array of nonlinear inequality constraints at x. fmincon attempts to satisfyc(x) <= 0 for all entries of c.
  • ceq(x) is the array of nonlinear equality constraints at x. fmincon attempts to satisfyceq(x) = 0 for all entries of ceq.
If c(x) were permitted to be complex, then c(x) <= 0 is not well defined. If c(x) were permitted to be complex, then is the implied definition real(c(x))<=0 or would it be real(c(x))<=0 & imag(c(x))<=0 -- leaving open the possibility that c(x) were (for example) -1-1i as satisfying constraints ?

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2025년 5월 12일
편집: Matt J 2025년 5월 12일
No, the constraint and objective functions have to return real values to be considered "defined". Possibly you have log() or sqrt() operations in your constraints that produce complex values when their arguments go negative.
  댓글 수: 1
Giacomo
Giacomo 2025년 5월 15일
Yes, thanks I didn't put the expression in abs()

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

제품


릴리스

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by