<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Matteo Casadei</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Luca Gardelli</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mirko Viroli</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cesena</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Italy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>m.casadei</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>luca.gardelli</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>mirko.viroli }@unibo.it</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Environments of multiagent systems typically feature the application of techniques coming from the research context of complex systems: adaptivity and self-organisation are exploited in order to tackle recurrent issues in multiagent systems applications like openness, dynamism and unpredictability. By adopting the “agents and artifacts” meta-model, we conceived the environment as populated by artifacts: as a specific case, we consider them as information repositories storing relevant facts about the external world and agent interaction/coordination. We focus on the coordination problem called collective sort, where autonomous agents in charge of managing such artifacts have the goal of moving information across different artifacts according to local criteria, resulting in the emergence of the complete clustering property. Using a library we developed for the Maude term rewriting system, we simulate the behaviour of this system and evaluate a full solution to this problem.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>THE COLLECTIVE SORT PROBLEM</title>
      <sec id="sec-1-1">
        <title>Introduction</title>
        <p>
          Systems that should self-organise to face unpredictable changes in the surrounding conditions often
need to achieve adaptivity as an emergent property. As this observation was first made in the
context of natural systems, it was shortly recognised as an inspiring metaphor for artificial systems
as well [3]. However, a main problem with emergent properties is that, by their very definition,
they cannot be achieved through a systematic design: their dynamics and outcomes cannot be
fully predicted. Nonetheless, providing some design support in this context is still possible. The
whole system of interest—that is, the system application and the environment it is immersed in—
can be partially modelled, e.g. as a stochastic system (whose dynamics and duration aspects are
probabilistic). In this scenario, simulations can be run and used as a fruitful tool to predict certain
aspects of the system behaviour, and to support a correct design before actually implementing the
application at hand [
          <xref ref-type="bibr" rid="ref4">6</xref>
          ].
        </p>
        <p>
          This scenario is particularly interesting for the design of MAS environments [
          <xref ref-type="bibr" rid="ref17">20</xref>
          ]. Some works
like the TOTA middleware [
          <xref ref-type="bibr" rid="ref7">9</xref>
          ], the AGV application [
          <xref ref-type="bibr" rid="ref18">21</xref>
          ], and stigmergic fields [
          <xref ref-type="bibr" rid="ref14">17</xref>
          ], though starting
from different perspectives, all develop on the idea of developing MAS environments with
coordination techniques featuring adaptivity and self-organisation. They share the idea that information
situated into the environment eventually spread to other locations in a non-deterministic way,
depending on previous interactions and being affected by timing and probability. Accordingly, in this
paper we focus on the role that simulation tools can have in this context, towards the identification
of some methodological approach to environment design.
        </p>
        <p>
          We consider the “agent and artifacts” meta-model for MAS as a reference [
          <xref ref-type="bibr" rid="ref13 ref16">19, 16</xref>
          ]: this is
based on the idea of modelling the agent environment in terms of a set of artifacts. Each artifact
provides one or more services to agents—differently from agents—without the freedom of autonomy:
services are accessed through the artifact interface. Typically, artifacts are used to encapsulate
shared repositories of information and knowledge: a simple incarnation of this notion can be the
tuple space model or any of its variants [
          <xref ref-type="bibr" rid="ref15">18</xref>
          ]—e.g. as provided by TuCSoN [
          <xref ref-type="bibr" rid="ref10">12</xref>
          ] or TOTA [
          <xref ref-type="bibr" rid="ref7">9</xref>
          ] MAS
infrastructures.
        </p>
        <p>
          In particular, when developing an environment built upon tuple spaces, we recognise tuples
distribution among tuple spaces as a main concern: indeed, having tuples sorted out may improve
overall system efficiency. Hence, we get inspiration from the brood sorting problem [3] to evaluate
a solution for sorting tuples in a distributed tuple space scenario: we call this problem collective
sort —as we originally suggested in [
          <xref ref-type="bibr" rid="ref2">4</xref>
          ]. This application features autonomous agents managing a
closed set of tuple spaces situated in different nodes. These agents have the goal of moving tuples
from one space to the other until completely “sorting” them, that is, (i) tuples of different types
reside in different tuple spaces, and (ii) tuples of the same kind reside in the same tuple space.
        </p>
        <p>We show a first solution to this problem considering a simplified scenario: environmental agents,
each associated to a particular tuple space S and a particular tuple type T , have the private goal
of ensuring that S is not wrongly collecting tuples of the type T . This goal is achieved by moving
away tuples which are apparently not contributing to perfect clustering. Despite the locality of this
criterion, complete sorting emerges from initial chaotic tuple configurations. In order to obtain full
convergence from any initial state, we refine the model introducing the concept of space vacuum,
leading to the full solution of the collective sort problem.</p>
        <p>
          To devise design choices, and provide evidence of correctness and appropriateness of our
approach, we relied on simulations throughout. Many simulation tools can be exploited to this end,
though they all necessarily force the designer to exploit a given specification language, and
therefore better apply to certain scenarios and not to others—examples are SPiM [
          <xref ref-type="bibr" rid="ref11">14</xref>
          ], SWARM [
          <xref ref-type="bibr" rid="ref1">2</xref>
          ]
