Releases: google/or-tools
Releases · google/or-tools
v7.3 (2019-08)
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)
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()
andLinearExpr.ScalProd()
APIs in python - Deprecate
IntVar[].Sum()
andIntVar[].ScalProd()
APIs in C# - C++: remove
SolveWithModel
as it was a duplicate ofSolveCpModel()
- add
CpModel.addGreaterThan
andCpModel.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)
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 aCpModelProto
as input. It is created using theCpModel.Build()
method. So the right call isCpSolverResponse 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)
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
- abseil-cpp headers conflict with
Python.h
header see abseil-cpp #235
- abseil-cpp headers conflict with
- Drop support Ubuntu 14.04 LTS
- need C++11
std::vector::erase(const_iterator)
not availalbe with GCC 4.8 (see #1139)
- need C++11
Routing
- Use of
IndexManager
to do the conversion betweenNodeIndex
andIndex
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
.
- Add support for lambda callback in .Net using
- 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 againstmanylinux2010
(see PEP 571) since abseil-cpp requireglibc >= 2.12
. But sincepip
does not supportmanylinux2010
platform compatibility tag yet, package and platform tag has been reset tomanylinux1
(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)
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 againstmanylinux2010
(see PEP 571) since abseil-cpp requireglibc >= 2.12
. But sincepip
does not supportmanylinux2010
platform compatibility tag yet, package and platform tag has been reset tomanylinux1
. - Since it is a pre-release to install binary you must use:
otherwise last stable version
python -m pip install --user ortools==7.0b6150
v6.10
will be installed...
Routing
- Use of
IndexManager
to do the conversion betweenNodeIndex
andIndex
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)
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 andSOURCE
variable.
This will replace theccc
,cjava
andcdotnet
targets.
e.g. for a C++ example:make build SOURCE=examples/cpp/example.cc
- To run examples, you must use the
run
target andSOURCE
variable.
This will replace thercc
,rjava
andrdotnet
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)
- Fix Release script
- Add missing API on CP-SAT Java interface
v6.9 (2018-09)
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
andCpSolverResponseStats
in Python, Java and C#. - Rename
SolveWithSolutionObserver
toSolveWithSolutionCallback
in Python (#841). - Rename
NewSolution
toOnSolutionCallback
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.
- Expose
- 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
overpython2
when detecting python.
.Net
- Complete rewrite of the .NET layer.
- Provide a
Google.OrTools
NetStandard 2.0 Nuget package compatible with Runtime IDentifierwin-x64
,linux-x64
andosx-x64
. - Provide a
Google.OrTools.FSharp
Nuget package.
- Provide a
- 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)
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
andcoinnutils
github repos
- now depends on
- Rework and fix some VRP python examples.
- Migration to netstandard2.0 for .Net support (#668)
- i.e. use of
dotnet
cli instead ofmono
/msc
/fsharpc
(not needed anymore) - /!\ require .NetCore SDK >= 302 /!\
- i.e. use of
- 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
- add
v6.7.2 (2018-06)
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)