September release of or-tools

I just released or-tools version 6.4.

The biggest change is that I reverted the ortools-<linux distro> specific pypi modules as we now have manylinux distro agnostic wheel files.

Here is the full change log:

Change in platformsPypi modules on Linux platforms are now delivered as wheel files using the manylinux1 tag. Thanks to Federico Ficarelli. With this change, we have backtracked the per-linux modules introduced in the July 2017 release. New featuresImproved scaling method used inside GLOP.Fix wrapping of evaluators in the C# routing library. Thanks to DevNamedZed.Improve the performance of the flatzinc presolve for large models.Use the SAT backed for flatzinc by default.Improve performance of the Core based approach for the sat solver.Fix bug in the linear assignment algorithm that was failing incorrectly.Added F# examples in ortools/examples/fsharp. (Thanks to Matthew Moore).Remove check for positive penalties in the routing library.

May 2017 release of OR-Tools

We have just released a new version of OR-Tools on

github: Release notes:

New directory structure in C++ We have changed the source/include structure of or-tools when using C++. The goal is to provide better encapsulation of the C++ include files. It also has the benefit of aligning the C++ and the python directory structures. src/ has been renamed ortools/.All #include command in C++ files now have the prefix ortools added. #include "constraint/constraint_solver.h" is now #include "ortools/constraint/constraint_solver.h". New features Bazel support You can now build or-tools with bazel, Google's build tool. It works on Linux and Mac OS X. After downloading bazel version 0.4.5 or later, change directory to or-tools and build the examples: bazel build examples/cpp/.... …

Linking glpk with or-tools on unix

Following the change on SCIP, here is the new procedure to compile and link GLPK with or-tools

This currently applies to unix only:

First download the latest glpk archive (4.61 at the time of this post).

Untar, cd into the glpk directory

on linux:
  ./configure --prefix=<install_path> --with-pic
  make install

on mac OS X:
  ./configure --prefix=<install_path>
  make CFLAGS='--mmacosx-version-min=10.8'
  make install

then add:
  UNIX_GLPK_DIR=<install_path> in or-tools/Makefile.local

recompile or-tools:
  make clean
  make cc

test it:
  run bin/integer_programming and bin/linear_programming. Both must display glpk runs.

I have no easy solution for glpk on windows currently, still investigating.

Changing the way we link with SCIP

As of today, I pushed support for scip 4.0.0 on both unix and windows.
In the process, I have changed the way to setup or-tools to include scip at compilation time.

on Unix:
  untar the scipoptsuite> archive somewhere
  cd <path to scipoptsuite-4.0.0>
  Mac OS X:  make GMP=false READLINE=false TPI=tny

  in or-tools, edit Makefile.local
    UNIX_SCIP_DIR=<path to sciptopsuite-4.0.0>/scip-4.0.0
  make clean
  make cc

  to test it, run:
  it should display the scip solver run.

on windows:
download the compiled library:
  download the headers:

  uncompress, untar everything.
  create a directory that will contains what is needed
  md scip-4.0.0
  copy the include directory from the scipoptheaders archive i…

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: 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 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 problems Sat: Remove unused core method (Resolution nodes)Added drat writer to checks proofs on unsatisfiabilityAdd preprocessor Documentation: Lots of cleanup in the header files.Please check the new documentation at Bop: Add new neighborhoods Constraint 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 callback GLOP: Change internal representation of sparse matrixperformance improvements Graph: Added A* contributed codeRewrite Dijkstra and Bellman-Ford algorithms to replace callbacks into std::function (C++)Change API of…