- 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.
Error using the fmincon function
4 views (last 30 days)
Show older comments
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 Comment
Walter Roberson
on 12 May 2025
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).
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 ?
Accepted Answer
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!