Release notes
The format is based on Keep a Changelog.
v0.5.0 (unreleased)
Version 0.5 is a rewrite with a new interface. See Migrating from version 0.4 for the correspondence between the old and the new names.
Added
PiecewiseLinearfunction objects, which are built independently of a model, with the function given first so that adoblock can be used, and add the function to the model of their inputs when called, e.g.f(x). They replacepiecewiselinear.- Univariate functions given in pieces, e.g. with jumps between them, with
PiecewiseLinear(f::Vector{<:Function}, x::Vector{<:AbstractVector}). - Functions with several outputs, with three or more inputs, and with discontinuities, built from their segments with
PWLFunction. - Piecewise linear relaxations, i.e. bands between a lower and an upper bound, with
UnivariatePWLRelaxation, formulated byIndependentBranchingandDisaggregatedLogarithmic. - The
directionkeyword withEpigraphandHypograph, which only bound the output from one side. - The methods
IndependentBranching(Lyu, Hicks and Huchette),ConvexPieces,GreedyTriangleSelectionandMultipleChoicefor functions of any dimension. add_formulationreturns aPWLFormulationwith the variables and constraints it added, which can be deleted from the model again.- Evaluation of functions with
pwl(x...), and bivariate functions from a matrix of values. - An extension interface with
SOS2Method,TriangleSelectionMethodandformulate_pwl!, see Extending the package. - Documentation with a manual, tutorials and an API reference.
Changed
- Methods are values of their own types instead of symbols, e.g.
Logarithmic()instead of:Logarithmic. - The default triangulation of bivariate functions is
K1Triangulation, and the default method depends on the triangulation:K1,UnionJackorGreedyTriangleSelection. - The default method of univariate functions is
MultipleChoicefor discontinuous functions andDisaggregatedLogarithmicfor relaxations, instead ofLogarithmic, which supports neither. - The triangle selections of
SixStencilandNineStencilleave out levels that separate nothing, so they use fewer binary variables on small grids and on triangulations with a single diagonal direction. OptimalTriangleSelectionandOptimalIndependentBranchingtake a time limit, cache their results, and fall back to the greedy selection.- The inputs of a function may be affine expressions or constants.
Removed
- The Celaya formulations. Use
ZigZagIntegerfor a general integer formulation.