如何在`cvxpy`中加入一部分向量?

时间:2017-09-23 10:40:08

标签: python cvxpy

我正在使用cvxpy来解决凸优化问题,这是我的约束:

enter image description here

那么如何在cvxpy中表达这种约束呢? cvxpy中的sum_entries函数只能对整个矩阵/向量求和,而不能对向量求和。

1 个答案:

答案 0 :(得分:1)

只需使用索引选择一个子集(在下面的示例中:经典的基于python的切片;但可以使用更复杂的索引/ numpy样式):

示例:

from cvxpy import *

x = Variable(5)
constraints = []
constraints.append(x >= 0)   # all vars
constraints.append(x <= 10)  # all vars
constraints.append(sum_entries(x[:3]) <= 3)  # only part of vector; sum(first-three) <=3
objective = Maximize(sum_entries(x))
problem = Problem(objective, constraints)
problem.solve()
print(problem.status)
print(x.value.T)

输出:

optimal
[[  1.   1.   1.  10.  10.]]

我也怀疑你在这里误解了这个问题,但那个公式图像当然不完整。