Optimisation par colonies de fourmis
Christine Solnon
Lavoisier
Préface de Pascal Van Hentenryck
13
Chapitre 1. Introduction
15
Chapitre 2. Notions de complexité
21
2.1. Complexité algorithmique21
2.2. Complexité théorique d'un problème22
2.2.1. La classe P23
2.2.2. La classe NP23
2.2.3. Problèmes NP-complets24
2.2.4. Problèmes NP-difficiles25
2.2.5. Problèmes indécidables25
2.2.6. Complexité des problèmes d'optimisation25
2.3. Difficulté des instances d'un problème26
2.3.1. Notion de transition de phases27
2.3.2. Notion de paysage de recherche28
2.4. ... et en pratique ?30
2.4.1. Exploitation de cas particuliers32
2.4.2. Algorithmes d'approximation32
2.4.3. Approches heuristiques et méta-heuristiques33
2.4.4. Structuration et réduction de l'espace de recherche34
Première partie. Programmation par contraintes
37
Introduction à la première partie
39
Chapitre 3. Problèmes de satisfaction de contraintes
41
3.1. Qu'est-ce qu'une contrainte ?41
3.1.1. Définition d'une contrainte en extension42
3.1.2. Définition d'une contrainte en intention42
3.1.3. Arité d'une contrainte et contraintes globales42
3.2. Qu'est-ce qu'un problème de satisfaction de contraintes ?43
3.2.1. Définition d'un problème de satisfaction de contraintes43
3.2.2. Solution d'un problème de satisfaction de contraintes43
3.2.3. Complexité d'un problème de satisfaction de contraintes44
3.3. Exemple 1 : le problème des reines45
3.3.1. Description du problème45
3.3.2. Première modélisation45
3.3.3. Deuxième modélisation46
3.3.4. Troisième modélisation47
3.3.5. De l'influence de la modélisation sur la résolution48
3.4. Exemple 2 : les mariages stables49
3.4.1. Description du problème49
3.4.2. Modélisation du problème sous la forme d'un CSP51
3.5. Exemple 3 : CSP binaires générés aléatoirement52
3.6. Exemple 4 : problème d'ordonnancement de voitures53
3.6.1. Description du problème53
3.6.2. Modélisation sous la forme d'un CSP55
3.7. Discussion56
Chapitre 4. Méthodes de résolution exactes
57
4.1. Construction d'un arbre de recherche58
4.2. Propagation de contraintes et consistances partielles59
4.2.1. Filtrage par vérification en avant61
4.2.2. Filtrage par consistance d'arc61
4.3. Heuristiques d'ordre63
4.3.1. Heuristiques pour le choix des variables64
4.3.2. Heuristiques pour le choix des valeurs65
4.3.3. Heuristiques aléatoires et redémarrage66
4.4. Discussion66
Chapitre 5. Méthodes de résolution heuristiques
69
5.1. Problèmes de satisfaction de contraintes et optimisation70
5.1.1. Maximiser la satisfaction des contraintes70
5.1.2. Problèmes sous-contraints et optimisation sous contraintes71
5.2. Approches par voisinage72
5.2.1. Algorithmes génétiques72
5.2.2. Recherche locale75
5.2.3. Optimisation par essaims de particules78
5.3. Approches constructives80
5.3.1. Algorithmes gloutons et gloutons aléatoires80
5.3.2. Algorithmes par estimation de distributions82
5.3.3. Optimisation par colonies de fourmis84
5.4. Intensification versus diversification de la recherche84
5.5. Discussion86
Chapitre 6. Langages de programmation par contraintes
87
6.1. Langages basés sur des approches exactes88
6.1.1. Prolog et la programmation par contraintes88
6.1.2. Bibliothèques de programmation par contraintes90
6.2. Langages basés sur des approches heuristiques91
6.3. Discussion93
Deuxième partie. Optimisation par colonies de fourmis
95
Introduction à la deuxième partie
97
Chapitre 7. Des fourmis naturelles aux fourmis artificielles
99
7.1. Systèmes complexes et intelligence collective99
7.2. Recherche de plus courts chemins par une colonie de fourmis101
7.3. Modélisation de l'expérience du double pont102
Chapitre 8. La méta-heuristique ACO
105
8.1. Ant System et le voyageur de commerce106
8.2. Principe général de la méta-heuristique ACO107
8.2.1. Structure phéromonale et graphe de construction108
8.2.2. Construction de combinaisons par les fourmis109
8.2.3. Amélioration des combinaisons construites par recherche locale110
8.2.4. Mise à jour de la phéromone111
8.2.5. Paramètres d'un algorithme ACO112
8.3. Intensification versus diversification112
8.3.1. Intensification112
8.3.2. Diversification115
8.3.3. Indicateurs de diversification/intensification116
8.4. Le coin du programmeur119
8.4.1. Sélection d'un composant en fonction d'une probabilité119
8.4.2. Indicateurs de diversification/intensification122
8.5. Discussion123
Chapitre 9. Ordonnancement de voitures avec ACO
125
9.1. Notations125
9.2. Structure phéromonale pour identifier les «bonnes» séquences126
9.2.1. Structure phéromonale127
9.2.2. Construction d'une séquence par une fourmi128
9.2.3. Dépôt de phéromone130
9.3. Structure phéromonale pour identifier les voitures «critiques»130
9.3.1. Structure phéromonale130
9.3.2. Construction d'une séquence par une fourmi131
9.3.3. Mise à jour de la phéromone131
9.4. Combinaison des deux structures phéromonales132
9.4.1. Première structure phéromonale132
9.4.2. Seconde structure phéromonale132
9.4.3. Construction d'une séquence par une fourmi133
9.5. Evaluation expérimentale133
9.5.1. Jeux d'essais133
9.5.2. Comparaison des différents algorithmes ACO134
9.5.3. Comparaison avec d'autres approches137
9.5.4. Discussion141
Chapitre 10. Recherche de sous-ensembles avec ACO
143
10.1. Problèmes de sélection de sous-ensembles144
10.1.1. Recherche d'une clique maximum144
10.1.2. Le sac à dos multidimensionnel144
10.1.3. Maximisation de la satisfiabilité de formules booléennes (Max-SAT)145
10.1.4. Satisfaction maximale de contraintes (MaxCSP)145
10.1.5. Couverture minimale de sommets146
10.1.6. Recherche du plus grand sous-graphe commun146
10.2. Description d'Ant-SSP146
10.2.1. Construction d'une combinaison par une fourmi147
10.2.2. Dépôt de phéromone149
10.3. Instanciations d'Ant-SSP par rapport à deux stratégies phéromonales149
10.3.1. La stratégie phéromonale «Vertex»150
10.3.2. La stratégie phéromonale «Clique»150
10.3.3. Comparaison des deux stratégies151
10.4. Application d'Ant-SSP à la résolution de CSP153
10.4.1. Facteur heuristique153
10.4.2. Recherche locale154
10.5. Résultats expérimentaux154
10.5.1. Instances binaires aléatoires154
10.5.2. Résultats sur les instances de la compétition de solveurs 2006156
10.6. Discussion159
Troisième partie. Programmation par contraintes avec des
colonies de fourmis
161
Introduction à la troisième partie
163
Chapitre 11. Intégration d'ACO dans Ilog Solver
165
11.1. La bibliothèque de programmation par contraintes Ilog Solver165
11.2. Principe de l'intégration d'une recherche ACO dans Ilog Solver167
11.2.1. Stratégie phéromonale169
11.2.2. Choix d'une variable et d'une valeur170
11.2.3. Propagation de contraintes171
11.2.4. Mise à jour de la phéromone171
11.3. Illustration sur le problème d'ordonnancement de voitures171
11.3.1. Modélisation CSP du problème171
11.3.2. Heuristique d'ordre de choix de variables172
11.3.3. Stratégies phéromonales considérées172
11.3.4. Facteur heuristique173
11.4. Résultats expérimentaux174
11.4.1. Instanciations d'Ant-CP comparées174
11.4.2. Paramétrage et jeu d'essai174
11.4.3. Résultats avec l'heuristique EtaDSU175
11.4.4. Résultats avec l'heuristique EtaDSU+P176
11.5. Discussion176
Chapitre 12. Conclusion
179
12.1. Vers une recherche ACO basée sur les contraintes179
12.2. Vers une recherche ACO réactive180
Bibliographie
183
Index
191