微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cvxpy DCPError:问题不符合 DCP 规则

如何解决cvxpy DCPError:问题不符合 DCP 规则

我正在尝试在 cvxpy 中创建融合套索的修改实现来解决优化问题。以下代码给了我一个错误

DCPError:问题不符合 DCP 规则。具体来说: 目标不是 DCP。它的以下子表达式不是: max(vstack(var2111[0:190],var2111[190:380],var2111[380:570],var2111[570:760]),False)[1:190] + -max(vstack(var2111[) 0:190],False)[0:189]

def loss_fn(X,Y,beta_A,beta_C,beta_G,beta_T):
    return cp.norm2(Y - X@cp.hstack((beta_A,beta_T)))**2

def regularizer(beta_A,beta_T):
    beta_max = cp.max(cp.vstack((beta_A,beta_T)),axis = 0)
    print (beta_max)
    return cp.sum(cp.abs(cp.diff(beta_max)))


def objective_fn(X,beta_T,lambd):
    return loss_fn(X,beta_T) + lambd * \
                                                regularizer(beta_A,beta_T)


beta_A = cp.Variable(len(seq))
beta_C = cp.Variable(len(seq))
beta_G = cp.Variable(len(seq))
beta_T = cp.Variable(len(seq))
lambd = cp.Parameter(nonneg=True)
problem = cp.Problem(cp.Minimize(objective_fn(X_diff_xor.values,y_values,lambd)))

#lambd_values = [3,5,7,9,11,13] # regularization parameter
lambd_values = [7]
beta_values = []
for v1 in lambd_values:
    lambd.value = v1
    problem.solve(solver = 'ECOS',verbose = True)
    beta_values.append(beta.value)

任何帮助/见解将不胜感激。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。