and REPAST [1]. Instead of relying on one of them, in this paper we adopted a general-purpose
approach we proposed in [
          <xref ref-type="bibr" rid="ref2">4</xref>
          ]. We evaluate the applicability of the Maude specification tool as
a general-purpose engine for running simulations [
          <xref ref-type="bibr" rid="ref3">5</xref>
          ]. Maude allows for modelling syntactic and
dynamic aspects of a system in a quite flexible way, supporting e.g. process algebraic, automata,
and net-like specifications—all of which can be seen as instantiations of Maude term rewriting
framework. We developed a library for allowing a system designer to specify in a custom way a
model in terms of a stochastic transition system—a labelled transition system where actions are
associated with a rate (of occurrence) [
          <xref ref-type="bibr" rid="ref12">15</xref>
          ]. One such specification is then exploited by the tool to
perform simulations of the system behaviour, thus making it possible to observe the emergence of
certain (possibly unexpected) properties.
        </p>
        <p>The remainder of this paper is as follows: Section 2 provides some background on coordination
techniques featuring adaptivity, Section 3 briefly introduces our simulation framework, Section 4
describes the collective sort scenario, and finally Section 5 presents the full solution we conceived
for this problem.
2</p>
      </sec>
      <sec id="sec-1-2">
        <title>Background</title>
        <p>Environment models and technologies for multiagent systems are moving towards the application
of self-organising techniques, most of which are inspired by natural phenomena.</p>
        <p>
          A first example is the TOTA (Tuples On The Air) middleware [
          <xref ref-type="bibr" rid="ref7">9</xref>
          ] for pervasive computing
applications, inspired by the concept of field in physics—like e.g. the gravitational or magnetic
fields. This middleware supports the concept of “spatially distributed tuple”: that is, a tuple can
be cloned and spread to the neighboring tuple spaces, creating a sort of computational field, which
grows when initially pumped and then eventually fade. To this end, when injected in a tuple space,
each tuple can be equipped with some application-dependent rules, defining how a tuple should
spread across the network, how the content of the tuple should be accordingly affected, and so on.
TOTA is mainly targeted to support multiagent systems whose environment is open, dynamic and
unpredictable, like e.g. to let mobile agents meet each other in a dynamic network.
        </p>
        <p>
          Another example is the AGV (automatic guided vehicles) application described in [
          <xref ref-type="bibr" rid="ref18">21</xref>
          ], where
unmanned vehicles controlled by agents transport various kinds of loads through a warehouse.
The “virtual environment” (VE) keeps a consistent and updated map of the physical environment,
including vehicles’ location and status—such as whether they are executing a job. Moreover, it
encapsulates important functionalities to support cooperation between agents: e.g. agents can put
marks in the VE that propagate in the network and are used to avoid collisions.
        </p>
        <p>
          A similar mechanism is generalised and adopted in the Digital Pheromone Infrastructure [
          <xref ref-type="bibr" rid="ref14">17</xref>
          ],
which provides services for injecting and perceiving digital pheromones in different sites of the
physical/logical distributed environment. Such an environment has the inner ability of
aggregating, maintaining and diffusing information according to spatial and temporal criteria—this idea is
inspired by stigmergy [13], similarly also to the work on TOTA co-fields. Applied to the military
context, these features can be exploited for several purposes such as surveillance and patrol, target
acquisition, and target tracking. For example, target acquisition can be realised by an agent that
keeps injecting a pheromone, with the goal of attracting the target.
        </p>
        <p>
          In the effort to handle the design of this kind of environments, bridging the gap between abstract
model and implementation, it has become very common practice to take into account quantitative
aspects like temporal and probabilistic ones, which are necessary in order to tackle systems that
should feature emergent properties—see e.g. [
          <xref ref-type="bibr" rid="ref11 ref4 ref8">14, 6, 10</xref>
          ]. This calls for proper analysis and design
tools, supporting system development at various levels, from formal specification up to simulations.
        </p>
      </sec>
      <sec id="sec-1-3">
        <title>3 A Maude Library for Simulation</title>
        <p>
          In [
          <xref ref-type="bibr" rid="ref2">4</xref>
          ] we developed a framework in the Maude term rewriting language, which is meant to speed
up the process of modelling and simulating stochastic systems featuring distributed and interacting
systems, like MASs. We here briefly describe some features of this framework—the reader interested
in further details should refer to [
          <xref ref-type="bibr" rid="ref2">4</xref>
          ].
        </p>
        <p>
          Maude is a high-performance reflective language supporting both equational and rewriting logic,
for specifying a wide range of applications [
          <xref ref-type="bibr" rid="ref3">5</xref>
          ]. Other than specifying algorithmic aspects through
algebraic data types, Maude can be used to provide rewriting laws—i.e. transition rules—that
are typically used to implement a concurrent rewriting semantics, and are then able to deal with
aspects related to interaction and system evolution. In the course of finding a general simulation
tool for stochastic systems, we found Maude as a particularly appealing framework, for it allows to
directly model a system structure and dynamics, or to prototype a new domain-dependent language
to have more expressiveness and compact specifications.
        </p>
        <p>
          Inspired by the work of Priami on the stochastic π-Calculus [
          <xref ref-type="bibr" rid="ref12">15</xref>
          ], we realised in Maude a general
