如何解决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 举报,一经查实,本站将立刻删除。