Releases: google/or-tools
Releases · google/or-tools
v9.2 (2021/12)
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__
.
v9.1 (2021/09)
Platform changes
- Ubuntu 16.04 LTS is deprecated (actions/runner-images#3287).
- Add support for Debian 11 (Bullseye).
- Add support for Fedora 34.
- python: use
manylinux2014
image (PEP 599). - python: add support for aarch64 linux using
manylinux2014_aarch64
image. - .Net: add .Net5 support.
Dependencies Update
- abseil-cpp
20210324.1
->20210324.2
. - Protobuf
3.15.8
->3.18.0
. - SCIP
7.0.1
->master
. - Googletest
1.8.0
->1.10.0
. - python: use of
warning
incp_model.py
(#2530). - python: absl-py
0.11
->0.13
.
CMake
- Bump minimum version required 3.14 -> 3.15 (#2528).
- python: bump minimum required version 3.14 -> 3.18 (#2774).
Make
- Make based build is deprecated please migrate to Bazel or CMake
Java
- Improve robustness of the native library loader (#2742).
- Fix jvm GC crash when routing model or the constraint solver were disposed (#2091, #2466).
- Fix CP-SAT logging callback crash when using multiple workers (#2775).
CP-SAT
- Improve robustness of the LNS code (see #2525).
- Improve scheduling code: new factory methods to create fixed size intervals,
new search heuristics, improved presolve and new linear cuts. - Improve routing code: new dedicated LNS.
- Improve model checker. It is now more pedantic, especially w.r.t. potential overflows.
- Improve MIP code: better presolve and multiple improvements to the linear relaxation of MIP
and CP models. - Improve search diversity. When using more than 12 workers, add workers dedicated to
improving the lower bound of the objective. - Change to the parallelism code: by default, the solver will now use all available cores.
Use thenum_search_parameters
to specify the level of parallelism. - Deprecate
SearchAllSolutions
andSolveWithSolutionCallback
. - Python API: more pedantic checks when using
var == ...
orvar != ...
outside amodel.Add()
call.
v9.0 (2021/04)
Platform changes
- Added support for Centos-7 (#2498)
Dependencies Update
- abseil-cpp 20200923.3 -> 20210324.1 (#2523)
- Protobuf 3.15.3 -> 3.15.8 (#2524)
- Java: jna-platform 5.5.0 -> 5.8.0 (#252)
Features/Fix
- Improve multi-threading when using CP-SAT solver (#1588)
- Add logger access support in Python, Java and .Net (#2245)
- C++: Replace Google type
[u]int(16|32|64)
by cstdint ones (e.g.uint64_t
) - Python: Fix
std::vector<std::string>
support (#2453)
Makefile
- Rework CPLEX support (#2470)
v8.2 (2021/03)
Dependency Updates
- abseil-cpp 20200923.2 -> 20200923.3
- Protobuf 3.14.0 -> 3.15.3
Routing
- Expose new APIs:
int RegisterUnaryTransitVector(std::vector<int64>)
andint RegisterTransitMatrix(std::vector<std::vector<int64>>)
- Change return of
AddVectorDimension()
andAddMatrixDimension()
tostd::pair<int, bool>
whoseint
is the transit evaluator id.
v8.1 (2020-12)
Dependency Updates
- abseil-cpp 20200923 -> 20200923.2
- Protobuf 3.13.0 -> 3.14.0
- Add support for Gurobi 9.1.0
- drop Glog dependency (replaced by a custom implementation depending on abseil-cpp flags)
- drop Gflag dependency (replaced by abseil-cpp flags component)
Bug Fixes
v8.0 (2020-10)
Dependency updates
- abseil-cpp 20200225.2 -> 20200923
- Protobuf 3.12.2 -> 3.13.0
Platform changes
- Added support for Python3.9 (#2187)
- Dropped support for Python3.5 (#2186)
- Added support for Ubuntu 20.10 (#2188)
- Dropped support for Ubuntu 16.04 LTS and Ubuntu 19.10 (#2188)
Known Breaking Change
- Since last synchronization with Google internal code base, now Routing and SAT (i.e. OR-Tools) use some C++17.
WARNING: If you provide your own version of abseil-cpp please verify it is built against C++17 too. - The
MPSolver::CreateSolver
signature has been changed. The model name argument has been dropped.
CMake
- Fix disabling SCIP support when using
-DUSE_SCIP=OFF
(#2129) - Integrate samples and examples to the CMake build system.
note: can be disable by using-DBUILD_SAMPLES=OFF
and-DBUILD_EXAMPLES=OFF
.
note: can be disable for a specific language using-DBUILD_<LANG>_SAMPLES=OFF
or
-DBUILD_<LANG>_EXAMPLES=OFF
(with<LANG>
amongCXX
,PYTHON
,JAVA
andDOTNET
).
Make
- Require
Make >= 4.3
(use of Make eval function). - Require
CMake >= 3.14
(use of CMake--verbose
option). - Add option to disable SCIP support using
USE_SCIP=OFF
(#2134) - Add option to disable CLP and CBC support using
USE_COINOR=OFF
Java
- OR-Tools now generate maven packages (#202).
Bug fixes
v7.8 (2020-07)
Dependency updates
- Gurobi 9.0.2 is now pre-integrated in prebuilt binaries. It will search for the gurobi 90 shared library in the default install path of the Gurobi installers on MAC OS X and Windows, or in the
GUROBI_HOME
directory. - SCIP 7.0.1 is now integrated in prebuilt binaries.Please ensure compliance with the SCIP license before using it.
- Added support for optional Xpress Solver 8.9.0.
Linear Solver
- Added a static
LinearSolver::CreateSolver()
method to simplify checking support for integrated linear solver backends. It works in all languages.
CMake
- Fix and add support for FreeBSD (#2105)
- Use of
FetchContent()
to build dependencies - Use of CMP0091 to control Runtime Library on Windows
Bazel
- Cleanup protobuf usage.
Bug fixes
- CP-SAT: Fix sorting in cumulative cut generation.
- Linear Solver: Fix leak in .Net wrapper when using
CreateSolver()
.
v7.7 (2020-06)
Dependency updates
- Abseil-cpp 20200225 -> 20200225.2
- Protobuf 3.11.4 -> 3.12.2
- bazel-skylib 0.8.0 -> 1.0.2 (for bazel based build)
- Fix optional SCIP 7.0 support
CP-SAT Update
- Now, the solver returns Optimal instead of Feasible in a satisfiability model (i.e. without objective)
- Fix multi-threading crash (#2005)
- Improve feasibility pump
CMake
- Add maven package generation (#202)
- Fix Windows build
v7.6 (2020-04)
Dependency updates
- Abseil-cpp 8ba96a8 -> b832dce (LTS 20200225)
CP-SAT Update
- Improve cut management
- Add debugging tools
- Fix UNSAT bug in presolve (see #1908)
Bug fixes
- Fix swigwin.exe url
- Fix swig typemap management for Java and .Net
v7.5 (2020-01)
Platform updates
- Added support for Python 3.8 (#1719)
- Dropped support compilation from sources on Visual Studio 2017 (#1852).
- Updated support from Centos 7 to Centos 8 (#1827)
Dependency updates
- Protobuf 3.10.0 -> 3.11.2 (#1829)
Bug fixes
The following and performances improvements (for a complete list see Milestone v7.5)
In particular:
- Fixed Assembly loading see #1421 (comment)
- Exposed the GetStartIndex and GetEndIndex methods of RouteIndexManager (#1843)
- Fixed SWIG to remove broken methods (#1838, #1276).