simulation framework for stochastic systems which does not mandate a specification language as
e.g. π-Calculus, but is rather open to any language equipped with a stochastic transition system
semantics. In this tool a system is modelled as a LTS (labelled transition system) where transitions
are of the kind S −r−:→a S0, meaning that the system in state S can move to state S0 by action
a, where r is the (global) rate of action a in state S. The rate of an action in a given state can
be understood as the number of times action a could occur in a time-unit (if the system would
rest in state S), namely, its occurrence frequency. This idea generalises the activity mechanism
of stochastic π-Calculus, where each channel is given a fixed local rate, and the global rate of
an interaction is computed as the channel rate multiplied by the number of processes willing to
send a message and the number of processes willing to receive a message. Our model is hence a
generalisation, in that the way the global rate is computed is custom, and ultimately depends on
the application at hand—e.g. the global rate can be fixed, or can depend on the number of system
sub-processes willing to execute the action.
        </p>
        <p>Given a transition system of this kind and an initial state, a simulation is simply executed by:
(i) checking each time the available actions and their rate; (ii) picking one of them probabilistically
(the higher the rate, the more likely the action should occur); (iii) accordingly changing the system
state; and finally (iv) advancing the time counter according to an exponential distribution, so that
the average frequency is the sum of the action rates.</p>
        <p>As an example, we consider the N a − Cl chemical reaction dynamics, provided e.g. in SPiM
documentation1. Syntax and semantics of this system is expressed in our Maude library as follows:
op &lt;_,_,_,_&gt; : Nat Nat Nat Nat -&gt; State .
vars Na Na+ Cl Cl- : Nat .
eq &lt; Na,Na+,Cl,Cl- &gt; ==&gt; =
( ion # (float(Na * Cl) * 1.0) -&gt;</p>
        <p>[&lt; p Na,s Na+,p Cl,s Cl- &gt;] );
( deion # (float(Na+ * Cl-) * 2.0) -&gt;</p>
        <p>[&lt; s Na,p Na+,s Cl,p Cl- &gt;] ) .</p>
        <p>
          This system is characterised by a state of the kind &lt;Na,Na+,Cl,Cl-&gt;, where Na is the number of
sodium atoms, Na+ the number of sodium ions, Cl is the number of chlorine atoms, Cl- the number
1http://www.doc.ic.ac.uk/~anp/spim/Chemical.pdf
of chlorine ions. Two kinds of constant actions are then defined: ion stands for ionization and
deion for deionization. Finally, the transition system is expressed by a single equation, associating
to any state two possible effects: one in which ionization decrements Na and Cl (by prefix predecessor
function p) and increments Na+ and Cl- (by prefix successor function s), and the other that behaves
in the opposite way. Note that, according e.g. to the Gillespie selection algorithm in [
          <xref ref-type="bibr" rid="ref5">7</xref>
          ], the rate
of ionization and deionization is here proportional to the product of the two reactants, multiplied
by a constant value: we here enforce deionization factor as being twice that of ionization. By a
command of the kind
the system yields a trace of 300 steps, starting from state &lt;100,0,100,0&gt; and elapsed time 0.0;
an example of such trace is:
[300 : &lt; 100,0,100,0 &gt; @ 0.0],
[299 : &lt; 99,1,99,1 &gt; @ 5.2282294378567067e-5],
[298 : &lt; 98,2,98,2 &gt; @ 6.9551290710937174e-5],
[297 : &lt; 97,3,97,3 &gt; @ 8.5491215950091466e-5],
...
[3 : &lt; 57,43,57,43 &gt; @ 4.0424914101137542e-2],
[2 : &lt; 58,42,58,42 &gt; @ 4.0506028901053114e-2],
[1 : &lt; 59,41,59,41 &gt; @ 4.0661029058233995e-2],
[0 : &lt; 60,40,60,40 &gt; @ 4.0695684943167353e-2]
This output can be easily exploited to trace charts of the most relevant quantities for the application
at hand, as shown in the following.
4
4.1
        </p>
      </sec>
      <sec id="sec-1-4">
        <title>Collective Sort</title>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>General Scenario</title>
      <p>We consider a case inspired by the Swarm Intelligence problem known as brood sorting [3]. It
features a multiagent system where the environment is distributed and populated with items of
different kinds: the goal of agents is to collect and move items across the environment so as to
collect and order them according to an arbitrary shared criterion. This problem basically amounts
to clustering: homogeneous items should be grouped together and should be separated from others.
Moving to a typical context of MAS software environments, we consider the case of a fixed number
of artifacts resembling tuple spaces, hosting tuples of a known set of tuple types. The goal of agents
is to move tuples from one tuple space to the other until they are clustered in different tuple spaces
according to their type: we call this problem collective sort. Note that the agents are not aware
of their cooperative attitude since it is implicit in their goal, and they do not have to interact nor
need to perceive other agents.</p>
      <p>In several scenarios, sorting tuples may increase the overall system efficiency. For instance, it
can make it easier for an agent to find an information of interest based on its previous experience:
the probability of finding information where a previous and related one was found is high. Moreover,
when tuple spaces contain tuples of one kind only, it is possible to apply aggregation techniques to
improve their performance, and it is generally easier to manage and achieve load-balancing.</p>
      <p>Increasing system order however comes at a computational price. Achieving ordering is a task
