This web page provides selections of code used for experiments in my dissertation. This code is not well documented or elegant, but some may prefer it to reading the psudo-code in text. Feel free to use or build upon anything here, but please do cite the dissertation (or the original paper) if you find it useful.

Novel Domains

All domains are detailed in Chapter 3.
  • 3D Mountain Car

    These two files describe the environment (domain) which can be used in the RL-Glue framework: MountainCar3DSym.h
  • Keepaway

    Keepaway can be downloaded from here, along with tutorials for instaliation and programming Keepaway agents.
    • Inaccurate 3 vs. 2 and Inaccurate 4 vs. 3

      To change the default 3 vs. 2 or 4 vs. 3 games so that Keepers have inaccurate passing actuators, search for the line
      ACT->putCommandInQueue( soc = directPass( tmPos, PASS_NORMAL ) );
      in, and replace it with the line
      ACT->putCommandInQueue( soc = directPass( tmPos, PASS_FAST ) );
    • 3 vs. 2 XOR Keepaway

      To change the default 3 vs. 2 game to XOR Keepaway, should be replaced with this file and the changes described here in should be made to and WorldModel.h.
  • Ringworld

    A Java implementation of the environment can be found here.
  • Knight Joust

    The Knight Joust Java implementation is here.

Selected Algorithms

  • Value function transfer: CMAC transfer functional for 3 vs. 2 Keepaway

    Relies on Version 2.0 of the Tile Coding Software as the CMAC implementation. These two functions should be added to (and CMAC.h) and then called after CMAC/RBF weights are loaded into a target task player from a source task player, but before learing in the target task has started.
  • Policy Transfer for NEAT (neural network action selectors)

    After training a source population of neural networks, the network structure needs to be augmented for the target task, and weights need to be set. This program was used to change a neural network (called a genome by NEAT) that was trained in the 2-job-type Server Job Scheduling task so that it is appropriate for the 4-job-type Server Job Scheduling task. The program is called once and processes the population of neural networks, as output by NEAT.