OpenSim

From OLPC
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This page contains the working Google Summer of Code proposal for OpenSim. OpenSim is intended as a system dynamics model editor and a general simulation engine.


Introduction

"The greatest constant of modern time is change." - John Sterman

System dynamics (SD) is a method to enhance learning in complex systems. It allows us to study and manage complex systems that involve feedback loops and time delays, systems that are inherently non-linear. For a decent introduction to the subject, the System Dynamics Society [1] and Wikipedia[2] both have good overviews. It is used around the world, frequently in majority world countries, for planning among other applications. At a basic level you have to specify the mathematical equations for how different parts of your system work and interact. The same problems can be solved by writing code in a programming language (I had a course taught in Fortran a year ago...), but in SD the modeling is customarily done using a visual model editor where you can define causal relationships, stocks and flows graphically. This lowers the barriers to learning by removing all of the non-modeling aspects of programming models like memory management, file IO, syntax, etc. Don Hopkins started a thread on the mailing list a year ago on this subject, many of the ideas presented there have been incorporated here. In the SD field today there are several commercial offerings [3][4][5] but no open-source solutions. In addition, the commercial solutions are expensive (usually > $500 dollars per single academic license) and many haven't seen a redesign of their user-interfaces since the turn of the millennium.


Differences from eToys and Turtle Art

There are currently two activities that provide some kind of visual programming on the XO, Turtle Art and eToys. Both serve their role, but do not fill the niche that SD modeling can offer. The Wikipedia [6] site has some examples of how SD models generally look - they show the behavior of a system described by equations, rarely are if/else statements used. Both Turtle Art and eToys are very good at describing agents, but are not as expressive at SD for describing the behavior of systems. The three have all have their place on the XO, and there are great possibilities of integrating a SD approach and Turtle art in the future.

Deliverables

I started work this January, 2008 on an open-source SD model editor and simulation engine as the core of my Master's thesis at UiB. I would like to adapt and expand the work I've done on this for the XO. I am proposing:

  • A system dynamics modeling activity that can be used to edit, design and run system dynamics models.
  • A simulation engine.
  • Port Metropolis to use our simulation engine for its core city logic, and integrate the ability to visually edit these models.


Proposal Details

SD Model Editor

The models created could look similar to the following mockup. Modeling would be a collaborative activity, several people could work on editing a model at once.

Rabbit Model mockup

Simulation engine

I have started one and have it turning models specified in an XML file into valid Python code. By the summer it will be packaged as a shared library with the ability to edit models, execute them in a JIT environment (provided by LLVM libraries), and provide the data and results to applications. For the XO I would like to expand this to be able to access and operate on geospatial GIS data, as well as the execution of Turtle Art models. Using geospatial data could take either the form of supporting basic operations for things like land use change, or the more complicated step of porting and communicating with a GIS application, like GRASS.

Metropolis

The models could be edited in the above mentioned model editor, maybe the editor could be implemented as a GTK+ widget that could be created right in the Metropolis UI. Turtle Art could be used to define agents like bulldozers, etc, as Don Hopkins has suggested. Time permitting, the SD and Turtle Art editors could be integrated.


Availability

I am currently attending courses for my Masters at the University of Bergen in Norway, but will be living in Westchester, NY over the summer (a 45-minute train ride from NYC), and can commit to working a good eight hours per day on the project. Courses end the 30th of May, and I will be back in the US about a week later, available for 10 weeks of solid work on this.


About Me

I attended RPI in Troy, NY for 2 years studying computer engineering, but wanted to do something more applied with my computer skills so I transferred to SUNY ESF in Syracuse, NY to major in Environmental Studies. I got back into coding through classes on ecological modeling, spatial modeling and GIS. I've been pretty heavily coding models, algorithms and interfaces for the past 2 years, mainly in C#, ObjC and some Fortran, but the past 3 months I've been using C++ for 8 hours a day and some Python here and there. I've got a Mac with Linux (both FC8 and openSUSE10.3) and Windows, and I've just started over the past few weeks to pick up GTK, although I've used Cairo in a project for a couple months. I've only dabbled with the XO so far, but am really looking forward to developing for it.

Bobbypowers 11:50, 23 March 2008 (EDT)


Links

http://www.systemdynamics.org/
http://en.wikipedia.org/wiki/System_dynamics
http://www.millenniuminstitute.net/
http://lists.laptop.org/pipermail/sugar/2007-March/001829.html
http://www.vensim.com/
http://www.powersim.com/
http://www.iseesystems.com/
http://www.futuresalon.org/2004/11/will_wright_kic.html
http://www.donhopkins.com/drupal/node/142