The RAP system code is written in vanilla Common Lisp and should run on any platform that supports Common Lisp. The code is available in two basic forms: the RAP system by itself, and the RAP system with the Truckworld simulator. Both forms contain exactly the same RAP code. However, getting the simulator allows running the RAP system "out of the box" to get a feel for the way it works, as well as seeing exactly how the system interfaces to the "outside."
In addition to coming with or without Truckworld, the RAP system also comes compressed in two forms: a compressed tar file for UNIX users and a compressed hqx file for Macintosh users. Hence, the RAP system is available via anonymous FTP in four different forms:
Any of these files can be retrieved by selecting the filename link, or by anonymous ftp to:
ftp ftp.cs.uchicago.edu login: anonymous password: your email address cd pub/users/firby/code binary get the appropriate file quit
The three directories under the rap-system each contain a different part of the code:
BASIC
MEMORY
INTERPRETER
The files and directories under the truckworld-raps directory include the code for:
INTERFACE Files
RAPS
EXPERTS
loader.lisp.
This file will need to be edited to reflect the appropriate top-level
pathname. Directions are included in the file. Similarly, the directories
rap-system and truckworld-classic will contain
loader.lisp files. These files do not need to be altered
if the top-level loader file is changed correctly (of course, if the
rap-system directory is the top-level, it's loader file will be the one
changed).
After the pathnames in the appropriate loader.lisp file have been changed, start up your favorite Common Lisp and load the loader file. The loader file will define a number of functions that can be used to load and compile the rest of the system.
(load-rap-system)
(compile-rap-system)
(load-rap-knowledge)
load-rap-knowledge function
will need to be ignored or rewritten once the RAP system is
embedded in a new environment.
To get things ready to go, execute the function (load-rap-system). This
function will load a large number of files and define the basic RAP
system. You will then be able to define memory predicates, functions,
and item properties. You will also be able to define the RAPs required
for your domain, and the low-level interface functions needed for the RAP
system to carry out primitive actions. Look in the supplied
interface directory for examples of this sort of domain knowledge.
rap-world directory will define the
functions described above as well as:
(load-everything)
(compile-everything)
(run-example)
To get things ready to go, execute the function (load-everything). This
function will first load Truckworld, then the basic RAP
system and finally the files in the supplied interface
directory that connect the two. The more specific (load-rap-system) and
(load-rap-knowledge) functions do not need to be called directly.
It is recommended that everything be compiled before the rock example is run. That example can take up to twenty minutes to complete depending on the type of computer being used. The rock order example is discussed in more detail in A Truckworld Example.