Agent-based systems are one of the most important and exciting areas of research and development that emerged in information technology (IT) in the past two decades. In a nutshell, an agent is a computer program that is capable of performing a flexible, autonomous action in typically dynamic and unpredictable domains (Luck, McBurney, Shehory, & Willmott, 2005). Agents emerged as a response of the IT research community to the new data-processing requirements that traditional computing models and paradigms were increasingly incapable to deal with (e.g., the huge and ever-increasing quantities of available data). Many IT researchers believe that agents represent one of the most important software paradigms that have emerged since the object orientation. From the historic point of view, the agent-oriented research and development (R&D) originates from different disciplines. Undoubtedly, the main contribution to the field of autonomous agents came from artificial intelligence (AI). Ultimately, AI is all about building intelligent artifacts and if these artifacts sense and act in some environment, then they can be considered agents (Russell & Norvig, 1995). Also, object-oriented programming (Booch, 2004), concurrent object-based systems (Agha, Wegner, & Yonezawa, 1993), and human-computer interaction (Maes, 1994) are fields that constantly drive forward the agent R&D in the last few decades. In addition, the concept of an agent has become important in a diverse range of sub-disciplines of IT, including software engineering, computer networks, mobile systems, control systems, decision support, information retrieval and management, electronic commerce, and many others. Agents are being used in an increasingly wide variety of applications— ranging from comparatively small systems such as personalized email filters to large, complex, mission critical systems such as air-traffic control.
Even though there is no universal consensus over some key definitions in the field, it is intuitively clear what an “agent” is. One of the most widely used definitions states that “an agent is a computer system, situated in some environment, that is capable of flexible autonomous action in order to meet its design objectives” (Jennings, Sycara, & Wooldridge, 1998, p. 8).
There are three key concepts in this definition: situatedness, autonomy, and flexibility. Situatedness means that an agent receives sensory input from its environment and that it can perform actions which change the environment in some way. Autonomy is seen as the ability of an agent to act without the direct intervention of humans and that it has control over its own actions and internal state. In addition, the autonomy implies the capability of learning from experience. By flexibility, we mean the agent’s ability to perceive its environment and respond to changes in a timely fashion; it should be able to exhibit opportunistic, goal-directed behaviour and take the initiative whenever appropriate. Also, an agent should be able to interact with other agents and humans, thus to be social. Some authors emphasize the importance of the concept of rationality, which will be discussed in the next section.
Moreover, agent technologies can be considered from three perspectives (Luck, McBurney, Shehory, & Willmott, 2005):
As a design metaphor, agents offer designers a way of structuring an application around autonomous, communicative elements;
As a source of technologies, agent-based computing spans a range of specific techniques aimed at supporting interactions among entities in dynamic and open environments; and
As a simulation tool, multi-agent systems offer robust models for representing complex and dynamic real-world environments, such as economies, societies and bio-systems.
Key Terms in this Chapter
Multi-Agent System (MAS): A software system composed of several agents that interact in order to find solutions of complex problems.
Sensors: Software component and part of the agent used as a mean of acquiring information about current state of the agent environment (i.e., agent percepts).
Agent Percepts: Every information that an agent receives through its sensors, about the state of the environment or any part of the environment.
Actuators: Software component and part of the agent used as a mean of performing actions in the agent environment.
Intelligent Software Agent: An encapsulated computer system that is situated in some environment and that is capable of flexible, autonomous action in that environment in order to meet its design objectives ( Wooldridge & Jennings, 1995 ).
Agent Communication Language (ACL): Language used by agents in exchange of messages, defining common syntax for cooperation between heterogeneous agents.
Middle-Agents: Agents that facilitate cooperation among other agents and typically connect service providers with service requesters.