CVXPY代码出现矩阵乘法警告 寻求解决方法
解决CVXPY中矩阵乘法的弃用警告
问题原因
你的代码中使用*进行矩阵-向量乘法,这在CVXPY 1.1版本后已被弃用,官方要求用专门符号区分不同类型的乘法操作,因此触发了警告。
修改后的代码
将矩阵乘法的*替换为@即可解决:
# Number of variables n = len(symbols) # The variables vector x = Variable(n) # The minimum return req_return = 0.02 # The return - 使用@替代*进行矩阵-向量乘法 ret = r.T @ x # The risk in xT.Q.x format risk = quad_form(x, C) # The core problem definition with the Problem class from CVXPY prob = Problem(Minimize(risk), [sum(x)==1, ret >= req_return, x >= 0])
关键说明
CVXPY对乘法符号的规范:
*:仅用于标量与矩阵/向量的乘法@:用于矩阵-矩阵、矩阵-向量的乘法(对应线性代数中的矩阵乘法)multiply:用于元素级的逐元素乘法
你的代码中r.T*x是行向量与列向量的点积运算,属于矩阵-向量乘法范畴,替换为@后,警告会消失,同时代码符合CVXPY的最新规范。
内容的提问来源于stack exchange,提问作者Red Harry
相关产品推荐
相关产品推荐

