cvxpy 的约束:X 的最小值和它的上界之和大于一个 const

问题描述

我想为十个不同的行业分配权重以构建投资组合。但是有一个限制,至少 80% 的行业应该来自一个指数,称为 ZZ800 指数。 ZZ800指数的ind权重是已知的,例如A行业占ZZ800指数的15%,这意味着如果我将我投资组合的50%分配给A行业,A行业的ZZ800的最大权重只会是15%。

如何编写此约束?

ind_weights_800 = [0.1,0.4,0.2,0.05,0.25]
x_weight = cp.Variable(5)

constraints = []
constraints.append(cp.sum(x_weight) == 1)

# this is the constraint I don't kNow how to write
ind_sum = 0
for i in range(10):
    ind_sum  = ind_sum  + min(x_weight[i],ind_weights_800[i])
constraints.append(ind_sum >= 0.8)
NotImplementedError: Strict inequalities are not allowed.

解决方法

我发现:

mvn clean

cp.minimum 是关键。