I’ve read some piecewise linear (PWL)-related stuff from JuMP’s doc.
It appears that I haven’t seen the particular formulation below, which I think is worth mentioning. It’s from the generation cost curve of generators in power networks. Typically they are convex quadratic, but for large-scale problems we may opt to use a PWL function instead (so we end up with LPs).
Let’s assume there are just 2 pieces for simplicity, as the above image indicates.
It appears that the following formulation is the tightest.
p = ( # model the lower segment and the higher segment generations
l = JuMP.@variable(model, lower_bound = 0, upper_bound = Δ1),
h = JuMP.@variable(model, lower_bound = 0, upper_bound = Δ2)
)
JuMP.@constraint(model, sum(p) == Load) # power balance of the power network
JuMP.@objective(model, Min, c1 * p.l + c2 * p.h) # Minimize generation costs (constants can be dropped)
In the above code I merely considered a single generator. But It extends naturally to multiple generators, each of them having a 2-piecewise linear cost function.
I wonder if this formulation is better than all existing methods (e.g. the convex combination, or the cutting plane formulation). If so, I think it’s worth mentioning this method in JuMP’s doc?
