<!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>
      <title-group>
        <article-title>Agent based Modeling and Simulation with ActoMoS</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Agostino Poggi</string-name>
          <email>agostino.poggi@unipr.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dipartimento di Ingegneria dell'Informazione</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Università degli Studi di Parma Parma</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>17</fpage>
      <lpage>19</lpage>
      <abstract>
        <p>- ActoMoS is an actor-based software library for the development of agent-based models and for their simulation. This library offers software components and tools for modeling and simulating systems in different application domains. In particular, it allows the definition of agent model by reusing or extending a set of predefined agent models and supports efficient and scalable agent-based simulations involving a large number of agents. This paper, after an introduction of the actor model and implementation used by the software library, underlines the main features of the software library and presents its experimentation in some well-known domains.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Keywords – Agent Based Modeling and Simulation, Actor
model, Java.</p>
      <p>I.</p>
      <p>INTRODUCTION</p>
      <p>Simulation models are increasingly being used for solving
problems and for helping in decision-making. The size and
complexity of systems that are usually modeled are ever
increasing. Modeling and simulation of such systems is
challenging because it requires suitable and efficient modelling
and simulation tools that take advantage of the power of
current computing architectures, programming languages and
software frameworks, and that make easy the development of
applications.</p>
      <p>
        Agent-based modeling and simulation (ABMS) tools and
