alpar@1
|
1 |
The program module in this subdirectory is a crude implementation of
|
alpar@1
|
2 |
CPLEX-like interface to GLPK API. It consists of two files: cplex.c and
|
alpar@1
|
3 |
cplex.h.
|
alpar@1
|
4 |
|
alpar@1
|
5 |
NOTE that this module is NOT a clean room implementation of the CPLEX
|
alpar@1
|
6 |
callable library. It only implements a CPLEX-like interface to the GLPK
|
alpar@1
|
7 |
API routines, and its main purpose is to provide possibility to build
|
alpar@1
|
8 |
and run applications which normally use the CPLEX callable library.
|
alpar@1
|
9 |
|
alpar@1
|
10 |
This module approximately corresponds to CPLEX 9.0.
|
alpar@1
|
11 |
|
alpar@1
|
12 |
Currently this module can be used as a linear programming solver for
|
alpar@1
|
13 |
Concorde, the state-of-the-art computer code for solving the symmetric
|
alpar@1
|
14 |
traveling salesman problem (TSP) developed by David Applegate, Robert
|
alpar@1
|
15 |
Bixby, Vasek Chvatal, and William Cook. For details about Concorde see
|
alpar@1
|
16 |
its web page at http://www.tsp.gatech.edu/concorde.html.
|
alpar@1
|
17 |
|
alpar@1
|
18 |
To build Concorde along with GLPK you need to do the following:
|
alpar@1
|
19 |
|
alpar@1
|
20 |
1. Configure, build, and install GLPK.
|
alpar@1
|
21 |
|
alpar@1
|
22 |
2. Download the Concorde tarball co031219.tgz (version Dec 19, 2003),
|
alpar@1
|
23 |
unpack and unarchive it.
|
alpar@1
|
24 |
|
alpar@1
|
25 |
3. Copy files cplex.h and cplex.c to subdirectory concorde/LP/.
|
alpar@1
|
26 |
|
alpar@1
|
27 |
4. Create file named lpglpk.c in subdirectory concorde/LP/. This file
|
alpar@1
|
28 |
must contain the following two lines:
|
alpar@1
|
29 |
|
alpar@1
|
30 |
#include "cplex.c"
|
alpar@1
|
31 |
#include "lpcplex8.c"
|
alpar@1
|
32 |
|
alpar@1
|
33 |
5. Configure Concorde in usual way (./configure) and then build it with
|
alpar@1
|
34 |
the following command:
|
alpar@1
|
35 |
|
alpar@1
|
36 |
make CPPFLAGS=-I. LPSOLVER_INTERFACE=lpglpk.c LPSOLVER_LIB=-lglpk
|
alpar@1
|
37 |
|
alpar@1
|
38 |
The Concorde executable can be found in subdirectory concorde/TSP/.
|
alpar@1
|
39 |
|
alpar@1
|
40 |
Please note that currently this GLPK interface module does not support
|
alpar@1
|
41 |
some important features (namely, CPXgetijdiv, CPXmdleave, CPXpivotin,
|
alpar@1
|
42 |
CPXpivotout, and CPXstrongbranch), so large (more than 1000 nodes) TSP
|
alpar@1
|
43 |
instances cannot be solved in a reasonable time, and some instances may
|
alpar@1
|
44 |
cause abnormal termination of Concorde (if CPXgetijdiv is called).
|