Intelligent Agents


The popularity of the Internet has ushered in a new era of communication and collaboration. Software agents are being developed to provide a framework for organizing and interpreting the vast amount of information available on the Internet. Agent development has also increased in popularity because the Web has become the prominent channel for user and business communication. This popularity has also blurred the distinction between traditional software and agent-based modules.

Agent technology has also been affected by the growth of e-commerce. A new breed of software agent is attempting to increase the efficiency of transactions across electronic markets and exchanges. Often we think of business-to-business (B2B) and business-to-consumer (B2C) as two separate models of participation and communication. However, B2B and B2C are not discrete models, but rather exist on a continuum. Agents can be used to acquire knowledge about customers, partners, and product preferences. As a result, the capability to leverage software agents at key points, such as in distribution, manufacturing, sales, and customer relationship management, is compelling.

Imagine a business engaged in distributing products and services over the Web. A tremendous amount of marketing research is involved in determining the effectiveness of distribution channels. Many companies are looking for more effective data capture and analysis techniques. Software agents provide one solution.

Software agents are also envisioned to play a significant role in P2P systems. Jini and JavaSpaces can provide a foundation for building P2P agent frameworks. The benefits include the following:

  • Software mobility "out of the box"

  • Distributed storage using JavaSpaces

  • Support for communicating agents using distributed events

  • A framework to find information, services, and agents

  • A framework supporting transactions using the two-phase commit protocol

  • The capability to use cryptographic channels to communicate

Simple Agent Frameworks

The distinction and refinement of what is and what is not an agent has generated a lot of press and discussion. A considerable amount of effort has been focused on classifying types of software agents. Researchers often use role-based classification in an attempt to elucidate agent definition. Accordingly, we have search agents, navigation agents, management agents, domain-specific agents, as well as development and help agents.

Although the line between agent and software program can be hard to determine, other characteristics of agents help to delineate the distinction:

  • Learning The capability for a software program to acquire knowledge without reprogramming

  • Goal-oriented direction The capability of a software program to be instructed as to a desired result, and then to determine the accuracy of the attained result

  • Community The capability for software to communicate with other software to emulate knowledge acquisition and goal-oriented behavior

In the paper "Software Agents: An Overview," (http://agents.umbc.edu/introduction/ao/4.shtml) Hyacinth Nwana provides a typology for classifying agents. The three attributes or characteristics of agents are identified as autonomy, learning, and cooperation.

Figure 15.5. A model for classifying software agents.

graphics/15fig05.gif

Mobile Agents

Autonomous agents are often defined as systems that can act on behalf of the user and exhibit capabilities to learn and cooperate with their environment. Typically, an agenda or goal drives an agent's behavior. A mobile agent can move across machines and networks to carry out this mission. There is a significant amount of work being done to provide mobile agents for network management. It is easy to envision the benefits gained by network managers using mobile agents to relay conditions and instructions to network elements.

Jini provides a foundation for many of the requirements for mobile agents. As discussed previously in Chapter 4, "P2P As a Framework for Distributed Computing," the capability to move code from machine to machine through downloadable proxies is a key enabler of the Jini framework.

You can quickly define an interface for a remote agent and a mobile agent by exploiting RMI interface semantics. For instance, extending Remote provides an interface that is accessed remotely through a stub reference by the caller:

 public interface RemoteAgent extends java.rmi.Remote {     public void tell(Sender sender, Receiver receiver, String speechAct)         throws RemoteException; } 

On the other hand, extending Serializable provides a mechanism to move the object to the caller:

 public interface MobileAgent extends java.io.Serializable {     public void tell(Sender sender, Receiver receiver, String speechAct)         throws RemoteException; } 

You can even pass references from caller to receiver and implement powerful callback mechanisms.



JavaT P2P Unleashed
JavaT P2P Unleashed
ISBN: N/A
EAN: N/A
Year: 2002
Pages: 209

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net