Software

My research has produced a number of software packages, available below, which I make freely available for academic and not-for-profit use.
For source code and data sets related to specific publications, please see my publications page.

Gridworld search and rescue: a project framework for a course in artificial intelligence.

This educational software allows students to develop an intelligent agent for a search and rescue application in a partially observable gridworld. It allows students to focus on high-level AI issues for solving the problem rather than low-level robotic navigation. It was used as the semester project for CS63 (Artificial Intelligence) in Fall 2009 at Swarthmore College and CMSC 471 (Artificial Intelligence) in Fall 2007 at UMBC.

DDPref: Learning Preferences for Sets of Objects

A Java implementation of the DDPref language for expressing preferences over sets of objects, and an algorithm for learning those preferences from example sets. The DDPref language and learning algorithm are described in the ICML-06 paper Learning user preferences for sets of objects.

Extensions to the Weka Machine Learning Toolkit

Here are several extensions to Weka. To use these, you need to download the latest version of the Weka source code, uncompress the source tree, place these files in the appropriate location, and recompile Weka. All code is licensed under the GPL.

  • Generate a cross-validated learning curve using the experimenter: CVLearningCurveResultProducer.java
    This extension gives the Weka Experimenter the ability to cross-validate the data, produce a learning curve for each training set evaluated on the held-out test set, and then average these into an overall learning curve. (The experimenter IS capable of producing a learning curve for set of data by picking out certain percentages and then cross-validating over those percentages, but this yields a very different type of learning curve.)

Java Utility functions

The edu.umbc.cs.maple.utils.* java package defines a large number of useful utility function classes for machine learning, spectral graph theory, the Jama matrix package, and Java in general. It is licensed under the GPL.

The Utils package requires the following packages, which are all bundled in the distribution above: weka, jama, and org.apache.commons.math.

Script to run a set of experiments

  • BatchProcessRunner.sh: this bash script executes a set of commands given in an auxilliary file, allowing only a limited number to run concurrently. When one terminates, the next one in the series starts.
    This script is extremely useful for running a large number of experiments, each defined as a separate command. This program is licensed under the GPL.