A Multi Agent System consists of a group of highly autonomous entities (agents) that all perform a single function well. Together they solve a complex problem or control a complex system.

An Agent is a component that autonomously interacts with its environment. It is never told what to do, one can merely request it to do something. It acts without being told. It should have a single, clear purpose. It's internal structure is not accessible to others.

Where does it come from?

The term Multi-Agent Systems was popularized by Mike Wooldridge in his 1992 PhD thesis. MAS are an exponent of Distributed Artificial Intelligence and Agent techniques.

When should you use it?

Use it when your application requires many parts that all need to be active at the same time, do not have a single solution space and do not require a centralized control.

How does it work?

Agents can be organized in different ways in a MAS:

  • Flat (democracy): Any agent can directly contact all other agents. The system is either closed, so all agents know the location of all other agents, or open, which requires a agent location mechanism.
  • Fixed Hierarchy: The agents only communicate to the the ones directly above or below them. No faculty to find other agents is necessary. The upper level agents require the services of lower level agents.
  • Subsumption: An agent may contain other agents.
  • Modular. Agents are grouped together in modules. Within these modules communication is much more direct than between agents of different modules.

Picture: Flat Organisation

Picture: Hierarchical Organisation

Picture: Subsumption Organisation

Picture: Modular Organisation

Agents communicate with each other by sending messages. The messages use Speech Act Theory as their basis. Special agent-to-agent communication languages exist, formalising the way they should communicate. Along with formalised agent ontologies, they form semi-standardized ways of letting all sorts of agents communicate. This seems overkill for small size applications, however.


  • The order of the steps that the system as a whole executes is not clear. Therefore it can be hard to trace the way a solution is found. Also, if an agent reacts to data it has received from another agent, this data may be out of date.