Platform changes
- Add support for Ubuntu 21:10 (last rolling release).
Dependencies Update
- .Net TFM update
net5.0
->net6.0
(need .Net SDK 6.0 LTS and .Net SDK 3.1 LTS). - abseil-cpp
20210324.2
->20211102.0
. - Protobuf
3.18.0
->3.19.1
. - Googletest
1.10.0
->1.11.0
. - Python: add
numpy >= 1.13.3
. - On MacOS compile Coin-OR in
-O1
to avoid crash in runners.
Routing
- Improvement on filters.
- Improve first solution heuristics.
- Improve time break placements.
CP-SAT
- Breaking changes:
- The underlying protocol buffer is incompatible with previous versions. Any stored protocol buffer will have to be re-generated with the updated builder APIs (in C++, Python, Java, and .NET)
- In particular, the interval protobuf was clean as we removed the old fields (start, size, and end) and renamed the new ones (using
_view
) to use the name of the removed fields. AddProductEquality
has been removed. Please useAddMultiplicationEquality
.- Now that we have floating point coefficients for the objective, we have removed
ScaleObjectiveBy
which had a problematic semantics.
- New features:
- The
all_different
,reservoir
,modulo
,multiplication
anddivision
constraints accept affine expressions (a * var + b
) everywhere it required integer variables. - The objective accepts floating point coefficients (See the
DoubleLinearExpr
class in C++/Java/.NET. See theknapsack_2d_sat.py
example in Python). - The
no_overlap_2d
constraint supports optional intervals. - The C++ API implements
+
and*
operators to build expressions.
- The
- Improvements:
- Improved presolve code.
- Tighter model checker.
- Rework reservoir constraint.
- Add energetic cuts for the no_overlap_2d constraint.
- Improved linear relaxation of encoding constraints (
literal implies var == value
).
- Deprecated and removed methods
- Deprecated C++
BooleanSum
andBooleanScalProd
. Just useSum
andScalProd
. - Removed C++
AddLinMinEquality
andAddLinMaxEquality
. Just useAddMinEquality
andAddMaxEquality
.
- Deprecated C++
- Future incompatibilities
- At some point in the future, we will rewrite the Java modelling layer to be closer to the C++ layer.
- In the C++ modelling layer, we will make the IntVar(BoolVar var) ctor explicit.
- We are contemplating making the python API PEP 8 compliant (using snake_case names). If this happen, we will provide a sed file to port the code.
Build System
Bazel
- Fix Windows build.
CMake
- Add
FETCH_PYTHON_DEPS
option (defaultON
). - Add optional support for GPLK solver (default
-DUSE_GLPK=OFF
).
Python
- Support
numpy
integers in most of the CP-SAT API. - Fix missing
__version__
.