Despite the development of three-layer hybrid architectures, programming CCA is still hard. Consequently, more approaches are being tried, including using MAS as architectures for single CCA (e.g. 35,37). I believe that the problem with three-layer architectures is that they tend to trivialise the behavior modules. The primary advantage of the behavior-based approach and modular approaches in general is that they simplify coding the agent by allowing the programming task to be decomposed. Unfortunately, the drive to simplify the planning aspects of module coordination has lead many developers to tightly constrain what a behavior module can look like (fip,24). Consequently, the engineering problem has become hard again.
To address these issues, I have developed Behavior-Oriented Design (BOD) (8,11). BOD has two major engineering advantages over three-layer architectures:
At first glance, it may appear that BOD differs from the three-layer approach in that it has dropped the top, deliberative layer, but this is not the case. The real difference between my approach and Gat's is the loss of the bottom layer of purely reactive modules. I don't believe that there are many elements of intelligence that don't require some state. Perception requires memory: everything from very recent sensory information, which can help disambiguate a sight or sound, to life-long learning, which can establish expectations in the form of semantic knowledge about word meanings or a building's layout.
Under BOD, the behaviors are semi-autonomous modules, optionally with their own processes. A behavior can store sensory experience and apply complex processes of learning or deliberation across them. Or it can simply encapsulate clever algorithms for performing tasks. Nevertheless, a BOD system is reactive. This is both because the individual behaviors can respond immediately to salient sensory information, and because arbitration between modules is controlled by reactive plans. The primitive elements of the reactive plans are an interface to the behaviors; they are implemented as methods on the objects that encode the behaviors. These methods should produce immediate (or at least very rapid) results. Reactive plan primitives require a behavior to provide an anytime response (14) on demand, but the behaviors are free to perform the sorts of longer-term computations described by Gat continuously in the background. Thus all of an agent's behaviors (including behavior arbitration) can run continuously in parallel. Only when actions are expressed externally to the agent are they likely to be subject to action selection through behavior arbitration. Action selection is forced by competition for resources, such as the location of visual attention or the position of the agent's body (4).