ince medieval Jewish folklore told of the golem, a compliant manlike creature fashioned from clay and brought to life by sacred magic, people have yearned for servants like him--undemanding and willing to take on any mundane tasks they were asked to. Somewhat similar creatures are now being created, not out of genetic materials or spare body parts in lightning-lit labs, but from bits of object-oriented code in software developers' computers.

Known as agents, these artificial assistants are software components that live inside computer environments. Developed out of research in artificial intelligence (AI), agents were made in a variety of forms to perform all sorts of useful work--including obtaining airline departure dates and times, filtering e-mail for messages the user considers important, alerting users to significant stock price changes, and a host of other tasks.

At first, agents were constrained to a single computer or at most to a single computing environment--a closed, homogenous network of, say, Unix platforms. Their behavior was limited and all the tasks they could do had to be pre-established. Today, agents are breaking the bonds that confine them to a single environment while learning new ways of accomplishing tasks on their own, based on their experience. The newcomers are called mobile agents, because they can move from one computer to another. As they emerge from the shadow of AI research, they are bringing together telecommunications, software, and distributed-system technologies to create new ways of getting things done.

One example is their streamlining the management of commercial telecommunications networks. Currently, if an optical cable in a wide-area network is cut accidentally, the time it takes to fix the problem can be dragged out ridiculously because of the way the network itself reacts to the break. The break may cause every system attached to the network to send out an alarm saying that its connection has been severed and data has been lost.

What's more, each of these alarms may trigger a cascade of alerts and alarms, perhaps as many as 250 000, which propagate throughout the network. This torrent of alarms, all due to a single event, occurs at the worst possible time: when it is most critical that the system not be burdened with unnecessary traffic. The flood also hampers the process of pinpointing the cause of the alarms and reacting appropriately.

Agents can transform this scenario by instantly identifying the location of the cut. Also, by using algorithms that identify secondary alarms caused by the break, they can eliminate redundant alarms. At the same time, they can ensure that necessary information about the cable break is delivered to the appropriate people or systems, at one or more sites.

Event correlation--the correspondence of an event such as a fiber cut with other events such as alarms--and the suppression of alarms once a correlation is made have always been areas of investigation for telecommunications service providers, such as Lucent Technologies Inc., Murray Hill, N.J., and Bell Atlantic Corp., Philadelphia. Most telecommunications providers, in fact, have invested heavily in proprietary network management software, but the software is not always able to adapt to changes in a network's infrastructure, such as the addition of mobile wireless systems. While some commercial vendors, like OSI Systems Inc., Hawthorne, Calif., have developed products that support event correlation and help stop the flood of alarms in traditional systems, much more technology involving mobile agents needs to be developed to support heterogeneous networks and to handle the increased size of the network to be managed.

Researchers are also looking at how agents could be used for expediting repairs by notifying repair personnel that their services are needed while rerouting traffic to underutilized parts of the network. Besides telecommunications, agents could also go to work in factories to control manufacturing processes, in defense systems to separate real threats from ruses, and in many other areas. Among the universities working on implementing agents in such real-time systems are Carnegie Mellon University, in Pittsburgh, Massachusetts Institute of Technology, in Cambridge, Stanford University, in California, and Stevens Institute of Technology, in Hoboken, N.J.

How agents behave

Both stand-alone agents and multiple agents working together in software systems, form one of the main areas of research in distributed artificial intelligence (DAI). The first wave of research concentrates on how a so-called "society of agents" can best negotiate, coordinate, and work together. A second focuses on formalizing not only the definitions of characteristics that describe an agent's behavior, but also the architecture of agents and the languages that are useful for creating them. This second wave is fast multiplying the types of agents that can be identified.

Before looking at the various types of agents, it is important to define what an agent is. In general, it is a software component (along with its state) that performs one or more common tasks by acting in a preset manner. The agent's human programmer usually determines what an agent can do, as well as what information is required (from the user or software interface) to have the agent act. But its behavior can also be set by another software program, a sort of super agent, which spawns a new agent when a task requires extra help.

Object-oriented programmers would say that this general definition of an agent describes what they would call an object class. Within this class, specific types, or subclasses, of agents can be identified, based on the characteristics an agent has. Essentially, there are five of these--mobility, response method, autonomy, learning, and cooperation--which results in 32 possible types of agents.

Mobility refers to an agent's ability or inability to move among different environments. An agent may be typed as "static" or "mobile." If static, it is constrained to working in a single type of machine and is unable to move about in a network; early agents were all static, and worked in one stable environment. An agent is mobile if it is able to move from host to host and to work in a variety of host environments.

