X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/rocl/blobdiff_plain/1ded87baa037e0d9a72ae58b86bdf34244464f01..856cfd5372e79d637d0bd6b5fb6ab57c859b6222:/README diff --git a/README b/README index 14659d3..c3d9307 100644 --- 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 @@ -45,7 +56,7 @@ RIGHT ON COMMAND-LINE A `galaxy-spec' is * a number, between 1 and 8, for one of the standard eight - galaxies; + galaxies; * a `galaxy seed' of 12 hex digits (a 48-bit value), for any arbitrary galaxy; or @@ -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: @@ -269,11 +300,15 @@ RIGHT ON COMMAND-LINE 255. score Current number of kills. Must be an integer - between 0 a 65535, or one of the strings + between 0 and 65535, or one of the strings `harmless', `mostly-harmless', `poor', `average', `above-average', `competent', `dangerous', `deadly', or `elite'. + legal-status Current legal status. Must be an integer + between 0 and 255, or one of the strings + `clean', `offender', or `fugitive'. + credits Number of credits. Must be between 0 and 429496729.5. @@ -340,7 +375,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,15 +387,108 @@ 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. + + + elite-tantalus [-maxdist DIST] [-minratio RATIO] [GALAXY] ... + + Finds pairs of worlds for which there is a large disparity + between the distance between them and the corresponding shortest + path. It reports pairs such that the distance between them is + less than DIST (default 8 LY -- making this large just makes the + program slower) and where the shortest path is more than RATIO + times the distance in each GALAXY specified -- by default the + eight standard ones. + 3. The graphical editor - elite-editor [GALAXY | FILE] + elite-editor [GALAXY | FILE | -jameson] Starts the RIGHT ON COMMAND-LINE Commander Editor and Map. This is a Tk program -- you'll need that installed to run it. @@ -406,7 +534,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 +579,7 @@ RIGHT ON COMMAND-LINE unrewarding) or pirates (risky and tedious), and start trading food and other cheap items. -$Id: README,v 1.4 2003/03/01 17:47:07 mdw Exp $ +$Id$ Local variables: mode: text