Releases: google/or-tools
Releases · google/or-tools
Release of or-tools : January 2017.
New Features
Installing
- Introduced simpler procedures for installing or-tools, either from binary distributions or from source code. See Installing or-tools for more information.
Routing
- Implemented an algorithm to compute the Held-Karp lower bound for symmetric Traveling Salesman Problems. This enables you to compute an upper bound to the gap between the cost of a potentially non-optimal solution and the cost of the optimal solution.
- Added a new method to the vehicle routing library,
RoutingModel::SetBreakIntervalsOfVehicle
, which lets you add break intervals — time periods when a vehicle cannot perform any tasks (such as traveling or visiting a node). For an example that uses this option, see
https://github.com/google/or-tools/blob/master/examples/cpp/cvrptw_with_breaks.cc.
Scheduling
- Added support for more data formats in the parser for the Project Scheduling Library.
Sat solver
- The Sat solver's cumulative constraint now accepts optional intervals, created with the
NewOptionalInterval
method. For an example, see
https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc. - You can now solve a maximum satisfiability problem by specifying the objective as a weighted sum of literals. It is no longer necessary to create an intermediate integer variable.
Performance improvements
- Sat solver — Improved performance of the Sat solver, particularly for the cumulative constraint.
- Glop solver— Improved numerical robustness of the Glop solver, which now returns even more accurate solutions to hard numerical problems.
- Flatzinc solver
- Greatly improved performance of the Sat backend for the flatzinc interpreter.
- Simplified the C# flatzinc interface. For an example of the new interface, see
https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs.
Bug Fixes
- Using the
PathCheapestArc
heuristic on routing models with a single vehicle and side constraints would sometimes cause the solver to run for an excessively long time. This has been fixed by properly taking into account side-constraints. - In Java, the routing solver would sometimes crash when solving vehicle routing problems. This has been fixed in the latest release.
Release of or-tools. November 2016
November 2016
Running examples
- Introduced language specific targets to compile and run the examples. Please check this page for more details.
Sat
- Added support for constraint programming.
- Implemented the diffn, cumulative , circuit and subcircuit constraints.
- Implemented the overlode checker on the basis of Max Energy Filtering Algorithm for Discrete Cumulative Constraint.
- Implemented the all different bound consistent propagator which implements better propagation for the AllDifferent constraint.
FlatZinc
- Implemented a SAT solver for FlatZinc problems.
Constraint Solver
- Implemented the following constraints :
- atMost: Sets an upper bound to the count of variables that are equal to a given value.
- MakePathPrecedenceConstraint and MakePathTransitPrecedenceConstraint: Implement the precedence constraint for a set of pairs.
Routing
- Implemented AddAtSolutionCallback, which is a callback called each time a solution is found during the search.
- Removed the RoutingModel depot-less constructors. Specifying at least one depot in the routing model is now mandatory.
Release of or-tools. September 2016
- Sat
- Extended scheduling API and modified examples (weighted_tardiness_sat, and jobshop_sat) to use it.
- Graph
- Added iterator traits to Graph classes.
- Or-tools distribution
- Nuget package is supported again.
Release of or-tools. August 2016
Constraint solver
- solver
- Implemented NotBetween method to constrain a variable to be
outside a given interval.
- Implemented NotBetween method to constrain a variable to be
- routing
- Added a parse of the model to check existing NotMember constraints as shown in this example, and use them in local search filters.
- Added local search profiling.
- Fix for local moves.
Linear solver
- Fixed SCIP status reporting.
Sat
- Implemented [SolveWithPresolve](https://github.com/google/or-tools/blob/master/src/sat/simplification.h### L373) method to simplify the usage of the SAT presolver.
- Regrouped search utils in src/sat/util.h|cc.
- Implemented SMT (Lazy Clause Generation) scheduling constraints: see jobshop_sat.cc and weighted_tardiness_sat.cc.
Glop
- Improved performance by exploiting sparsity in more stages of computation.
Flatzinc
- Fixed bugs found by minizinc challenge.
Lp_data
- Continued simplification of templates in iterators.
Or-tools distribution
- C# assemblies are now strongly named by default.
- Upgraded to Protobuf3.0.0.
- Added a Python script to check or-tools archive dependencies.
Release of or-tools. July 2016
We’re happy to announce the release of July 2016 version of or-tools. Here's what's new with this release:
Constraint solver:
- Routing
- A disjunction can now be defined with a cardinality, which is the maximum number of nodes that can be active within this disjunction. For example, if you add a disjunction with n nodes and a cardinality of k, then k nodes among the n nodes are allowed to be active. You can use the new definition of AddDisjunction to do this.
- Added support for multiple disjunctions per node. For example, you can now add a node, N1, to many disjunctions (D1..Dm). This increases its chance of being active within any one of them.
Introduced a faster routing search algorithm for problems related to disjunct time windows. - Added constraint solver parameters to routing model parameters and log_search to routing search parameters.
- Local search algorithm is faster with resolving problems with disjoint time windows. Please see cvrp_disjoint_tw.cc example.
Glop (linear optimization):
- Introduced a faster Simplex Algorithm.
Or-tools distribution:
- One archive per platform, rather than individual archives for each of C++, Java, and C#. Python archives are still hosted on pypi.
- On pypi, we have switched to wheel (.whl) modules on Mac OS X and Windows.
Introduced a MAJOR.MINOR numbering schema. These numbers are used the archive names, the version stored in Mac OS X shared libraries, python modules, .NET assemblies. The first version we are releasing is with this schema is v4.2
v2016-06
Examples:
- c++: getting rid of filelinereader in examples
- data: Add single machine scheduling problems
Sat:
- Remove unused core method (Resolution nodes)
- Added drat writer to checks proofs on unsatisfiability
- Add preprocessor
Documentation:
- Lots of cleanup in the header files.
- Please check the new documentation at https://developers.google.com/optimization/
Bop:
- Add new neighborhoods
Constraint Solver:
- Removed most of the instances of the callbacks (src/base/callback.h) from the CP library
- Added NotMemberCt (variable cannot belong to a set of intervals)
Routing library:
- INCOMPATIBLE CHANGE: To specify the capacity of vehicles in the AddDimensionWithVehicleCapacity, you now need to pass an array (vector in c++) instead of a callback.
GLOP:
- Change internal representation of sparse matrix
- performance improvements
Graph:
- Added A* contributed code
- Rewrite Dijkstra and Bellman-Ford algorithms to replace callbacks by std::function (C++)
- Change API of different graph implementation when iterating over arcs and nodes.
v2016-04
Main changes:
- Use protobuf instead of flags in the Constraint Programming and routing libraries.
- See http://or-tools.blogspot.fr/2016/02/heads-up-upcoming-incompatibility-in.html for details.
December 2015 binary and source archives for or-tools
Changelog:
- Broke compatibility on the Large Neighborhood Search in the CP solver
(see examples/cpp/ls_api.cc, examples/python/pyls_api.py, examples/csharp/csls_api.cs, and
examples/com/google/ortools/sample/LsApi.java to see the new API). - Cleaned the the python wrapping. Support custom decision in the CP solver (see examples/test/test_cp_api.py to see the API in action).
- Various improvements and bug fixes.
September 2015 release
Release of OR-Tools
September 2015
What's new:
- First release on github. Files will be stored there from now on.
- Added binary archives for the flatzinc interpreter (see www.minizinc.org)
- Contains a few fixes over the version used in the challenge