reverse the output order of the constraint function argument of fmincon

1 view (last 30 days)
Leo Simon on 2 Apr 2018
Answered: Walter Roberson on 2 Apr 2018
I frequently use fmincon to solve for a bunch of equality constraints, but my problems have no inequality constraints. My equality constraints are typically defined as an anonymous function in the workspace that calls fmincon, e.g.,
f = @(x,b) a*x + b
It would be so much more convenient if I could simply pass f as an argument to fmincon, e.g.,
soln = fmincon(obj,x,[],[],[],[],[],[],@(x) f(a,b))
but because fmincon expects equality constraints in the second argument, I have to write a separate nested function with two output variables, and all of the data to that extra function. Is there a workaround for this? I can think of two ways it could be done: easiest would be for matlab to provide a field of the fmincon options struct that reversed the output arguments of the constraint function. Alternatively, is there a way to write an anonymous function with two output arguments? Thanks!

Walter Roberson on 2 Apr 2018
@(x) deal([], f(x, b))

Community Treasure Hunt

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

Start Hunting!