I’m trying to solve a MILP with an piecewise linear function in the cost function. At the moment, i’m using a binairy variable per linear piece wich is not the state of the art (see for example http://www.mit.edu/~jvielma/publications/A-Note-on-a-Superior.pdf)

CPLEX has a dediacted function to create the constraints to ensure the structure of a piecewise linear function. (see https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.cplex.help/CPLEX/UsrMan/topics/discr_optim/pwl/01_pwl_title_synopsis.html)

This performs way better than my implementation (getting great cuts and reducing number of variables etc). The problem is, I’ve only used this function in python and I wasn’t able to make it work through JuMP.

Is it even possible to make it work with JuMP?

btw i’m aware of the package PiecewiseLinearOpt.jl but it doesn’t do the trick for me as I’m looking at non-continous piecewise linear function.

Also, I transitioned to modeling using julia only recently, so it might as well be something simple I didn’t understand.

Explanations would be greatly appreciated