Release of September 2016

We’re happy to announce the release of September 2016 version of or-tools. Here's what's new with this release : 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 (Your remarks about this particular update would be appreciable). We will be happy to receive your feedback.
We’re happy to announce the release of July 2016 version of or-tools. Here's what's new with this release:
Constraint solver: RoutingA 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 example.Glop (linear optimizatio…

New release v2016-06

We're happy to announce the release of a new version of or-tools : v2016-06. This main improvements and changes in this version are :Examples:c++: getting rid of filelinereader in examplesdata: Add single machine scheduling problemsSat:Remove unused core method (Resolution nodes)Added drat writer to checks proofs on unsatisfiabilityAdd preprocessorDocumentation:Lots of cleanup in the header files.Please check the new documentation at new neighborhoodsConstraint Solver:Removed most of the instances of the callbacks (src/base/callback.h) from the CP libraryAdded NotMemberCt (variable cannot belong to a set of intervals)Routing library:INCOMPATIBLE CHANGE: capacity for vehicles in dimension is now an array instead of a callbackGLOP:Change internal representation of sparse matrixperformance improvementsGraph:Added A* contributed codeRewrite Dijkstra and Bellman-Ford algorithms to replace callbacks into std::function (C++)Change API of…

Documentation: new examples and reference manual

Hi all. 

We've added more content to our documentation hub: short tutorials on how to solve integer programming problems, job shop problems, and vehicle routing problems with time windows. We've also added over 800 pages of comprehensive documentation detailing our C++ API. (That documentation is automatically generated, so the formatting will be odd in places.)

We'll be adding plenty more content in the months to come. If you have specific requests, let us know!

Visual Studio 2015 support + new version of protobuf


Two notable changes in the code.
The first is that I have finally compiled or-tools with visual studio 2015.
Compiling from sources should work straight away, hopefully.

The second is that I have upgraded protobuf from 3.0.0 beta2 to beta3.
This was needed to support visual studio 2015.

There are two small bad news:
  - It is still in beta, so I cannot release nuget packages as they require stable sub-packages (protobuf C# in that case)
  - The new protoc compiler rewrites the names of enums in protobufs for C#.
    Therefore PATH_CHEAPEST_ARC -> PathCheapestArc.
    I have updated the tsp and vrp examples to reflect the new naming.


Heads up, upcoming incompatibility in the CP/Routing library

Hello all,

I will soon push a large incompatible change in the CP and Routing libraries.

The change will replace parameters (CP solver parameters, routing model parameters, routing search parameters) from struct to protobuf. This will also hide the C++ command line flags (cp_trace_search, routing_first_solution, ...) and make them redundant for controlling the behavior of the libraries. They are currently kept in the C++ library, but will be dropped out eventually.

With this move, all functionalities offered by the C++ command line flags will be available from all languages (provided you implement the command line parsing part).

Let's see an example (tsp)

Before (in C++):
   // Setting first solution heuristic (cheapest addition).
   FLAGS_routing_first_solution = "PathCheapestArc";
   const Assignment* solution = routing.Solve();

After (in C++, using the command line flags compatibility) :
   RoutingSearchParameters parameters = BuildSearchParametersFromFlags();

Python 3 support

Good news, or-tools now supports python3.
How to get it (from sources only for the time being):   ubuntu: install python3 python3-dev, python3-setuptools. Change UNIX_PYTHON_VERSION to 3.4 (in 14.04), recompile.   Mac OS X: Install python (3.5.1?), change UNIX_PYTHON_VERSION to 3.5, tweak manually PYTHON_INC in makefiles/Makefile.unix to reflect the path (/Library/Framework/...) to the python3 install. recompile.   Windows: Install python 3.5.1 (32 or 64 bit), set the correct path in Makefile.local. recompile.
Hopefully, everything should work. At least, make test_python works for me.
Comments:   I removed dependencies on google-apputils, and python gflags. OR-Tools now uses argparse.   Protobuf has been bumped to 3.0.0 beta 1   Few python examples are ported. They will likely break on print and iterators.   I will build pypi py3-ortools modules, soon I hope.   Plenty of internal code was upgraded, especially in the swig layer.
I am sure there are plenty of bugs left, please send me ev…