Multiple Non linear constraints for fmincon optimization
18 次查看(过去 30 天)
显示 更早的评论
I would like to be able to use multiple non linear constraints with the fmincon optimization function. Currently fmincon works with both of my nonlcon function handles. Both of them are only using c(x) < 0, and not ceq(x) = 0.
So I have a function
[c,ceq] = cost(x, ..., ..., ...)
and corresponding function handle
nonlincon1 = @(x) cost(x, ..., ..., ...);
and
[c,ceq] = force(x, ..., ..., ...)
and corresponding function handle
nonlincon1 = @(x) force(x, ..., ..., ...);
Like I said I can pass the non linear constraint nonlincon1, or nonlincon2 with fmincon...
[xOpt,optimCost] = fmincon(f,x0,[],[],[],[],lb,ub,nonlcon1,options);
[xOpt,optimCost] = fmincon(f,x0,[],[],[],[],lb,ub,nonlcon2,options);
but I am not sure how to use both function handles as constraints at once. I have tried putting them in cells and the function works but I get some a message I do not quite understand, and the optimization is ignoring the nonlincon2 constraint.
[xOpt,optimCost,exitflag] = fmincon(f,x0,[],[],[],[],lb,ub,{nonlcon1;nonlcon2},options);
Warning: Constraint gradient function provided but OPTIONS.GradConstr = 'off'; ignoring constraint gradient function and using finite-differencing. Rerun with
OPTIONS.GradConstr = 'on' to use constraint gradient function.
Any ideas?
3 个评论
Joshua Hoegerman
2022-5-1
This doesnt work, you cant store multiple function handles within a standard array, you need to use a cell array which fmincon doesnt accept
Matt J
2022-5-1
It should work, provided cost() and force() are visible to the function somehow, e.g., they are local functions.
回答(2 个)
Alan Weiss
2012-5-7
The documentation addresses your problem: http://www.mathworks.com/help/toolbox/optim/ug/brhkghv-11.html#brhkghv-16
Alan Weiss
MATLAB mathematical toolbox documentation
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Least Squares 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!