|
LinuxHPC.org/Cluster Builder 1.3
Software Agent |
|||
|
By LinuxHPC.org and Cluster Resources
|
|||
|
In computer science, a software agent is an abstraction, a logical model that describes 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 when (and if) action is appropriate. 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 machines), multi-agent systems (distributed agents that do not have the capabilities to achieve an objective alone and thus must communicate) , mobile agents (agents that can relocate their execution onto different processors) and more. Definition The term "agent" describes a software abstraction, an idea, or a concept, similar to OOP terms such as methods, functions, and objects. 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. Various authors have proposed different definitions of agents, these commonly include concepts such as
Intelligent agents The design of intelligent agents (or intelligent software agents) is a branch of artificial intelligence research. Capabilities of intelligent agents include:
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.
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. Autonomous agents Some software agents are claimed to be autonomous being self-contained and capable of making independent decisions and taking actions to satisfy internal goals based upon their perceived environment. Such claims are controversial. 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. There is a hardware solution to this problem in supervision: the Popek and Goldberg virtualization requirements, which in principle prevent the execution of critical instructions without entering a suitable mode (such as System or Super-user mode). 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. 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). Mobile agents Agent code that moves itself, including its execution state, on to another processor, to continue execution there. This is also referred to as mobile code. Fuzzy agents An agent employing fuzzy logic. What is not an agent ... 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: Distinguishing agents from programs Fanklin & Graesser (1996) discuss four key notions that distinguish agents from arbitrary programs: reaction to the environment, autonomy, goal-orientation and persistence. Distinguishing agents from objects
Distinguishing agents from expert systems
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 (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 relationship between end-users and agents. Being an ideal first, this field experienced a series of unsuccessful top-down implementation, instead of piece-to-piece, bottom-up approach. Range of agent types is now broad (from 1990) WWW, Search engines,…etc. Examples Buyer agents (shopping bots) These bots help Internet surfers find products and services they are searching for. For example, when a person surfs for an item 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. User agents (personal agents) These agents are meant to carry out tasks automatically for the user. For example, some bots sort emails according to the user's order of preference, assemble customized news reports (e.g. newshub), or fill out webpage forms with the user's stored information. Monitoring-and-surveillance (predictive) agents These agents are used to observe and report on equipment, usually computer systems. For example, the agents 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. 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. An example of this class of bot would be a data mining agent that detects market conditions and changes and relays them back to a user/company so that the user/company can make decisions accordingly. 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. 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. More examples can be found at BotSpot. * User agent - for browsing the World Wide Web * Mail transfer agent - For serving E-mail, such as Microsoft Outlook. Why? It communicates with the POP3 mail server, without users having to understand POP3 command protocols. It even has rule sets that filter mail for the user, thus sparing them the trouble of having to do it themselves.
Design issues Interesting issues to consider in the development of agent-based systems include
The definition of agent processing can be approached from two interrelated directions:
All text used in this article is available under the GNU Free Documentation License. It uses material from the Wikipedia article "Software Agent". |
||
| © 2010 Adaptive Computing | |||