Problème d ordonnancement de véhicules en variables booléennes Freddy Hetman 2 juillet 2013 Faculté des sciences Jean Perrin Freddy Hetman () 2 juillet 2013 1 / 22
Sommaire 1 Introduction 2 Le problème d ordonnancement de véhicules 3 Le problème en variables booléennes Les variables Les contraintes 4 Résultats 5 Conclusion Freddy Hetman () 2 juillet 2013 2 / 22
Introduction Ordonnancement de véhicules Problème : NP-complet, problème N.1 classique de CSPLib. Ordonnancement de véhicules : produire une séquence de véhicules pour une chaîne de montage automobile soumis à diverses contraintes. Variables booléennes : utilisation des variables soit vraies soit fausses. Freddy Hetman () 2 juillet 2013 3 / 22
Le problème d ordonnancement de véhicules Formalisation Définition Soit le quintuplet (V, O, p, q, r) avec : V : Ensemble des voitures à produire. O : Ensemble des options disponibles. p, q : Listes d entier, pour chaque option i, p i /q i représente la fréquence d apparition. r : Matrice de booléen r i,j = 1, représente le fait que l option O j est présente sur le véhicule V i, 0 sinon. Pour produire une permutation de V respectant les contraintes de fréquences. Freddy Hetman () 2 juillet 2013 4 / 22
Exemple CSPLib Le problème d ordonnancement de véhicules Freddy Hetman () 2 juillet 2013 5 / 22
Solution CSPLib Le problème d ordonnancement de véhicules Classe Options requises 0 1 0 1 1 0 1 0 0 0 1 0 5 1 1 0 0 0 2 0 1 0 0 1 4 1 0 1 0 0 3 0 1 0 1 0 3 0 1 0 1 0 4 1 0 1 0 0 2 0 1 0 0 1 5 1 1 0 0 0 Freddy Hetman () 2 juillet 2013 6 / 22
Le problème d ordonnancement de véhicules Challenge ROADEF 2005 Problème réel proposé par RENAULT en 2005. Optimisation du problème standard. 2 nouvelles contraintes : Atelier peinture. Priorité entre les options. Meilleures approches basées sur la recherche locale Freddy Hetman () 2 juillet 2013 7 / 22
Nos variables Le problème en variables booléennes Les variables Définition des voitures i 1..n, j 0..(c 1), X i j = { 1 (Vrai) si X i appartient à la classe j. 0 (Faux) sinon. Exemple X0 1, X 1 1,..., X 5 1 représente la classe du premier véhicule. X0 2, X 1 2,..., X 5 2 représente la classe du second véhicule.... X0 10, X 1 10,..., X 10 5 représente la classe du dernier véhicule. Freddy Hetman () 2 juillet 2013 8 / 22
Nos variables Le problème en variables booléennes Les variables Définition des options i 1..n, j 1..o, O j i = 1 (Vrai) si l option O j est installé sur le véhicule X i. 0 (Faux) sinon. Exemple O 1 1, O2 1, O3 1, O4 1, O5 1 représente les options du véhicule X 1. O 1 2, O2 2, O3 2, O4 2, O5 2 représente les options du véhicule X 2.... O 1 10, O2 10, O3 10, O4 10, O5 10 représente les options du véhicule X 10. Freddy Hetman () 2 juillet 2013 9 / 22
Nos Contraintes Le problème en variables booléennes Les contraintes Définition On représente pour chaque véhicule à la position i, autant de classe : (C1) i 1..n, c 1 l=0 X i l = 1. Exemple X0 1 + X 1 1 +... + X 5 1 = 1 X0 2 + X 1 2 +... + X 5 2 = 1... X0 10 + X1 10 +... + X5 10 = 1 Freddy Hetman () 2 juillet 2013 10 / 22
Nos Contraintes Le problème en variables booléennes Les contraintes Définition Chaque classe comporte un certain nombre de véhicules : (C2) l 0..c 1, n X i l = k l. k l représente le nombre de véhicule de la classe l, 0 k n. i=1 Exemple X0 1 + X 0 2 X1 1 + X 1 2 X2 1 + X 2 2 X3 1 + X 3 2 X4 1 + X 4 2 X5 1 + X 5 2 +... + X 10 0 = 1 +... + X 10 1 = 1 +... + X 10 2 = 2 +... + X 10 3 = 2 +... + X 10 4 = 2 +... + X 10 5 = 2 Freddy Hetman () 2 juillet 2013 11 / 22
Nos Contraintes Le problème en variables booléennes Les contraintes Définition On a au plus p j véhicules sur un bloc de taille q j pour l option j : (C3) i 1..(n (q j k+q j 1 1)), j 1..o, O j k pj. k=i Exemple O1 1 + O2 1 1... Option 1. O9 1 + O10 1 1 O1 2 + O2 2 + O3 2 2... Option 2. O6 2 + O7 2 + O8 2 2 Freddy Hetman () 2 juillet 2013 12 / 22
Nos Contraintes Le problème en variables booléennes Les contraintes Définition Le véhicule i de classe l implique les options correspondantes : Exemple (C4) i 1..n, l 0..c 1, X i l k 1..o Ok i. X0 1 = O1 1 O1 2 O1 3 O1 4 O1 5... Premier véhicule. X5 1 = O1 1 O1 2 O1 3 O1 4 O1 5 X0 10 = O10 1 O10 2 O10 3 O10 4 O10 5... Dernier véhicule. X5 10 = O10 1 O10 2 O10 3 O10 4 O10 5 Freddy Hetman () 2 juillet 2013 13 / 22
Résultats Résultats 3 ensembles instances de CSPLib testés. Solveur SAT : SAT4j. Temps d exécution : 10 minutes, Mémoire disponible : 2 Go. Instances Abscon SAT4j PB Copris 4 72 à 26 82 (8) 0% 0% 0% faciles (70) 5.71% (59) 68.57% (2152) 60% (5884) difficiles (30) 0% 0% 0% Entre parenthèses figure la somme des temps des problèmes résolus en seconde. Freddy Hetman () 2 juillet 2013 14 / 22
Résultats Détail du modèle pseudo booléen Instances SAT4j PB 80 01 (200, 5, 26) 1.58 80 02 (200, 5, 25) 33 80 03 (200, 5, 28) 1.15 80 04 (200, 5, 24) - 80 05 (200, 5, 25) 1.7 80 06 (200, 5, 25) 181 80 07 (200, 5, 24) 20 80 08 (200, 5, 24) 3.4 80 09 (200, 5, 25) 27 80 10 (200, 5, 25) 305 Instance 80 04 : problème de symétrie? Freddy Hetman () 2 juillet 2013 15 / 22
Résultats D autres personnes s intéressent au problème... Modèle de V. Mayer-Eichberger et T. Walsh. Traduction du modèle vers SAT disponible, papier soumis à PoS 2013. Pas de possibilité de vérification. Plus : utilisation des mêmes variables pour les contraintes de capacités et de fréquences. Instances SAT4j PB Walsh 4 72 à 26 82 (8) 0% 33,33% (309) faciles (70) 68.57% (2152) 100% (184) difficiles (30) 0% 40% (2371) Freddy Hetman () 2 juillet 2013 16 / 22
Résultats Expérimentation sous Copris Suggestions d améliorations proposées par Naoyuki Tamura (Créateur de Copris). Utilisation de contraintes globales de cardinalités : forcer sur un ensemble de variables, le nombres de valeurs voulues. remplace la contrainte (C2). Instances Copris défaut GCC 4 72 à 26 82 (8) 0% 0% faciles (70) 60% (5884) 60% (6036) difficiles (30) 0% 0% Freddy Hetman () 2 juillet 2013 17 / 22
Résultats Expérimentation sous Copris Contrainte All different, implique des changements de variables (Xj i Pl i ) et contraintes (C1 et C2). Instances Copris défaut All Diff 4 72 à 26 82 (8) 0% 0% faciles (70) 60% (5884) 0% difficiles (30) 0% 0% Freddy Hetman () 2 juillet 2013 18 / 22
Résultats Expérimentation sous Copris Contrainte de somme partielle : introduction d une nouvelle variable S tel que : Sj i = O j 1 +... + Oj i, les contraintes C3 deviennent des différences entre S i j et S i+qj j. Instances Copris défaut Partial Sum 4 72 à 26 82 (8) 0% 0% faciles (70) 60% (5884) 60% (4002) difficiles (30) 0% 0% Freddy Hetman () 2 juillet 2013 19 / 22
Conclusion Conclusion Approche pseudo booléenne efficace mais non robuste. Approche SAT efficace avec un modèle spécifique. Étude de la robustesse sous le format pseudo booléen. Prise en compte des symétries dans le modèle. Autres formes d optimisations (minimisation de trous dans la séquence quand le problème est UNSAT). Freddy Hetman () 2 juillet 2013 20 / 22
Conclusion Merci! Freddy Hetman () 2 juillet 2013 21 / 22
References Conclusion C. Solnon, V. D. Cung, A. Nguyen and C. Artigues. The car sequencing problem : overview of state-of-the-art methods and industrial case-study of the ROADEF 2005 challenge problem. LIRIS CNRS UMR 5205, 2005. D. Parello, W.C. Kabat, and L. Wos. Job-shop scheduling using automated rea- soning : a case study of the car sequencing problem. Journal of Automated Reasoning, 2 : 1 42, 1986. I.P. Gent. Two results on car-sequencing problems. Technical report (http ://www.apes.cs.strath.ac.uk/apesreports.html), APES, 1998. V. Mayer-Eichberger and T. Walsh SAT Encodings for the Car Sequencing Problem Pragmatics of SAT, 2013. Freddy Hetman () 2 juillet 2013 22 / 22