chiark / gitweb /
Print seed -- it's useful.
[rocl] / README
diff --git a/README b/README
index 88aae48..30e32ff 100644 (file)
--- a/README
+++ b/README
@@ -5,14 +5,24 @@ RIGHT ON COMMAND-LINE
 
        You need a C compiler and a working Tcl/Tk installation.  (The
        elite-editor program needs Tk; the rest of the tools don't.)
-       The Makefile works on my Debian GNU/Linux box, but I'm not
-       making any promises about anyone else's.  I've successfully
+       The Makefile works on my Debian GNU/Linux box (potato), but I'm
+       not making any promises about anyone else's.  I've successfully
        built earlier versions of everything under Cygwin, against
        ActiveState's Tcl 8.4, but I've forgotten the Holy Runes.  I do
        have the `.def' file I used to build the DLL, though, for
        whatever that's worth.  (If you want to hack the Makefile to
        work under Windows, I'll take a patch.)
 
+       The runes for Debian woody are:
+
+         $ make INCLUDES=/usr/include/tcl8.3
+         $ ROOTLY make install prefix=/usr
+
+       (where ROOTLY is some command which does things with root
+       privileges, say `sudo', `become root' or, at a pinch, `su -c')
+       because the Tcl installation no longer looks in /usr/local/lib,
+       worse luck.
+
        The theory is that you should edit the Makefile for your system
        and say `make'; then, as some suitably privileged person, say
        `make install' and stand well back.  Everything should then be
@@ -22,9 +32,10 @@ RIGHT ON COMMAND-LINE
 
          * If you can't build `pkgIndex.tcl', run `tclsh' and say
 
-             % pkg_mkIndex -verbose -direct . elite.so elite.tcl
+             % pkg_mkIndex -verbose -direct -load Vec . \
+               elite.so vec.so graph.so elite.tcl
 
-           to it.  (Use `elite.dll' if you're on Windows.)  Say
+           to it.  (Use `elite.dll' etc. if you're on Windows.)  Say
 
              % set tcl_pkgPath
 
@@ -70,8 +81,9 @@ RIGHT ON COMMAND-LINE
 
          * a glob pattern (a string containing `*' and `?' wildcards,
            matching any substring or any single character,
-           respectively), for the first planet whose name matches the
-           pattern; or
+           respectively), optionally followed by `/N' for some positive
+           integer N, for the Nth (default first) planet whose name
+           matches the pattern; or
 
          * a string `GAL:P', where GAL is a galaxy-spec and P is a
            planet-spec, for the planet P in galaxy GAL.
@@ -135,14 +147,15 @@ RIGHT ON COMMAND-LINE
 
 
 
-  elite-path [-g GALAXY] [-w WEIGHT] PLANET PLANET ...
+  elite-path [-g GALAXY] [-d DIST] [-w WEIGHT] [-a ACC] PLANET PLANET ...
 
        Computes a route through a GALAXY (default is standard galaxy
        1), starting at the first PLANET listed, via the second, via the
        third, etc., and ending at the last.  For each planet you're
        meant to stop at on the way, a summary line is printed giving
        the planet's name, position, government type, economy type and
-       tech level.
+       tech level.  The `-d' option gives the ship's hyperspace range
+       in lightyears.
 
        You can affect how elite-path selects its routes using the `-w'
        option.  The default is to minimize the number of hops.  Other
@@ -166,6 +179,21 @@ RIGHT ON COMMAND-LINE
        fuel            Minimize absolute distance.  For those on a
                        tight budget.
 
+       The `-a' option controls what total is accumulated down the
+       right hand side of the summaries:
+
+       none            No running total down the right hand side.
+
+       distance        Accumulate distance, in lightyears.
+
+       weight          Accumulate the shortest-path weight function.
+
+       Beneath the path is printed a total for distance and weight if
+       these are interesting and not already displayed.  The weight for
+       `hops' and `fuel' are simply the hop count and distance in
+       lightyears respectively; the other weight functions use
+       appropriate square-law functions.
+
 
   elite-reach [-d DIST] [GALAXY ...]
 
@@ -255,7 +283,10 @@ RIGHT ON COMMAND-LINE
 
        An attribute name on its own is a request to print the current
        value of that attribute.  An assignment ATTR=VALUE makes ATTR
-       have the requested VALUE.
+       have the requested VALUE.  When requesting attributes, you can
+       instead give a pattern containing `*' and `?' metacharacters
+       (matching zero or more, or exactly one character) -- all
+       matching attributes are printed.
 
        The attributes, their meanings, and the acceptable values are as
        follows:
