When building a JuMP model, one thing I feel very important is to distinguish between variables and parameters in each equation. It’s important because, for example, the term “var. * par.” is linear but the term “var. * var.” is nonlinear, so linear solvers like CPLEX won’t return anything if you have a nonlinear equation like that.
So a good name style could not only give the model a good look but also helps to debug. I think it might be a good idea to have all the variables in lower cases and parameters in upper case, e.g., ’ @variable(m, x) ’ and
X = 1 so you can tell immediately the different between
@constraint(m, x * X <= 3) and
@constraint(m, x * x <= 3)
How about the name of sets, models, equations?