Software agent

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In computer science, a software agent is a piece of software that acts for a user or other program in a relationship of agency[1]. Such "action on behalf of" implies the authority to decide which (and if) action is appropriate.[citation needed] The idea is that agents are not strictly invoked for a task, but activate themselves.

Related and derived concepts include Intelligent agents (in particular exhibiting some aspect of Artificial Intelligence, such as learning and reasoning), autonomous agents (capable of modifying the way in which they achieve their objectives), distributed agents (being executed on physically distinct computers), multi-agent systems (distributed agents that do not have the capabilities to achieve an objective alone and thus must communicate), and mobile agents (agents that can relocate their execution onto different processors).

Contents

[edit] Definition

Nwana's Category of Software Agent

The term "agent" describes a software abstraction, an idea, or a concept, similar to OOP terms such as methods, functions, and objects.[citation needed] The concept of an agent provides a convenient and powerful way to describe a complex software entity that is capable of acting with a certain degree of autonomy in order to accomplish tasks on behalf of its user. But unlike objects, which are defined in terms of methods and attributes, an agent is defined in terms of its behavior.[citation needed]

Various authors have proposed different definitions of agents, these commonly include concepts such as

  • persistence (code is not executed on demand but runs continuously and decides for itself when it should perform some activity)
  • autonomy (agents have capabilities of task selection, prioritization, goal-directed behaviour, decision-making without human intervention)
  • social ability (agents are able to engage other components through some sort of communication and coordination, they may collaborate on a task)
  • reactivity (agents perceive the context in which they operate and react to it appropriately).

The Agent concept is most useful as a tool to analyze systems, not as a prescription.[citation needed] The concepts mentioned above often relate well to the way we naturally think about complex tasks and thus agents can be useful to model such tasks

[edit] Intelligent software agents

The design of intelligent agents (or intelligent software agents) is a branch of artificial intelligence research. Capabilities of intelligent agents include:[citation needed]

  • ability to adapt
Adaptation implies sensing the environment and reconfiguring in response. This can be achieved through the choice of alternative problem-solving-rules or algorithms, or through the discovery of problem solving strategies. Adaptation may also include other aspects of an agent's internal construction, such as recruiting processor or storage resources.
  • ability to learn
Learning may proceed through trial-and-error, then it implies a capability of introspection and analysis of behaviour and success. Alternatively, learning may proceed by example and generalization, then it implies a capacity to abstract and generalize.

[edit] Autonomous agents

Autonomous agents are software agents that claim to be autonomous, being self-contained and capable of making independent decisions, and taking actions to satisfy internal goals based upon their perceived environment. All software agents in important applications are closely supervised by people who start them up, monitor and continually modify their behavior, and shut them down when necessary.[citation needed] The Popek and Goldberg virtualization requirements is a hardware solution to the supervision problem, which in principle prevents the execution of critical instructions without entering a suitable mode (such as System or Super-user mode).

[edit] Distributed agents

Since agents are well suited to include their required resources in their description, they can be designed to be very loosely coupled and it becomes easy to have them executed as independent threads and on distributed processors. Thus they become distributed agents and the considerations of distributed computing apply. Agent code is particularly easy to implement in a distributed fashion and should scale well.[citation needed]

[edit] Multi-agent systems

When several agents (inter)act they may form a multi-agent system a.k.a. multiple-agent system. Characteristically such agents will not have all data or all methods available to achieve an objective (this can be referred to as "limited viewpoint") and thus will have to collaborate with other agents. Also, there may be little or no global control and thus such systems are sometimes referred to as swarm systems. As with distributed agents, data is decentralized and execution is asynchronous. Earlier, related fields include Distributed Artificial Intelligence (DAI) and distributed problem solving (DPS).

[edit] Mobile agents

