gpt4 book ai didi

python - 如何在CVXPY中设置半正参数(矩阵)?

转载 作者:行者123 更新时间:2023-12-01 01:37:09 25 4
gpt4 key购买 nike

我想使用热启动来检查设置 cvx.Parameter 是否有性能优势,而我遇到了这个:

cvxpy.error.DCPError: Problem does not follow DCP rules.

我的代码在这里:

import time 
import numpy as np
import cvxpy as cvx


m = 300
x = cvx.Variable((m, 1))
p_cov = cvx.Parameter((m, m))
prob = cvx.Problem(cvx.Maximize(-cvx.quad_form(x, p_cov)), [x>=0, cvx.sum(x)==1])

for _ in range(10):
df_return = np.random.randn(m, m+1)
cov = np.cov(df_return)
p_cov.value = cov
t1 = time.time()
prob.solve(warm_start=True)
t2 = time.time()
print("Solve time:", round(t2-t1, 2))

我认为重点是 p_cov 应该是一个半正矩阵,但我就是无法解决它。期待您的帮助,谢谢!

最佳答案

你说得对!您只需告诉 cvxpy p_cov 是半正定的。

p_cov = cvx.Parameter((m, m), PSD=True)

DCP 现在可以计算该表达式的正确性质:

cvx.quad_form(x, p_cov)

这是:

Expression(CONVEX, NONNEGATIVE, (1, 1))

而不是:

Expression(UNKNOWN, UNKNOWN, (1, 1))

Advanced Features 中查找更多文档.

关于python - 如何在CVXPY中设置半正参数(矩阵)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com