Writing nonlinear constraint in fmincon
2 次查看(过去 30 天)
显示 更早的评论
Hello,
I minimize a function with 4 parameters on fmincon. The vector of parameters is b=[a1 a2 b1 b2 ]. How can I add a nonlinear constraint such that 5/b1<b2?
2 个评论
采纳的回答
Walter Roberson
2020-10-24
5/b1 < b2 implies 5 < b2*b1 implies 0 < b2*b1 - 5 implies b2*b1 - 5 < 0 implies b2*b1 - 5 + delta = 0 for some positive delta.
This leads to the constraint
delta = eps(realmin);
b(3)*b(4) - 5 + delta %<= 0 implied
However I would suggest you think more about your boundary constraint. Is 5/b1 == b2 an actual problem for your situation? If it is then you run serious risks that due to round-off issues, that whatever calculation fails with 5/b1 == b2, will not round in a "fortunate" way.
I personally would probably not use eps(realmin) for the delta: I would be more likely to use 5*(1-eps) instead of 5+delta
3 个评论
Walter Roberson
2020-10-24
True, I forgot about the case of negatives.
You could always code
5/b(3) - b(4)
and make the appropriate alteration for the border equality... provided that you know that b(3) is never 0.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Nonlinear Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!