An accepted description of a mobile agent is a software process that can transport its state from one environment to another and still perform appropriately in the new environment (an environment can be regarded as a machine or a network).

Early illustrations of mobile agent activity considered a program that could move, under its own control, from machine to machine in a heterogeneous environment. In 1995, the developers of AgentTCL at Dartmouth College, Hanover, N.H., provided one of the first models of a mobile agent: suspending execution at any point, transporting code and its state to another machine, and resuming execution on the new machine. Over time, this characterization has been refined by telecommunications and distributed-systems researchers concerned less with code-mobility issues than with the size and performance of the agent in real-time systems. Current mobile agent research remains concerned about code, but focuses on the behavior and usefulness of mobile agents in distributed real-time environments.

While "mobile" is an accepted term today, mobile agents have gone under a number of other labels in the past, including transportable, itinerant, and--by those from a telecommunications background--distributed. For those in agent research and development, however, the words "mobile" and "distributed," when applied to agents, have quite different meanings, as will become evident later.

Another agent characteristic, the response method, refers to the means that an agent uses to react to any request. In this case, agents are classified as either deliberative or reactive. By design, a deliberative agent has a model of any environment in which it can exist; it knows what resources--printing, communications, display capabilities, for instance--can be found there. This information allows it to "reason" about what activities it can perform. Thus, a deliberative agent could, say, plan and negotiate with other agents how to go about performing a task.

Reactive agents, on the other hand, do not have a model of their environment. They can respond only in preset ways to the environment in which they find themselves. The extra knowledge belonging to a deliberative agent makes it more flexible than a reactive agent, but the former's code is typically larger than the latter's. Still, the rules associated with reactive agents usually cover a broader range of situations, while deliberative agents tend to correct the situations they cover.

Additional characteristics defining agents are autonomy and learning. If an agent is autonomous, it can operate on the user's behalf without explicit guidance. For instance, it could respond to a request for information by searching through several databases to which it has access; it need not be told which databases to look in. In this article, from here on in, the term mobile agent will refer to an agent able to operate not only in a distributed environment, but autonomously as well.

Learning refers to an agent's ability to take whatever information it has gained about the environment in which it is deployed and use it to modify its own behavior. By building on that information, an agent will, at least, not repeat a mistake; at best, it will develop new, more useful behaviors. For example, a database-searching agent could learn that a database to which it has access contains no records after 1975, and therefore not waste time searching the database for events during Bill Clinton's presidency.

A fifth characteristic, cooperation among multiple agents, denotes the ability agents have to avoid redundant efforts and conduct high-level communications. For example, if cooperating agents were given the task of finding out the important dates in a person's life, and one agent found a specific piece of information, such as a date of birth, it would report its success to the other agents, who could then concentrate on looking for marriage and death dates. The other agents need not report that they came across the date of birth in another database, thereby reducing the communications load.

With regard to these last three characteristics (autonomy, learning, and cooperation), an agent with only one of them is considered basic; an agent with two that work in conjunction is more advanced. An agent with all three would be ideal [Fig. 1].

One area of today's research attempts to combine all three behaviors. Most agents can have two, as autonomy and learning are easily coupled, but pairing learning and cooperation or autonomy and cooperation is harder.

Working autonomously, the ideal network management agent would be able to learn network usage patterns over a 24-hour cycle, during which traffic rises, peaks, and falls. If the agent detected a change in the traffic pattern--such as hitting a peak at the wrong time and staying there--it could cooperate with other agents to find out if a portion of the network was disabled, and then reroute traffic around the bottleneck.

Getting their job assignments

Besides using these five characteristics to pigeonhole agents, technologists can also classify agents based on the specific tasks they do. For instance, an interface agent's job is to simplify the task of accessing a particular environment, such as a server, or a particular source of information, such as a relational database. An example of a commercial interface agent is the one provided by Firefly Network Inc., Cambridge, Mass. []. Firefly's static agent--it remains on a host computer--reviews and selects information for numerous users. Its selections are based on what the user tells the agent he or she wants to be told about, say, sports results, company mergers, or the like. Yahoo! Inc., Santa Clara, Calif., runs Firefly's agent on the servers it uses for My Yahoo, a personalized World Wide Web information service [].

An agent's intended role seems to influence its characteristics. Say an interface agent needs both autonomy and the ability to learn to perform tasks for its users, while a collaborative agent seems to require autonomy and cooperation. After more experience is gained in applying agents, it may well turn out that agents with certain characteristics are always the most efficient performers in certain jobs.

Although it is possible to have a group of collaborative agents working in a single computer, they are usually found in distributed environments. These multiagent systems are composed of individual agents that work together to solve problems too large for any one member to handle. Note that, while these agents are distributed about the network, they have typically been static (staying on one machine), not mobile. The focus in their design is on coordination, negotiation, and communication.

