swarm-modeling
[Top][All Lists]
Advanced

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

Re: [Swarm-Modelling] 2 easyish questions


From: gepr
Subject: Re: [Swarm-Modelling] 2 easyish questions
Date: Tue, 30 Mar 2004 07:42:36 -0800

Vinny Reynolds writes:
 > Agents and Swarms seem to be equivalent to a degree and are
 > structured hierarchically. Events can be scheduled for individual
 > agents or for Swarms compromising of agents and/or more swarms. Say
 > for example, you place 1 set of rabbits in one particular swarm,
 > and another set of rabbits in another swarm. The two sets of
 > rabbits are in physically different places, which is why I'm
 > seperating them into two swarms.

Before I submit my opinion on this, I'd like to throw a few words
out to clarify things.

1) There is no technical definition of "agent" with respect to 
   swarm.  "Agent" is a more abstract term and can mean anything
   you want it to mean when using swarm.

   _I_ use "agent" to mean:  "object, with an agenda, that acts on
   behalf of another object".  I use "actor" to mean, "object with
   an agenda."  So, an agent is an actor that acts on behalf of 
   others.

   Sometimes, to ease communication, I conflate the use of agent
   and actor.

2) _Physical_ location is orthogonal to swarms.  Two agents can be
   in the same physical location, but be controlled by different
   swarms.  Or, two agents can be in different locations, but be
   controlled by the same swarm.

   A swarm is really just a mechanism for pushing objects around.

   It's the data structures that index objects that indicate any
   spatial aspects (like physical location) of those objects.

   Sure, Swarms are also Zones.  But, Zones are an implementation
   tool to keep track of pointers and which objects are allocated.
   But, Zones are not _necessarily_ part of any model.  They could
   be used as a modeling construct; but, I don't see why anyone
   would try to do that since the Zone API is not rich enough for
   it to be useful in that way.

 > Now, rabbits being rabbits like to
 > move around and my first question is this. If a rabbit moves and
 > more appropriately belongs to another swarm, can that agent and its
 > events be moved transparently? Or, does it have to be treated in a
 > special manner because it is no longer part of swarm one and
 > therefore is no longer bound by that groups behaviour?

If both swarms are activated in the same (non-nil) parent swarm, then
no special treatment is necessary.  Or, more generally, if both swarms
ultimately are rooted in the same parent swarm, then no special
treatment is necessary.

If the two swarms or their parents are separately activated in nil,
then special treatment is necessary.

When activating two swarms in nil, the modeling statement being made
is one of independence (linearity).  It's a statement that "the 
events in swarm A are independent of the events in swarm B".  Any
interaction between those two swarms should, therefore, be treated
_explicitly_ by the swarm object's interface.... which, in so many
words, means "special treatment". [grin]

 > The world is modelled as an agent, albeit one with special meaning
 > but treated by the simulator as an agent nonetheless. My second
 > question is has anybody found that this places any undue
 > limitations on their model of the world or is the agent paradigm
 > sufficient and flexible enough? How did you get around any such
 > limitations

I can't really answer this question.  I'd need more detail.  Given
that "agent" can mean lots of things, I don't find that it places any
limitations on models of the world/environment.  I _can_ imagine that
it would hinder things in some situations.  For example, if by
"agent", you mean that your world agent is a computational sibling to
the other agents that make up the contents of the world (as distinct
from a model where the other agents are children of or contained in
the world agent), then events can occur between the non-world agents
that don't affect the world agent in any way.  That means that the
world agent is an _incomplete_ representation of the environment in
which the non-world agents live.

But, even that's a weak statement because in most swarm models I've
seen, the agents interact directly, without being mediated by their
"world", resulting in the same situation.

Further, of course, if "agent" means "acting on behalf of something",
and your world is an agent, then what is it acting on behalf of?

Another potential limitation of using the "agent paradigm" to model an
environment lies in the assumption of the agent as an object.  Along
the same lines of the world agent not mediating interaction with the
non-world agents, comes an ontological problem of embeddedness or
logical abstraction.

Ideally, if an object lives in (is embedded in) an environment, then
that environment is observable to that object.  When the environment
is an agent, then the environment's observables are dictated by two OO
interfaces, the object's and the environment's.... that brings a bit
of decoherence to the discussion of environmental observables that one
doesn't see in real life.  In real life, environments are "analytic",
infinitely differentiably divisible (till you hit the quanta) and
they're multi-aspect.  An argument can even be made to say that there
_must_ be infinite aspects. (re: wittgenstein and spinoza)

The observables of these environments are solely dictated by the
coupling of the interfaces between the object and the environment,
where both interfaces are mutually co-defined by the other.

So, if both the environment and the object have static interfaces,
then there's a pretty significant discontinuity between that model and
the real situation.  (Unless you're modeling artifacts that actually
have static interfaces, of course. ;-)

A way around this is to give the object full access to all the
computational machinery available through the run-time.  And that
would imply that the environment is not an agent (because the
environment wouldn't have internal components hidden behind an
interface... i.e. it would not be an object).

But, swarm is not the right tool for that type of model.  One should
use Tierra, Avida, or one of those systems for those types of models.

I hope that helps. [grin]

-- 
glen e. p. ropella              =><=                           Hail Eris!
H: 503.630.4505                              http://www.ropella.net/~gepr
M: 971.219.3846                               http://www.tempusdictum.com



reply via email to

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