This package has been prepared with the GNU build tools. See `INSTALL' for generic instruction on how to build the MDP simulator.
On most systems you should be able to build the server and a simple client in two easy steps:
Type `./configure' to configure the package for your system.
Type `make' to compile the package.
If all goes well, this should produce two executables: the server
mdpsim' and a simple client
mdpclient'.
Run `./mdpsim --help' for brief information on how to run the MDP server.
To test, first start a server (we specify a time limit of 10 seconds instead of using the default time limit of 15 minutes):
./mdpsim --port=2323 --time-limit=10000 examples/john.pddl &
Next, start a simple client:
./mdpclient --host=localhost --port=2323 examples/john.pddl
The client should print information on the simulation runs and exit. To stop the server, kill the associated process.
The package has been successfully compiled on the following platforms using various versions of GCC:
RedHat Linux 6.2 [GCC 2.95.3] RedHat Linux 7.1 [GCC 3.2.3] RedHat Linux 9.0 [GCC 3.2.2, 4.0.1] SunOS 5.7 [GCC 3.2.3] SunOS 5.9 [GCC 4.0.0]
If you see something like
...
checking whether the C++ compiler works... configure: error: cannot run C++ compiled programs.
If you meant to cross compile, use --host'. See
config.log' for more details.
when you run `./configure', then make sure that libstdc++.so.* is in the search path for shared libraries. You may have to set the environment variable LD_LIBRARY_PATH before running the configure script.
If you encounter any other problems when configuring or compiling the package, send the output produced by the configure script, including the file `config.log', or the output generated by make to hyounes@tempastic.org.
Bug reports and feature requests should be filed online:
http://code.google.com/p/mdpsim/issues/list
The server tests the sample planner (mdpclient, which executes random legal actions) on the domain defined in the file examples/john.pddl on the problem `john-problem' defined there. It executes the domain twice---this parameter is set in the configuration file comp.cfg (the second number on the first line).
Here is an example output (newlines added for clarity):
It shows the final state of two rounds for this domain (positive literals are listed). It also reports the reward value for each round, the time spent, and the number of steps taken. A final report gives the average value of the reward score ((+14-30)/2 = -8) as well the number of successful vs. unsuccessful rounds.
Upon connecting to the server, the client issues a message of the form:
The server will respond with:
The client will then send:
The server responds with:
At this point the client may do any calculations, as the clock is running.
The server will send a state or end-round message:
An atom:
A fluent:
The client responds to state messages with actions: