RL-Glue is a two part system; a language agnostic part, referred to as the core, and a language specific part, referred to as the codec. There are multiple codecs supporting development in C/C++, Java, Lisp, Matlab, and Python.
The following discusses installing RL-Glue and ALE. First I cover installing RL-Glue and then ALE.
Installing RL-Glue
The instructions for installing the RL-Glue core and Python codec are drawn from the technical manuals for versions 3.04 and 2.0 and assume versions 3.04 and 2.02 respectively. However, looking over older versions of the manual it appears these instructions have not changed much, if at all, which means they may also work for future versions with the correct changes in the commands. I leave it as an exercise to the reader to determine what changes are needed. (Don't you love it when an author does that?)Installing RL-Glue in the user space as opposed to system wide requires compiling the core code from source. To do so, execute the following commands.
RL-Glue Core
1. Download RL-Glue Core$ cd ~ && wget http://rl-glue-ext.googlecode.com/files/rlglue-3.04.tar.gz2. Unpack RL-Glue Core
$ tar -xvzf rlglue-3.04.tar.gz3. Make a directory into which RL-Glue will be installed:
$ mkdir ~/rlglue4. Configure RL-Glue Core
At this point it is necessary to identify the location wherein you wish to install the core as you must tell this to the configure script. I made a directory called rlglue in my home directory resulting in the following command:
$ cd rlglue-3.04 && ./configure --prefix=<rlglue>where <rlglue> is the absolute path to the directory into which you want RL-glue installed.
5. Build and install RL-Glue Core
$ make && make install6. Update your PATH
Because the core has been installed in a non-standard location it is necessary to inform the system of it's location. This merely entails updating your PATH environment variable to include rlglue/bin, i.e.:
$ export PATH=~/rlglue/bin:$PATHNote that you can make this change in your .bashrc to avoid doing it every time you open a new terminal.
At this point executing rl_glue should result in:
RL-Glue Version 3.04, Build 909 RL-Glue is listening for connections on port=4096This indicates that RL-Glue is waiting for programs managing the agent, environment, and experiment to connect. For now you can type ctrl-c to exit the program.
Python Codec
1. Download the Python Codec$ cd ~ && wget http://rl-glue-ext.googlecode.com/files/python-codec-2.02.tar.gz2. Unpack the codec
$ tar -xvzf python-codec-2.02.tar.gz3. Update your PYTHONPATH
This is another step that is only necessary because we're installing into a non-standard location.
$ export PYTHONPATH=~/python-codec/srcNote that this is another command that can be placed into your .bashrc to avoid executing it every time you open a new terminal.
Installing ALE
Installing ALE takes a little more effort. This is due to the fact that ALE does not supply a configure script to build a makefile specific for your system. These instruction are for installing ALE 0.4.3 and may not extend to newer versions well so your mileage may vary. As before, execute the following commands.$ wget http://www.arcadelearningenvironment.org/wp-content/uploads/2014/01/ale_0.4.3.zip2. Unpack ALE
$ unzip ale_0.4.3.zip3. Select Makefile
ALE supports Linux, OSX, and Windows and as such a makefile is supplied for each platform. Installing ALE requires making a makefile from one of these. I advise copying the one you want as opposed to renaming it:
$ cd ale_0.4.3/ale_0_4/ && cp makefile.unix makefileUpdate 2014-04-15: Frédéric Bastien notes that this step can be avoided by supplying the name of the preferred makefile to make on the command line as follows:
$ make -f makefile.unixStill be sure to change your working directory to ale_0.4.3/ale_0_4 as the following commands assume that context.
4. Enable RL-Glue support
RL-Glue support in ALE is disabled by default. To enable it edit the makefile and change the line:
USE_RLGLUE := 0to
USE_RLGLUE := 1It is also necessary to inform ALE where the RL-Glue headers are located. This can be done by changing the line:
INCLUDES := -Isrc/controllers -Isrc/os_dependent -I/usr/include -Isrc/environmentto
INCLUDES :=-Isrc/controllers -Isrc/os_dependent -I/usr/include -Isrc/environment -I<rlgluedir>/includewhere <rlgluedir> indicates the directory into which rlglue was installed earlier.
Similarly it is necessary to inform ALE where the RL-Glue libraries are installed. This is done by changing the line:
LIBS_RLGLUE := -lrlutils -lrlgluenetdevto
LIBS_RLGLUE := -L<rlgluedir>/lib -lrlutils -lrlgluenetdevUpdate 2014-04-15: Frédéric Bastien notes that one can override these variables on the command line. For example:
$ make USE_RLGLUE=1sets USE_RLGLUE to 1. However it is unclear how to append to variables via the command line so this may only work for the USE_RLGLUE variable without restating the existing variable value.
5. Build ALE
$ make6. Update LD_LIBRARY_PATH
Because the RL-Glue libraries have been installed in a non-standard location it is necessary to tell ALE where to find them. This is done using the LD_LIBRARY_PATH environment variable as follows:
$ export LD_LIBRARY_PATH=<rlgluedir>/lib:$LD_LIBRARY_PATHNote that this is another command you can add to your .bashrc to avoid needing to execute the command every time you open a new terminal.
7. Update your PATH
As before it is necessary to update your path to inform the system of the location of the ALE binaries since they are installed in a non-standard location.
$ export PATH=~/ale_0.4.3/ale_0_4:$PATHNote that this is yet another command you will have to execute every time you open a terminal unless you add this command to your .bashrc.
At this point you can execute ale which should result in:
A.L.E: Arcade Learning Environment (version 0.4) [Powered by Stella] Use -help for help screen. Warning: couldn't load settings file: ./stellarc No ROM File specified or the ROM file was not found.
Disregard the warnings, they are simply saying that ALE was unable to find your stella configuration and that a game ROM was not specified. This is to be expected since you did not specify the locations for them.
In a future post, or possibly more than one, I will outline the processes for making and executing agents, environments, and experiments.
Conclusion
This covers installing RL-Glue and ALE. I have not discussed anything beyond basic testing as such material can be found in the documentation for the tools.In a future post, or possibly more than one, I will outline the processes for making and executing agents, environments, and experiments.
No comments:
Post a Comment