Monday, August 13, 2007

Agent-Based Software Development : REACTIVE AGENT ARCHITECTURES

The traditional AI view is that in order for software agents to exhibit intelligent behavior, they need an internal (symbolic) representation of their environment. The agents then can manipulate and reason about this internal representation in order to determine what to do next. However, some have argued that effective behavior does not necessarily require symbolic representation and manipulation, a view strengthened by the problems that have emerged in mainstream artificial intelligence such as the complexity and, in some cases, intractability, of some symbolic manipulation problems such as planning. (Essentially, planning is the process of constructing a sequence of actions which, when performed in order, will achieve some of its goals.) This is because symbolic reasoning is very resource-and time-intensive in determining the best action to perform next, so that by the time the action is performed, the environment may have changed in such a way that the action is no longer useful. In this case, the agent could be said to have failed. The opposite view is that effective behavior is only achieved when systems are situated and embodied in the real world, and can respond to events in the environment in a timely fashion. In this view, agent behavior is directly coupled with the world, typically incorporating stimulus-response rules; the environment provides a stimulus that causes a rule to fire and the agent to respond in specified way.

Agents that do not maintain a symbolic representation of their environment are known as reactive agents, and their architectures as reactive architectures. Such reactive systems were originally proposed by Brooks, who developed the subsumption architecture for controlling the behavior of a robot. In a similar fashion, Maes, a former colleague of Brooks, developed the agent network architecture, built upon the principle that intelligent behavior is an emergent phenomenon arising from the interaction of "societies of nonintelligent systems." Both architectures are considered next.



Subsumption Architecture
Brooks proposed the subsumption architecture as a means of controlling the behavior of a mobile robot in real time, with three basic requirements [2], as follows:

Agents should be able to cope with multiple goals. For example, an agent might have the goal of moving to a certain location in its environment, directly ahead of it, as quickly as possible, while at the same time also possessing the goal to avoid obstacles. Clearly, when there is an obstacle in the path of an agent, these goals conflict, and any control mechanism for the robot needs to determine which of the goals takes priority.

Agents should have multiple sensors. In general, physical agents have several different sensors (including infra-red cameras and acoustic range-finders, for example) each with the possibility of giving erroneous or conflicting readings. Agents must be able to make decisions in these difficult circumstances.

Agents should be robust. Essentially, this refers to two aspects: first, agents must be able to function (albeit possibly less effectively) when some sensors fail; second, agents should be able to behave effectively when the environment is changing drastically around them.

The approach taken by Brooks is not a functional one in which component parts are isolated according to perception, action, reasoning, planning, and so on, with some overarching central control mechanism. Instead, it is achieved using an entirely different approach, the layered approach. Here, the architecture comprises several task-achieving behaviors, each of which is implemented separately and arranged as shown in Figure 2.1. The hierarchy of layers reflects how specific a behavior is; the more specific the task, the higher the layer. In the case of the mobile robot, there are eight layers of behavior, from 1 to 8, as follows.

Avoid contact with objects in the environment;

Wander aimlessly;

Explore the environment;

Build a map of the environment and plan routes within it;

Notice change in the environment;

Reason about and identify objects in the world, and perform certain tasks related to certain objects;

Build and execute plans that involve changing the world in some desirable way;

Reason about the behavior of other objects and how it might impact on plans, and consequently modify plans.





The different layers exist in parallel, with each unaware of the other layers that are above it, but able to examine data from lower layers. Each layer is connected to the sensors and actuators, but extracting only those aspects of the world (from the sensors) that are relevant to its function. In addition, layers can prevent lower layers from trying to control the behavior of the agent by suppressing their inputs and inhibiting their outputs.

The first step in the agent's construction is to build the 0th control layer and, once this has been tested, to build the 1st control layer on top of the 0th layer. The 1 st layer has access to the data at layer 0 and can also inject data to suppress the normal activity of the 0th layer. The 0th layer continues to execute, unaware that there is a higher layer intermittently influencing its behavior. This process can then be repeated for each successive layer, with each layer competing to control the behavior of the robot. In this way, the control system functions at a very early stage of system development, with higher layers being added as required without having to change the existing lower-layer architecture.

The robot architecture showed that robots could be designed by decomposing the control problem by behavior rather than using functional modules. The approach combines a modular structure with a clear control methodology, and supports a neat way of modeling the different levels of abstraction of the world and the reasoning required at each level. In this sense, it has had a significant impact on agent architectures in general, forming the basis for many hybrid architectures such as INTERRRAP [3] and TouringMachines [4]. These latter architectures, which we consider later in this chapter, also contain different levels of abstraction, each of which competes for control over an agent's actuators.

By itself, however, the subsumption architecture does not support any explicit reasoning, and it is not clear that it can be scaled up to domains requiring more sophisticated problem-solving behavior. In addition, the design of its layers was done on a rather ad hoc basis, and led by intuition rather than a clear methodology or set of guiding principles. Systems built on the subsumption architecture are quite complex and idiosyncratic, and it is almost impossible for any formal investigation of the properties of such systems. This makes it difficult to predict or explain such an agent's behavior in a given environmental scenario.

Agent Network Architecture
Building on some of the ideas of the subsumption architecture, and on those of Minsky [5], who has argued that intelligent systems consist of societies of mindless interacting systems, Maes developed the agent network architecture (ANA) [6]. The ANA consists of a collection of competence modules, each of which competes to control behavior. This competition depends on the activation of a module which, in turn, depends on both external and internal considerations. The former includes whether a module is executable, the agent's perception of the environment, and the current goals of the agent. However, the novelty of ANA lies in the internal mechanism by which modules affect the activation of other modules through links between them. Activated modules increase the activation of their successors, nonexecutable models activate their predecessors, and all modules decrease the activation of their conflictors.

For example, Maes considers modeling the behavior of an agent in drinking from a cup. She supposes that the agent has two permanent goals, to relieve its thirst and to be polite, the latter requiring the agent to move the cup to its mouth rather than its mouth to the cup. If the agent is thirsty in a situation in which the data observed includes the presence of a cup, then two modules, drink and recognize-cup, are activated. Once the external activation is calculated, the internal activation is considered. Then, since in this scenario the recognize-cup module is currently executable, activation spreads from this module to its successors, from all other modules to their predecessors, and from every module to all their conflictors. Finally, the activation of each module is inspected and, if one surpasses a threshold value, it becomes activated and controls the behavior of the agent.

Like Brooks, Maes argues that such an architecture is attractive because it is distributed, modular, and robust. However, while it represents a novel approach for constructing autonomous agents, and does provide some evidence that cognitive functions can be implemented in terms of simple behaviors, just like the subsumption architecture, it is difficult to see how it could be extended to achieve more rational behavior, or to provide a paradigm for designing agent applications in general.

No comments: