绝对值函数未被识别为 Disciplined Convex Program (CVXPY)

Vimell Presad Yuvarajah

我正在尝试使用 CVXPY 运行以下优化:

import cvxpy as cp
import numpy as np

weights_vec = cp.Variable(10)

er_vec = cp.Parameter(10, value=np.random.randn(10))
prev_h_vec = cp.Parameter(10, value=np.ones(10))
tcost_vec = cp.Parameter(10, value=[0.03]*10)


objective = cp.Maximize(weights_vec @ er_vec - tcost_vec @ cp.abs(weights_vec - prev_h_vec))
prob = cp.Problem(objective)
prob.solve()

但是,我收到以下错误:

cvxpy.error.DCPError:问题不符合 DCP 规则。具体来说:
目标不是 DCP。它的以下子表达式不是:
param516 @ abs(var513 + -param515)

绝对函数是凸函数。因此,我不太确定为什么 CVX 会为目标中的绝对值函数抛出错误。

萨沙

DCP-内斯依赖于符号tcost_vec

由于这是一个(不受约束的)参数,所以不好。

以下两个都将起作用:

# we promise it's nonnegative
tcost_vec = cp.Parameter(10, value=[0.03]*10, nonneg=True)

# it's fixed and can by analyzed
tcost_vec = np.array([-0.03]*10)

鉴于发布的代码,还没有理由使用参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章