Introduction à la Programmation par Contraintes Cours 5. Modélisation des problèmes réels (ou proches de la réalité). Ruslan Sadykov INRIA Bordeaux Sud-Ouest 10 Novembre 2014 1 / 35 2 / 35 : énoncé Il y a 5 émetteurs et 7 fréquences de transmission possibles. On doit les affecter les fréquences de telle sorte qu elles évitent des parasites entre les émetteurs proches. Toutes les fréquences affectées doivent être différentes T 1 T 2 = d 23 T 4 T 3 T 5 3 / 35 4 / 35
: modélisation Variables : F i fréquence affectée à l émetteur i. Domaines : D Fi = {1,..., 7}, i. Contraintes : F i F j d ij ou F i F j d ij F i F j d ij, (i, j) ; all-different(f 1,..., F 5 ). 1 5 3 2 7 : contraintes additionnelles Il y a les fréquences basses ou VHF (1,2,3) et hautes ou UHF (4,5,6,7). Exactement 2 fréquences basses et 3 fréquences hautes doivent être affectées. Variables additionnelles : S i = 0 si basse et 1 si haute. Contraintes additionnelles : element(s i, {0, 0, 0, 1, 1, 1, 1}, F i ), i. gcc({si } i, {0, 1}, 2, 3, 2, 3). 1 3 6 7 4 5 / 35 6 / 35 : énoncé Source : Alan M. Frisch 7 / 35 8 / 35
: modélisation Données : n options, m types de voiture. d i voitures de type i doivent être produites, 1 i m, T = m i=1 d i. aij = 1 si types i exige l option j, sinon a ij = 0, 1 i m, 1 j n. Pour chaque sous-séquence de qj voitures, l option j peut être installée à au plus p j, 1 j n. Variables : Xk numéro de type de voiture en position k dans la séquence, 1 k T. O kj = 1 si la voiture en position k exige l option j, sinon O kj = 0, 1 k T, 1 j n. Domaines : DXk = {1,..., m}, k. D Okj = {0, 1}, k, j. : contraintes La demande pour chaque type de voiture doit être satisfaite : gcc ({X k } k, {1,..., m}, {d i } i, {d i } i ). Liaison entre les variables X et O : Contraintes de séquence : k+q j k =k element ( O kj, {a ij } i, X k ), k, j. O k j p j, j, 1 k T q j + 1. 9 / 35 10 / 35 Constrainte globale de séquençage Les deux dernières contraintes peuvent être remplacées par la contrainte globale de séquençage (Source : Puget et Régin) : gsc(x 1,..., X n, V, q, p) Cette contrainte exige que dans chaque sous-séquence de X de longueur q le nombre totale des valeurs dans V prises soit au plus p. Pour notre problème : ) gsc ({X k } k, {i} aij =1, q j, p j, 1 j n. 11 / 35 12 / 35
: énoncé n équipes, n 1 semaines, n 2 périodes. Chaque paire d équipes joue exactement 1 fois. Chaque équipe joue un match chaque semaine. Chaque équipe joue au plus deux fois dans la même période. : variables Pour chaque case, 2 variables représentent les équipes : Tpw h et Tpw, a p [1,..., n 2 ], w [1,..., n 1]. D(T h pw) = D(T a pw) = {0,..., n 1}, T h pw < T a pw, p, w. Pour chaque case, une variable représente le match : M pw, p [1,..., n 2 ], w [1,..., n 1]. D(M pw ) = {1,..., n(n1) 2 }, M pw = n T h pw + T a pw, p, w. Source : Jean-Charles Régin 13 / 35 14 / 35 : contraintes : résultats all-different({m pw } 1 p n/2,1 w n1 ) ; all-different({tpw, h Tpw} a 1 p n/2 ), w [1,..., n] ; gcc({tpw, h Tpw} a 1 w n1, {k, 2, 2} 0 k n1 ), p [1,..., n 2 ]. contraintes implicites ; symétrie (très important) : élimination des permutations. En utilisant PPC, on peut trouver un ordonnancement pour 40 équipes (dans 6 heures) taille réelle! Aujourd hui, les ordonnancements pour MLB (centaines de contraintes) sont produits en utilisant la Recherche Opérationnelle (PLNE, PPC, heuristiques) Source : Michael A. Trick 15 / 35 16 / 35
Emplois de temps : énoncé 4 employées, 7 jours dans la semaine. 3 périodes de travail chaque jour : jour (D, difficulté 1.0), soir (E, 0.8), nuit (N, 0.5). Dans chaque période, exactement un employée doit être présent chaque jour 3 employées travaillent, un est en repos. Difficulté totale pour chacun doit être.0. Lun Mar Mer Jeu Ven Sam Dim M. Vert J M. Bleu S M. Rouge N M. Brun Source : Gilles Pesant 17 / 35 18 / 35 Emplois de temps : modélisation Variables : T âche ij, 1 i 4, 1 j 7, Charge ij, 1 i 4, 1 j 7. Domaines : D T âcheij = {D, E, N, }, i, j. Contraintes : all-different(t âche j ), j. element(chargeij, {1.0, 0.8, 0.5, 0}, T âche ij ), i, j. 7 j=1 Charge ij.0, i. Lun Mar Mer Jeu Ven Sam Dim M. Vert D D D D M. Bleu N N N N N N M. Rouge N D D E D M. Brun E E E E E E Emplois de temps : longueur de série Contrainte additionnelle : longueur d une série doit être comprise entre une valeur min et une valeur max. Modélisation : stretch(t âche i, {2, 1, 1, 1}, {4, 4, 4, 7}). Lun Mar Mer Jeu Ven Sam Dim M. Vert D D N E D D M. Bleu N N N N N N M. Rouge D D D M. Brun E E E E E E 19 / 35 20 / 35
Emplois de temps : contrainte Pattern L automate fini pour notre exemple Contrainte additionnelles : Pas de changement de la période de travail sans le repos. Rotation en avant : D... E... N... D... Modélisation : pattern(t âche i, A), i. Cettes contraintes sont satisfaites si chaque séquence («mot») (T âche i1,..., T âche i7 ) est satisfaite par l automate fini A. start a D E c b D E g E f Lun Mar Mer Jeu Ven Sam Dim M. Vert D D E E E E M. Bleu E E E N N N M. Rouge N N N N D D M. Brun D D D D N d N e N 21 / 35 22 / 35 : une solution réelle 23 / 35 24 / 35
Ordonnancement d atelier Ordonnancement d atelier modélise des problèmes où les tâches se constituent d opérations nécessitantes machines (ressources) spécifiques. Ateliers à cheminement libres : Job-shop M 2 Entrée de l atelier Sortie de l atelier M 1 M 3 Exemples d application Atelier de montage. Ligne de production. Opérations de chaque tâche forment une chaîne : O i1 O i2 O ini. Tâches suivent ces propres séquences sur les machines. 25 / 35 26 / 35 Ordonnancement «job-shop» : énoncé n tâches, chaque tâche J i se constitue d une chaîne de n i opérations (O i1,..., O i,ni ). m machines disponibles. Chaque opération O ij est de longueur p ij est doit être exécutée par machine a ij {1,..., m}. But : trouver un ordonnancement de longueur n excédant pas T où les opérations ne se chevauche pas sur chaque machine. Ordonnancement «job-shop» : modélisation Variables : S ij date de début d exécution de l opération O ij, 1 i n, 1 j n i. Domaines : D Sij = [0, T p ij ], i, j. Contraintes : précédence : Sij + p ij S i,j+1, i, 1 j n i 1 ; non-chevauchement : disjunctive ( {S ij } aij =k, {p ij } aij =k), 1 k m. Machine 3 O 31 O 13 O 23 Machine 3 O 31 O 13 O 23 Machine 2 O 21 O 12 O 33 Machine 2 O 21 O 12 O 33 Machine 1 O 11 O 22 O 32 Machine 1 O 11 O 32 O 22 27 / 35 28 / 35
Job-shop : exemple Chez Faittout, certains produits sont étiquetés avant d être emballés, alors que pour d autres l étiquette est placée sur l emballage. Combien de temps faut-il pour apprêter les lots suivants? lot A B C D E F durée d emballage 10 16 14 4 8 4 durée d étiquetage 12 10 12 0 6 8 emballer avant d étiqueter? oui oui oui no no Source : François Vanderbeck 29 / 35 30 / 35 : énoncé : modélisation On doit couper un morceau rectangulaire (en bois, en acier,...) en petits morceaux. Rotations ne sont pas possibles. H Morceau initial W D E A C B F H G w J J h J I K Variables : X i, Y i coordonnées x et y du coin inférieur gauche du morceau i. Domaines : D Xi = [0, W w i ], D Yi = [0, H h i ], i. Contraintes pour chaque paire (i, j) des morceaux : X i + w i X j Xi X j + w j i est à gauche de j ou i est à droite de j ou Y i + h i Y j Yi Y j + h j i est au-dessous de j ou i est à au-dessus de j Les contraintes sont très «lâches» est locales! 31 / 35 32 / 35
: contraintes superflus : une application On a besoin d un point de vue plus global sur notre problème. On ajoute les contraintes additionnelles : cumulative({xi } i, {w i } i, {h i } i, H) ; cumulative({yi } i, {h i } i, {w i } i, W ). Ces contraintes sont superflus mais utiles! Résultats (Source : Pedro Barahona) : B D J G H C Sans cumulative : 24 seconds. A E Avec cumulative : 40 milliseconds. I K F Source : www.terciel.eu 33 / 35 34 / 35 Essentiel de modélisation «efficace» Essayez d utiliser plus de contraintes globales et moins de contraintes locales (il y a Global Constraint Catalog sur l Internet). Détectez et éliminez toutes les symétries que vous pouvez. Utiliser les contraintes superflus (mais utiles). Essayer différentes modèles. Essayer différentes heuristiques d instanciation des variables et valeurs. 35 / 35