Agent code that moves itself, including its execution state, on to another machine, to continue execution there. This is also referred to as mobile code. Agents can be used to gather system information, taking back-up of files by copying them in client-server paradigm, monitoring network throughput or to check resources availability and moderating the resource utilization of system by checking the services running on system.

analysis of packets

[edit] Fuzzy agents

In computer science a fuzzy agent is a software agent that implements fuzzy logic. This software entity interacts with its environment through an adaptive rule-base and can therefore be considered as a type of intelligent agent.

[edit] What an agent is not

It is not useful to prescribe what is, and what is not an agent. However contrasting the term with related concepts may help clarify its meaning:

[edit] Distinguishing agents from programs

Fanklin & Graesser (1997) discuss four key notions that distinguish agents from arbitrary programs: reaction to the environment, autonomy, goal-orientation and persistence.

[edit] Intuitive distinguishing agents from objects

  • Agents are more autonomous than objects.
  • Agents have flexible behaviour, reactive, proactive, social.
  • Agents have at least one thread of control but may have more.
(Wooldridge, 2002)[citation needed]

[edit] Distinguishing agents from expert systems

  • Expert systems are not coupled to their environment;
  • Expert systems are not designed for reactive, proactive behavior.
  • Expert systems do not consider social ability
(Wooldridge, 2002)

[edit] Distinguishing intelligent software agents from intelligent agents in artificial intelligence

  • Intelligent agents (also known as rational agents) are not just software programs, they may also be machines, human beings, communities of human beings (such as firms) or anything that is capable of goal directed behavior.
(Russell & Norvig 2003)

[edit] History

The concept of an agent can be traced back to Hewitt's Actor Model (Hewitt, 1977) - "A self-contained, interactive and concurrently-executing object, possessing internal state and communication capability."

To be more academic, software agent systems are a direct evolution from Multi-Agent Systems (MAS). MAS evolved from Distributed Artificial Intelligence (DAI), Distributed Problem Solving (DPS) and Parallel AI (PAI), thus inheriting all characteristics (good and bad) from DAI and AI.

John Sculley’s 1987 “Knowledge Navigator” video portrayed an image of a relationship between end-users and agents. Being an ideal first, this field experienced a series of unsuccessful top-down implementations, instead of a piece-by-piece, bottom-up approach. The range of agent types is now (from 1990) broad: WWW, search engines, etc.

[edit] Examples

[edit] Intelligent software agents

Haag (2006) suggests that there are only four essential types of intelligent software agents:[2]

  1. Buyer agents or shopping bots
  2. User or personal agents
  3. Monitoring-and-surveillance agents
  4. Data Mining agents

[edit] Buyer agents (shopping bots)

Buyer agents travel around a network (i.e. the internet) retrieving information about goods and services. These agents, also known as 'shopping bots', work very efficiently for commodity products such as CDs, books, electronic components, and other one-size-fits-all products. Amazon.com is a good example of a shopping bot. The website will offer you a list of books that you might like to buy on the basis of what you're buying now and what you have bought in the past.

Another example is used on eBay. At the bottom of the page there is a list of similar products that other customers who did the same search looked at. This is because it is assumed the user tastes are relatively similar and they will be interested in the same products. This technology is known as collaborative filtering.

[edit] User agents (personal agents)

User agents, or personal agents, are intelligent agents that take action on your behalf. In this category belong those intelligent agents that already perform, or will shortly perform, the following tasks:

  • Check your e-mail, sort it according to the user's order of preference, and alert you when important emails arrive.
  • Play computer games as your opponent or patrol game areas for you.
  • Assemble customized news reports for you. There are several versions of these, including newshub and CNN.
  • Find information for you on the subject of your choice.
  • Fill out forms on the Web automatically for you, storing your information for future reference (e.g. newshub).
  • Scan Web pages looking for and highlighting text that constitutes the "important" part of the information there
  • "Discuss" topics with you ranging from your deepest fears to sports

[edit] Monitoring-and-surveillance (predictive) agents

