github google/or-tools v9.2
v9.2 (2021/12)

latest releases: v9.11, v9.10, v9.9...
2 years ago

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 use AddMultiplicationEquality.
    • 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 and division 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 the knapsack_2d_sat.py example in Python).
    • The no_overlap_2d constraint supports optional intervals.
    • The C++ API implements + and * operators to build expressions.
  • 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 and BooleanScalProd. Just use Sum and ScalProd.
    • Removed C++ AddLinMinEquality and AddLinMaxEquality. Just use AddMinEquality and AddMaxEquality.
  • 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 (default ON).
  • Add optional support for GPLK solver (default -DUSE_GLPK=OFF).

Python

  • Support numpy integers in most of the CP-SAT API.
  • Fix missing __version__.

Don't miss a new or-tools release

NewReleases is sending notifications on new releases.