Analyse de conflit non-standard pour résoudre le problème de Job-Shop
Résumé
Nous proposons une nouvelle méthode hybride SAT/PPC pour résoudre le problème de Job-Shop à minimisation de makespan. Dans ce contexte d'hybridation, chaque propagateur implémente une routine d'explication à travers la quelle il est capable de représenter les filtrages et échecs qu'il provoque sous forme de clauses (appelées explications). Les littéraux figurant dans les explications représentent des contraintes unaires sur les bornes (inférieure ou supérieure) ou d'(in)égalité.
Considérons le problème de Job-Shop où les contraintes de partage de ressources sont exprimées à travers des disjonctions. Par exemple si t1 et t2 partagent la même machine, la contrainte de disjonction associée sera [ t1+a <= t2 OU t2+b <= t1] où a (respectivement b) est la durée de la tache t1 (respectivement t2). En associant une variable booléenne par disjonction (qui vaut 1 si la première tache précède la deuxième et 0 si non), la résolution du problème se ramène à décider ces variables. Nous exploitons alors cette propriété en proposant un apprentissage uniquement sur ces variables booléennes. En effet, prenons l'exemple d'une tâche t ayant comme domaine initial D(t)={0..10^6}. Les encodages SAT actuels nécessitent à chaque propagation sur D(t) de revisiter tous les littéraux associés (soit de l'ordre de 10^6 opérations) pour rétablir une représentation consistante du domaine. Nous contournons ce problème en évitant la génération de ces littéraux. Finalement, durant la phase d'analyse de conflit, notre méthode consiste à remplacer chaque changement de borne (i.e. l'équivalent d'un littéral de type [x < l]) par son explication pour avoir à la fin une clause portant uniquement sur des variables booléennes de disjonction.