Inequality Indexing using Optimization Toolbox
显示 更早的评论
I would like to optimize an objective function with a constraint that is based on logical indexing. However, it seems like I can't just treat the optimization variable as I would a regular double. I was hoping for some advice about how to structure the constraint.
The code I have is written below. The variables A and B are n x 1 doubles and c is a scalar. So, I want to sum the values in A corresponding to indices for which the optimization variable x is greater than B.
x = optimvar('x',n); % Creates optimization variable
objfun = sum(x); % Creates objective function
constraint = sum(A(x>=B))>=c; % Constraint based on logical indexing
Thank you!
1 个评论
Abdolkarim Mohammadi
2020-10-8
The error says all about it:
Unable to use a value of type optim.problemdef.OptimizationInequality as an index.
You cannot use OptimizationVariable objects for indexing. Such constraints should be defined using extra binary integer variables, so that when x>=B then the constraint is effective, and otherwise the constraint becomes redundant.
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Choose a Solver 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!