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

CVXPY 中的分段线性函数

如何解决CVXPY 中的分段线性函数

我有一个凸优化问题,其中包含可分离的、凸的、分段的线性函数 f_i(var_i),每个函数都由一系列点 [(values,cost)] 和其他几个也是凸的项定义。我想弄清楚两个如何在 CVXPY 中构建这些分段函数

如何将以下两个点列表作为分段函数添加到 CVXPY 目标中?

import cvxpy as cp
w = cp.Variable(n)

f1_points = [(-5,10),(-2,-1),(0,0)]  # -5 <= var1 <= 0  (Convex)
f2_points = [(-4,5),0)]  # -4 <= var2 <= 0  (Linear)

f1_cost_function = ...
f2_cost_function = ...
constraints = [cp.sum(w) = 0] + ...
problem = cp.Problem(cp.Minimize(cp.sum([f1_cost_function,f2_cost_function] + ...)),constraints)

解决方法

因此,从点列表中,这在 CVXPY 中是不可能直接出现的。但是,如果将分段函数重写为点斜函数而不是点的集合,则可以使用 cvxpy maximum 函数来生成分段线性函数。

f1_functions = [f1_line1,f1_line2,...]
f1 = cp.maximum(f1_functions)

user guide 中的示例对此进行了描述。

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