----------------------------------------------------------------------
jLK - Simple Java implementation of the Lin-Kernighan heuristic 
for the euclidean Traveling Salesman Problem (TSP) with a 
graphical user interface.
----------------------------------------------------------------------


Requirements
----------------------------------------------------------------------


- for running jLK you need a Java virtual machine 
  (java from the command line)
- for compiling jLK you need a Java compiler 
  (javac from the command line)
- for easy compiling and archiving the whole application
  you need the build system ant (ant from the command line)


Organization
----------------------------------------------------------------------

- bin/ is used to save all compiled *.class files in the package tree
- instances/ contains all instances from the tsplib 
  (http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/) with EUC_2D 
  edge weight type - hence all euclidean TSP instances
- jar/ contains the JavaView (www.javaview.de) package that is used
  for visualizing the TSP instances, the neighborhood graph, as well
  as the computed traveling salesman tours
- rsrc/ contains a JavaView license file - this should be replaced
  by your own license file, see www.javaview.de
- src/ contains the whole Java source code of the application
- src/main/ contains the main class and a util class
- src/lk/ contains the implementation of the Lin-Kernighan heuristic
  itself
- src/lk/datastructures/ contains needed data structures
- src/gui/ contains a simple GUI implementation
- src/tsp/ contains classes to represent the TSP instances
- build.xml is the ant build file which contains all instructions
  for compiling and archiving jLK


Compiling and archiving
----------------------------------------------------------------------

jLK can easily compiled by typing 'ant' in the jLK/ directory.
This will first delete all files in bin/, then it unzips the
JavaView package into the bin/ directory, then it compiles
all source files from src/ into the bin/ directory, and
at last it builds a jar file 'jLK.jar' including a manifest
which is the whole application in compiled from.


Running jLK
----------------------------------------------------------------------

jLK can be started from the command line with the following usage:

java -jar jLK.jar input-file [sleep-time=1sec]

examples:

java -jar jLK.jar instances/a280.tsp            # will start jLK 
                                                # on instance a280.tsp

java -jar jLK.jar instances/a280.tsp 5          # will start jLK 
                                                # on instance a280.tsp
                                                # with a user defined 
                                                # sleep time of 5 seconds
                                                # between each step of
                                                # computation


Hints
----------------------------------------------------------------------

- use the java option '-Xmx2000m' to set the maximal heap space to 2000 MB
- use eclipse to debug, analyze, compile, run, or change the program
- use a negative sleep time if you only want to test parsing and delaunay
  neighborhood construction (perhaps for many files in batch mode)
