Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在CVXPY中设置半正参数(矩阵)?_Python_Cvxpy - Fatal编程技术网

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

Python 如何在CVXPY中设置半正参数(矩阵)?,python,cvxpy,Python,Cvxpy,我想使用“热启动”通过设置cvx.参数来检查是否有性能优势,同时我了解以下内容: 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.Ma

我想使用“热启动”通过设置cvx.参数来检查是否有性能优势,同时我了解以下内容:

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))
在中查找更多文档