swarm-support
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Comparison between swarm and other IBM systems


From: Michael Altmann
Subject: Re: Comparison between swarm and other IBM systems
Date: Tue, 10 Dec 1996 08:50:13 -0600 (CST)

> 
> > I am just starting to explore the swarm system and individual based 
> > modeling and was wondering if anyone out there in the hive could 
> > provide a comparison of the swarm system with others available such 
> > as the National Micropopulation Simulation Resource
> > (http://www.nmsr.labmed.umn.edu/nmsr/NMSR.html). Any benefits/costs 
> > to either? What about the range of problems to which the system can 
> > be applied? 
> > 
> > Thanks for the feedback
> > 
> > Richard
> 
> 
> You might check out:
> http://www.santafe.edu/projects/swarm/users/Misc/SwarmBulletin/Survey-responses
> 
> Those are the concatenated responses to the User Survey,
> available from
> (http://www.santafe.edu/projects/swarm/users/Misc/User-Survey-961007.gz).
> 
> Most of the responses didn't give a strict comparison between
> Swarm and other systems; but, it might give you an idea of
> what other packages to look at.
> 
> glen
> 

As one of the principal players at the NMSR, I may be able to help provide
some information.  In the past I had hoped for more cross fertilization
between our group and swarm, but alas, that never came to pass.  I have not
looked at the latest version of swarm, so I can speak most directly to
what is ans is not in SIMEX, the NMSR package.

Both SIMEX and swarm are in about the same technological niche.  They
provide a framework of classes that the user programs against.  At the
NMSR we have a prototype of a graphical model builder that lets you
create models through a point and click interface, but such interfaces
are very hard to make easy-to-use and sufficiently powerful to handle
the breadth of models that both packages want to support.  SIMEX  and
its predecessor, SUMMERS, has been around much longer.

Both are providing classes for roughly the same class of models:
stochastic and individual-based.
Originally swarm was only for discrete time models, but my
understanding is that discrete-event modling is now supported (how
well?).  SIMEX is discrete-event from the ground up.  Discrete time models
are simply models in which lots of events are scheduled for integer
time points.  Swarm has stronger support for spatial models.

SIMEX has always emphasized epidemiological models, but has been used for 
neural nets and queueing models.  Swarm has had a broader set of examples.

SIMEX and swarm both use Tcl for graphical displays.

SIMEX is in C++, while swarm is in Objective C.  SIMEX should compile on
any platform with good C++ compiler, but lack of standardization makes
portability of C++ much worse than it ought to be.  

I think the following are features are unique to SIMEX.

1.  SIMEX has facilities for collecting automatic summaries.
I think these match most closely to Probes in swarm.  In SIMEX you can
set up a summary to count number of people, broken down by sex and disease
state, but aggregated by age group.  This is possible because we trap 
each access to attributes (of a particular class, not plain doubles) 
of objects.

2.  Special data structures for quickly selecting a random individual 
from a sub group, such as the set of all males who are HIV+.

3. Random number generators whose distributions can be configured at runtime.
This makes it easy to a user to specify the shape of a distribution without
recompiling code.

4. Add-on tools for model analysis: outcome estimation, scenario selection,
and response surface generation.  This is an emerging project of one of my
graduate students Le-Min Yin.  These tools could be used for swarm as well
and fit in the same category as Drone; they are tools that manipulate
simulation models.

5. Special classes for mixed genetic-demographic-epidemiolgical models and 
extra tools for analyzing pedigrees.


SIMEX has a convenient way to define which C++ variables are parameters
of the model and then access  these through execution line parameters, a
command line interface, a graphical interface, and Tcl/Tk's send command.
I don't know what the comparable swarm concept is.

At one time SIMEX used a process-oriented syntax, much like SIMULA's.

Your code looked like
class Person : Process {
   virtual void body() {
      wait(22);
      get_married();
      wait(50);
      die();
    }
};

Because it is so hard to support coroutines (light-weight threads) in
a portable and very lightweight fashion, we no longer do this.  If you like
this style and can afford larg threads (depending on the platform) 
C++SIM (and now JavaSim) from Mark Little's group is a great
low level package that is built on top of pthreads or Sun's lwp package.


SIMEX code now looks like

class Person : StateTransitionDiagram {
   Person() {
      switch_to(&Person::get_married,22);
   }
   void get_married () {
      switch_to(&Person::die,22);
   }
   void die () {
   }
};


To be honest, I think that there are now plenty of packages that provide
the basics of discrete-event modeling (see my comp.simulation software
FAQ or my bookmarks page, both off of http://www.nmsr.labmed.umn.edu/~michael/).
There is a great deal of overlap between the functionality in SIMEX and in
swarm.  Both projects would be improved by some pooling of resources and ideas.

I think our greatest service is to provide tools that make it easy for 
non-programmers  to create models and for people to analyze their models once 
they have
been created.



-- 
Michael Altmann
U of M   mailto:address@hidden        phone: (612) 625-9938
HSII     mailto:address@hidden       phone: (612) 858-1724


reply via email to

[Prev in Thread] Current Thread [Next in Thread]