There have been many definitions for an agent, and the most widely accepted one was given by Wooldridge & Jennings in 1995 “An encapsulated computer system, situated in some environment, and capable of flexible autonomous action in that environment in order to meet its design objectives.”
This definition highlighted some of the most important attributes that an agent should have. First of all, an agent is still a piece of computer software, except it is encapsulated, which is similar to the concept of “software components”. The idea of encapsulation is derived from object-oriented methodologies, and its main purpose is to build software as entities whereby each entity contains functionalities that are somehow closely related, with some level of self-sufficiency and transparency from external points of view. From the above definition, we can see there are clear boundaries defined between an agent and the environment it is running in.
Finally, the definition also indicated that there may be multiple agents “situated” within the same environment, each agent has its own designed objectives, and it is also very likely that there are system-level objectives, in order to achieve its objectives, an agent may have to work with other agents, whereas co-operation and coordination between agents remain to be very challenging issue which still requires a lot of research.
Weak and Strong notion of Agency
In agent theory, a commonly used classification scheme to the notion of agency is given by Wooldridge and Jennings (1995) as: the weak notion of agency and the strong notion of agency [47]. The weak notion refers to the following characteristics of agents:
Autonomy - agent has mental state and own control over its actions
Social Ability - agents are situated in their environment and they interact to each other