Les problèmes d’affectation
Heure 22 : Problème d’affectation et algorithme hongrois
Les problèmes d’affectation sont des cas spéciaux du problème de transport où la demande associée à chaque destination est égale à 1.
N.O.P. Section 7.3.3 Notes complémentaires Objectifs : o o
Reconnaître un problème d’affectation ; Comprendre et appliquer appliquer l’algorithme h ongrois.
Il existe une méthode, “la méthode hongroise” qui simplifie la résolution du problème d’affectation. 466
Les problèmes d’affectation (1,1) i
(1,1) (1,1)
La méthode hongroise (1,1)
cij
1
467
Matrice des coûts
1
2
2
3
3
(1,1) j
V.P. F M O P
(1,1)
Min ∑ ∑ cij xij ∑ x ij = 1
i = 1, … , n
∑ x ij = 1
j = 1, … , n
1 24 14 15 11
USINE 2 3 10 21 22 10 17 20 19 14
Ex. Le coût d’affecter le V.P. «P» à l’usine 4 est de 13.
4 11 15 19 13
xij ≥ 0 468
469
La méthode hongroise
La méthode hongroise
Étape 1: Réduction des lignes : créer une nouvelle matrice des coûts en choisissant le coût minimal sur chaque ligne et en le soustrayant de chaque coût sur la ligne.
Étape 2: Réduction des colonnes : créer une nouvelle matrice des coûts en choisissant le coût minimal dans chaque colonne et en le soustrayant de chaque coût dans la colonne.
Ex. La Ex. La première ligne devient: 24-10=14, 10-10=0, 21-10=11, 11-10=1
V.P. F M O P
1 14 4 0 0
USINE 2 3 0 11 12 0 2 5 8 3
4 1 5 4 2
V.P. F M O P
RÉDUIT DE:
10 10 15 11
470
RÉDUIT DE:
1 14 4 0 0 0
USINE 2 3 0 11 12 0 2 5 8 3 0 0
4 0 4 3 1 1
471
La méthode hongroise
La méthode hongroise
Dans ce cas, le nombre minimal de lignes est de 3 .
Étape 3: Déterminer le nombre minimal de lignes nécessaires sur les lignes et les colonnes pour couvrir tous les zéros. Si ce nombre est égal au nombre de lignes (ou colonnes), la matrice est réduite; aller à l’étape 5. Si ce nombre est inférieur au nombre de lignes (ou colonnes), aller à l’étape 4.
V.P. F M O P
1 14 4 0 0
USINE 2 3 0 11 12 0 2 5 8 3
4 0 4 3 1
Donc, on va à l’étape 4.
472
La méthode hongroise
473
La méthode hongroise
Étape 4: Trouver la cellule de valeur minimum non-couverte par une ligne.
V.P. F M O P
Soustraire cette valeur de toutes les cellules noncouvertes. Ajouter cette valeur aux cellules situées à l’intersection de deux lignes. Retourner à l’étape 3.
V.P. F M O P
-1
1 15 4 0 0
4 0 4 3 1
Valeur minimum
474
La méthode hongroise
+1
1 14 4 0 0
USINE 2 3 0 11 12 0 2 5 8 3
USINE 2 3 0 12 11 0 1 5 7 3
475
La méthode hongroise Maintenant, le nombre minimal de lignes est de 4. 4 0 3 2 0
V.P. F M O P 476
1 15 4 0 0
USINE 2 3 0 12 11 0 1 5 7 3
4 0 3 2 0
Donc, on passe à l’étape 5.
477
La méthode hongroise
La méthode hongroise
Étape 5: Déterminer la solution optimale.
V.P. F M O P
Note: P1 ne pourrait pas être choisi car l’affectation de «O» ne serait pas de coût minimal.
1 15 4 0 0
Résultat: USINE 2 3 0 12 11 0 1 5 7 3
AFFECTATION V.P. USINE F 2 M 3 O 1 P 4 COÛT TOTAL
4 0 3 2 0 478
Algorithme hongrois : Exemple
COÛT 10 10 15 13 48 479
Algorithme hongrois : Exemple Étape 1 : Réduction des lignes
P1 P2
C1
C2
C3
60
170
330 360
P1
130 200
200 400
P2
300 170 180
P3
50
250 200
P4
120 90
P3
50
P4
120 90
C4
C1
C2
C3
C4
60
170
330 360
∆=60
130 200
200 400
∆=130
300 170 180
∆=50
250 200
∆=90
480
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple
Étape 1 : Réduction des lignes C1
C2
C3
P1
0
110 270 300
P2
0
70
70
P3
0
P4
30
481
Étape 2 : Réduction des colonnes
C4
C1
C2
C3
C4
P1
0
110 270 300
270
P2
0
70
70
250
120 130
P3
0
250
120 130
0
160 110
P4
30
0
160 110
270
∆=0 ∆=0 ∆=70 ∆=110
482
483
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple
Étape 2 : Réduction des colonnes C3
Étape 3 : Matrice Réduite
C1
C2
P1
0
110 220 190
P2
0
70
0
160 20
P3
0
P4
P3
0
250
50
P4
30
0
90
C4
C1
C2
C3
C4
P1
0
110 220 190
P2
0
70
0
160
0
250
50
20
30
0
90
0
3 lignes et il en faut 4 ⇒
Étape4
484
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple Étape 4 : Nouvelle réduction
Étape 3 : Matrice Réduite C3
485
C1
C2
C4
C1
C2
P1
0
110 220 190
C1
P1
P2
0
70
0
160
C2
P3
0
250
50
20
P4
30
0
90
0
C3
C4
P1
0
110 220 190
P2
P2
0
70
0
160
C3
P3
P3
0
250
50
20
C4
P4
P4
30
0
90
0
486
487
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple
Étape 4 : Nouvelle réduction
Étape 3 : matrice réduite ?
C1
C2
C3
C4
P1
0
110 220 190
P2
0
70
0
160
P3
0
250
50
20
P4
30
0
90
0
Réduction de 20 unités des nombres en vert Ajout de 20 unités sur les nombres en orange
Réduction
488
Réduction
C1
C2
C3
C4
P1
0
90
P2
20
70
0
160
P3
0
230
30
0
P4
50
0
90
0
200 170
489
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple
Étape 3 : matrice réduite ?
Étape 3 : matrice réduite ?
C1
C2
C3
C4
P1
0
90
P2
20
70
0
160
P3
0
230
30
0
P4
50
0
90
0
C1
C2
P1
0
90
Solution optimale
P2
20
70
0
160
⇓
P3
0
230
30
0
P4
50
0
90
0
4 lignes
200 170
⇓
Étape 5
C3
C4
200 170
C1
P1
C2
P2
C3
P3
C4
P4
490
491
Algorithme hongrois : Exemple
Algorithme hongrois : Exemple
Étape 3 : matrice réduite ?
Étape 5 : solution optimal e
C1 P1
0
C2 90
C3
C4
200 170
C1
P1 P2
C1
C2
C3
C4
P1
0
90
P2
20
70
0
160
200 170
P2
20
70
0
160
C2
P3
0
230
30
0
C3
P3
P3
0
230
30
0
P4
50
0
90
0
C4
P4
P4
50
0
90
0
492
493
Algorithme hongrois : Exemple Étape 5 : solution optima le
Algorithme hongrois : C1
C2
C3
C4
P1
0
90
P2
20
70
0
160
P2
P3
0
230
30
0
P3
50
P4
50
0
90
0
P4
120 90
200 170
P1
C1
C2
C3
C4
60
170
330 360
130 200
200 400
Problème de maximisation
300 170 180 250 200
Solution = 530 494
495
Algorithme hongrois : Problème de maximisation On doit ajouter une étape initiale : Choisir le plus grand nombre et trouver l’écart de tous les éléments par rapport à ce nombre; i.e. on trouve la matrice des pénalités.
Le problème initial est alors équivalent au problème de minimiser les pénalités. Max P1 P2
C1
C2
C3
60
170
330 360
130 200
Min
C1
C2
C3
C4
P1
340
230
70
40
200 400
P2
270 200
200
0
300 170 180
P3
350 100
230 220
250 200
P4
280 310
150 200
P3
50
P4
120 90
C4
Algorithme hongrois Explication théorique
496
Algorithme hongrois : explication théorique
497
Algorithme hongrois : explication théorique
Min ∑ ∑ cij xij ∑ x ij = 1
i = 1, … , n
∑ x ij = 1
j = 1, … , n
P1
xij ≥ 0
P2
Max ∑ ui + ∑ v j ui + v j ≤ c ij
i = 1, … , n et j = 1, … , n
C1
C2
C3
C4
60
170
330 360
ui + v j + eij = cij
130 200
200 400
0 + 0 + eij = 300
300 170 180
P3
50
P4
120 90
250 200
498
Algorithme hongrois : explication théorique
Algorithme hongrois : explication théorique
Étape 1 : Réduction des lignes
Étape 1 : Réduction des lignes
C1
C2
C3
P1
60
170
330 360
∆=60 ⇒ u1 = min j c1j = 60
P2
130 200
200 400
∆=130 ⇒ u2 = min j c 2j = 130
C4
300 170 180
P3
50
P4
120 90
499
250 200
∆=50
⇒ u3 = min j c 3j = 50
∆=90 ⇒ u4 = min j c4j = 90
500
C1
C2
C3
C4
u1 = 60
P1
0
110 270 300
u2 = 130
P2
0
70
70
u3 = 50
P3
0
250
120 130
u4 = 90
P4
30
0
160 110
270
ui + v j + eij = cij u2 + v3 + e23 = c23 130 + 0 + 70 = 200
501
Algorithme hongrois : explication théorique
Algorithme hongrois : explication théorique
Étape 2 : Réduction des colonnes
Étape 2 : Réduction des colonnes v1 =0
C1
C2
C3
P1
0
110
270 300
∆ =0 ⇒ v1 = mini (c i1 - ui )= 0
u1 = 6 0
u2 = 130 P2
0
70
70
∆ =0 ⇒ v2 = m i ni (c i2 - u i )= 0
u 2 = 130
P3
0
250
120 130
∆ =70 ⇒ v 3 = mini (c i3 - u i )= 70
u3 = 5 0
P3
160 110
∆ =110 ⇒ v4 = mini (c i4 - u i ) = 110
u4 = 9 0
P4
u1 = 60
u3 = 50 u4 = 90
P4
30
0
C4
270
v2 =0 v3 =70 v4 =110
C1
C2
C3
C4
P1
0
110
P2
0
70
0
160
0
250
50
20
30
0
90
0
220 190
ui + v j + eij = cij u3 + v3 + e33 = c33 50 + 70 + 50 = 170
∆=0 ∆=0 ∆=70 ∆=110 502
Algorithme hongrois : explication théorique
Algorithme hongrois : explication théorique
Étape 3 : Matrice Réduite v1 =0
C1
503
Étape 4 : Nouvelle réduction
v2 =0 v3 =70 v4 =110
C2
C3
v1 =0
C4
u1 = 6 0
P1
0
110
220 190
u 2 = 130
P2
0
70
0
160
u3 = 5 0
P3
0
250
50
20
u4 = 9 0
P4
30
0
90
0
3 lignes et il en faut 4 ⇒ solution du duale n’est pas optimale car la solution primale n’est pas réalisable
v2 =0 v3 =70 v4 =110
C1
C2
P1
0
110
u 2 = 130
P2
0
70
0
160
u3 = 5 0
P3
0
250
50
20
u4 = 9 0
P4
30
0
90
0
u1 = 6 0
C3
C4
220 190
Pour maximiser il faut réduire la valeur des e ij et pour avoir une solution admissible il faut prendre le plus petit
504
Algorithme hongrois : explication théorique Étape 4 : Nouvelle réduction v1 =0
v2 =0 v3 =70 v4 =110
C1
C2
C3
505
Algorithme hongrois : explication théorique
Réduction de ∆=20 unités des nombres en rouge
Étape 4 : Nouvelle réduction
⇓ v1 =0
e ij ← eij - ∆
C4
u1 = 6 0
P1
0
110
220 190
u 2 = 130
P2
0
70
0
160
u3 = 5 0
P3
0
250
50
20
u4 = 9 0
P4
30
0
90
0
u1 = 6 0 u 2 = 130 u3 = 5 0 u4 = 9 0
506
v2 =0 v3 =70 v4 =110
C1
C2
C3
P1
0
90
P2
0
70
0
160
P3
0
230
30
0
P4
30
0
90
Réduction de ∆=20 unités des nombres en rouge
⇓
e ij ← eij - ∆
C4
200 170
0
Pour conserver la relation ui + v j + eij = cij il faut alors
⇓ u1 u3
← ←
u1 + ∆ u3 + ∆ 507
Algorithme hongrois : explication théorique
Algorithme hongrois : explication théorique Étape 4 : Nouvelle réduction
Étape 4 : Nouvelle réduction v1 =0
u 1 = 60+20 u 2 = 130 u 3 = 50+20 u4 = 9 0
v2 =0 v3 =70 v4 =110
C1
C2
C3
C4
P1
0
90
P2
0
70
0
160
P3
0
230
30
0
P4
30
0
90
200 170
v1 =0-20 v2 =0 v3 =70 v4 =110
Ainsi pour tous les eij alors on conserve la relation ui + v j + eij = cij
u 1 = 60+20 u 2 = 130
mais pas pour e 11
0
u 3 = 50+20
et e 31
u4 = 9 0
C1
C2
C3
C4
P1
0
90
P2
0
70
0
160
P3
0
230
30
0
P4
30
0
90
200 170
0
Pour équilibrer les cases (P1,C1) et (P3,C1), il faut v 1 ← v1 - ∆
⇓
Pour e11 et e31 on conserve alors la relation ui + v j + eij = cij mais plus pour e 21 et e 41 c’est pourquoi il faut faire e 21 ← e 21 + ∆ e 41 ← e 41 + ∆
508
Algorithme hongrois : explication théorique
Algorithme hongrois : explication théorique
Étape 3 : matrice réduite ? C3
509
Étape 5 : solution optimal e
C1
C2
C4
P1
0
90
P2
20
70
0
160
P3
0
230
30
0
P4
50
0
90
0
200 170
C1
C2
P1
0
90
Solution optimale
P2
20
70
0
160
⇓
P3
0
230
30
0
P4
50
0
90
0
4 lignes ⇓
Étape 5
510
Travail à faire : heure 22 N.O.P. chapitre 7 Nos 22, 23, 24 (chapitre 7 Nos 20, 21, 22)
512
C3
C4
200 170
511