Auteur / Autrice : | Arnaud Letort |
Direction : | Nicolas Beldiceanu |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique et applications |
Date : | Soutenance le 28/10/2013 |
Etablissement(s) : | Nantes, Ecole des Mines |
Ecole(s) doctorale(s) : | Sciences et technologie de l'information et mathématiques |
Partenaire(s) de recherche : | Laboratoire : Ecole nationale supérieure des Mines de Nantes - INRIA - LINA - TASC - Laboratoire d'Informatique de Nantes Atlantique / LINA - INRIA - LINA - TASC |
Jury : | Président / Présidente : Claude Jard |
Examinateurs / Examinatrices : Eric Pinson, Laurent Perron | |
Rapporteurs / Rapporteuses : Patrice Boizumault, Philippe Baptiste |
Résumé
La programmation par contraintes est une approche régulièrement utilisée pour résoudre des problèmes combinatoires d’origines diverses. Dans cette thèse nous nous focalisons sur les problèmes d’ordonnancement cumulatif. Un problème d’ordonnancement consiste à déterminer les dates de débuts et de fins d’un ensemble de tâches, tout en respectant certaines contraintes de capacité et de précédence. Les contraintes de capacité concernent aussi bien des contraintes cumulatives classiques où l’on restreint la somme des hauteurs des tâches intersectant un instant donné, que des contraintes cumulatives colorées où l’on restreint le nombre maximum de couleurs distinctes prises par les tâches. Un des objectifs récemment identifiés pour la programmation par contraintes est de traiter des problèmes de grandes tailles, habituellement résolus à l’aide d’algorithmes dédiés et de métaheuristiques. Par exemple, l’utilisation croissante de centres de données virtualisés laisse apparaitre des problèmes d’ordonnancement et de placement multi-dimensionnels de plusieurs milliers de tâches. Pour atteindre cet objectif, nous utilisons l’idée de balayage synchronisé considérant simultanément une conjonction de contraintes cumulative et des précédences, ce qui nous permet d’accélérer la convergence au point fixe. De plus, de ces algorithmes de filtrage nous dérivons des procédures gloutonnes qui peuvent être appelées à chaque nœud de l’arbre de recherche pour tenter de trouver plus rapidement une solution au problème. Cette approche permet de traiter des problèmes impliquant plus d’un million de tâches et 64 ressources cumulatives. Ces algorithmes ont été implémentés dans les solveurs de contraintes Choco et SICStus, et évalués sur divers problèmes déplacement et d’ordonnancement.