You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于矩阵的CVXPY二次规划不符合DCP规则问题咨询

问题原因与解决方案

你遇到的这个问题是因为在CVXPY 1.1.1版本中,trace(Pi.T @ Pi)这种写法没有被DCP规则识别为合规的凸表达式——虽然数学上它确实是所有元素的平方和(凸二次型),但CVXPY的DCP检查器对矩阵乘法后取trace的组合逻辑在旧版本里没有做特殊处理,导致判定为非DCP合规。

解决方法

最直接且符合DCP规则的替代写法是使用CVXPY内置的sum_squares函数,它专门用于计算变量所有元素的平方和,和trace(Pi.T @ Pi)数学上完全等价,而且会被DCP检查器正确识别:

import cvxpy
Pi = cvxpy.Variable((10, 5))
objective = cvxpy.Minimize(cvxpy.sum_squares(Pi))
problem = cvxpy.Problem(objective)
problem.solve()

如果你坚持想用矩阵乘法相关的写法,也可以用quad_form来构造这个二次型(不过这里sum_squares更简洁):

# 等价写法,用quad_form
objective = cvxpy.Minimize(cvxpy.quad_form(Pi.flatten(), cvxpy.eye(50)))

另外补充一点:如果你升级到CVXPY的较新版本(比如1.2+),直接使用trace(Pi.T @ Pi)可能已经可以被正确识别为DCP合规的表达式,但考虑到你当前使用的是1.1.1,上述替代方案是最稳妥的。

内容的提问来源于stack exchange,提问作者magiiique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:57:55