techniques seem be the most suitable means to cope with such
challenges [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. In fact, ABMS has been and is widely
used with success for studying complex and emergent
phenomena in many research and application areas, including
agriculture, biomedical analysis, ecology, engineering,
sociology, market analysis, artificial life, social studies, and
others fields. However, the limit of such tools and libraries is
that their agent models shown a very limited use of the features
offered by the computational agents found in Multi-Agent
Systems (MAS) or Distributed Artificial Intelligence (DAI)
techniques [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Therefore, it may be difficult to model some
kinds of problem that, for example, require complex interaction
among agents, and is usually less natural to distribute a
simulation on a network of computational nodes.
      </p>
      <p>This paper presents an actor based software library,
ActoMoS, (Actor Modeling and Simulation) providing a set of
suitable software components for the development of ABMS
applications, the visualization of the simulations and the
analysis of their results. The next section provides an overview
of the software framework used for the implementation of the
software library. Section 3 describes the features of the
software library and shows how it makes easy the developing
of agent based models and simulations. Section 4 shows its
experimentation in some well-known ABMS application
domains. Section 5 introduces related work. Finally, section 6
concludes the paper by discussing its main features and the
directions for future work.</p>
      <p>II.</p>
    </sec>
    <sec id="sec-2">
      <title>CODE SOFTWARE FRAMEWORK</title>
      <p>
        CoDE (Concurrent Development Environment) is an
actorbased software framework aimed at both simplifying the
development of large and distributed complex systems and
guarantying an efficient execution of applications [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. CoDE
is implemented by using the Java language and takes advantage
of preexistent Java software libraries and solutions for
supporting concurrency and distribution. CoDE has a layered
architecture composed of an application and a runtime layer.
The application layer provides the software components that an
application developer needs to extend or directly use for
implementing the specific actors of an application. The runtime
layer provides the software components that implement the
CoDE middleware infrastructures to support the development
of standalone and distributed applications.
      </p>
      <p>In CoDE a system is based on a set of interacting actors
that perform tasks concurrently. An actor is an autonomous
concurrent object, which interacts with other actors by
exchanging asynchronous messages. Communication between
actors is buffered: incoming messages are stored in a mailbox
until the actor is ready to process them. After its creation, an
actor can change several times its behavior until it kills itself.
Each behavior has the main duty of processing incoming
messages through some handlers called cases. Each case can
process only the messages that match a specific message
pattern represented by an object that can apply a combination
of constraints on the value of all the fields of a message.
Therefore, if an unexpected message arrives, then the actor
mailbox maintains it until a next behavior will be able to
process it.</p>
      <p>
        An actor can perform different types of action. It can send
messages to other actors or to itself, create new actors, update
its local state, set a timeout for waiting for the next message,
change its behavior and kill itself. An actor can be viewed as a
logical thread that implements an event loop [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. This
event loop perpetually processes events representing the
reception of messages, the exchange of behavior and the firing
type of implementation represents special passive actors, called
shared actors, which get messages from a shared queue. The
first two types of scheduler implementation drive the execution
of either active or passive actors (active and passive
schedulers). The third type of implementation is used for
shared actors (shared schedulers). Finally, the forth type of
implementation is used in actor spaces containing both active
and passive actors (hybrid schedulers).
      </p>
      <p>The identification of the best couple of actor and scheduler
implementations for a specific application mainly depends on
the number of actors, the number of exchanged messages, the
preeminent type of communication used by actors (i.e.,
pointto-point or broadcast) and the possible presence of a subset of
actors that consume a large part of the computational resources
of the application. Table 1 shows what should be the best
choices for a qualitative partition of the values of the previous
parameters. In particular, the third column indicates the
preeminence of either point-to-point communication (P) or
broadcast communication (B), the forth column indicates the
presence/absence of a subset of heavy actors and the word
“any” is used when the value of the associate parameter has not
effect on the choice of actor and scheduler implementations.
actors
messages</p>
      <p>Heavy
scheduler
of timeouts. In response on a reception of a message or the
firing of a timeout, the actor finds and executes the suitable
case for the processing of such an event. When the event
represents the change of the behavior, the actor moves to the
new behavior. In particular, the API of an actor does not offer
any action for managing the reception of messages and for
monitoring the firing of timeouts. In fact, an application
developer uses an actor implementation provided by the CoDE
runtime and needs only to provide the behaviors of the
different actors of the application by defining the methods for
their initialization and the message pattern – process method
pairs of their cases.</p>
      <p>Depending on the complexity of the application and on the
availability of computing and communication resources, one or
more actor spaces can manage the actors of the application and
so an application can be distributed on a network of
computational nodes. An actor space acts as “container” for a
set of actors and provides the services necessary for their
execution. In particular, an actor space takes advantages of two
special actors: the scheduler and the service provider. The
scheduler manages the concurrent execution of the actors of the
actor space. The service provider enables the actors of an
application to perform new kinds of action. The current
implementation of the software framework provides services
for supporting the broadcast of messages, the exchange of
messages through the “publish and subscribe” pattern, the
mapping of actors address to symbolic names, the mobility of
actors, the interaction with users through emails and the
creation of actors. The last service is important because an
actor cannot directly create actors in other actor spaces, but can
delegate it to their service providers.</p>
      <p>One of the most important features of CoDE is the
possibility of configuring an application with different
implementations of the runtime components. It allows the use
of different actor implementations, different schedulers and
service providers. The type of the implementation of an actor is
one of the factors that mainly influence the attributes of the
execution of an application. In particular, actor implementation
can be divided in two classes that allow to an actor either to
have its own thread (from here named active actors) or to share
a single thread with the other actors of the actor space (from
here named passive actors). Moreover, the duties of a scheduler
depend on the type of the actor implementation. Of course, a
scheduler for passive actors is different from a scheduler for
active actors, but for the same kind of actor can be useful to
have different scheduler implementations. For example, it can
allow the implementation of “cooperative” schedulers in which
actors can cyclically perform tasks varying from the processing
of the first message in the buffer to the processing of all the
messages in it.</p>
      <p>
        The most important decision that influence the quality of
the execution of an application is the choice of the actor and
scheduler implementations. In fact, the use of one or another
couple of actor and scheduler causes large differences in the
performance and in the scalability of the applications [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>CoDE provides three types of actor implementation and
four types of scheduler. The first two types of actor
implementation represent active and passive actors. The third
few
many
many
many
many
any
any
few
many
any</p>
      <p>Finally, an actor space can enable the execution of an
additional runtime component called logger. The logger has the
possibility to store (or to send to another application), in a
textual or binary format, the relevant information about the
execution of the actors of the actor space (e.g., creation and
deletion of actors, exchange of messages, processing of
messages and timeouts, exchange of behaviors and failures).
Therefore, users and other applications can use such
information for understanding the activities of an application,
for diagnosing the causes of execution problems, and for
solving them.</p>
      <p>
        The features of the actor model and the flexibility of its
implementation make CoDE suitable for building ABMS
applications [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. In particular, actors have the suitable features
for defining agent models that can be used in ABMS
applications and to model the computational agents found in
MAS) and DAI systems. In fact, actors and computational
agents share certain characteristics: i) both react to external
stimuli (i.e., they are reactive), ii) both are self-contained,
selfregulating, and self-directed, (i.e., they are autonomous), and
iii) both interact through asynchronous messages and such
messages are the basis for their coordination and cooperation
(i.e., they are social). Moreover, given that actors interact only
through messages and there is not a shared state among them, it
is not necessary to maintain an additional copy of the
environment to guarantee that agents decide their actions with
the same information (thing that is usually necessary in some
application domain with other ABMS platforms). Finally, the
use of messages for exchanging state information decouples the
code of agents. In fact, agents do not need to access directly to
the code of the other agents to get information about them, and
so the modification of the code of a type of agent should cause
lesser modifications in the code of the other types of agent.
Finally, the use of actors simplifies the development of real
computational agents in domain where, for example, they need
to coordinate themselves or cooperate through direct
interactions.
      </p>
      <p>
        Moreover, the use of CoDE simplify the development of
flexible and scalable ABMS applications. In fact, the use of
active and passive actors allows the development of
applications involving large number of actors, and the
availability of different schedulers and the possibility of their
specialization allow a correct and efficient scheduling of the
agents in application domains that require different scheduling
algorithms [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Moreover, the efficient implementation of
broadcasting and multicast removes the overhead given to the
need that agents must often diffuse the information about their
state to the other agents of the application (e.g., their location in
a spatial domain).
      </p>
      <p>However, CoDE does not offer specific components for
ABMS (e.g., simulators, agent models and simulation viewers).
Therefore, we defined a software library, called ActoMoS
(Actor Modelling and Simulation), that, starting from CoDE,
provides a set of software components and tools for making
easy the development of ABMS applications.</p>
      <p>In large part of ABMS platforms usually a simulation is
given by a sequence of steps where each agent needs only to
get information about its surround (i.e., about a subset of the
other agents and about the environment) and then to use such
information for deciding its actions. In ActoMoS the simulation
is similar, but agents get information about agents and the
environment through messages.</p>
      <p>In ActoMoS, to simplify the interaction between agents and
the environment, the relevant parts of an environment are
represented by a set of actors whose goals are to inform the
agents acting in the environment about their presence and their
state, and to update their state when the agents act on them.
Given that the behavior of such actors is similar to the one
expressed by the agents acting in the environment, we call both
agents, but we divided them in active and passive agents.
Active agents are the typical agents of an ABMS, i.e., they
represent the entities able to move and cooperate with other
entities acting in the environment. Passive agents define the
environment of an ABMS, i.e., they represent the relevant
elements of the environment (e.g., in a spatial domain the
obstacles and the reference points for the movement of the
active agents).</p>
      <p>Such agents are usually implemented taking advantage of
the shared actor implementation provided by CoDE, but it is
necessary to develop a specific scheduler. Such a scheduler
executes repeatedly all the agents and after each execution step
broadcasts them a “clock” message. This last message allows
to the agents to understand that they have all the information
for deciding their actions, therefore, they decide, perform some
actions and, at the end, broadcast the information about their
new state.</p>
      <p>In ActoMos, all the agents are usually represented by one
or more actor behaviors that process the input messages
through two cases. The first case processes the messages
informing an agent about the state of the other agents. The
second case processes the “clock” messages. However, while
active agents exchange messages and perform other types of
action (e.g., in a spatial domain to change their location), often,
passive agents have the only duty of sending messages for
informing the active agents about their presence (e.g.,
immutable obstacles or path points in a spatial domain).
Therefore, such passive agents are represented by an actor
behavior providing a case that get the “clock” messages for
deciding when sending the information about their presence
and state.</p>
      <p>Of course, different types of agent have different
implementations of the cases of their behaviors. In particular,
ActoMoS provides some abstract behavior implementations for
developing applications in different domains. Such
implementations define the state information that an agent need
to maintain in its specific application domain and provides a set
of abstract methods for processing incoming information and
for performing the actions in response to the “clock” messages.</p>
      <p>Often the modelling of some systems (e.g., social networks)
requires a massive number of agents. However, in such kind of
systems, usually only a part of them is simultaneously active
and the actions of the different agents do not need a
synchronization. Therefore, it is necessary a scheduler that can
manage a massive number of agents, but that can try to
optimize the execution by scheduling only the active agents.
The solution we implemented derives from the virtual memory
techniques used by operating systems: agents increment an
inactivity counter in the scheduling cycles in which they do not
process messages and reset it in the cycles in which they
process a message. The scheduler can get the value of such
counters and can move an actor in a persistent store when its
inactivity counter becomes greater than a fixed (or dynamic)
threshold. The scheduler reload an actor from the persistent
store when it receives a new message from another agent.</p>
      <p>Of course, the number of active agents can vary over the
simulation, but the quality of the simulation can be guaranteed
if the number of the agents, maintained by the scheduler,
remains in a range that depends on the available computational
resources. The adopted solution, to limit to the number of
active actors and to guarantee good performances, is to provide
a scheduler able to move an inactive agent in the persistent
storage on the basis of a variable number of inactive cycles. In
particular, this number becomes high when the number of
scheduled agents decreases (i.e., the scheduler does not spend
time for storing agents in the persistence storage and reloading
them) and becomes more and more low with the increasing of
the number of scheduled agents.</p>
      <p>Two important features that an ABMS framework should
provide are the availability of graphical tools for the
visualization of the evolution of simulations and the possibility
of analyzing the data obtained from simulations. CoDE does
not provide any specific tool for ABMS, but provides a logging
service that allows the recording of the Java objects describing
the relevant actions of an actor (i.e., its initialization, reception,
sending and processing of messages, creation of actors, change
of behavior, and its shutdown). Therefore, we developed two
graphical tools, that use such logging data for visualizing the
evolution of simulations in spatial domains based on
continuous and discrete 2D space representations, and another
tool that use them for extracting statistical information about
simulations. Fig. 9 shows two views of the GUI that supports
2D spatial simulations. In particular, it presents the initial and
final views of the evacuation of a large number of pedestrians
from a building.</p>
      <p>
        We are using ActoMoS for the simulation of two
wellknown problems in a spatial environment: the prey-predator
pursuit problem [2], and the crowd evacuation problem [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ]. It
is possible because ActoMoS offers all the software
components necessary for modelling agents in a continuous or
discrete 2D (or 3D) space (e.g., implementation of the
algorithms that drive the movement of agents, agent models
representing obstacles and path points).
      </p>
      <p>The first experimentation of the prey-predator pursuit
problem had be done in a 2D discrete space. Its main result is
the definition of a flexible agent model that allows the
execution of simulations with different algorithms, which drive
the movement of the prey and of the predators, by simply
changing the values of some configuration properties.
Moreover, this agent model allows the solution of the conflicts
among the moves of agents (i.e., two or more agents cannot
share the same cell) with different coordination algorithms. The
only constraint for using such coordination algorithms is that
each agent needs to perform the current move, compute its next
move and inform the other agents about it at each cycle.
Therefore, each agent knows the intentions of the other agents
before performing its move and performs the move only if the
rules of the coordination algorithm allow it. This constraint
does not cause a different behavior of the prey and the
predators respect to the implementations of other ABMS
platforms, because even in this implementation an agent can
only either perform the previously decided move or remain in
the same cell.</p>
      <p>
        The first experimentation of the crowd evacuation problem
had be done in a 2D continuous space and by implementing the
agents of the crowd by using the boid model [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ]. This
experimentation take advantage of an extended set of boid rules
that allow to agents to reach a meeting point outside the
building by following either other agents or a set of alternative
paths. Even in this case, the main result of the experimentation
is the definition of a flexible agent model. Such a model allows
the definition of different types of simulation by using different
sets of boid rules. In particular, the experimentation shows how
the possibility to follow other agents and the presence of paths
towards the exit points make possible successful evacuations.
Moreover, the use of the boid rules shows how is possible to
obtain intelligent behaviors without using complex AI
algorithms. However, the “calibration" of the model requires in
some cases a large number of simulations to obtain a successful
evacuation where agents both do not collide among them or
with obstacles and do not lost time inside the building. In fact,
the movement of each agent of the crowd is defined by the boid
rules and so it is necessary to find the correct weights with
which such rules contribute to the movement of the agent.
      </p>
      <p>
        We are working for some time in the analysis and
simulation of social networks [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In particular, currently
we are using ActoMoS for designing a peer-to-peer social
network that can guarantee the same services of the centralized
ones. The problem of peer-to-peer social network is that they
do not have a centralized service that maintain the information
shared among the users and so, for example, is difficult for a
user that wakes up after a period of inactivity to get all the
information of her/his interest that has been published when
she/he was offline.
      </p>
      <p>In particular, we defined a model of a peer-to-peer social
network where a user can move from the online and offline
state, publish new information and subscribe to new types of
information. Each user is defined by a simple agent, which
performs her/his actions using non-deterministic rules.
Moreover, such an agent has also the duty to cooperate with the
other agents to avoid that offline users lost information of their
interest. Of course, the actors representing the online users
should perform such a task. Moreover, its implementation
should have the goals of limiting the amount of the recovered
information (i.e., only the information of interest for the offline
users should be recovered) and of guaranteeing privacy (i.e.,
users should not have additional information about the other
users through the execution of such a task).</p>
      <p>The experimentation is in the initial phase and we obtain
good results with a simple algorithm of election that allows to
the agents, representing the users that are moving offline, to
assign the recording of the information of their interest, to
agents of the users that remain online. The problems we need
to solve is that in some situations there are few or no online
users. In fact, when there are few users then their agents are
overloaded in the recording of the information for the other
users. When there are not users, when a user becomes online
again it cannot have the lost information and cannot act as
recorder for the other users. The solution that we are studying
to solve such two problems is based on the introduction of
“auxiliary agents”, i.e., agents that: i) do not represent a user,
ii) are running on computational nodes that are usually
operative, and iii) have only the task of recording the
information for the offline users.</p>
      <p>V.</p>
      <p>RELATED WORK</p>
      <p>A lot of work has been done in the field of agent-based
modeling and simulation. Moreover, some researchers used the
actor model for the modeling and simulation of complex
systems. The rest of the section presents some of the most
interesting works presented in the previous two fields.</p>
      <p>
        Swarm [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] is the ancestor of many of the current ABMS
platforms. The basic architecture of Swarm is the simulation of
collections of concurrently interacting agents, and this
paradigm is extended into the coding, including agent inspector
actions as part of the set of agents. So in order to inspect one
agent on the display, you must use another hidden,
noninteracting agent. Swarm is a stable platform, and seems
particularly suited to hierarchical models. Moreover, it supports
good mechanisms for structure formation using multi-level
feedback between agents, groups of agents, and the
environment (all treated as agents).
      </p>
      <p>
        Ascape [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] is a framework for developing and analyzing
agent based models following some of the ideas of Swarm.
However, it is somewhat easier to develop models with Ascape
than with Swarm. Indeed, its goal is to allow people with only
a little programming experience to develop quite complex
simulations by providing a range of end user tools. Ascape is
implemented in Java and users would require some ability to
program in Java together with understanding of the object
orientation philosophy.
      </p>
      <p>
        NetLogo [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ] is an ABMS platform based on the Logo
programming language. Its initial goal was to provide a
highlevel platform allowing students, down to the elementary level,
to build and learn from simple ABMS applications. Now it
offers many sophisticated capabilities and tools that make it
suitable for complex applications too. Moreover, a big
advantage respect to the other platforms is the simplicity of its
own language.
      </p>
      <p>
        Repast [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] is a well-established ABMS platform with
many advanced features. It started as a Java implementation of
the Swarm toolkit, but rapidly expanded to provide a very full
featured toolkit for ABMS. Although full use of the toolkit
requires Java programming skills, the facilities of the last
implementations allow the development of simple models with
little programming experience [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
      <p>
        MASON [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] is a Java ABMS tool designed to be flexible
enough to be used for a wide range of simulations, but with a
special emphasis on “swarm” simulations of a very many (up
to millions of) agents. MASON is based on a fast, orthogonal,
software library to which an experienced Java programmer can
easily add features for developing and simulating models in
specific domains.
      </p>
      <p>
        ATC [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is a framework for the modeling and validation of
real-time concurrent systems based on the actor model. In
particular, it inherits all the functional capabilities of actors and
further allows the expression of most of the temporal
constraints pertaining to real-time systems: exceptions, delays
and emergencies.
      </p>
      <p>
        The Adaptive Actor Architecture [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is an actor-based
software infrastructure designed to support the construction of
large-scale multi-agent applications by exploiting distributed
computing techniques for efficiently distribute agents across a
distributed network of computers. This software infrastructure
uses several optimizing techniques to address three
fundamental problems related to agent communication between
nodes: agent distribution, service agent discovery and message
passing for mobile agents.
      </p>
      <p>
        An actor-based infrastructure for distributing Repast
models is proposed in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. This solution allows, with minimal
changes, to address very large and reconfigurable models
whose computational needs (in space and time) can be difficult
to satisfy on a single machine. Novel in the approach is an
exploitation of a lean actor infrastructure implemented in Java.
In particular, actors bring to RePast agents migration,
locationtransparent naming, efficient communication, and a
controlcentric framework.
      </p>
      <p>
        Statechart actors [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] are an implementation of the actor
computational model that can be used for building a
multiagent architecture suitable for the distributed simulation of
discrete event systems whose entities have a complex dynamic
behavior. Complexity is dealt with by specifying the behavior
of actors through “distilled” statecharts [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Distribution is
supported by the theatre architecture [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. This architecture
allows the decomposition of a large system into sub-systems
(theatres) each hosting a collection of application actors,
allocated for execution on to a physical processor.
      </p>
      <p>
        Simulator X [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] is a software research platform for
intelligent interactive simulation that takes advantage of the
actor model for supporting fine-grained concurrency and
parallelism. The architecture uses actors to obtain a distributed
application state and execution model. Simulator X is mainly
used in the areas of real-time interactive systems, virtual reality
and multimodal interaction.
      </p>
      <p>VI.</p>
    </sec>
    <sec id="sec-3">
      <title>CONCLUSIONS</title>
      <p>
        This paper presented a software library, called ActoMoS,
which makes easy the development of agent-based models and
supports efficient agent-based simulations involving a large
number of agents. ActoMoS has been implemented on the top
of CoDE (Concurrent Development Environment) that is an
actor-based software framework aimed at both simplifying the
development of large and distributed complex systems and
guarantying an efficient execution of applications [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>
        ActoMoS has been experimented with success in the
development of ABMS applications. Of course, its current
implementation does not provide all the features of the most
known ABMS platforms (i.e., NetLogo [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], Repast [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] and
MASON [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]). However, the use of the actor model for the
definition of agents allows to define real agent models where
agent interact through the exchange of messages avoiding the
use of a shared state and it simplifies the development of
nontrivial applications where the management of concurrent
activities may be of primary importance. Moreover, the
availability of techniques to reduce the overhead of the
diffusion of broadcast and multicast messages generally allows
the development of applications whose performances are
comparable with the ones provide by applications implemented
by platforms that do not use messages for diffusing the state of
the environment and of the agents of applications.
      </p>
      <p>
        Current work has the goals of extending the functionalities
of the software library and of continuing its current
experimentation. Moreover, future work will be dedicated to
the modeling and simulation of systems for e-business services
[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], collaborative work services [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and for the management
of information in pervasive environment [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ][
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G.A.</given-names>
            <surname>Agha</surname>
          </string-name>
          , “
          <article-title>Actors: A Model of Concurrent Computation in Distributed Systems</article-title>
          ,” Cambridge, MA, USA: MIT Press,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>M.</given-names>
            <surname>Benda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Jagannathan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Dodhiawalla</surname>
          </string-name>
          , “
          <article-title>On optimal cooperation of knowledge sources,”</article-title>
          <source>Tech. Rep. BCS-G2010-28</source>
          , Boeing AI Center, Bellevue, WA, USA,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , E. Franchi,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,.
          <article-title>“Selected models for agent-based simulation of social networks,”</article-title>
          <source>in Proc. of 3rd Symp. on Social Networks and Multiagent Systems (SNAMAS</source>
          <year>2011</year>
          ), York, UK.
          <year>2011</year>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Franchi</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Agent-based interpretations of classic network models,” Computational and Mathematical Organization Theory</article-title>
          , Vol.
          <volume>19</volume>
          , No.
          <volume>2</volume>
          ,
          <issue>2013</issue>
          , pp.
          <fpage>105</fpage>
          -
          <lpage>127</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “Ubiquitous Information Agents,”
          <source>International Journal on Cooperative Information Systems</source>
          , Vol.
          <volume>11</volume>
          , No.
          <fpage>3</fpage>
          -
          <issue>4</issue>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>244</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          ,
          <article-title>"An Actor Based Software Framework for Scalable Applications," in Internet and Distributed Computing Systems</article-title>
          , Berlin, Germany: Springer,
          <year>2014</year>
          , pp.
          <fpage>26</fpage>
          -
          <lpage>35</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>Boualem</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Yamina</surname>
          </string-name>
          , “
          <article-title>On equivalences for actors expressions and configurations of ATC,” WSEAS Transactions on Computers vol</article-title>
          .
          <volume>4</volume>
          , no.
          <issue>9</issue>
          , pp.
          <fpage>1045</fpage>
          -
          <lpage>1053</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Cicirelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Furfaro</surname>
          </string-name>
          , and L. Nigro, “
          <article-title>Exploiting agents for modelling and simulation of coverage control protocols in large sensor networks</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>80</volume>
          , no.
          <issue>11</issue>
          , pp.
          <fpage>1817</fpage>
          -
          <lpage>1832</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Cicirelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Furfaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Giordano</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Nigro</surname>
          </string-name>
          , “
          <article-title>Distributing Repast simulations using actors,”</article-title>
          <source>in Proc. of 23rd European Conf. on Modelling and Simulation</source>
          , Madrid, Spain,
          <year>2009</year>
          , pp.
          <fpage>226</fpage>
          -
          <lpage>231</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F.</given-names>
            <surname>Cicirelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Furfaro</surname>
          </string-name>
          , and L. Nigro, “
          <article-title>Modeling and simulation of complex manufacturing systems using Statechart-based actors</article-title>
          ,
          <source>” Simulation Modelling Practice and Theory</source>
          , vol.
          <volume>19</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>685</fpage>
          -
          <lpage>703</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Dedecker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. Van</given-names>
            <surname>Cutsem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mostinckx</surname>
          </string-name>
          ,
          <string-name>
            <surname>T. D'Hondt</surname>
          </string-name>
          and W. De Meuter, “
          <article-title>Ambient-oriented programming in ambienttalk,” in ECOOP 2006 -</article-title>
          <string-name>
            <surname>Object-Oriented</surname>
            <given-names>Programming</given-names>
          </string-name>
          , Berlin, Germany: Springer,
          <year>2006</year>
          , pp.
          <fpage>230</fpage>
          -
          <lpage>254</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Drogoul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Vanbergue</surname>
          </string-name>
          , and T. Meurisse,
          <article-title>“Multi-agent based simulation: Where are the agents?,” In Multi-agent-</article-title>
          <string-name>
            <surname>based simulation</surname>
            <given-names>II</given-names>
          </string-name>
          , Berlin, Germany: Springer,
          <year>2003</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Franchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          .
          <article-title>"Open social networking for online collaboration,"</article-title>
          <source>International Journal of e-Collaboration</source>
          , vol.
          <volume>9</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>50</fpage>
          -
          <lpage>68</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Harel</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Naamad</surname>
          </string-name>
          , “
          <source>The Statemate semantics of Statecharts,” ACM Transactions on Software Engineering and Methodology</source>
          , vol.
          <volume>5</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>333</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C. E.</given-names>
            <surname>Hewitt</surname>
          </string-name>
          , “
          <article-title>Viewing controll structures as patterns of passing messages</article-title>
          ,
          <source>” Artificial Intelligence</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>323</fpage>
          -
          <lpage>364</lpage>
          ,
          <year>1977</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Luke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cioffi-Revilla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Panait</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sullivan</surname>
          </string-name>
          , and G. Balan, “
          <article-title>MASON: A multiagent simulation environment</article-title>
          ,
          <source>” Simulation</source>
          , vol.
          <volume>81</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>517</fpage>
          -
          <lpage>527</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.A.</given-names>
            <surname>Agha</surname>
          </string-name>
          , “
          <article-title>Scalable agent distribution mechanisms for large-scale UAV simulations,”</article-title>
          <source>in Proc. of Int. Conf. of Integration of Knowledge Intensive Multi-Agent Systems</source>
          , Waltham, MA, USA,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M. E.</given-names>
            <surname>Latoschik</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Tramberend</surname>
          </string-name>
          .
          <article-title>"A scala-based actor-entity architecture for intelligent interactive simulations,"</article-title>
          <source>Proc. of 5th IEEE Workshop on Software Engineering and Architectures for Realtime Interactive Systems (SEARIS)</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>9</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>C.M. Macal</surname>
          </string-name>
          , and M.J. North, “
          <article-title>Tutorial on agent-based modelling and simulation</article-title>
          ,
          <source>Journal of Simulation</source>
          ,” vol.
          <volume>4</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>162</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>P.</given-names>
            <surname>Mathieu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y</given-names>
            <surname>Secq</surname>
          </string-name>
          ,
          <article-title>“Environment Updating and Agent Scheduling Policies in Agent-based Simulators,”</article-title>
          <source>in Proc. of 4th Int. Conf. on Agents and Artificial Intelligence (ICAART)</source>
          , Algarve, Portugal,
          <year>2012</year>
          , pp.
          <fpage>170</fpage>
          -
          <lpage>175</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. D.</given-names>
            <surname>Tribble</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Shapiro</surname>
          </string-name>
          , “Concurrency among strangers,” in Trustworthy Global Computing, Berlin, Germany: Springer,
          <year>2005</year>
          , pp.
          <fpage>195</fpage>
          -
          <lpage>229</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>N.</given-names>
            <surname>Minar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Burckhart</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Langton</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Askenasi</surname>
          </string-name>
          ,
          <year>1996</year>
          . “
          <article-title>The Swarm simulation system: a toolkit for building multi-agent systems</article-title>
          ,” Santa Fe Institute, Santa Fe,
          <string-name>
            <surname>NM</surname>
          </string-name>
          , USA. http://www.swarm.org/ [Accessed March 25,
          <year>2015</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>A.</given-names>
            <surname>Negri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Turci</surname>
          </string-name>
          , “
          <article-title>Agents for e-Business Applications,”</article-title>
          <source>in 5th Int. Joint Conf. on Autonomous Agents and MultiAgent Systems</source>
          , Hakodate, Japan: ACM.,
          <year>2006</year>
          , pp.
          <fpage>907</fpage>
          -
          <lpage>914</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>M. J. North</surname>
            ,
            <given-names>T. R.</given-names>
          </string-name>
          <string-name>
            <surname>Howe</surname>
            ,
            <given-names>N. T.</given-names>
          </string-name>
          <string-name>
            <surname>Collier</surname>
            , and
            <given-names>J. R.</given-names>
          </string-name>
          <string-name>
            <surname>Vos</surname>
          </string-name>
          , “
          <article-title>The Repast Simphony runtime system,”</article-title>
          <source>in Proc. of the Agent 2005 Conf. on Generative Social Processes, Models, and Mechanisms</source>
          , Chicago, IL, USA,
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>M. J. North</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Collier</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Vos</surname>
          </string-name>
          , “
          <article-title>Experiences in creating three implementations of the repast agent modeling toolkit</article-title>
          ,
          <source>” ACM Transactions on Modeling and Computer Simulation</source>
          , vol.
          <volume>16</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>25</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>M. T.</given-names>
            <surname>Parker</surname>
          </string-name>
          ,
          <article-title>"What is Ascape and why should you care,"</article-title>
          <source>Journal of Artificial Societies and Social Simulation</source>
          , vol.
          <volume>4</volume>
          , no.
          <issue>1</issue>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Developing Scalable Applications with Actors,” WSEAS Transactions on Computers vol</article-title>
          .
          <volume>14</volume>
          , pp.
          <fpage>660</fpage>
          -
          <lpage>669</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Replaceable Implementations for Agent-Based Simulations,” SCS M&amp;S Magazine</article-title>
          , vol.
          <volume>4</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          ,
          <article-title>"A DHT-based multi-agent system for semantic information sharing," in New Challenges in Distributed Information Filtering</article-title>
          and Retrieval, Berlin, Germany: Springer,
          <year>2013</year>
          , pp.
          <fpage>197</fpage>
          -
          <lpage>213</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>S.F.</given-names>
            <surname>Railsback</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.L.</given-names>
            <surname>Lytinen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          , “
          <article-title>Agent-based simulation platforms: Review and development recommendations</article-title>
          ,
          <source>” Simulation</source>
          , vol.
          <volume>82</volume>
          , no.
          <issue>9</issue>
          , pp.
          <fpage>609</fpage>
          -
          <lpage>623</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>C.W.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , “
          <article-title>Flocks, herds and schools: A distributed behavioral model,” ACM SIGGRAPH Computer Graphics</article-title>
          , vol.
          <volume>21</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>S.</given-names>
            <surname>Tisue</surname>
          </string-name>
          , and U. Wilensky, “
          <article-title>Netlogo: A simple environment for modeling complexity</article-title>
          ,”
          <source>in Proc. of Int. Conf. on Complex Systems (ICCS</source>
          <year>2004</year>
          ),
          <fpage>16</fpage>
          -
          <lpage>21</lpage>
          , Boston, MA, USA,
          <year>2004</year>
          , pp.
          <fpage>16</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>M.H.</given-names>
            <surname>Zaharia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Leon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. C.</given-names>
            <surname>Pal</surname>
          </string-name>
          , and G. Pagu,
          <article-title>Agent-based simulation of crowd evacuation behavior</article-title>
          ,
          <source>in Proc. of 11th WSEAS Int. Conf. on Automatic control, modelling and simulation (ACMOS'09)</source>
          , Istanbul, Turkey,
          <year>2009</year>
          , pp.
          <fpage>529</fpage>
          -
          <lpage>533</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>