Cross posted here, but asking a variant on this forum.
I want to write a sum of piecewise linear constraints as an LP and am hoping to compare my approach with how Convex.jl
or JuMP
does it.
In particular, I believe that I can express the following constraint:
c_1\max(y + |x| - d_1, 0) + c_2\max(y + |x| - d_2, 0) + e - fy \leq 0 \tag{$*$}
where x,y are scalar decision variables, and c_i, d_i, e, f \geq 0 as the set of linear constraints
c_1(y+|x| - d_1) + c_2(y + |x| - d_2) + e - fy \leq 0 \\
c_1(y+|x| - d_1) + e - fy \leq 0 \\
c_2(y + |x| - d_2) + e - fy \leq 0 \\
e - fy \leq 0
I tried looking at the actual constraints that Convex.jl
is using when it parses (*) by printing problem.constraints
, but but it doesn’t seem to show how it breaks down (*) into simpler constraints. Where in the source would I look, or is there a way to print off the simplified constraints (for either JuMP
or Convex.jl
) and see how the solvers are parsing them?
Thanks!