微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将CVXPY变量存储在列表/ numpy数组中

如何解决将CVXPY变量存储在列表/ numpy数组中

作为优化公式的一部分,我需要实现多项式logit。我的问题的一个非常简化的版本是这样的:

enter image description here

我想将所有V(k,d)存储在一个矩阵/列表/数组中,然后对它们求和。 我的CVXPY尝试是:

K = 30
N = 150


Z = cp.Variable((K,N))


V = np.zeros((K,N),dtype=object)
denom = np.zeros(N,dtype=object)

#######
cost = 0 
for d in range(N):
    for k in range(K):
        utility = Q[k] * Pi[i,k]
        V[k,d] = cp.multiply(Z[k,d],utility)
    denom[d] = cp.sum(V[d])

但这会导致以下错误

ValueError: setting an array element with a sequence.

问题在于V [d]是一个表达式数组,而cp.sum(V [d])不喜欢这样。我猜这是因为cp.sum()期望使用CVXPY类型的对象,但是得到了一个数组。但是将中间CVXPY变量显式保存在某个地方将大大简化我的代码。有办法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。