Skip to content

Releases: google/or-tools

v7.3 (2019-08)

05 Aug 23:40
Compare
Choose a tag to compare

Deprecation of Python 2.7

Important Notice Python 2.7 will be obsolete by the end of 2019. This is likely the last release to support Python 2.7.

Dependencies updates

  • Protobuf 3.8.0 -> 3.9.0

Bugfixes and Performance Improvements

The usual bunch of fixes and performances improvements (See https://github.com/google/or-tools/projects/6)

In particular:

v7.2 (2019-07)

04 Jul 12:07
Compare
Choose a tag to compare

Deprecation of Python 2.7

  • Important Notice Python 2.7 will be obsolete by the end of 2019. There will be at most one more release supporting python 2.7.

Platform changes

  • Ubuntu 18.10 -> Ubuntu 19.04
  • Support compilation from sources on Visual Studio 2019
  • Dropped support for python 3.5 on Windows.

Dependencies updates

  • CBC 2.10.1 -> 2.10.3
  • Protobuf 3.7.1 -> 3.8.0

CP-SAT

  • Multiple improvements focusing on the search, the implementation of the parallelism, and the connection to the linear relaxation
  • Added LinearExpr.Sum() and LinearExpr.ScalProd() APIs in python
  • Deprecate IntVar[].Sum() and IntVar[].ScalProd() APIs in C#
  • C++: remove SolveWithModel as it was a duplicate of SolveCpModel()
  • add CpModel.addGreaterThan and CpModel.addLessThan methods to the Java API

Linear Solver:

  • Add MPSolver.SetHint() in non C++ languages (Supported by SCIP, Gurobi)
  • Add MPSolver.SetNumThreads() for non C++ languages (supported by CBC, Gurobi, SCIP)
  • Rewrite support for scip 6.0.1

Reference manuals

See http://google.github.io/or-tools/

  • We have added doxygen and pdoc3 based reference manuals for all languages and all tools (algorithms, routing, graph, linear_solver, and CP-SAT).
  • Documentation is complete for C++ (all products) and CP-SAT (C++, Python, Java).
  • We are in the process of exporting all C++ documentation to Python and Java.
  • .NET documentation is lacking, and we have no solution in the foreseeable future to improve this. We have kept it as it still shows the available API.
  • Some non C++ APIs show the link to SWIG through the use of SWIGTYPE_* object in the signatures. We will eliminate all these in the future. Please consider that these methods are not usable.

v7.1 (2019-05)

09 May 14:27
Compare
Choose a tag to compare

Updates to required dependencies

  • Glog 0.3.5 -> 0.4.0
  • Protobuf 3.6.1 -> 3.7.1
  • Cbc 2.9.9 -> 2.10.1
  • Cgl 0.59.10 -> 0.60.1
  • Clp 1.16.11 -> 1.77.1
  • Osi 0.107.9 -> 0.108.1
  • Coinutils 2.10.14 -> 2.11.1

CP-SAT

  • Breaking change in the CP-SAT API in Python, Java and .Net.
    see doc here
  • Searching for all solution in a satisfiability problem now returns OPTIMAL when search is finished.
  • The C++ CpModel Solve() method and its variations now take a CpModelProto as input. It is created using the CpModel.Build() method. So the right call is CpSolverResponse r = Solve(cp_model.Build());

Linear solver

  • Known bug: the ExportModelAsLpFormat and ExportModelAsMpsFormat methods have been accidentally removed in the Python linear solver module.

Added Support

  • Fix SWIG 4.0 compatibility.

v7.0 (2019-03)

26 Mar 10:24
Compare
Choose a tag to compare

Updates to required dependencies

  • GFlags 2.2.1 -> 2.2.2

New required dependencies

  • Added abseil-cpp (set to SHA1:bf29470) as required dependency.

Drop Support

  • Drop support of Visual C++ 2015
    • Visual C++ 2015 is no longer able to compile OR-Tools source code.
  • Drop support of Python 3.4 on Linux
  • Drop support Ubuntu 14.04 LTS
    • need C++11 std::vector::erase(const_iterator) not availalbe with GCC 4.8 (see #1139)

Routing

  • Use of IndexManager to do the conversion between NodeIndex and Index for all API.
  • Now, transit callback must be registered first, then you must use the associated id in AddDimension()/SetArcCostXXX()
    Here some examples:
  • Change callback API
    • Add support for lambda callback in .Net using delegate function.
    • Add support for lambda callback in Java using @functionalInterface.
  • All Java API are now in conformance with the Google Java Style Guide (i.e. lower camel case for methods).
  • Expose enum class PickupAndDeliveryPolicy in all languages, sample here

Python

  • WARNING Manylinux ortools wheel package have been build against manylinux2010 (see PEP 571) since abseil-cpp require glibc >= 2.12. But since pip does not support manylinux2010 platform compatibility tag yet, package and platform tag has been reset to manylinux1 (see PEP 513).

Bugfix

  • Rename few enum after windows clash (e.g. DeleteFile, FLOAT are macro in MSVC).
  • Fix utils/file_nonport compilation on windows.
  • Remove non compact table constraints in the original CP solver.
  • Add optional_boolean sub-proto.
  • Fix ownership for callback in Java and .Net.

v7.0-beta.1 (2018-12)

21 Dec 08:44
Compare
Choose a tag to compare
v7.0-beta.1 (2018-12) Pre-release
Pre-release

Updates to required dependencies

  • GFlags 2.2.1 -> 2.2.2
  • Added abseil-cpp (set SHA1 to 45221cc + CMake patch) as required dependency.

Drop Support

  • Drop support of VS 2015
  • Drop support of Python 3.4 on Linux since abseil-cpp headers conflict with Python.h include see abseil-cpp #235

Python

  • WARNING Manylinux ortools wheel package have been build against manylinux2010 (see PEP 571) since abseil-cpp require glibc >= 2.12. But since pip does not support manylinux2010 platform compatibility tag yet, package and platform tag has been reset to manylinux1.
  • Since it is a pre-release to install binary you must use:
    python -m pip install --user ortools==7.0b6150
    otherwise last stable version v6.10 will be installed...

Routing

  • Use of IndexManager to do the conversion between NodeIndex and Index for all API.
  • Now, transit callback are registered first, then you must use the associated id in AddDimension()/SetArcCostXXX()
    Here some examples:

Bugfix

  • Rename few enum after windows clash (e.g. NO_ERROR is a macro on MSVC)
  • Fix utils/file_nonport compilation on windows
  • Remove non compact table constraints
  • Add optional_boolean sub-proto

v6.10 (2018-11)

28 Nov 15:27
Compare
Choose a tag to compare

Dependencies

  • SCIP 4.0.1 -> 6.0.0

Makefile

We have reworked the build and run targets

  • To build examples, you must use the build target and SOURCE variable.
    This will replace the ccc, cjava and cdotnet targets.
    e.g. for a C++ example:
    make build SOURCE=examples/cpp/example.cc
  • To run examples, you must use the run target and SOURCE variable.
    This will replace the rcc, rjava and rdotnet targets.
    e.g. for a C++ example:
    make run SOURCE=examples/cpp/example.cc</pre>

CP-SAT Solver

Update the API

  • Add C++ CP-SAT CpModelBuilder API.

Examples

  • Move community examples to examples/contrib
  • Move some examples to ortools/<component>/samples (e.g.
    ortools/linear_solver/samples/simple_program.java)

v6.9.1 (2018-09)

28 Sep 12:25
Compare
Choose a tag to compare
  • Fix Release script
  • Add missing API on CP-SAT Java interface

v6.9 (2018-09)

19 Sep 09:10
Compare
Choose a tag to compare

Updated dependencies

  • Protobuf 3.5.1 -> 3.6.1
  • [Optional] SCIP 4.0 -> 6.0

CP-SAT

  • Breaking change API. Full documentation here.
    • Expose ModelStats and CpSolverResponseStats in Python, Java and C#.
    • Rename SolveWithSolutionObserver to SolveWithSolutionCallback in Python (#841).
    • Rename NewSolution to OnSolutionCallback on solution callback in Python.
      Make sure to call super in __init__ e.g.:
      class MySolutionCallback(cp_model.CpSolverSolutionCallback):
        def __init__(self):
          cp_model.CpSolverSolutionCallback.__init__(self)
          self.__solution_count = 0
        
        def OnSolutionCallback(self):
          print('Solution {}, time = {}s, objective = {}, makespan = {}'.format(
          self.__solution_count,
          self.WallTime(),
          self.ObjectiveValue(),
          self.Value(makespan)))
          self.__solution_count += 1
    • Expose StopSearch on solution callback in Python, Java and C#. Documentation here.
  • Improve Python docstring documentation. Documentation here.
  • Complete Java implementation of the solver interface and cookbook updated.
  • Implement modulo.
  • Change implementation of reservoir: Add API with boolean to specify optional draining/filling events.

Linear Solver

  • Expose InterruptSolve in Java and C#.

Constraint Solver

  • Expose SolutionCollector director in C#.

Python

  • Add support for Python 3.7.
  • When compiling from source: prefer python3 over python2 when detecting python.

.Net

  • Complete rewrite of the .NET layer.
    • Provide a Google.OrTools NetStandard 2.0 Nuget package compatible with Runtime IDentifier win-x64, linux-x64 and osx-x64.
    • Provide a Google.OrTools.FSharp Nuget package.
  • Add project file for all .Net examples.
  • Update all F# script examples (.fsx) to regular F# project (.fs).
  • Add documentation on .Net package build generation here.

Flatzinc

  • Add support for sets in Flatzinc (using nosets.mzn)

Contributions

  • Add support for Binder Thanks to Kevin Mader.
  • Make DecisionVisitor a director type in Java bindings Thanks to Jeremy Apthorp.

Full list of commits since v6.8 here

v6.8 (2018-07)

25 Jul 12:28
Compare
Choose a tag to compare

Changelog

  • CP-SAT various bug fixes, performance improvements, and doc updates
  • GLOP performance improvements
  • Use dynamic dependencies on UNIX (#697)
  • Use Cbc from github mirror (#684)
    • now depends on cbc, cgl, clp, osi and coinnutils github repos
  • Rework and fix some VRP python examples.
  • Migration to netstandard2.0 for .Net support (#668)
    • i.e. use of dotnet cli instead of mono/msc/fsharpc (not needed anymore)
    • /!\ require .NetCore SDK >= 302 /!\
  • Now install_cc use $(DESTDIR)$(prefix) as destination prefix (prefix = /usr/local on UNIX)
  • Add install_python target in Makefile to pip install locally build python package
  • Makefile cleaning: should be more robust
  • docker rework and add tests to check archives
  • Remove data example from archive
    • add data archive
  • Rework archive Makefile
    • add detect, test_cc, test_java, test_dotnet, cc, java, dotnet targets like the Makefile(s) used to build from source

v6.7.2 (2018-06)

06 Jun 12:53
Compare
Choose a tag to compare

Mostly to fix C++/C#/Java binary archives issue

Changelog

  • Don't use rm on windows when checking shell
  • Replace some CHECK_NOTNULL by CHECK
  • Fixing all remaining StrCat -> absl::StrCat
  • Fix all remaining StrAppend -> absl::StrAppend
  • Fix compile error in flexible_jobshop.cc in binary archive (#709)
  • Fix missing 'ortools/util/optional_boolean.pb.h' files in binary archive (#710)
  • Fix missnamed mono binary in osx binary archive Makefile (#712)