我正在尝试使用 CVXPY 制定凸优化问题。一切正常,除了似乎不遵循 DCP 规则的约束。
让是一个决策变量,让是另一个衍生自的决策变量使用以下约束,
Q = cvxpy.pos(D)
我不确定为什么会这样。在这里它说这pos是一个凸原子。
有人可以帮帮我吗?
编辑:
错误信息:
cvxpy.error.DCPError:问题不遵循 DCP 规则。具体来说:以下约束不是 DCP: var1 == maximum(var0, 0.0) ,因为以下子表达式不是:|-- var1 == maximum(var0, 0.0)
最小的工作示例(如果关闭第二个约束,程序可以工作),
import cvxpy as cp
import numpy as np
D = cp.Variable(2)
A = np.array([[1, 2], [2, 1]])
b = np.ones((2, )) * 2
Q = cp.Variable(2)
constraints = [sum(D) == 1, Q == cp.pos(D)]
prob = cp.Problem(cp.Minimize(cp.sum_squares(A @ D - b)), constraints)
prob.solve(verbose=True)