作为约束的分段线性函数

Piecewise Linear Function as Constraint

我正在尝试使用 pyscipopt 来解决线性规划问题,但无法将分段线性函数作为约束进行拟合。

约束表达如下:

我试过这样写:

cfm = quicksum( max(quicksum(cf[i][t] * q[i] - L[t] for i in range(I)), 0) for t in range(T) / quicksum(L[t] for t in range(T)) <= cfm_max

其中 cfm_max = 0.15,在这种情况下。

但这可能是非常错误的,因为它 returns 一个 NotImplementedError。我在 piecewise.py 中看到了与软件包一起找到的示例,但它们的用法似乎差异很大,对我来说不起作用。

非常感谢任何帮助,谢谢。

我觉得可以这样写:

sum(t,y[t]) <= 0.15*sum(t,L[t])
y[t] >= sum(i,CF[i,t]*q[i])-L[t]

其中 y[t] 是 non-negative 个变量。这现在完全是线性的(没有除法,没有 max())。