Monitoring and Surveillance Agents are used to observe and report on equipment, usually computer systems. The agents may keep track of company inventory levels, observe competitors' prices and relay them back to the company, watch stock manipulation by insider trading and rumors, etc.

service monitoring

For example, NASA's Jet Propulsion Laboratory has an agent that monitors inventory, planning, and scheduling equipment ordering to keep costs down, as well as food storage facilities. These agents usually monitor complex computer networks that can keep track of the configuration of each computer connected to the network.

[edit] Data mining agents

This agent uses information technology to find trends and patterns in an abundance of information from many different sources. The user can sort through this information in order to find whatever information they are seeking.

A data mining agent operates in a data warehouse discovering information. A 'data warehouse' brings together information from lots of different sources. "Data mining" is the process of looking through the data warehouse to find information that you can use to take action, such as ways to increase sales or keep customers who are considering defecting.

'Classification' is one of the most common types of data mining, which finds patterns in information and categorizes them into different classes. Data mining agents can also detect major shifts in trends or a key indicator and can detect the presence of new information and alert you to it. For example, the agent may detect a decline in the construction industry for an economy; based on this relayed information construction companies will be able to make intelligent decisions regarding the hiring/firing of employees or the purchase/lease of equipment in order to best suit their firm.

[edit] Other examples

Some other examples of current Intelligent agents include some spam filters, game bots, and server monitoring tools. Search engine indexing bots also qualify as intelligent agents.

[edit] Design issues

Interesting issues to consider in the development of agent-based systems include[citation needed]

  • how tasks are scheduled and how synchronization of tasks is achieved
  • how tasks are prioritized by agents
  • how agents can collaborate, or recruit resources,
  • how agents can be re-instantiated in different environments, and how their internal state can be stored,
  • how the environment will be probed and how a change of environment leads to behavioral changes of the agents
  • how messaging and communication can be achieved,
  • what hierarchies of agents are useful (e.g. task execution agents, scheduling agents, resource providers ...).

For software agents to work together efficiently they must share semantics of their data elements. This can be done by having computer systems publish their metadata.

The definition of agent processing can be approached from two interrelated directions:

  • internal state processing and ontologies for representing knowledge
  • interaction protocols - standards for specifying communication of tasks

Agent systems are used to model real world systems with concurrency or parallel processing.

  • Agent Machinery - Engines of various kinds, which support the varying degrees of intelligence
  • Agent Content - Data employed by the machinery in Reasoning and Learning
  • Agent Access - Methods to enable the machinery to perceive content and perform actions as outcomes of Reasoning
  • Agent Security - Concerns related to distributed computing, augmented by a few special concerns related to agents

The agent uses its access methods to go out into local and remote databases to forage for content. These access methods may include setting up news stream delivery to the agent, or retrieval from bulletin boards, or using a spider to walk the Web. The content that is retrieved in this way is probably already partially filtered – by the selection of the newsfeed or the databases that are searched. The agent next may use its detailed searching or language-processing machinery to extract keywords or signatures from the body of the content that has been received or retrieved. This abstracted content (or event) is then passed to the agent’s Reasoning or inferencing machinery in order to decide what to do with the new content. This process combines the event content with the rule-based or knowledge content provided by the user. If this process finds a good hit or match in the new content, the agent may use another piece of its machinery to do a more detailed search on the content. Finally, the agent may decide to take an action based on the new content; for example, to notify the user that an important event has occurred. This action is verified by a security function and then given the authority of the user. The agent makes use of a user-access method to deliver that message to the user. If the user confirms that the event is important by acting quickly on the notification, the agent may also employ its learning machinery to increase its weighting for this kind of event.

[edit] Notes

  1. ^ From the Latin agere (to do): an agreement to act on one's behalf.
  2. ^ Stephen Haag. "Management Information Systems for the Information Age", 2006. Pages 224-228.

[edit] External links

Personal tools