Multiagent systems enhance the speed with which a task can be completed and, owing to the many independent agents involved, are highly reliable. Under the direction of Charles Petrie, the Center for Design Research at Stanford University is currently working on ProcessLink, a project that lets an engineering team track and coordinate design decisions, even when the team members are dispersed geographically or work with dissimilar software tools [].

Such systems, which also have applications in the fields of sensors, aircraft, and robots, are found in electronic commerce systems today, where they seek the lowest price for a product. Bargain Finder from Andersen Consulting, in Chicago (, is one such system; it finds the best price for a compact disk after looking through information from nine retailers.

Mobile agent technology

To understand how mobile agents perform their work, consider that the static agent, and indeed the software in most computer communication networks, is built upon the idea of remote procedure calling [Fig. 2]. This approach enables one computer to call procedures in another machine, sending it one set of data to be acted on and waiting to hear back the result of that operation before sending the next set of data. Each message exchanged in the network involves a request for service or an acknowledgment of information received.

Before beginning remote procedure calling, the computers involved agree upon the format of the exchanges that will take place, thereby establishing a protocol. The emphasis is on ongoing communication, requiring a persistent connection. Thus the communication overhead is extremely high, and the procedure can tie up a great deal of bandwidth.

Remote programming, on the other hand, supplies not only the data to be processed, but the procedures to be performed as well [Fig. 3]. A remote programming message typically consists of a procedure and its arguments, that is, the data to be processed. Typically, the procedure is one that the sending computer had been running and that the receiving computer is to continue, so the data that travels with the procedure can also be regarded as the state of the procedure.

As with remote procedure calling, the computers using remote programming agree beforehand on what instructions are permitted and what states are valid. This agreement establishes the protocol to be used. Characteristics of this exchange include instructions that are needed by the procedure to interact with the receiving computer and to make decisions, state assessments, and state changes.

In software terms, the procedure and its associated state/data is an object, and this object is the mobile agent that travels through the network. When the agent arrives at the receiving computer, the computer executes it. "Executing" an agent refers to running it on a host, not putting it up before a firing squad. Agents that need only exist for a short period of time are deleted, that is, "retired." Calling this particular type of object an agent indicates that the object's payload of data and procedures is executed on the receiving computer purely for the benefit of the sending computer.

A key distinction between remote programming as used by agents and the better-known remote procedure calls is that, with remote programming, client-server computers can act in concert once an agent has been exchanged between them without further help from the network. Unlike remote procedure calling, using agents does not require ongoing communication. Thus agents reduce overall network load and bandwidth requirements by doing their work locally.

For an agent to be executed on the different host environments in a network, each host must have specialized support software. This software lets the agent access those host resources it needs for computation, communication, and navigation. It must also ensure that the host system remains secure while the agent is active [Fig. 4].

Just as a machine using Java, Sun Microsystems' widely distributed portable language, can be tailored to work on practically any host environment, so, too, can agent-support software be tailored to work on a variety of hosts. The fact that agents can thus work in heterogeneous networks is contributing to the current interest in agent technology among telecommunication engineers and researchers.

There is persistent debate in the research community over agent mobility; the rationale for mobility is not clear to researchers from outside the distributed systems and telecommunications fields.

Much of the earlier work done on static agents has been important for facilitating single-user environments. But the benefit of these intelligent agents or interface agents did not scale up well when they were placed alongside large real-time applications, including manufacturing, network management, and distance learning. In addition, previous research has failed to comprehensively address the behavior of agents serving the telecommunications and applications infrastructure.

Why insist on mobile agents?

The need for mobility is driven by the desire to use these agents in real-time environments, where latency, or delay of any kind, is not acceptable. Furthermore, real-time environments have no bandwidth or storage capacity to spare. Most such environments are designed to provide critical services that include neither spare bandwidth for persistent communication over time nor excess storage space for compiling and analyzing data over time in preparation of a response. Instantaneous, appropriate action is required by even the smallest entity thatcan accomplish the mission.

The case for mobile agents can be presented in part as a proof by contradiction. Suppose, as some would advocate, that agents were not mobile at all, but were constrained to passing data from one site to another for processing by the agent already resident at the second, or target, site. If the second site were known, this would indeed be a possible design approach. But the target site is rarely known in real-time environments, which necessitates the use of mobile agents.

Further, static agents require that all participant nodes have support for all agent messages. This is unrealistic, as building support for many agent behaviors in all points is not feasible from both size and utility perspectives. How much space should be allocated to support the expectation that an agent may be useful? How often will that allocated area be used? How can the static agent environment be kept current?

For today's distributed, dynamically changing environments, both these constraints lack substance. Not every site needed for the delivery of services can be known in advance. In the same way, a Web surfer can chose to download appropriate material to view and interact with a specific Web site, mobile agents can adapt, procure, and mutate as appropriate for their mobile activities.

It is extravagant to suppose that all participants in networks or application environments would have the resources available to support an agent in the hope that its services would some day be needed. Rather, modest dynamic hosting requirements of mobile agents can be accommodated, without long-term loss of space and functionality.

Some environments in which mobile agents are useful are dynamic network management, such as the rerouting of network traffic, or the use of newly available network resources. In education at a distance, mobile agents can be used to pre-fetch materials that will be requested shortly by the student. This pre-fetch process is based on real-time analysis of the student's behavior and calculation of the probability of a request. Depending on the state of the network, an immediate request or a reservation can be fulfilled by the mobile agent. In this way, end-to-end quality of service can be improved for the delivery of distributed multimedia material, such as that represented by distance education.

Already, vendors of telecommunications switches accept the gathering of real-time network traffic statistics from network nodes. This information can be used to make dynamic decisions at the node level, or the mobile agent can carry the information as part of the mobile agent state to other network elements for incorporation into dynamic decisions elsewhere. A similar illustration could be provided for manufacturing.

New job opportunities

The nature of work in modern society enhances mobile agents' attractions because they offer better ways to deal with information. The use of a computer is required for numerous daily chores, most of which involve accessing (gathering) information and manipulating it (say, revising it, making clear relationships among facts, or combining numbers to come up with a new result).

Workers today are overwhelmed with information, mostly in the form of a distributed hodgepodge. It is no longer feasible for an individual--who must, say, correct a customer's address when the address records are duplicated in a number of databases--to manipulate distributed information directly. Agents can act as a sophisticated assistant for such complex information systems, freeing users to interact with information indirectly and efficiently.

In a world of distributed, heterogeneous networks with dynamically changing topologies--a world that relies ever more heavily on nomadic and wireless computing--mobile agents are getting increasing attention for their ability to work anywhere. Better still, they have become easier to implement, what with the widespread development and deployment of platform-independent pr abercrombie and fitch black Friday Versace cyber Monday Juicy Couture cyber monday coach black friday lululemon black friday uggs black friday michael kors cyber Monday north face cyber monday deals Juicy Couture cyber monday uggs black friday gucci cyber monday black Friday beats by dre under armour black friday north face black friday uggs black friday north face cyber monday michael kors cyber Monday uggs cyber monday beats by dre black friday North Face cyber monday Oakley black Friday uggs black friday coach cyber monday dior black friday the north face cyber monday kate spade cyber monday beats by dre cyber Monday polo black friday dior cyber monday coach black friday lululemon cyber monday michael kors black Friday michael kors black friday lululemon cyber monday uggs cyber monday beats by dre black Friday uggs black friday north face black friday Juicy Couture black friday beats by dre black Friday sale uggs black Friday uggs cyber monday kate spade black friday uggs cyber Monday michael kors black friday victoria secret black friday canada goose cyber Monday north face cyber Monday victoria secret cyber monday uggs black Friday uggs black friday jordan cyber monday beats by dre black Friday lululemon cyber monday north face cyber Monday coach cyber monday north face cyber Monday north face black friday uggs cyber monday north face cyber Monday coach black Friday juicy couture black friday canada goose cyber monday lululemon black friday Abercrombie and fitch black friday Oakley cyber monday gucci cyber monday Mulberry black friday Mulberry black friday Tiffany cyber monday michael kors Black Friday michael kors black friday michael kors Black Friday michael kors black friday uggs Black Friday michael kors black friday black infrared 13s legend blue 11s jordan 11 legend blue jordan 11 legend blue jordan 11 legend blue legend blue 11s legend blue 11s jordan 11 legend blue jordan 11 legend blue legend blue 11s jordan 13 black infrared jordan 11 legend blue legend blue 11s legend blue 11s legend blue 11s jordan 13 black infrared 23 legend blue 11s jordan 13 black infrared 23 legend blue 11s jordan 13 black infrared 23 legend blue 11s black infrared 23 13s jordan 13 black infrared legend blue 11s jordan 11 legend blue legend blue 11s legend blue 11s legend blue 11s jordan 11 legend blue jordan 11 legend blue legend blue 11s jordan 13 black infrared jordan 13 black infrared 23 black infrared 23 13s jordan 11 legend blue legend blue 11s black infrared 23 13s jordan 11 legend blue jordan 11 legend blue jordan 11 legend blue