A
mobile agent is a type of
software agent, with the feature of
autonomy,
social ability,
learning, and most significantly,
mobility. More specifically, a mobile agent is a
process that can transport its state from one environment to another, with its data intact, and be capable of performing appropriately in the new environment. Mobile agents decide when and where to move. Movement is often evolved from
RPC methods. Just as a user directs a web browser to "visit" a website (the browser merely downloads a copy of the site, or one version of it in the case of dynamic web sites), a mobile agent accomplishes a move through data duplication. When a mobile agent decides to move, it
saves its own state (
process image), transports this saved state to the new host and resumes execution from the saved state. A mobile agent is a specific form of
mobile code, within the field of
code mobility. However, in contrast to the
remote evaluation and
code on demand programming paradigms, mobile agents are active in that they can
choose to migrate between computers at any time during their execution. This makes them a powerful tool for implementing
distributed applications in a
computer network. There are two types of mobile agents. The classification is based on their migration path. • Mobile agents with predefined path: these have a static migration path. • Free roaming mobile agent: these have a dynamic migration path. Depending on the present network condition, the mobile agent chooses its path. An open multi-agent system (MAS) is a system in which agents, that are owned by a variety of stakeholders, continuously enter and leave the system. ==History and Evolution==