that should be generally performed online and in background, i.e. while the system is running
and without adding a significant overhead to the main system functionalities. Indeed, it might
be interesting to look for suboptimum algorithms, which are able to guarantee a certain degree of
ordering in time.</p>
      <p>
        Nature is a rich source of simple but robust strategies; the behaviour we are looking for has
already been explored in the domain of social insects—the aforementioned brood sorting. Ants
perform similar tasks when organising broods and larvae: although their actual behaviour is still
not fully understood, there are several models that are able to mimic the dynamics of the system.
Ants wander randomly and their behaviour is modelled by two probabilities, respectively, the
,
(1)
where k1 and k2 are constant parameters and f is the number of items perceived by an ant in its
neighborhood: f may be evaluated with respect to the recently encountered items. To evaluate the
system dynamics it can be useful to provide a measure of the system order. Such an estimation
can be obtained by measuring the spatial entropy, as done e.g. in [
        <xref ref-type="bibr" rid="ref6">8</xref>
        ]. Basically, the environment
is subdivided into nodes and Pi is the fraction of items within a node, hence the local entropy is
Hi = −Pi log Pi. The sum of Hi having Pi &gt; 0 gives an estimation of the order of the entire system,
which is supposed to decrease in time, hopefully reaching zero (complete clustering).
4.2
      </p>
    </sec>
    <sec id="sec-3">
      <title>An Architecture for Implementing Collective Sort</title>
      <p>We conceive a multiagent system where a collection of agents are users of some tuple spaces,
forming their environment, and interact with/via them to achieve social goals: in particular, agents
are allowed to read, insert and remove tuples in the tuple spaces. Additionally, and transparently to
these agents, some further infrastructural support exists that provides tuple spaces with a sorting
service, in order to maintain a certain degree of order of tuples in tuple spaces. This service is
realised by a class of collector agents, spread in the nodes of the distributed environment along
with tuple spaces, and which will be responsible for the sorting task.</p>
      <p>We suppose that tuples belong to a well defined and globally shared set of tuple kinds. Each
collector agent is implicitly associated to the tuple space S of the node where it is situated. For
a specific single tuple kind K, the individual agent’s goal is to make sure that S is not wrongly
collecting tuples of the kind K. Since we look for collecting a tuple kind in only one tuple space,
this means that the agent should check that there is seemingly no other tuple space R collecting
tuples K more than what S is currently doing, in which case some tuple K has to be moved to
R. This scenario is depicted in Figure 1: an agent is moving a tuple of kind C from the left tuple
space to the top one, since the latter is collecting tuples C more—and similarly for D. Since we want
to perform this task online and in background, and with a fully-distributed, swarm-like algorithm,
agents cannot compute the probabilities in Equation 1 to decide whether to move or not a tuple:
the approach would not be scalable since it requires to count all the tuples for each tuple space,
which might not be practical.</p>
      <p>
        In general, a new primitive to access tuple spaces is needed which (i) can feature the locality
