Skip to content

Fork of the Concorde TSP solver with an easier build procedure

Notifications You must be signed in to change notification settings

alberto-santini/concorde-easy-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concorde

Concorde is likely the most famous solver for the Travelling Salesman Problem. It was developed by four legends in the Operational Research community: David Applegate, Robert Bixby, Vasek Chvatal, and William Cook. The solver is blazing fast, and is able to solve enormous instances.

However, as most of its users know, building Concorde can be painful. So painful that people have written technical reports, blog posts [1, 2, 3], stackoverflow questions [4, 5], (to link a few) dedicated to this topic.

Build Concorde like it's no longer 1997

This repository allows you to build concorde using modern toolchains.

License

In this repository, I store a copy of the 2003 version of Concorde, together with a minimal build system. Let me stress that this is a totally pirate version of the software. In no way any of the authors have authorised me to fork their solver and create this repository. Therefore, I have in no way any claim on authorship of this software. If you are using Concorde from this repository you have to agree to exactly the same license as if you had downloaded it from the official website. In short, this means that Concorde is free for you if and only if you use it for academic purposes. In all other cases you should contact William Cook to discuss licensing options.

For what concern my contribution, which is basically a CMakeLists.txt file, I release it to public domain under the unlicense.

Assumptions

I assumed that:

  • You are on Linux, with a recent version of GCC.
  • You use CMake as your build system.
  • You use a recent version of CPLEX as your LP solver.

Users not corresponding to this identikit might have to adapt this solution.

I also assume that you are interested in having the following, and nothing else, at the end of the build process:

  • The executable (concorde-bin).
  • A shared library (libconcorde_full.so), an archive file (libconcorde_full.a) and an include file (concorde.h) to use Concorde with your custom software.

Building

Assume that you have Cplex installed in /opt/ibm/CPLEX/my-cplex. Building Concorde, then, is as simple as:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCPLEX_ROOT_DIR=/opt/ibm/CPLEX/my-cplex ..
make -j5

This will create the four files: concorde-bin, libconcorde_full.so, libconcorde_full.a, and concorde.h.

Releases

No releases published

Packages

No packages published

Languages