UrbanSim Capstone - Potential Course Projects

Here are some suggestions for potential course projects. These are intended for teams of be 2-3 students (or perhaps 4 students, with two sub-teams).

Simulation Progress Display

This project involves developing a simulation progress display as part of the new graphical interface, and that will also be viewable on the web. I've divided it into several stages.

Step 1. In the current GUI, there is a progress bar and a tab with a scrolling log display. Make something spiffier and more informative. My initial design is to have a status tab in the GUI (which would be the default tab for a simulation display). This would have a list of all the years to simulate on the left, then a list of all the component models and submodels on the right. It would highlight the year and model being run. Implementing this involves learning about the PyQt toolkit.

After that, there are several subprojects, which could be divided up among two subteams.

Display of simulation status for modelers to monitor. For a long simulation run, it's useful for users to be able to see some preliminary results, so that if the simulation has gone awry they know to stop it early rather than letting it continue perhaps for days. Working with the indicator results manager code, develop some tools to provide useful monitoring information. This could involve selecting an indicator to be displayed, updated for each new year; or perhaps cycling through several such indicators.

Web-based access to simulation status. Provide a tool that allows remote users to monitor a simulation via the web. Initially this could show the display in Step 1, and later the selected indicators, as in the previous subproject.

Ambient display of system health. We've had considerable success in the UrbanSim project with using a traffic light as an ambient indicator of the health of the build. Perhaps starting with the tool for web-based access to simulation status, implement a display of system health. This could be a monitor in our lab (and on the web) -- or perhaps better, a plasma display -- that would show useful indicator results from the current runs. The system would automatically cycle through different possible and runs.

An integral part of these projects will be to use good practices from user-centered design and iterative prototyping, including paper prototyping and user testing.

Synthetic Data Generator

Sometimes we need to synthesize data, because the full data is only available at an aggregate level, or in sampled form, or the like. One example is for the household synthesizer, which synthesizes households based on the Public Use Microdata Sample from the decennial census, but there are others as well. This project would first involve implementing a household synthesizer, including providing a good interface for controlling it. (There may already be algorithms implemented in the scipy package for this; if so the project shifts to understanding them, and providing the interface.) Then, if time and energy allow, continue on to other kinds of synthesis. This project would require a fair amount of mathematical and algorithmic sophistication.

As with the previous project suggestion, an integral part of this projects will be to use good practices from user-centered design and iterative prototyping, including paper prototyping and user testing.

Chart and Graph Generation Tool

We use the matplotlib package for generating tables, charts, and graphs to display indicator results. This package is very powerful and feature-rich. This project involves making appropriate parts of matplotlib functionality available via the GUI, for example, by producing subtrees in the GUI, or configuration forms, to customize the charts and graphs. We also need to provide good defaults, so that users who don't need all this functionality can still get something reasonable.

Parallelism

The department is getting a new Sun T2000 multicore machine (see http://www.sun.com/servers/coolthreads/se_t2000/specs.xml. Building on the work of last year's project group on running UrbanSim in parallel, work on parallel algorithms for use on this machine. Ideally get the emme/2 travel model running on it as well.

Other Projects

There are quite a few other possible projects. Here's a quick list:

Also see the potential projects from last spring -- even then we had more project ideas than students.