Tuesday, February 28, 2006

Strands of Repast

There are currently three flavours/strands of Repast: RepastPy, RepastJ and Repast.Net. All have the same core services, which allow ABM to be developed on top of but they differ on their underlying platform and development languages. For all applications basic programming knowledge is needed.

RepastPy

RepastPy is the most graphical way to create models via GUI and Python scripting language (platform independent). It was designed for rapid development and prototyping of basic models and to learn the Repast framework (Possibly could be described like Repasts equivalent of NetLogo.) If more complex models are required after using RepastPy, models can easily be exported to Java if more complex models are desired. When a simulation is initiated in RepastPy, the familiar Repast GUI opens to allow dynamic access to simulation and agent parameters. It appears that RepastPy is the basis of Agent Analyst.

RepastJ

RepastJ Is the Java based strand of Repast (therefore it is platform independent therefore models created with this are extremely portable). RepastJ contains an extensive list of core classes (including GIS functionality). Unlike RepastPy you need to use an IDE (such as Eclipse or netBeans) to write, edit, compile and debug your programs. Once a model is written and compiled in RepastJ it run on any computer with JVM. Most models, it appears are being developed in RepastJ.

Repast.Net

Repast.Net is implemented in C# (Microsoft's answer to Java). Repast simulations can be implemented in any .Net language (VB.Net, C++, J#, C#, etc. ) and integrated to create Windows-based applications. Unlike RepastJ, at present there are no inbuilt GIS functions therefore need to link (e.g. ESRI MapObjects). Nor is Repast.Net platform independent. It’s good if you don’t want to know Java but still want to use Repast.

Which one to use? It’s up to you. If you want your Repast models to be portable you may need to use Java. RepastJ and RepastPy both have inbuilt GIS classes unlike the current .NET version. Most people appear to be using the Java version and I can’t find many examples of people using the .NET version (but in theory the .NET version should be faster than Java)

No comments: