Skip to content

Releases: google/or-tools

v9.2 (2021/12)

16 Dec 09:01
Compare
Choose a tag to compare

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__.

v9.1 (2021/09)

01 Oct 08:35
Compare
Choose a tag to compare

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 in cp_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 the num_search_parameters to specify the level of parallelism.
  • Deprecate SearchAllSolutions and SolveWithSolutionCallback.
  • Python API: more pedantic checks when using var == ... or var != ... outside a model.Add() call.

v9.0 (2021/04)

30 Apr 08:51
Compare
Choose a tag to compare

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)

03 Mar 15:24
Compare
Choose a tag to compare

Dependency Updates

  • abseil-cpp 20200923.2 -> 20200923.3
  • Protobuf 3.14.0 -> 3.15.3

Routing

  • Expose new APIs:
    • int RegisterUnaryTransitVector(std::vector<int64>) and
    • int RegisterTransitMatrix(std::vector<std::vector<int64>>)
  • Change return of AddVectorDimension() and AddMatrixDimension() to std::pair<int, bool> whose int is the transit evaluator id.

v8.1 (2020-12)

09 Dec 21:10
Compare
Choose a tag to compare

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

  • Fix double counting of Gurobi floating license (#2227)
  • Fix windows build (#2200)

v8.0 (2020-10)

11 Oct 12:27
Compare
Choose a tag to compare

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> among CXX, PYTHON, JAVA and DOTNET).

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

  • Fix C++ and Python build on FreeBSD (#2126).
  • Fix build in debug on windows (#2077).
  • Fix long standing crash in parallel on CP-SAT on Windows (#2001, #2019).

v7.8 (2020-07)

04 Aug 11:48
Compare
Choose a tag to compare

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)

12 Jun 17:32
Compare
Choose a tag to compare

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)

23 Apr 19:53
Compare
Choose a tag to compare

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)

28 Jan 08:58
Compare
Choose a tag to compare

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).