Introduction
Agents are well known as human beings that operate on commission for another human being or company to fulfil an order mostly autonomously. Agents are characterized by their social interaction capabilities and social structuring. Autonomy is usually based on planning, cognition, and knowledge.
Agents can be artificial entities, too. They can be used for modelling and simulating natural systems as well as for implementing modern software with superior features. Therefore, agent-based modelling addresses social and natural science on the one hand, and computer science on the other hand.
Agent technology, in contrast, evolved over the past decades and is used to implement or support intelligent systems in unreliable and sometimes unknown environments.
Agent technology is mainly driven by:
- Symbolic Artificial Intelligence,
- Machine Learning,
- Control Theory, and
- Distributed Computing paradigms.
Agent technology is used to master complex dynamic problems in a wide range of fields. Intelligent behaviour is a fundamental feature of agents [MUE96], although the term intelligence is not defined precisely, leading to misconceptions and misunderstanding.
Agents can be used to model and implement complex systems by decomposing the system in simple interacting units, i.e., micro-level modelling, in contrast to macro-level modelling, which uses one big formula to describe the system behaviour. An agent can be a model or a computation paradigm.
This book addresses agent-based computation and agent-based simulation with the JavaScript-based open source software framework JAM, available for download on github. JAM is a VM-in-VM concept. Only basic programming skills (in JavaScript) and a Web browser or a command terminal with node.js are required to start exploring the world of mobile agents. Crowdsourcing is a primary application using mobile agents, discussed in detail and with working examples.
Software Paradigms
There are five major software paradigms reflecting historical changes:
- Machine programming;
- Procedural programming;
- Functional programming;
- Object-oriented programming;
- Agent-based goal- and role-oriented programming.
The historical development of programming paradigms is shown in Fig.. There are various challenges in the development of modern IT systems:
- Ubiquity 1. Unbound to a location 2. Environmental computing
- Pervasiveness Penetration of computer science into things and devices
- Networking of devices and programs
- Distribution and parallelization of programs
- Intelligence and learning
- Autonomy Without central authorities and control
- Robustness 1. The world changes 2. The world behaves insecure
- Adaptivity The world has changed
- Delegation of tasks and hierarchies
- Human-machine interface
Figure 1-1. Historical development of programming paradigms
Agents
Autonomy
Agents are autonomous systems interacting in a specific environment (the world). The environment can consist of data and physical entities that can be manipulated by agents. An agent can observe the world through sensors, creating some degree of knowledge about the world. This knowledge can be used to plan decisions and perform actions. Agents communicate with their environment and effect changes in the environment. An agent is always part of the environment, too. Agents are basically characterized by their capabilities and features, discussed in the Section [Agent Capabilities]. There are different understandings and models of agents, basically coupled to diverse scientific communities using agents for different purposes. The science disciplines range from social science to computer science, with an impact from economy, business, and production.
In computer science, the agent concept is used to establish a paradigm shift from the traditional and still widely used client-server architecture towards distributed agent systems performing data processing and communication, as illustrated in Fig..
Figure 1-2. From the client-server communication architecture (a) towards distributed agent-based and agent-controlled communication (b)
In addition to the general agent concept, mobile agents are defined by two concepts: Mobility and agency [CAO12]. Mobile agents can reduce communication costs and can increase robustness through adaptivity and replication.
Metrics
Agents can be classified by the following metrics:
Physical Agents
- Hardware Agents
- Software Agents
- Social Agents
Computational Agents
- Interface Agents (Human-Machine and Machine-Machine)
- Data Processing Agents
Mobile Agents
- Physical Agents
- Computational Agents
In this book, two different agent classes are used in conjunction:
Physical Behavioural Agentsrepresent physical entities, i.e., individual artificial humans, animals, vehicles, or more general machines. This agent category is divided into hardware agents, i.e., being robots or machines, and software agents, representing physical entities. A sub-set of software agents are social agents, which model the behaviour and interaction of social systems. Agents in simulation are considered as physical agents, too, since they represent physical entities.Computational Agentsrepresent software and processes performing computational tasks, i.e., used for distributed data processing and digital communication, or implementing chatbots. Computational agents require an Agent Processing Platform (APP) for their execution.Mobile Agentscan be considered as a super-set of physical and computational agents. Mobility of physical agents means the capability of spatial movement of the hardware or software agents (or the migration of social entities). Mobility of computational agents, represented by computational processes, means the transfer of a process snapshot between agent processing platforms.
Among the basic agent classifications from above, dividing the agents by their impact on and interaction with the environment, agent-based methods can be classified by their deployment and usage with five domains:
- Agent-based Modelling (ABM)
- Agent-based Simulation (ABS)
- Agent-based Modelling and Simulation (ABMS)
- Agent-based Computing (ABC)
- Agent-based Simulation and Computing (ABX)
This book discusses the different modelling and deployment fields of agents and finally presents a fusion of all four levels (ABX) using the JavaScript Agent Machine.
Model
An agent, independent of its classification, interacts with an environment by basically two mechanisms:
- Perception: performing environmental sensing and interpreting sensor values;
- Action: performing modification of the environment.
The simplest agent behaviour model and architecture is shown in Fig. and consists of a cyclic data flow between the agent and the environment.
An agent poses a set of sensors S=( s1,s2, .. , sn ) used for perception, and a set of actuators A=( a1 , .. , am ) used for the modification of the environment.
The basic black box model of the agent's behaviour is a function