Thèse de doctorat (2016)
Résumé
L'objectif général de cette thèse est de développer un algorithme efficace pour la résolution du problème de partitionnement d'ensemble (SPP : Set Partitioning Problem). Le SPP est un problème très connu de la programmation linéaire en nombres entiers. Il consiste à partitionner un ensemble de tâches (ex : vols d'avion, segments de trajet d'autobus, ...) en sous-ensembles (routes de véhicules ou suites de tâches effectuées par une personne) de sorte que les sous-ensembles sélectionnés aient un coût total minimum tout en couvrant chaque tâche exactement une et une seule fois. Le SPP est en général résolu par la méthode branch-and-price. Cette méthode peut être excessivement lente dans le cas de problèmes difficiles de très grande taille. Le paradigme derrière la méthode est “dual” ou “tout ou rien” dans le sens où une solution entière du problème est en général obtenue très tard ou à la fin de la résolution pour les problèmes pratiques. Avoir une solution entière rapidement est très apprécié en pratique. En plus, il est très fréquent, en pratique, de vouloir optimiser un problème pour lequel on connaît déjà une solution avec une bonne information primale que l'on veut, au moins, améliorer. La méthode branch-and-price n'est pas adaptée pour tirer avantage d'une telle situation. Une approche “primale” est mieux appropriée pour la résolution du SPP (ex : planification d'horaires de chauffeurs d'autobus). L'approche, en question, s'appelle l'algorithme du simplexe en nombres entiers et consiste à commencer d'une solution initiale connue et effectuer une série de petites améliorations de façon à produire une suite de solutions présentant des coûts décroissants et convergeant vers une solution optimale. Plusieurs auteurs ont proposé par le passé des algorithmes pour résoudre le SPP d'une façon primale. Malheureusement, aucun de ces algorithmes n'est assez efficace pour être utilisé en pratique. Le principal facteur derrière cela est la nature fortement dégénérée du SPP. Pour chaque solution, il y a un très grand nombre de bases permettant d'identifier des mouvements vers des solutions voisines. Le phénomène de la dégénérescence implique qu'il est difficile, et même combinatoire, de passer d'une solution entière à une autre ; mais ces algorithmes ne proposent pas de techniques efficaces pour pallier ce phénomène. Donc, plus précisément, l'objectif de cette thèse est de proposer une implémentation de l'algorithme du simplexe en nombres entiers pratique et efficace contre la dégénérescence. C'est-à-dire que l'implémentation recherchée doit être capable de résoudre des SPPs de grande taille ; et elle doit aussi être en mesure d'exploiter une solution initiale donnée et produire, itérativement et dans des temps raisonnablement courts, des solutions améliorées. Pour ce faire, nous commençons, dans un premier travail, par l'exploitation des idées d'un algorithme appelé simplexe primal amélioré (IPS : Improved Primal Simplex). Cet algorithme cerne efficacement le phénomène de la dégénérescence lors de la résolution d'un programme linéaire quelconque. Ainsi, nous proposons un algorithme inspiré par IPS et adapté au contexte du SPP (nombres entiers). L'algorithme, baptisé simplexe en nombres entiers avec décomposition, commence à partir d'une solution initiale avec une bonne information primale. Comme dans IPS, il améliore itérativement la solution courante en décomposant le problème original en deux sous-problèmes : un premier sous-problème, appelé problème réduit, qui est un petit SPP, permet d'améliorer la solution en ne considérant que les colonnes dites compatibles avec la solution courante. Un deuxième sous-problème, appelé problème complémentaire, ne considérant que les colonnes incompatibles avec la solution courante, permet de trouver une direction de descente combinant plusieurs variables qui garantit d'avoir une meilleure solution, mais pas nécessairement entière. Le domaine réalisable du problème complémentaire, relaxé de toute contrainte d'intégralité, représente un cône des directions réalisables. Une contrainte supplémentaire, appelée contrainte de normalisation, lui est ajoutée pour assurer qu'il soit borné. Les directions qu'il trouve ont la caractéristique d'être minimales dans le sens où elles ne contiennent aucune sous-direction réalisable. Cette caractéristique, accompagnée d'une technique de pricing partiel (partial pricing) appelée multi-phase, fait que, dans la majorité des itérations, le problème complémentaire trouve directement des directions qui mènent vers des solutions entières. Dans le restant des cas, où les directions trouvées mènent vers des solutions fractionnaires, un branchement en profondeur permet souvent d'aboutir rapidement à une solution entière. Nous avons testé ce nouvel algorithme sur des instances d'horaires de chauffeurs d'autobus ayant 1600 contraintes et 570000 variables. L'algorithme atteint la solution optimale, ou une solution assez proche, pour la majorité de ces instances ; et ceci dans un temps qui représente une fraction de ce qu'aurait demandé un solveur commercial tel que CPLEX; sachant que ce dernier n'arrive même pas à trouver une première solution réalisable après une durée de plus de 10 heures d'exécution sur certaines instances. L'algorithme, dans sa première version, représente à notre avis une première implémentation de l'algorithme du simplexe en nombres entiers à être capable de résoudre des instances de SPP de grande taille dans des temps acceptables en pratique. Toutefois, il souffre encore de quelques limitations telles que la nécessité de développer un branchement complexe pour pouvoir améliorer la qualité des solutions trouvées. Cela est dû au fait que le problème complémentaire présente une structure difficilement exploitable par CPLEX. Une autre limitation de cette implémentation est qu'elle ne permet pas de supporter les contraintes supplémentaires qui ne sont pas de type partitionnement. Dans un deuxième travail, nous améliorons notre algorithme en généralisant certains aspects de son concept. Notre objectif dans cette étape est d'éviter d'implémenter un branchement complexe et exhaustif tout en permettant à notre algorithme de pouvoir considérer des contraintes supplémentaires. Nous revoyons donc la façon avec laquelle l'algorithme décompose le problème et nous proposons une méthode de décomposition dynamique où l'intégralité de la solution est contrôlée au niveau du problème réduit au lieu du problème complémentaire. Ainsi, le problème complémentaire n'est plus responsable de trouver une direction menant à une solution entière mais plutôt une direction de descente quelconque ; et c'est le problème réduit qui s'occupe de chercher une solution entière autour de cette direction de descente en déléguant le branchement au solveur commercial. Avec cette décomposition dynamique, l'algorithme atteint une solution optimale, ou presque optimale, pour toutes les instances, tout en maintenant le même ordre de grandeur des temps d'exécution de la version précédente. Dans un troisième travail, nous nous donnons l'objectif d'améliorer la performance de l'algorithme. Nous visons de rendre les temps d'exécution de l'algorithme plus rapides sans perdre tous les avantages introduits par le deuxième travail. Nous constatons, alors, que la minimalité des directions de descente exigée par le problème complémentaire est un facteur qui favorise l'intégralité des solutions subséquentes, mais représente, aussi, un élément de ralentissement puisqu'il force l'algorithme à faire plusieurs petits pas, vers des solutions adjacentes uniquement, en direction de sa solution finale. Nous changeons, alors, le modèle du problème complémentaire pour lui permettre de trouver des directions de descente non minimales. Le nouveau modèle arrive, ainsi, à aller directement vers des solutions entières non adjacentes présentant des améliorations considérables dans le coût ; et ceci en un nombre d'itérations très réduit qui ne dépasse pas deux itérations pour les instances de grande taille dans nos tests. Une solution optimale est toujours atteinte et le temps global d'exécution est réduit par au moins un facteur de cinq sur toutes les instances. Ce facteur est de l'ordre de dix pour les instances de grande taille. Avec ces trois travaux, nous pensons avoir proposé un algorithme du simplexe en nombres entiers efficace qui produit des solutions de qualité en des temps courts.
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
