In this chapter, two possible approaches for evolving complex behaviors were discussed. In the first approach, the GP is used to explore possible hierarchy in the solution through implementing ADF and maintaining a subroutine library or using neural networks as primitive functions.
In the second approach, human programmer set the architecture of the robot controller and then the GP is used to evolve each module of this architecture. Two examples of architectures were discussed, the subsumption architecture and action selection architecture. Two experiments were presented to demonstrate this approach. The first used subsumption architecture to control a team of two robots with different capabilities to implement a cooperative behavior. The second experiment used action selection architecture to allow switching between the simpler behaviors that constitute the main behavior.