Finally, hierarchical systems generally are not robust enough to handle malfunctions in single component agents. Reactive systems also find it relatively easy to adjust to sudden changes in the world at large. Reactive cooperative systems have a number of problems. In addition, the emergent nature of reactive intelligence puts the burden of deciding how to react to various states of the world on the programmer, instead of leaving it with the agents themselves. Because the number of world-states grows exponentially with the number of agents involved, the job of programming reactive systems can easily exceed the abilities of a human programmer.
Complex tasks are generally beyond the reach of reactive systems.
As implemented, communicating systems have not had much success - their domains are limited, and their performance often lackluster. Current research focuses on issues of whether to communicate, how much to communicate, and what to communicate. Each of these questions are subjects of some controversy. The ideal cooperative system will combine characteristics from each of these types of systems. It will be retain the robustness of locally organized systems, place the burden of computating responses to world-states on the agent instead of the programmer, model other agents in order to cooperate effectively, and be able to handle complex problems in the real world.