Friday, December 6, 2013

Modeling a simple system using multi agent simulation environments

Note: This isn't finished yet, but because I'm referencing this post in another post, I decided to publish it.

I'll probably participate in a project whose characteristics were such that I suggested that the best way to proceed was to use multiagent type of a simulation. The problem was that there are many different, and popular, multi agent simulation environments and I had to choose one, that will fit this project's use case the best. More specifically, candidate multiagent simulation environments were MASON, Netlogo and Repast, among others, that were constantly mentioned on the Internet and I decided to evaluate them. Note that there are others, too. Lists of available software can be found here, here, and here. But, if you google a bit, you'll probably find many others.

In any case, the requirements I had in mind when starting evaluation process were:
  1. Free licence. Preferably BSD like license, but LGPL, or even GNU, is OK.
  2. GUI that will allow easy experimenting with model.
  3. Ability to model agents with very complex behavior.
  4. Ability to do distributed simulations is definitely a big plus.
  5. NOT exclusively Microsoft based, i.e. C# or something similar.
To be able to better evaluate those tools, I set my self with a task of implementing something simple in the three different multiagent environments (MASON, Netlogo, Repast) and trying to determine which one will best suite my needs with respect to requirements. Note that there are already existing comparisons, but I wanted to gain some first hand experience in how it is to use them. So, in order to do that I modelled the following system in each one of them and recorded my experience in a due course:
The system consists of N identical agents performing some task emulated by using sleep or similar statement/function. Task processing by an agent has an exponential distribution with average processing time of 30 minutes. New tasks arrive according to Poisson distribution with average of one task each 45 minutes. It is necessary to determine average time each task spends in a system and average time waiting in a queue for processing.
For a start I'll set N to 1. So, note that this is a simple M/M/N queue. I'm going to complicate it a bit in a due course, but this is what I'm going to start with. The reason why I choose M/M/1 queue is that I'm able to compare simulation results with calculations.

The posts describing use of specific environments are:

  1. Mason
  2. Repast
  3. NetLogo

While searching for the tutorials, examples and documentation about those simulation environments I wished to try, I found a lot of useful resources. Here are some:

  1. Open Agent Based Modeling Consortium
  2. Comparison of many more agent simulation environments using a single scenario
  3. Agent Based Modeling - a site with lot of resources

No comments:

About Me

scientist, consultant, security specialist, networking guy, system administrator, philosopher ;)

Blog Archive