问题描述
作为优化公式的一部分,我需要实现多项式logit。我的问题的一个非常简化的版本是这样的:
我想将所有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 (将#修改为@)