Thanks for the comparisons! I don't know anything about SDML, but
will soon learn, based on your comments. I also have a couple of
questions/comments.
Scott Moss wrote:
> I also have the impression that Swarm is the more appropriate language
> if you are using simple agents such as finite cellular automata. So it
> is good for A-Life and Sugarscape, for example. SDML is more
> appropriate for more complex representations of agents - I use it with a
> Soar like cognition augmented by some other bits (see my article in the
> most recent JASSS for an example). Some people represent cognition as
> GAs in Swarm and some in SDML. There are some Genetic Programming
> representations of cognition in SDML but not, as far as I know, in
> Swarm.
Swarm is actually very congenial to complex agents. The only hinderance
is that, since one programs the agents in C, it makes agent design much more
of a programming task than an agent-design task. I.e. there are no agent
frameworks to help or hinder you in the design of agents and their internals.
Effectively, I think this is what you're saying when you say it's more appropriate
for ALife and SDML is more appropriate for cognitive modeling. Is that right?
If so, then, my question to the list is: Are social scientists mostly
interested in psychological modeling of social individuals (where some
cognitive model is assumed), or are they interested in phenomenological
simulation? Just to clarify, the former has more to do with verification
of models for understanding how people think. The latter has more to
do with validation of models for collective, systemic behavior.
What this means to me, a programmer as opposed to a social scientist,
is that Swarm is good for *finding* models of individual behavior rather
than assuming one or the other of them, such that those models give rise
to a collective dynamic. And this is the case even if the models found
don't fit any prescribed notion of what goes on in the agents "mind".
> Portability is another standard textbook issue in this area. SDML, for
> example, is portable because it runs on top of Smalltalk-80 (VisualWorks
> 2.5.1). Swarm running on top of Objective C is not portable but running
> on top of Java is. We find prtability extremely important in
> collaborating on model building via the Internet.
What do you mean by "portability"? I disagree completely with this
statement; but, it could just be a matter of the defn of "portability".
Swarm is implemented on top of Objective-C, which is a superset of
C and is supported by the GCC compiler. The GCC compiler runs on
every platform I know of: manymany unixen, Win95/NT, MacOS, and
some embedded systems OSes. That means that Swarm runs on all
these platforms as well.
Now, I can imagine that you're really not talking about portability,
but *reusability*, where a module written in SDML can be "exported"
to Smalltalk and then run by any Smalltalk compiler. And in that
sense, Swarm is still just as portable because one writes directly in
C/ObjC, so modules can be run on any platform supported by GCC.
So, I don't think portability is an issue, here. But, the level of the
language is. Swarm is almost a language in itself and is conducive
to modeling in general. Hence, a social science model uses the same
basic set of tools as, say, a physical model. That makes Swarm good for
"cross-trophic" modeling, where one wants to model both cognitive
agents and lower/higher level agents that may be based on fundamentally
different dynamical laws.
SDML sounds like a higher level language than Swarm in that it provides
more specialized tools for modeling certain things. But, I could be wrong
on that. If the difference between Swarm and SDML is purely that of
procedural vs. declarative languages, then I suspect the choice comes
down to more low-level implementation details.
In any case, I am very interested in SDML. Thanks for the pointers!
glen
--
glen e. p. ropella =><= Hail Eris!
the swarm corporation W:(505) 995-0818
<[log in to unmask]> H:(505) 424-0448
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|