Epilogue
After seven chapters of swarm-based approaches, where do we stand? First of all, it is clear that social insects and, more generally, natural systems, can bring much insight into the design of algorithms and artificial problem-solving systems. In particular, artificial swarm-intelligent systems are expected to exhibit the features that may have made social insects so successful in the biosphere: flexibility, robustness, decentralized control, and self-organization. The examples that have been described throughout this book provide illustrations of these features, either explicitly or implicitly. The swarm-based approach, therefore, looks promising, in face of a world that continually becomes more complex, dynamic, and overloaded with information than ever. There remain some issues, however, as to the application of swarm intelligence to solving problems. . . . 1. First, it would be very useful to define methodologies to “program” a swarm or multiagent system so that it performs a given task. There is a similarity here with the problem of training neural networks [167]: how can one tune interaction weights so that the network performs a given task, such as classification, recognition, etc. The fact that (potentially mobile) agents in a swarm can take actions asynchronously and at any spatial location generally makes the problem extremely hard. In order to solve this “inverse” problem and find the appropriate individual algorithm that generates the desired collective pattern, one can either systematically explore the behaviors of billions of different swarms, or search this huge space of possible swarms with some kind of cost function, assuming a reasonable continuity of the mapping from individual algorithms to collective productions. This latter solution can be based, for example, on artificial evolutionary techniques such as genetic algorithms [152, 171] if individual behavior is adequately coded and if a cost function can be defined. 2. Second, and perhaps even more fundamental than the issue of programming the system, is that of defining it: How complex should individual agents be? Should they be all identical? Should they have the ability to learn? Should they be able to make logical inferences? Should they be purely reactive? How local should their knowledge of the environment be?