Concorde README and Installation guide

This README file is part of the 99.12.15 release of the Concorde. This is the initial full release of Concorde. More data about Concorde is available from the Concorde page.

If you would like to be placed on the Concorde mailing list to receive notifications of updates to the code, please send your e-mail address to concorde@caam.rice.edu.

Concorde is a computer code for the traveling salesman problem (TSP) and some related network optimization problems. The code is written in the ANSI C programming language and it is available for academic research use; for other uses, contact concorde@caam.rice.edu for licensing options.

Concorde's TSP solver has been used to obtain the optimal solutions to all TSPLIB instances having up to 13,509 cities.

The Concorde callable library includes over 700 functions permitting users to create specialized codes for TSP-like problems. All Concorde functions are thread-safe for prgramming in shared-memory parallel environments; the main TSP solver includes code for running over networks of unix workstations.

Concorde's documentation is in contained in the DOC directory of the Concorde distribution, and may be viewed with any web browser. Start with the file index.html. The online version of the documentation may be more current.

The rest of this file contains instructions for unpacking, configuring, and compiling Concorde.

Concorde is distributed as a gzipped tar file. To unpack, first gunzip the downloaded file, then use tar to unpack the archive:

$ gunzip co991215.tgz
$ tar xvf co991215.tar
If you do not have access to gunzip, download the uncompressed distibution file from the Concorde page and skip the gunzip step.

Unpacking the distribution create a directory, "concorde", and several subdirectories. To configure, cd into the concorde directory, and run the configure script:

$ cd concorde
$ ./configure
--help Prints a list of all options configure supports. The last options are the most pertinent.

--with-cplex Indicates to use the cplex LP solver. The current default is to use cplex if the cplex library is available. If no LP solver is available, the concorde features which require an LP solver will be disabled. In future versions of concorde, we hope to support other LP solvers.

--with-cplex=DIR Specifies the directory containing the Cplex callable library. This directory should contain both the library (libcplex.a) and the header file (cplex.h).

--without-cplex Disables using a cplex LP solver even if one is available.

--enable-ccdefaults Indicates that a set of default compiler and loader flags should be used. We use this flag during development to enable useful optimization and warning options on our development platforms. They may or may not be useful for you. See also the discussion of CC, CFLAGS, CPPFLAGS, and LDFLAGS below.

--enable-debugger Overrides the optimization options set by --enable-ccdefaults to support additional debugging.

configure is also affected by several environment variables. CC controls which c compiler to use, CPPFLAGS specifies the C preprocessor flags to use, CFLAGS specifies the C compiler flags to use, and LDFLAGS specifies loader flags to use. configure generates defaults for all of these variables, by default using "gcc -g -O2" if gcc is available, and "cc -g" otherwise. For better performance of the concorde package, set CFLAGS to "-g -O3" if compiling with gcc, and a strong optimization flag for your compiler otherwise (typically "-O3", "-O2", or "-xO2"). The method for setting a environment variable depends on the type of shell you are using. You can usually find out which kind of shell you are using by typing "echo $SHELL". Otherwise, try one method and if it doesn't work, try the other. If you are using sh, bash, ksh, ash, or some other Bourne-like shell, you can simply set the variables on the command line, for example:

$ CC="gcc" CFLAGS="-g -O3" ./configure
If you are using csh, tcsh, or some other C-shell, you set the variables by using setenv, for example:
$ setenv CC "gcc"
$ setenv CFLAGS "-g -O3"
$ ./configure
configure determines many features about your operating system and configuration which it uses to control concorde's compilation. After configure has run, you should look through the file INCLUDE/config.h to make sure it has made reasonable choices. Then, you can compile concorde by using make:
$ make
This builds the concorde library (concorde.a), header file (concorde.h), and several executable programs: There are other programs which are part of concorde, but are for more specialized computations (such as testing parts of concorde, or network parallel computation). These may be compiled by:
$ make everything
If you are using Gnu make, then you can separate the build directory from the source directory. Simply make the build directory, cd into it, and then run the configure from the source directory. If for some reason configure cannot figure out where the source directory is, specify it with the "--srcdir=DIR" command line argument. A complete example of unpacking, configuring, and compiling in a separate build directory, is:
$ gunzip co991215.tgz
$ tar xvf co991215.tar
$ mkdir concorde_build
$ cd concorde_build
$ ../concorde/configure
$ make
Once again, if you would like to be placed on the Concorde mailing list to receive notifications of updates to the code, please send your e-mail address to concorde@caam.rice.edu.