Skip to content


Repository files navigation


Build Status


A reinforcement learning agent that maximizes crowdsourcing quality by teaching and testing.


[1] Jonathan Bragg, Mausam, and Daniel S. Weld. 2016. Optimal Testing for Crowd Workers. In Proceedings of the 15th International Conference on Autonomous Agents and Multiagent Systems (AAMAS '16). Singapore.

[2] Jonathan Bragg, Mausam, and Daniel S. Weld. 2015. Learning on the Job: Optimal Instruction for Crowdsourcing. In ICML '15 Workshop on Crowdsourcing and Machine Learning. Lille, France.


After you clone the project, be sure to initialize and update all the submodules. This can be done with git submodule update --init --recursive.

We recommend installing your environment using Miniconda. Once Miniconda is installed, you can a create virtual environment with the correct dependencies by running conda env create -f environment.yml python=2.7 -n $ENV where $ENV is the name of your virtual environment.

In order to use policies that utilize POMDPs, you must install a supported POMDP solver. The recommended solver is ZMDP. Once you have installed and built this solver, be sure that you can run pomdpsol-zmdp from the shell by either aliasing or adding the ZMDP binary to your $PATH environment variable. One way to do this is

mkdir ~/.bin
cd ~/.bin
ln -s ~/.bin/pomdpsol-zmdp $ZMDP_BIN_DIR/zmdp

where the ZMDP binary directory is $ZMDP_BIN_DIR. Then in your ~/.bashrc file, add the line

export PATH=$PATH:~/.bin

If you want to use the main experiment or visualization code, you will need to set up a MongoDB database. The application loads the configuration settings for the database from environment variables. An example:

export APP_SETTINGS=viz_app_config.Config
export MONGO_HOST=
export MONGO_PORT=27017
export MONGO_USER=your_username
export MONGO_PASS=your_password
export MONGO_DBNAME=your_dbname
export MONGO_AUTH_DBNAME=your_authentication_dbname


The main end-to-end experiment code lives in Since the project directory is a package, the module should be run from the parent directory of the project. If you have cloned the repository into a directory named guru, you can run the main module with cd .. && python -m guru.exp.

If you would like to use the agent in your own application, you may want to follow the usage in as a guideline for how to initialize the agent from More detailed instructions to come.

TODO: Describe visualization application.


Use the provided ./ script.


Please create an issue, pull request, or send email to jbragg [at]


Reinforcement learning agent that maximizes crowdsourcing quality by teaching and testing






No releases published


No packages published