我最近发现了cvxpy软件包,并尝试在一个非常基本的最小化问题上使用它。 但是在初始化凸问题时,我总是会收到无法解释的DCP错误。
x = Variable(m)
gamma = Parameter(value=1.0)
cost = sum_squares(np.transpose(A_shaped)*x - b_real) + gamma*norm(x,1)
obj = Minimize(cost)
constr = [np.transpose(A_shaped)* x <= b_real + abs(b_real * eps),
np.transpose(A_shaped)* x >= b_real - abs(b_real * eps)]
prob = Problem(obj, constr)
print(prob.is_dcp())
所有参数如 m , A_shaped , b_real 和 eps 均已预先定义。
我的问题: 每当我在 cost 的声明中使用参数 gamma 并想解决它时,cvxpy告诉我问题不遵循DCP规则,这是由于子表达式 param123 * norm124 。 当我用1.0替换 gamma 或将其删除时,我没有收到此错误,并且 prob.is_dcp()返回 True ,我可以解释一下,因为我将 gamma 初始化为值1.0。
如果您需要更多信息,请随时提出并表示感谢!
答案 0 :(得分:0)
好的,我找到了解决方案: 我只测试过将参数的参数 nonpos 设置为 False ,但这无济于事。我不知道的是,还有一个参数 nonneg ,然后将其设置为 True ,现在DCP分析也返回了 True 。