Subsumption architecture

Subsumption architecture is a methodology for developing Artificial intelligence robots. It is heavily associated with behavior based robotics. The term was introduced by Rodney Brooks and colleagues in 1986 . Subsumption has been widely influential in autonomous robotics and elsewhere in real-time AI. The first journal publication mentioning the architecture, Brooks (1986), showed 3500 citations on Google Scholar as of October 2006.

Description
A subsumption architecture is a way of decomposing complicated intelligent behaviour into many "simple" behaviour modules, which are in turn organized into layers. Each layer implements a particular goal of the agent, and higher layers are increasingly more abstract. Each layer's goal subsumes that of the underlying layers, e.g. the decision to move forward by the eat-food layer takes into account the decision of the lowest obstacle-avoidance layer.

For example, a robot's lowest layer could be "avoid an object", on top of it would be the layer "wander around", which in turn lies under "explore the world". The top layer in such a case could be "create a map", which is the ultimate goal. Each of these horizontal layers accesses all of the sensor data and generates actions for the actuators — the main caveat is that separate tasks can suppress (or overrule) inputs or inhibit outputs. This way, the lowest layers can work like fast-adapting mechanisms (reflexes), while the higher layers control the main direction to be taken in order to achieve the overall goal. Feedback is given mainly through the environment.

Attributes of the architecture
The main advantages of the methodology are: These innovations allowed the development of the first robots capable of animal-like speeds.
 * the modularity,
 * the emphasis on iterative development & testing of real-time systems in their target domain, and
 * the emphasis on connecting limited, task-specific perception directly to the expressed actions that require it.

Main disadvantages of this model are:
 * the inability to have many layers, since the goals begin interfering with each other,
 * the difficulty of designing action selection through highly distributed system of inhibition and suppression, and
 * the consequent rather low flexibility at runtime.