Problme daffectation Formulation du problme daffectation Application de
Problème d’affectation Formulation du problème d’affectation. Application de la méthode du simplexe. Méthode hongroise. Problème d'affectation
Remonte aux origines de la programmation linéaire. Il s’agit d’un cas particulier du problème de transport et, par conséquent, du problème de flot à coût minimum. Le problème consiste à affecter les éléments d’un ensemble à ceux d’un autre ensemble selon une approche biunivoque (un à un) de sorte que la somme des coûts des affectations soit minimale. Min Z = n i = 1 n xij = 1 i = 1 xij = 0 ou 1 n cij xij j = 1 i = 1, 2, …, n où xij = 1 si i est affecté à j 0 autrement. cij = coût d’affectation de i à j. j = 1, 2, …, n i, j 2
Réseau d’un problème générique d’affectation de ie employé n employés (émet 1 seule unité à de flot) n tâches je tâche (reçoit 1 seule unité de flot) 3
Remarques : Les 2 ensembles à jumeler sont de même taille. Si ce n’est pas le cas, on peut y remédier en ajoutant des éléments (sommets) fictifs et en définissant cij = 0 i ou j fictif. Si i ne peut être affecté à j pour quelque raison, alors mettre cij = et xij sera 0 dans n’importe quel flot optimal. Problème d'affectation 4
Exemple : Supposons que, dans une entreprise, n ouvriers puissent travailler indifféremment sur n machines, mais avec plus ou moins d'efficacité; l'efficacité peut se mesurer par le revenu provenant de la vente des produits fabriqués par les divers ouvriers travaillant sur les différentes machines. Répartir les ouvriers sur les machines de la façon la plus efficace est un problème d'affectation. Soit n unités à affecter à n tâches; une unité ne peut être affectée qu'à une tâche et une tâche ne peut employer qu'une unité. L'unité i exécute la tâche j avec un coût ou un profit cij. Comment doit-on affecter chaque unité à une seule tâche pour que la 5 rentabilité soit optimale?
Techniques de solution : Adaptation de la méthode du simplexe Les propriétés de la matrice des contraintes nous permettent d’utiliser le simplexe pour résoudre ce problème de programmation linéaire en nombres entiers. Inconvénients : Cela conduit à des tableaux très grands (d’ordre n). La solution est fortement dégénérée, i. e. elle contient un nombre de variables positives beaucoup inférieur à 2 n – 1, soit n. La méthode du simplexe peut s’appliquer mais certaines itérations n’ont aucune incidence sur la solution réalisable courante. Seul la base change : une variable hors base est 6 échangée avec une variable de base dégénérée.
Énumération de toutes les solutions possibles. n = 5 120 solutions réalisables. n = 20 Une calculatrice analysant une affectation par microseconde travaillant 8 heures par jour et 365 jours par année, exigerait 2500 siècles pour ce travail. Technique spéciale tenant compte de la structure particulière du problème d’affectation. Méthode hongroise développée par le mathématicien Kuhn, H. W. "The Hungarian Method for the Assignment Problem ". Naval Research Logistics Quarterly, Vol. 2, pp. 83 -97, 1955. Problème d'affectation 7
Méthode hongroise (méthode "primale-duale") Algorithme taillé sur mesure pour le problème d’affectation dont les grandes lignes sont : (1) débuter avec une solution réalisable du problème dual; (2) essayer de déterminer une affectation (une soln réalisable du primal) tout en respectant les conditions relatives aux écarts complémentaires; (3) si une telle affectation est trouvée, l'algorithme termine; sinon, on modifie la solution réalisable du dual pour se rapprocher d'une affectation optimale, etc. Problème d'affectation 8
Théorème : Le problème original est équivalent au sens de l’ensemble des solutions optimales au problème suivant : n n Min Z = c'ij xij i = 1 j = 1 n xij = 1 i = 1, 2, …, n j = 1 n xij = 1 j = 1, 2, …, n i = 1 xij = 0 ou 1 i, j où c'ij = cij – ui - vj (ui et vj sont des constantes arbitraires) On peut diminuer ou augmenter d’une même quantité tous les coûts d’une même ligne (ou d’une même colonne) sans changer la solution 9 optimale d’un problème d’affectation.
Théorème : Le dual du problème original possède comme solution réalisable : ui = min {cij | j = 1, 2, …, n} vj = min {cij - ui| i = 1, 2, …, n}. Soit (u, v) une solution réalisable duale, chaque composante du vecteur de coût relatif est de la forme : cij = cij – ui – vj. Les conditions d’optimalité du problème d’affectation sont : xij = 1 le coût réduit cij = 0. Définition : Dans la matrice des coûts du problème d’affectation, la case (i, j) est admissible si cij = cij – ui – vj = 0 10 sinon elle est inadmissible.
Pour essayer de trouver un flot x = (xij) satisfaisant les conditions d’optimalité, il s’agit de créer un graphe biparti ayant 2 n + 2 sommets : capacité 1 capacité 1 Un arc (i, j) intermédiaire entre les sources et les destinations existe 11 si cij = 0 et il a une capacité infinie.
La recherche d’une affectation x consiste à trouver un flot maximum de s à t dans le réseau précédent en utilisant l’algorithme de Ford & Fulkerson. Si le flot maximum est égale à n, alors le flot dans les arcs entre les sources et les destinations est une affectation optimale sinon il n’y a pas suffisamment d’arcs intermédiaires ou de cases admissibles. Afin d’augmenter le flot entre s et t, il faut créer des arcs additionnels entre les sources qui sont marquées et les destinations qui ne sont pas marquées : posons = min {cij | i marqué, j non marqué}. Note : > 0 car les cases considérées dans la minimisation sont Problème d'affectation 12 inadmissibles.
Création d’une nouvelle solution réalisable du dual : ui = ui - si i est non marqué ui si i est marqué. vj = vj + si j est non marqué vj si j est marqué. La solution duale (u, v) nous permet alors de calculer la nouvelle matrice de coût réduite : c"ij = cij – ui – vj = c'ij . Ainsi, le nouveau coût relatif est égale à l’ancien ou zéro, selon le statut des sommets i et j. Problème d'affectation 13
Description de la méthode hongroise sous une forme qui permet de faire tous les calculs dans la matrice des données du problème : 1. Soustraire l'élément minimum de la rangée i de chaque élément de la rangée i, pour tout i = 1, 2, . . . , n. 2. Soustraire l'élément minimum de la colonne j de chaque élément de la colonne j, pour tout j = 1, 2, . . . , n. 3. Examiner les rangées à partir de la première. S'il existe une rangée ne contenant qu'un seul zéro non marqué, alors marquer ce zéro en l’encadrant pour dénoter une affectation. Éliminer les autres zéros de la même colonne en les marquant (cases grises). Répéter ce processus jusqu'à ce que toutes les rangées ne contiennent aucun zéro non marqué ou au moins deux zéros non marqués. Problème d'affectation 14
4. 5. Examiner les colonnes à partir de la première. S'il existe une colonne avec un seul zéro non marqué, alors marquer ce zéro en l’encadrant pour dénoter une affectation. Éliminer les autres zéros non marqués de la même rangée en les marquant (cases grises). Répéter ce processus jusqu'à ce que toutes les colonnes ne contiennent aucun zéro non marqué ou au moins deux zéros non marqués. Répéter les étapes 3 et 4 successivement jusqu'à ce qu'une des trois conditions soit obtenue. (a) Chaque rangée possède une affectation; alors cette affectation est optimale. L'algorithme prend fin. (b) Il y a au moins deux zéros non marqués dans chaque rangée et chaque colonne; alors faire une affectation arbitraire à un de ces zéros en l’encadrant et éliminer tous les autres zéros de la même rangée et de la même colonne en les marquant (cases grises) puis aller à 3. (c) Il n'y a aucun zéro non marqué et une affectation 15 complète n'a pas été faite; alors passer à l'étape 6.
6. Cocher ( ) toutes les rangées pour lesquelles des affectations n'ont pas été faites. 7. Cocher ( ) toutes les colonnes pas encore cochées et qui ont un zéro dans des rangées cochées. 8. Cocher ( ) toutes les rangées pas encore cochées et qui ont des affectations dans des colonnes cochées. 9. Répéter les étapes 7 et 8 jusqu'à ce qu'il ne soit plus possible de cocher. 10. Tracer une ligne à travers toutes les rangées non cochées et toutes les colonnes cochées. 11. Parmi tous les éléments de la matrice qui ne sont pas couverts par une ligne, choisir l'élément le plus petit et le soustraire de chaque élément non couvert et l'ajouter à chaque élément doublement couvert (par une ligne verticale et horizontale). Retourner à l'étape 3. Problème d'affectation 16
Exemple : Soit le problème d’affectation avec la matrice de coûts suivante : 9 12 9 6 9 10 7 8 5 4 3 8 15 5 6 3 16 18 3 19 6 8 6 1 17 6 5 11 7 9 5 0 13 4 5 6 1 2 12 13 4 12 3 1 12 14 3 12 3 7 13 6 8 3 13 4 1 5 5 5 4 9 Problème d'affectation 17
En appliquant les étapes 1 et 2, on obtient : 3 6 3 0 2 4 4 5 2 1 0 5 11 2 3 0 13 15 0 16 2 5 5 0 16 5 4 10 5 8 5 0 13 4 5 6 0 2 11 12 3 11 2 0 10 13 0 9 0 4 10 3 4 0 12 3 0 4 4 4 2 8 Problème d'affectation 18
En appliquant l’étape 3, on obtient : 3 6 3 0 2 4 4 5 2 1 0 5 11 2 3 0 13 15 0 16 2 5 5 0 16 5 4 10 5 8 5 0 13 4 5 6 0 2 11 12 3 11 2 0 10 13 0 9 0 4 10 3 4 0 12 3 0 4 4 4 2 8 Problème d'affectation 19
En appliquant l’étape 4, on obtient : 3 6 3 0 2 4 4 5 2 1 0 5 11 2 3 0 13 15 0 16 2 5 5 0 16 5 4 10 5 8 5 0 13 4 5 6 0 2 11 12 3 11 2 0 10 13 0 9 0 4 10 3 4 0 12 3 0 4 4 4 2 8 Problème d'affectation 20
Aucun zéro non marqué et une affectation complète n’a pas été faite; passer aux étapes 6 à 9. 3 6 3 0 2 4 4 5 2 1 0 5 11 2 3 0 13 15 0 16 2 5 5 0 16 5 4 10 5 8 5 0 13 4 5 6 0 2 11 12 3 11 2 0 10 13 0 9 0 4 10 3 4 0 12 3 0 4 4 4 2 8 Problème d'affectation 21
Appliquons maintenant l’étape 10. 3 6 3 0 2 4 4 5 2 1 0 5 11 2 3 0 13 15 0 16 2 5 5 0 16 5 4 10 5 8 5 0 13 4 5 6 0 2 11 12 3 11 2 0 10 13 0 9 0 4 10 3 4 0 12 3 0 4 4 4 2 8 Problème d'affectation 22
Appliquons l’étape 11. Le plus petit élément est 1. 3 7 3 0 4 0 2 4 3 5 1 0 0 4 10 1 2 0 12 14 0 15 1 4 4 0 15 4 4 9 4 7 5 1 13 4 6 6 0 2 11 13 3 11 3 0 10 13 0 10 0 4 11 3 4 0 12 4 0 4 5 4 2 8 Problème d'affectation 23
Retournons aux étapes 3 et 4. 3 7 3 0 4 0 2 4 3 5 1 0 0 4 10 1 2 0 12 14 0 15 1 4 4 0 15 4 4 9 4 7 5 1 13 4 6 6 0 2 11 13 3 11 3 0 10 13 0 10 0 4 11 3 4 0 12 4 0 4 5 4 2 8 Problème d'affectation 24
Aucun zéro non marqué et une affectation complète n’a pas été faite; passer aux étapes 6 à 9. 3 7 3 0 4 0 2 4 3 5 1 0 0 4 10 1 2 0 12 14 0 15 1 4 4 0 15 4 4 9 4 7 5 1 13 4 6 6 0 2 11 13 3 11 3 0 10 13 0 10 0 4 11 3 4 0 12 4 0 4 5 4 2 8 25
Appliquons l’étape 10. 3 7 3 0 4 0 2 4 3 5 1 0 0 4 10 1 2 0 12 14 0 15 1 4 4 0 15 4 4 9 4 7 5 1 13 4 6 6 0 2 11 13 3 11 3 0 10 13 0 10 0 4 11 3 4 0 12 4 0 4 5 4 2 8 26
2 7 2 0 4 0 1 3 2 5 0 0 0 4 9 0 11 14 0 15 0 3 3 0 14 4 4 9 3 6 5 2 13 5 7 7 0 2 10 13 2 11 3 0 9 12 0 11 0 5 12 4 4 0 12 5 0 5 6 5 2 8 Appliquons l’étape 11. Le plus petit élément est 1. Problème d'affectation 27
2 7 2 0 4 0 1 3 2 5 0 0 0 4 9 0 11 14 0 15 0 3 3 0 14 4 4 9 3 6 5 2 13 5 7 7 0 2 10 13 2 11 3 0 9 12 0 11 0 5 12 4 4 0 12 5 0 5 6 5 2 8 On retourne aux étapes 3 et 4. Problème d'affectation 28
Chaque rangée possède une affectation; elle est donc optimale. L'algorithme est terminé et nous avons: x 14 = x 28 = x 35 = x 42 = x 57 = x 66 = x 71 = x 83 = 1; 0 ailleurs. Problème d'affectation 29
- Slides: 29