Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Automatically exported from code.google.com/p/asp-planner
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Action Selection for Planning ------ --------- --- -------- This is the official distribution of the ASP algorithm with the benchmark problem instances. This is a pre-beta release, so you must remember that it is *not complete*. This file describe the installation steps. Also, examples for how to built the benchmarks, run them, and guidelines for the encoding of new instances/domains are included. We finish with our addresses in case you need to contact us. The following is an abstract of the ASP algorithm: The ability to plan and react in dynamic environments is central to intelligent behavior yet few algorithms have managed to combine fast planning with robust ex- ecution. We develop one such algorithm by looking at planning as a real time hauristic search problem like chess. For that we develop a variation of Rich Korf's Learning Real Time A* algorithm together with a suit- able heuristic function. The resulting algorithm inter- leaves lookahead with execution but never actually builds a plan. It is an action selection mechanism that decides at each time point what's the best thing to do next. Yet, most impressively, it solves planning problems faster than any domain independent planning algorithm known to us including Kautz's and Selman's SATPLAN. It also works in the presence of perturbations and noise, it's gets better in successive trials, and can be given a fixed time window to operate. Installation ============ 1. Source Installation ---------------------- The source files are distributed in tar compressed format. The untar process will create a subtree rooted in ./asp. You may decompress and untar the files in any place, provided that you have the required premissions. For example, cd to my planning subdirectory $ cd ~/planning install the files from the distribution in /tmp $ uncompress -c /tmp/asp.tar.Z | tar -xvf - After the source installation you must have the following files: ./asp ./asp/README ./asp/src ./asp/src/functional ./asp/src/functional/Makefile ./asp/src/functional/funparser.y ./asp/src/functional/aspfunplan.c ./asp/src/functional/aspfunplan.h ./asp/src/functional/fset.c ./asp/src/functional/fset.h ./asp/src/relational ./asp/src/relational/Makefile ./asp/src/relational/relpro-ope.c ./asp/src/relational/relpro-tab.c ./asp/src/relational/relplan.o ./asp/src/relational/asprelplan.c ./asp/src/relational/relparser.y ./asp/src/relational/asprelplan.h ./asp/src/relational/fset.c ./asp/src/relational/fset.h ./asp/src/utils ./asp/src/utils/Makefile ./asp/src/utils/fset.c ./asp/src/utils/fset.h ./asp/src/Makefile ./asp/bin ./asp/bin/Makefile ./asp/lib ./asp/lib/Makefile ./asp/include ./asp/include/Makefile ./asp/Makefile ./asp/asp-paper ./asp/asp-paper/functional ./asp/asp-paper/functional/logistics1.ops ./asp/asp-paper/functional/Makefile ./asp/asp-paper/functional/blocks2.facts ./asp/asp-paper/functional/blocks2.ops ./asp/asp-paper/functional/blocks3.facts ./asp/asp-paper/functional/blocks3.ops ./asp/asp-paper/functional/blocks4.facts ./asp/asp-paper/functional/blocks4.ops ./asp/asp-paper/functional/blocks5.facts ./asp/asp-paper/functional/blocks5.ops ./asp/asp-paper/functional/logistics2.facts ./asp/asp-paper/functional/logistics2.ops ./asp/asp-paper/functional/logistics3.facts ./asp/asp-paper/functional/logistics3.ops ./asp/asp-paper/functional/blocks1.ops ./asp/asp-paper/functional/blocks1.facts ./asp/asp-paper/functional/rocket2.facts ./asp/asp-paper/functional/rocket2.ops ./asp/asp-paper/functional/sussman.facts ./asp/asp-paper/functional/sussman.ops ./asp/asp-paper/functional/rocket1.ops ./asp/asp-paper/functional/rocket1.facts ./asp/asp-paper/functional/logistics1.facts ./asp/asp-paper/relational ./asp/asp-paper/relational/Makefile ./asp/asp-paper/relational/rocket1.facts ./asp/asp-paper/relational/rocket1.ops ./asp/asp-paper/relational/fblocks2.facts ./asp/asp-paper/relational/fblocks2.ops ./asp/asp-paper/relational/fblocks3.facts ./asp/asp-paper/relational/fblocks3.ops ./asp/asp-paper/relational/fblocks4.facts ./asp/asp-paper/relational/fblocks4.ops ./asp/asp-paper/relational/logistics.facts ./asp/asp-paper/relational/logistics.ops ./asp/asp-paper/relational/logistics1.facts ./asp/asp-paper/relational/logistics2.facts ./asp/asp-paper/relational/logistics2.ops ./asp/asp-paper/relational/logistics3.facts ./asp/asp-paper/relational/logistics3.ops ./asp/asp-paper/relational/rocket2.facts ./asp/asp-paper/relational/rocket2.ops ./asp/asp-paper/relational/blocks1.ops ./asp/asp-paper/relational/blocks1.facts ./asp/asp-paper/Makefile ./asp/asp-paper/others ./asp/asp-paper/others/Makefile ./asp/asp-paper/others/puzzle.facts ./asp/asp-paper/others/puzzle.ops ./asp/asp-paper/aaai97.ps.gz 2. Compilation -------------- Making and installing binaries should not represent problem because is done through standard Makefiles and the source code should be very protable (it has benn tested in SGI, SUN, and IBM machines). Here is an example, compiling the source files $ (cd asp ; make all) installing the sources under ./asp $ (cd asp ; make install) In case you use gcc and/or bison $ (cd asp; make all CC=gcc BISON="bison -y") $ (cd asp; make install CC=gcc BISON="bison -y") Running the Examples ==================== In the directory ./asp/paper-asp are the benchmanrks we report in the AAAI-97 submission. You can "build" all examples, or you can build only those that you want (building all examples can take several minutes). to build all examples: $ (cd asp/paper-asp ; make all) to build say: rocket1 with the functional representation using gcc $ (cd asp/paper-asp/functional ; make rocket1 CC=gcc) Let us explain the process of building an example. The problem operators and facts (initial situation, goal situation) is described in two different files. Those files are processed by a parser that generates three C language source files. Each of them must be compiled and then linked with other objects in order to make an executable. The executable is the asp algorithm tailored for that specific problem instance. All the executables has the same execution interface that uses some parameters, between them: the number of local iterations, the depth of each iteration, some parameter for allocating space, the initial random seed, etc. For example, having built the rocket1 example, you can run it by: $ cd asp/paper-asp/functional $ ./rocket1 -b 100 The -b parameter allocated space for keeping the sons of each node. Its default value is 15. The appropiate value for it depends of the branching factor of the problem, but overestimating it (as in this example) doesn't have impact. Let's try another example: $ make blocks1 $ ./blocks1 -b 100 In order to solve the problem using *pure* Korf's LRTA* you must use the -k flag. For example, to solve the blocks1 problem instance with the LRTA* algorithm you can use: $ ./blocks1 -b 100 -l A summary of each flag can be obtained using: $ ./blocks1 -h You can find a transcript of running the asp algorithm with the functional encoding in ./asp/asp-paper/transcripts. Encodings ========= The different encondings for each problem can be found under the functional and relational subdirectories in ./asp/paper-asp. Looking at them can give an idea in how to encode new problems instances and/or domains. NOTE: The present distribution of asp is a beta release and it's still under development. This distribution is not *complete* so carefully use of it must be exercised in order to use it. In particular, the parser is very primitive an make almost no semantical checks in the files, also name clashes of any kind must be avoided. In general, follow these guidelines when enconding new instances/domains: - All predicate and functional fluent names are in a common namespace so use *always* different names. - Objects instances are in the same namespace, so keeps their names different from previously used names. - Just few semantical checks are made by the parser, so you must be sure your enconding is sound. If you get an error like: MAXTIME reached. Change and recompile. when solving a problem instance. *Check* your enconding. Most probably, you missed or mispelled something in either the operators of facts files. If, after all, you can't encode a particular instance or domain, contact us for help. SATPLAN and Graphplan ===================== This distribution doesn't contain the satplan and graphplan distribution. If you want them, you must contact their authors at: SATPLAN: firstname.lastname@example.org (Henry Kautz) email@example.com (Bart Selman) Graphplan: firstname.lastname@example.org (Avrim Blum) email@example.com (Merrick Furst) Contacting Us ============= You are encouraged to contact us for any suggestions, bugs report, or comments at: firstname.lastname@example.org (Blai Bonet) email@example.com (Gabor Loerincs) firstname.lastname@example.org (Hector Geffner) For specific questions about the code, encodings, bugs, and/or other implementation-specific stuff: email@example.com (Blai Bonet) Enjoy it.... ;-)