New Features
Installing
- Introduced simpler procedures for installing or-tools, either from binary distributions or from source code. See [Installing or-tools](https://developers.google.com/optimization/introduction/installing.html) 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`](https://developers.google.com/optimization/reference/constraint_solver/routing/RoutingDimension/), 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](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](https://github.com/google/or-tools/blob/master/src/util/rcpsp_parser.h).
Sat solver
- The Sat solver's cumulative constraint now accepts optional intervals, created with the [`NewOptionalInterval`](https://github.com/google/or-tools/blob/master/src/sat/intervals.h#L36) method. For an example, see
[https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc](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](https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs).
Bug Fixes
- Using the [`PathCheapestArc`](https://developers.google.com/optimization/reference/constraint_solver/routing/) 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.
</div>