Thèse soutenue

Modélisation et résolution de problèmes d’ordonnancement au sein du solveur d’optimisation mathématique LocalSolver

FR  |  
EN
Auteur / Autrice : Léa Blaise
Direction : Christian ArtiguesThierry Benoist
Type : Thèse de doctorat
Discipline(s) : Mathématiques Appliquées
Date : Soutenance le 28/04/2022
Etablissement(s) : Toulouse, INSA
Ecole(s) doctorale(s) : École doctorale Mathématiques, informatique et télécommunications
Partenaire(s) de recherche : Laboratoire : LAAS - Laboratoire d'Analyse et d'Architecture des Systèmes - Laboratoire d'analyse et d'architecture des systèmes / LAAS
Jury : Président / Présidente : Olivier Hudry
Examinateurs / Examinatrices : Christine Solnon
Rapporteurs / Rapporteuses : Jean-Charles Billaut, Laetitia Jourdan

Mots clés

FR  |  
EN

Mots clés contrôlés

Résumé

FR  |  
EN

Résoudre un problème d'ordonnancement consiste à organiser la réalisation de tâches au cours du temps : déterminer leur répartition sur les différentes ressources disponibles ainsi que leurs dates d'exécution. Le travail de cette thèse se concentre sur les problèmes d’ordonnancement de type disjonctif et/ou packing, avec ou sans flexibilité des ressources. L'ensemble des contributions algorithmiques de la thèse ont été implémentées au sein du solveur d'optimisation mathématique LocalSolver, dont les techniques de résolution combinent des méthodes exactes, telles que la programmation linéaire, non linéaire et par contraintes, et heuristiques, comme la recherche locale et des algorithmes constructifs.Le travail de cette thèse répond à deux problématiques principales, liées au traitement de ce type de problèmes d'ordonnancement par LocalSolver. Le premier objectif se dégageant de ces problématiques consiste à permettre aux utilisateurs du solveur de modéliser simplement un grand nombre de problèmes d'ordonnancement disjonctif. En tirant profit du formalisme de modélisation ensembliste de LocalSolver, on propose des formulations génériques, adaptables à différentes familles de problèmes d'ordonnancement, permettant d'exprimer simplement les notions de tâches, de relations de précédence, ou encore de non-chevauchement des tâches. Les formulations génériques choisies reposent sur l'utilisation combinée de variables entières, modélisant les dates de début et durées de tâches, et de variables de listes, représentant leur ordre sur les différentes ressources disjonctives.Le second objectif de la thèse consiste à améliorer les performances de LocalSolver sur les problèmes d'ordonnancement étudiés, en intégrant différents algorithmes de résolution les plus génériques possibles à la composante de recherche locale du solveur. Cette généricité des contributions est cruciale : on ne cherche pas à améliorer les performances du solveur sur un unique problème, ni même seulement sur les problèmes d'ordonnancement, mais sur tous les problèmes présentant des structures caractéristiques de l'ordonnancement disjonctif.Les contributions de cette thèse sont regroupées en trois catégories : des algorithmes d'initialisation, des mouvements de recherche locale, et un algorithme de propagation de contraintes. On présente deux algorithmes constructifs d'initialisation des variables ensemblistes, aidant le solveur à trouver une solution réalisable immédiatement sur des problèmes comme ceux de l'Aircraft Landing ou de l'Assembly Line Balancing, et accélérant ainsi la recherche de solutions de bonne qualité sur ces problèmes. On présente également des mouvements de recherche locale, reposant sur la détection de structures spécifiques dans le modèle (non-chevauchement des tâches, précédences…). On présente également un algorithme de réparation de solutions par propagation de contraintes, appelé au cours de la recherche locale après chaque mouvement conduisant à une solution infaisable. Notre algorithme diffère de la propagation classique de la programmation par contraintes par plusieurs points. Par exemple, il ne propage que les réductions de domaine excluant la valeur courante des variables, et peut prendre des décisions arbitraires lorsqu'il rencontre une contrainte pouvant être réparée de différentes manières. On démontre que dans certains cas l’algorithme présente des propriétés lui assurant de trouver une réparation s'il en existe une. Cet algorithme permet de pallier les difficultés rencontrées par la recherche locale sur les problèmes d'ordonnancement aux contraintes très serrées (passer d'une bonne solution à une autre nécessite de réaliser des changements sur un grand nombre de variables). L'intégration de ces mouvements et de cet algorithme de réparation au sein de la recherche locale de LocalSolver apporte des gains de performance importants sur divers problèmes (Job Shop et variantes, Unit Commitment, Assembly Line Balancing, Bin Packing).