Skip to content

@lperron lperron released this Oct 11, 2019 · 135 commits to master since this release

Abandoned platforms

As announced in the previous release, Python 2.7 has been officially abandoned.

Dependency updates

  • Protobuf 3.9.0 -> 3.10.0

New features

  • CP-SAT: The solver now checks for constraints that do not support enforcement literals (they are the Boolean literals passed to OnlyEnforceIf() methods). The model checker will return an error before solving if such a constraint has an enforcement literal.

  • Linear Solver: The linear solver wrapper now supports XPressMP. You will need to recompile from source to use it.

  • Dotnet: The architecture of the nuget package has been completely rewritten. In particular, it should support dotnet framework >= 4.5.2 on windows platforms.

Performance improvements

This release features significant code and performance improvements on the GLOP simplex, the Routing library, and the CP-SAT solver.

Assets 35

@lperron lperron released this Aug 5, 2019 · 301 commits to master since this release

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:

Assets 34

@lperron lperron released this Jul 4, 2019 · 407 commits to master since this release

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.
Assets 34

@Mizux Mizux released this May 9, 2019 · 664 commits to master since this release

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.
Assets 35

@Mizux Mizux released this Mar 26, 2019 · 838 commits to master since this release

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.
Assets 34
Pre-release

@Mizux Mizux released this Dec 21, 2018 · 1234 commits to master since this 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
Assets 36

@Mizux Mizux released this Nov 28, 2018 · 1359 commits to master since this release

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)
Assets 39

@Mizux Mizux released this Sep 28, 2018 · 1562 commits to master since this release

  • Fix Release script
  • Add missing API on CP-SAT Java interface
Assets 2

@lperron lperron released this Sep 19, 2018 · 1622 commits to master since this release

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

Assets 27

@Mizux Mizux released this Jul 25, 2018 · 1932 commits to master since this release

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
Assets 39
You can’t perform that action at this time.