character, (ii) can take into account the different quantities of tuples occurring in the space at a
given time, and (iii) can possibly fit the semantics of some existing tuple space primitive—so as
not to impose a too severe semantic change. A reading primitive urd called uniform read is hence
introduced. This is a variant of the standard rd primitive that takes a tuple template and yields
any tuple matching the template: primitive urd instead chooses the tuple in a probabilistic way
[5000 : &lt; 0 @ (’a[100]) | (’b[100]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 1 @ (’a[0]) | (’b[100]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 2 @ (’a[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’b[50]) | (’c[50]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 3 @ (’a[50]) | (’b[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[50]) &gt;
among all the tuples that could be returned. For instance, if a tuple space has 10 copies of tuple
t(1) and 20 copies of tuple t(2), then the probability that operation urd (t(X))—where X is a logic
variable—returns t(2) is twice as much as t(1)’s. As standard tuple space models typically do not
directly implement this variant, it can e.g. be easily supported by some more expressive model like
ReSpecT tuple centres [
        <xref ref-type="bibr" rid="ref9">11</xref>
        ]—but we shall not deepen this implementation aspect in the following.
      </p>
      <p>Going back to our collective sort scenario, each agent has now the ability of performing a uniform
read over all tuple kinds of a tuple space: in general, if a tuple of kind K is (uniformly) read, the
agent can locally assume that, probabilistically, the tuple kind K is aggregating there more than
others.
4.3</p>
    </sec>
    <sec id="sec-4">
      <title>A Prototype Solution to the Problem</title>
      <p>Given this general architecture for modelling the collective sort problem, providing a self-organising
solution here means to identify the agents’ agenda—sequence of tasks—that could lead each agent
to achieve its individual goal. For one such solution to be adequate, complete sorting has to be
achieved as an emergent property of the overall system, form possibly any initial configuration of
tuples.</p>
      <p>Each agent is associated to its source tuple space S, seeks for moving tuples of kind K, and
works at a given rate r—the frequency at which each agent schedules the execution of the agenda.
The agent agenda we consider is as follows:
1. a destination tuple space D 6= S is drawn randomly;
(a) Dynamics of the winning tuple in each tuple space
(b) Dynamics of tuple space 0
(c) Entropy of tuple spaces
4. if K = KD 6= KS, then a tuple of kind K is moved from S to D.</p>
      <p>At the time the first task is executed, the agent is focussing on whether one tuple of kind K has
to be moved from S to D. At the third task, the agent perceives kind KS as the one aggregating
most in S, and KD as the one aggregating most in D. Then, the point of last task is that a tuple
of kind K is to be moved if and only if K is aggregating in D but not in S.</p>
      <p>The success of this distributed algorithm is clearly affected by both probability and timing
aspects. Will complete ordering be reached starting from a completely chaotic situation? Will
complete ordering be reached starting from the case where all tuples occur in just one tuple space?
And if ordering is reached, how many moving attempts are globally necessary? These are the sort
of questions that a designer would like to address at the early stages of design without actually
resorting to implementation, and that simulation can help addressing.
4.4</p>
    </sec>
    <sec id="sec-5">
      <title>Simulation</title>
      <p>
        We represent the distributed state of a system in Maude using a syntax of the kind:
[ ’a , ’b , ’c , ’d ] | { 0 , 1 , 2 , 3 } |
&lt; 0 @ (’a[100])| (’b[100]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 1 @ (’a[0]) | (’b[100]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 2 @ (’a[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’b[50]) | (’c[50]) | (’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt; |
&lt; 3 @ (’a[50]) | (’b[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) | (’d[50]) &gt;
(a) Sorting time
(b) Amount of tuples moved
meaning that we allow for the tuple kinds ’a, ’b, ’c, and ’d, and the tuple spaces identified by 0,
1, 2, and 3. Hence, the content of the tuple space 0 is represented as
      </p>
      <p>
        &lt; 0 @ (’a[100])|(’b[100])|(’c[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ])|(’d[
        <xref ref-type="bibr" rid="ref8">10</xref>
        ]) &gt;,
meaning we have 100 tuples of kind ’a, 100 of kind ’b, 10 of ’c, and 10 of ’d. The formal definition
of the agents’ agenda is defined in terms of easy transition rules—which are not reported for the
sake of brevity: interested readers can refer to [
        <xref ref-type="bibr" rid="ref2">4</xref>
        ] for specifications description2.
      </p>
      <p>We simulated traces of execution starting from the above state, obtaining e.g. the behaviour
shown in Figure 2. After some steps, some tuple starts moving from one space to the others. After
2024 time units, for instance, tuple kind ’c is already completely collected in tuple space 2. After
4600 time units, the system converged to complete sorting, as we expected. The chart in Figure 3
(a) reports the dynamics of the winning tuple in each tuple space, showing that complete sorting is
reached at different times in each space. The chart in Figure 3 (b) displays instead the evolution of
the tuple space 0: notice that only the tuple kind ’a aggregates here despite its initial concentration
was the same of tuple kind ’b.</p>
      <p>Although it would be possible to make some prediction, we do not know in general which tuple
space will host a specific tuple kind at the end of sorting: this is an emergent property of the system
and is the very result of the interaction of the tuple spaces through the agents! Indeed, the final
result is not completely random and the concentration of tuples will evolve in the same direction
most of the times. It is interesting to analyse the trend of the entropy of each tuple space as a way
to estimate the degree of order in the system through a single value: since the strategy we simulate
is trying to increase the inner order of the system we expect the entropy to decrease, as actually
shown in Figure 3 (c). If we denote with qij the amount of tuples of the kind i within the tuple
space j, nj the total number of tuples within the tuple space j, and k the number of tuple kinds,
then, the entropy associated with the tuple kind i within the tuple space j is</p>
      <p>Hij = qij log2 qij</p>
      <p>nj
nj
Hj =</p>
      <p>Pk
i=1 Hij
log2 k
and it is easy to notice that 0 ≤ Hij ≤ k1 log2 k. The entropy associated with a single tuple space
is then computed as
where the division by log2 k is introduced in order to obtain 0 ≤ Hj ≤ 1.</p>
      <p>
        2All the specifications cited in this article, charts and instructions for running simulations are available online at
http://www.alice.unibo.it
(2)
(3)
Considering the reference configuration of four tuple spaces and four tuple types, we made
several simulations varying the initial condition, i.e. tuples distribution among tuple spaces: different
configurations, i.e. consisting of a different numbers of tuple spaces and tuple types, will be
investigated in future works. Although, it initially seemed that the solution adopted always converged to
complete sorting, we later identified certain configurations that do not evolve properly. In
particular, there are certain states attracting the system trajectory and having positive entropy, that is,
characterised by a non-complete degree of sorting: we call such states local minima. In particular,
local minima seem not to be related to tuples distribution rather to the absence of tuples: an
example of such minimum is the following state
&lt; 0 @ (’a[
        <xref ref-type="bibr" rid="ref17">20</xref>
        ]) | (’b[0]) | (’c[0]) | (’d[0]) &gt; |
&lt; 1 @ (’a[140]) | (’b[0]) | (’c[0]) | (’d[0]) &gt; |
&lt; 2 @ (’a[0]) | (’b[260])| (’c[0]) | (’d[0]) &gt; |
&lt; 3 @ (’a[0]) | (’b[0]) | (’c[80]) | (’d[80]) &gt;
Tuple kind ’a is the only one aggregating in both spaces 0 and 1, and at the same time, kinds
’c and ’d aggregate both in space 3. Once the system reaches this state, no agent will ever move
a tuple for they all reached their individual goal—in no space a tuple kind can be found that
aggregates more than elsewhere. Moreover, such states are attractors—when the system starts in
a state sufficiently near to them, it ends up quickly converging to one such local minimum.
      </p>
      <p>The attempt of solving this problem is what lead us to the solution proposed in this article.
5
5.1</p>
      <sec id="sec-5-1">
        <title>Solving Collective Sort</title>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Modelling Vacuum</title>
      <p>There are two main reasons why the local minimum analysed above cannot be escaped: (i) in spite
tuple spaces 0 and 1 host a different number of tuples of kind ’a they are perceived in the same
way by agents, for they both have 100% of tuples ’a—instead, it would be desirable to consider
space 1 as a stronger aggregator—; (ii) there is no chance of moving a tuple ’c or ’d away from
space 3, for no other space aggregates them at all.</p>
      <p>These two issues can actually find a common solution by more carefully analysing the brood
sorting problem for social insects. There, an ant takes some brood and releases it where a new place
is found where brood has a greater concentration. Such a concentration is expressed as quantity of
brood over a unit of space. That is, implicitly the ant compares the amount of brood with that of
“vacuum” in the unit of space.</p>
      <p>If a similar notion of vacuum would be defined in our collective sort example, and e.g. the
same amount of vacuum would exist in each space, that could in principle allow to solve the two
issues above. On the one hand, space 0 could be recognised as having “less” tuples ’a than space
1—since space 1 occupies less space for vacuum, relatively—and hence movements from space 0 to
1 could be promoted most. On the other hand, some tuples ’c or ’d could be moved from space 3
to another one following the reasonable idea that “tuples that are not aggregating much should fill
the vacuum elsewhere”.</p>
      <p>To evaluate this solution, we add to tuple spaces another kind of tuple called vacuum, and
suppose the quantity of vacuum tuples in each space is the same and is fixed statically since the
beginning. The uniform read operation can now possibly yield a vacuum tuple: the more such
tuples exist with respect to those to be sorted, the more this event is likely. Then, following the
above discussion, we change the agent agenda as follows:
1. a destination tuple space D 6= S is drawn randomly;</p>
      <sec id="sec-6-1">
        <title>2. a urd is performed on S, yielding tuple kind KS;</title>
      </sec>
      <sec id="sec-6-2">
        <title>3. a urd is performed on D, yielding tuple kind KD;</title>
        <p>4. if K = KD 6= KS a tuple of kind K is moved from S to D.</p>
        <p>5. if K 6= KS and KD = vacuum a tuple of kind K is moved from S to D.</p>
        <p>Now both KS and KD could be vacuum. Our last task says that if the kind K is not aggregating
locally (K 6= KS) and we find significant vacuum in D (KD = vacuum), then we move a tuple of
kind K.</p>
        <p>We considered the following as starting state:
&lt; 0 @ (’a[50])| (’b[0]) | (’c[0]) | (’d[0]) &gt; |
&lt; 1 @ (’a[50])| (’b[0]) | (’c[0]) | (’d[0]) &gt; |
&lt; 2 @ (’a[0]) | (’b[100])| (’c[0]) | (’d[0]) &gt; |
&lt; 3 @ (’a[0]) | (’b[0]) | (’c[100])| (’d[100]) &gt;
By simulation we noticed that, independently from the number of vacuum tuples, the system
escapes the local minimum reaching complete ordering; But of course such a number can potentially
influence effectiveness and efficiency of the solution. Hence, in Figures 4 (a) and (b) we display
how the sorting time and the number of tuples moved varies with the number of vacuum tuples in
each tuple space. We note the following: (i) performance is actually dependent on the number of
vacuum tuples; (ii) as vacuum tuples tend to be the same as the final number of tuples in a tuple
space, i.e. 100%, performance degrades dramatically; (iii) sorting time has minima values around
20 and 75 vacuum tuples; (iv) the number of tuples moved increases with the vacuum. What we
learn from these charts is that on the one hand, this technique brings anyway to convergence, but
on the other, good performance is achieved if the number of vacuum tuples is around 20% of the
final number of tuples expected in each tuple space. There in fact, we have a good combination of
convergence time and resources allocated to sorting (i.e., number of tuples moved).
5.2</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Adapting Vacuum</title>
      <p>If we require a truly self-organising solution, we must devise a solution which works without knowing
a priori any information about tuple distribution. Hence, we cannot statically design the number
of vacuum tuples to be used in each tuple space: an adaptive technique has to be used to make
this number dynamic, namely, to make vacuum adapting to the situation at hand. In principle,
here we seek for a solution where vacuum is initially very low—guaranteeing to move tuples in
a proper way—and then, when/if we are about to reach a local minimum, agents make vacuum
locally increase guaranteeing to leave perilous states.</p>
      <p>Informally, the idea is to increase vacuum each time an agent discovers two spaces aggregating
the same tuple, and decrease vacuum when a tuple successfully moves towards an aggregator. That
is, we add to the above agent agenda the following tasks:
6. if K = KD 6= KS drop one vacuum tuple from S
7. if K = KD = KS add one vacuum tuple to S
In particular, we start from one vacuum tuple, and make sure that this level is never decreased.
The charts in Figure 4 (a) and (b) show how this new technique (horizontal line) compares with
the one with fixed vacuum. Namely, the behaviour we obtain has average values of convergence
time and tuples moved, staying sufficiently far from divergence and bad performance.</p>
      <p>Moreover, further simulations we performed on systems that converge with requiring the vacuum
management (as in Section 4), show that our adaptive vacuum management does not significantly
impact their performance, namely, it is a mechanism exploited on a by-need basis.
6</p>
      <sec id="sec-7-1">
        <title>Conclusion and Future Works</title>
        <p>
          In this article we focussed on stochastic aspects in the designing of emergent coordination
mechanisms, an emergent issue in the research on MAS environments and in related research contexts.
The collective sort problem discussed is a paradigmatic one: indeed, it emphasises the typical
unpredictability of environment in coordination, e.g. in tuple space scenario, tuples distribution
in space. Any attempt to find general mechanisms to achieve global properties about such
configurations, will likely issue the same problems we identified in collective sort: complete/partial
convergence, performance vs. resource usage, need for adaptive mechanisms. Starting from the
work in [
          <xref ref-type="bibr" rid="ref2">4</xref>
          ], where the Maude library for simulation is described in detail and the collective sort
problem is sketched, in this paper we solved these problems developing a full solution.
        </p>
        <p>Several interesting future works can be pursued:
• In the context of collective sort, we plan to evaluate other load-balancing approaches,
optimising the convergence to complete order, the vacuum mechanism, and studying the performance
of our solution as tuple configurations change dynamically.
• The library itself is currently a very simple prototype, but we believe it could be improved in
several ways and become a very practical simulation tool.
• Another interesting idea would be to apply our library to some existing coordination models
like TOTA, and provide the necessary tests for the proposed algorithms.</p>
      </sec>
      <sec id="sec-7-2">
        <title>References</title>
        <p>[1] Recursive porous agent simulation toolkit (repast),</p>
        <p>http://repast.sourceforge.net/.
2006.</p>
        <p>Available online at
[3] E. Bonabeau, M. Dorigo, and G. Theraulaz. Swarm Intelligence: From Natural to Artificial
Systems. Santa Fe Institute Studies in the Sciences of Complexity. Oxford University Press,
Inc., 1999.</p>
        <p>Au[13] V. D. Parunak. ’Go To The Ant’: Engineering principles from natural agent systems. Annals
of Operations Research, 75:69–101, 1997.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Swarm</surname>
          </string-name>
          ,
          <year>2006</year>
          . Available online at http://www.swarm.org/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Casadei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Gardelli</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Viroli</surname>
          </string-name>
          .
          <article-title>Simulating emergent properties of coordination in Maude: the collective sorting case</article-title>
          .
          <source>In 5th International Workshop on Foundations of Coordination Languages and Software Architectures (FOCLASA'06)</source>
          , pages
          <fpage>57</fpage>
          -
          <lpage>75</lpage>
          , CONCUR 2006, Bonn, Germany,
          <volume>31</volume>
          Aug.
          <year>2006</year>
          . University of M´alaga, Spain. Proceedings.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Clavel</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          <article-title>Dur´an, S</article-title>
          . Eker,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lincoln</surname>
          </string-name>
          ,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>Mart´ı-</article-title>
          <string-name>
            <surname>Oliet</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Meseguer</surname>
            , and
            <given-names>C. Talcott. Maude</given-names>
          </string-name>
          <string-name>
            <surname>Manual</surname>
          </string-name>
          . Department of Computer Science University of Illinois at Urbana-Champaign,
          <volume>2</volume>
          .2 edition,
          <source>December 2005. Version 2</source>
          .2 is available online at http://maude.cs.uiuc.edu.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Gardelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Viroli</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Omicini</surname>
          </string-name>
          .
          <article-title>On the role of simulations in engineering self-organising MAS: The case of an intrusion detection system in TuCSoN</article-title>
          . In Engineering
          <string-name>
            <surname>Self-Organising</surname>
            <given-names>Systems</given-names>
          </string-name>
          , volume
          <volume>3910</volume>
          <source>of LNAI</source>
          , pages
          <fpage>153</fpage>
          -
          <lpage>168</lpage>
          . Springer,
          <year>2006</year>
          . 3rd International Workshop (ESOA
          <year>2005</year>
          ), Utrecht,
          <source>The Netherlands, 26 July</source>
          <year>2005</year>
          .
          <article-title>Revised Selected Papers</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D. T.</given-names>
            <surname>Gillespie</surname>
          </string-name>
          .
          <article-title>Exact stochastic simulation of coupled chemical reactions</article-title>
          .
          <source>The Journal of Physical Chemistry</source>
          ,
          <volume>81</volume>
          (
          <issue>25</issue>
          ):
          <fpage>2340</fpage>
          -
          <lpage>2361</lpage>
          ,
          <year>1977</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>H.</given-names>
            <surname>Gutowitz</surname>
          </string-name>
          .
          <article-title>Complexity-seeking ants</article-title>
          .
          <source>In Proceedings of the Third European Conference on Artificial Life</source>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Mamei</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          .
          <article-title>Programming pervasive and mobile computing applications with the tota middleware</article-title>
          .
          <source>In Pervasive Computing and Communications</source>
          ,
          <year>2004</year>
          .
          <article-title>PerCom 2004</article-title>
          . Proceedings of the Second IEEE Annual Conference on, pages
          <fpage>263</fpage>
          -
          <lpage>273</lpage>
          . IEEE,
          <year>March 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R. D.</given-names>
            <surname>Nicola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Latella</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Massink</surname>
          </string-name>
          .
          <article-title>Formal modeling and quantitative analysis of Klaim-based mobile systems</article-title>
          .
          <source>In SAC '05: Proceedings of the 2005 ACM symposium on Applied computing</source>
          , pages
          <fpage>428</fpage>
          -
          <lpage>435</lpage>
          , New York, NY, USA,
          <year>2005</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Omicini</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Denti</surname>
          </string-name>
          .
          <article-title>From tuple spaces to tuple centres</article-title>
          .
          <source>Science of Computer Programming</source>
          ,
          <volume>41</volume>
          (
          <issue>3</issue>
          ):
          <fpage>277</fpage>
          -
          <lpage>294</lpage>
          , Nov.
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Omicini</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          .
          <article-title>Coordination for Internet application development</article-title>
          .
          <source>tonomous Agents and Multi-Agent Systems</source>
          ,
          <volume>2</volume>
          (
          <issue>3</issue>
          ):
          <fpage>251</fpage>
          -
          <lpage>269</lpage>
          , Sept.
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Phillips</surname>
          </string-name>
          .
          <source>The Stochastic Pi Machine (SPiM)</source>
          ,
          <year>2006</year>
          . Version 0.042 available online at http://www.doc.ic.ac.uk/˜anp/spim/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C.</given-names>
            <surname>Priami</surname>
          </string-name>
          .
          <article-title>Stochastic pi-calculus</article-title>
          .
          <source>The Computer Journal</source>
          ,
          <volume>38</volume>
          (
          <issue>7</issue>
          ):
          <fpage>578</fpage>
          -
          <lpage>589</lpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ricci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Viroli</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Omicini</surname>
          </string-name>
          .
          <article-title>Construenda est CArtAgO: Toward an infrastructure for artifacts in MAS</article-title>
          .
          <source>In Cybernetics and Systems</source>
          <year>2006</year>
          , volume
          <volume>2</volume>
          , pages
          <fpage>569</fpage>
          -
          <lpage>574</lpage>
          , Vienna, Austria,
          <fpage>18</fpage>
          -
          <lpage>21</lpage>
          Apr.
          <year>2006</year>
          .
          <article-title>Austrian Society for Cybernetic Studies</article-title>
          .
          <source>18th European Meeting on Cybernetics and Systems Research (EMCSR</source>
          <year>2006</year>
          ), 5th International Symposium “
          <article-title>From Agent Theory to Theory Implementation” (AT2AI-5)</article-title>
          . Proceedings.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Sauter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. S.</given-names>
            <surname>Matthews</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. V. D.</given-names>
            <surname>Parunak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Brueckner</surname>
          </string-name>
          .
          <article-title>Performance of digital pheromones for swarming vehicle control</article-title>
          .
          <source>In 4rd International Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS</source>
          <year>2005</year>
          ),
          <source>July 25-29</source>
          ,
          <year>2005</year>
          , Utrecht, The Netherlands, pages
          <fpage>903</fpage>
          -
          <lpage>910</lpage>
          . ACM,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Viroli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Holvoet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ricci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schelfthout</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          .
          <article-title>Infrastructures for the environment of multiagent systems</article-title>
          .
          <source>Autonomous Agents and Multiagent Systems</source>
          ,
          <year>2006</year>
          . In Press, available online.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Viroli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Omicini</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ricci</surname>
          </string-name>
          .
          <article-title>Engineering MAS environment with artifacts</article-title>
          .
          <source>In 2nd International Workshop “Environments for Multi-Agent Systems” (E4MAS</source>
          <year>2005</year>
          ),
          <source>AAMAS</source>
          <year>2005</year>
          , Utrecht,
          <source>The Netherlands, 26 July</source>
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>D.</given-names>
            <surname>Weyns</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. V. D.</given-names>
            <surname>Parunak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Michel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Holvoet</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Ferber</surname>
          </string-name>
          .
          <article-title>Environments for multiagent systems state-of-the-art and research challenges</article-title>
          .
          <source>In Environments for MultiAgent Systems</source>
          , volume
          <volume>3374</volume>
          <source>of LNAI</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>47</lpage>
          . Springer-Verlag,
          <year>Jan</year>
          .
          <year>2005</year>
          . 1st International Workshop (E4MAS
          <year>2004</year>
          ), New York, NY, USA, 19
          <article-title>July 2004</article-title>
          .
          <article-title>Revised Selected and Invited Papers</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Weyns</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schelfthout</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Holvoet</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Lefever</surname>
          </string-name>
          .
          <article-title>Decentralized control of e'gv transportation systems</article-title>
          .
          <source>In 4th International Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS</source>
          <year>2005</year>
          ),
          <source>July 25-29</source>
          ,
          <year>2005</year>
          , Utrecht, The Netherlands, pages
          <fpage>67</fpage>
          -
          <lpage>74</lpage>
          . ACM,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>