@@ -340,7 +371,7 @@ RIGHT ON COMMAND-LINE
        `-load' option.
 
 
-  elite-prices [-g GALAXY] [-s SORT] [FROM TO]
+  elite-prices [-g GALAXY] [-s SORT] [FROM [TO]]
 
        Shows minimum, average and maximum profit (in that order, in
        credits per unit) for the various commodities, starting at one
@@ -352,11 +383,93 @@ RIGHT ON COMMAND-LINE
 
        You can change the worlds under consideration by typing a pair
        of planet-specs or economy types (as printed by `elite-find').
-       Any planet-specs are obviously taken relative to GALAXY.
+       Any planet-specs are obviously taken relative to GALAXY.  You
+       can also say `avg' for the average over all economy types
+       (though this takes longer to compute).
 
        The SORT parameter may be one of `min', `max', or `avg' to sort
        by minimum, maximum or average profit (highest at the top).
 
+       If only FROM is given, the average prices for the given world or
+       economy type are printed in the standard order (i.e., the SORT
+       parameter is ignored).
+
+
+  elite-salesman [-OPTIONS] GALAXY [START]
+
+       Solver for the Travelling Salesman Problem.  Plots a route
+       around (a connected subgraph of) GALAXY.  The START planet has
+       two related purposes:
+
+         * It identifies which subgraph to tour.  If the galaxy is split
+           into mutually unreachable subsets, it's obviously impossible
+           to visit the whole lot.
+
+         * If you specify the `-nocycle' option (see below), then START
+           is the starting place for the tour.
+
+       The following options affect the problem to be solved:
+
+       -w WEIGHT       Choose how to weight journeys.  This has the
+                       same meaning as in `elite-path'.  The default is
+                       to minimize the number of hops.
+
+       -d DIST         Distance we can travel in one hop, in
+                       lightyears.
+
+       -cycle          Find a cyclic route through the galaxy (i.e., so
+                       that when you finish, you come back to where you
+                       started).  You can use a cyclic solution to tour
+                       a galaxy from any starting point.  This is the
+                       default.
+
+       -nocycle        Find a route which begins at START, covers
+                       all the planets, and then stops.  Presumably you
+                       use a galactic hyperdrive to get to the next
+                       galaxy, or something.
+
+       The solution is displayed as a list of planet summaries.  An
+       indented line indicates a world you have to visit just to get
+       somewhere else.
+
+       The program doesn't compute an optimal solution -- doing so
+       would be very slow indeed, since the Travelling Salesman Problem
+       is NP complete.  Instead, it uses a technique called `simulated
+       annealing' to try to home in on a good solution.  There are a
+       number of options you can use to tweak this process.  The
+       default settings produce relatively good answers, but take about
+       five minutes to run.  Try playing with them, and see what sorts
+       of results you get.
+
+       -temp           The initial temperature of the system.  The
+                       temperature controls how willing the process is
+                       to accept a move which increases the journey
+                       cost -- a high temperature means that `bad'
+                       moves are more likely to be accepted.  The
+                       temperature should initially be greater than the
+                       maximum possible cost of exchanging two hops on
+                       the route.  The default is 1024, for no
+                       particularly good reason.
+
+       -cool           Cooling factor.  Each cooling cycle, the
+                       temperature is reduced by this factor.  It
+                       should be a little greater than 1.  The default
+                       is 1.001.  Smaller values (nearer 1) take longer
+                       but tend to produce better results.
+
+       -inner          Number of swapping iterations to do each cooling
+                       cycle.  The default is 10000.
+
+       -dead           The number of `dead' cycles (ones in which we
+                       never make an improving move) before we give up
+                       and accept the solution.  The default is 200,
+                       which seems to work OK.
+
+       Simulated annealing is an interesting technique which is
+       applicable to a wide variety of optimization problems.  There
+       are some decent descriptions on the 'net -- try asking Google
+       about it.
+                       
 
 3. The graphical editor
 
@@ -406,7 +519,8 @@ RIGHT ON COMMAND-LINE
        the home and destination worlds, and the distance between them.
        You can type new names (or any old planet spec) into either to
        select different planets.  The change will take place when you
-       press return or when the input focus moves.
+       press return or when the input focus moves.  Pressing control-
+       return will pop up the appropriate planet info window.
 
        The `Compute path' lets you do the same kinds of computations as
        the elite-path tool.  It plots a route from the home to the
@@ -450,7 +564,7 @@ RIGHT ON COMMAND-LINE
        unrewarding) or pirates (risky and tedious), and start trading
        food and other cheap items.
 
-$Id: README,v 1.5 2003/03/02 12:28:14 mdw Exp $
+$Id: README,v 1.9 2003/03/09 23:45:02 mdw Exp $
 \f
 Local variables:
 mode: text