Python CVXPY中的分段线性函数

Python CVXPY中的分段线性函数,python,optimization,cvxpy,piecewise,convex-optimization,Python,Optimization,Cvxpy,Piecewise,Convex Optimization,我有一个凸优化问题,具有可分离的、凸的、分段线性函数f_I(var_I),每个函数由一系列点[(值、成本)]和一些其他也是凸的项定义。我想弄清楚两个如何在CVXPY中构建这些分段函数 如何获取以下两个点列表,并将它们作为分段函数添加到CVXPY目标中 import cvxpy as cp w = cp.Variable(n) f1_points = [(-5, 10), (-2, -1), (0, 0)] # -5 <= var1 <= 0 (Convex) f2_points

我有一个凸优化问题,具有可分离的、凸的、分段线性函数f_I(var_I),每个函数由一系列点[(值、成本)]和一些其他也是凸的项定义。我想弄清楚两个如何在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, 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作为cp导入
w=cp.变量(n)

f1#u点=[(-5,10),(-2,-1),(0,0)]#-5因此,从点列表来看,这在CVXPY中不可能直接出现。但是,如果将分段函数重写为点斜率函数而不是点集合,则可以使用cvxpy
max
函数生成分段线性函数

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

这在。

mmm…中用一个例子进行了描述。。。可能我无法从点创建分段函数,但您必须创建函数并使用cp.max([f1])。我会等着看是否有更好的方法。这可能会有帮助:。我问了这个相当普遍的问题,开始使用线性规划进行变化点检测。因为我想让它解决非小问题(>10^4个数据点),所以速度非常慢。