Vous êtes sur la page 1sur 8

Heure 22 : Problème d’affectation et algorithme Les problèmes d’affectation

hongrois

N.O.P. Section 7.3.3 Les problèmes d’affectation sont des cas


Notes complémentaires spéciaux du problème de transport où la
demande associée à chaque destination est
Objectifs : égale à 1.
o Reconnaître un problème d’affectation ;
o Comprendre et appliquer l’algorithme hongrois. Il existe une méthode, “la méthode
hongroise” qui simplifie la résolution du
problème d’affectation.

466 467

Les problèmes d’affectation La méthode hongroise

(1,1) cij (1,1)


1 1 Matrice des coûts
(1,1) (1,1)
i 2 2
j
USINE
(1,1) V.P. 1 2 3 4 Ex. Le coût
3 (1,1)
3 d’affecter le
F 24 10 21 11
V.P. «P» à
Min ∑ ∑ cijxij M 14 22 10 15 l’usine 4 est
∑ x ij = 1 i = 1, … , n O 15 17 20 19 de 13.
∑ x ij = 1 j = 1, … , n P 11 19 14 13
xij ≥ 0
468 469

La méthode hongroise La méthode hongroise


Étape 1: Étape 2:
Réduction des lignes : créer une nouvelle matrice Réduction des colonnes : créer une nouvelle matrice des
des coûts en choisissant le coût minimal sur chaque ligne coûts en choisissant le coût minimal dans chaque colonne
et en le soustrayant de chaque coût sur la ligne. et en le soustrayant de chaque coût dans la colonne.
Ex. La première ligne devient: 24-10=14, 10-10=0, 21-10=11, 11-10=1
USINE
USINE
RÉDUIT V.P. 1 2 3 4
V.P. 1 2 3 4 DE:
F 14 0 11 0
F 14 0 11 1 10
M 4 12 0 4
M 4 12 0 5 10 O 0 2 5 3
O 0 2 5 4 15 P 0 8 3 1
RÉDUIT
P 0 8 3 2 11 470 DE: 0 0 0 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 USINE
ce nombre est égal au nombre de lignes (ou colonnes),
V.P. 1 2 3 4
la matrice est réduite; aller à l’étape 5. Si ce nombre est
Donc, on
inférieur au nombre de lignes (ou colonnes), aller à F 14 0 11 0
l’étape 4.
va à
M 4 12 0 4 l’étape 4.
O 0 2 5 3
P 0 8 3 1
472 473

La méthode hongroise La méthode hongroise

Étape 4:

Trouver la cellule de valeur minimum non-couverte par USINE


une ligne.
V.P. 1 2 3 4
Soustraire cette valeur de toutes les cellules non- F 14 0 11 0
couvertes. M 4 12 0 4 Valeur
O 0 2 5 3 minimum
Ajouter cette valeur aux cellules situées à l’intersection
de deux lignes. P 0 8 3 1

Retourner à l’étape 3.
474 475

La méthode hongroise La méthode hongroise

Maintenant, le nombre minimal de lignes est de 4.


+1 USINE
V.P. 1 2 3 4 USINE
F 15 0 12 0 V.P. 1 2 3 4
Donc, on
M 4 11 0 3 F 15 0 12 0
passe à
O 0 1 5 2 M 4 11 0 3 l’étape 5.
P 0 7 3 0 O 0 1 5 2
P 0 7 3 0
-1 476 477
La méthode hongroise La méthode hongroise
Étape 5:
Déterminer la solution optimale.
Résultat:
AFFECTATION
USINE V.P. USINE COÛT
V.P. 1 2 3 4 F 2 10
Note: P1 ne
pourrait pas F 15 0 12 0 M 3 10
être choisi car M 4 11 0 3 O 1 15
l’affectation de P 4 13
«O» ne serait O 0 1 5 2
COÛT TOTAL 48
pas de coût P 0 7 3 0
minimal.
478 479

Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 1 : Réduction des lignes

C1 C2 C3 C4 C1 C2 C3 C4

P1 60 170 330 360 P1 60 170 330 360 ∆=60

P2 130 200 200 400 P2 130 200 200 400 ∆=130

P3 50 300 170 180 P3 50 300 170 180 ∆=50

P4 120 90 250 200 P4 120 90 250 200 ∆=90

480 481

Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 1 : Réduction des lignes Étape 2 : Réduction des colonnes

C1 C2 C3 C4 C1 C2 C3 C4

P1 0 110 270 300 P1 0 110 270 300

P2 0 70 70 270 P2 0 70 70 270

P3 0 250 120 130 P3 0 250 120 130

P4 30 0 160 110 P4 30 0 160 110

∆=0 ∆=0 ∆=70 ∆=110

482 483
Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 2 : Réduction des colonnes Étape 3 : Matrice Réduite

C1 C2 C3 C4 C1 C2 C3 C4

P1 0 110 220 190 P1 0 110 220 190

P2 0 70 0 160 P2 0 70 0 160 3 lignes et il en faut 4

P3 0 250 50 20 P3 0 250 50 20 ⇒ Étape 4

P4 30 0 90 0 P4 30 0 90 0

484 485

Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 3 : Matrice Réduite Étape 4 : Nouvelle réduction

C1 C2 C3 C4 C1 C2 C3 C4

P1 0 110 220 190 C1 P1 P1 0 110 220 190

P2 0 70 0 160 C2 P2 P2 0 70 0 160

P3 0 250 50 20 C3 P3 P3 0 250 50 20

P4 30 0 90 0 C4 P4 P4 30 0 90 0
Réduction

486 487

Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 4 : Nouvelle réduction Étape 3 : matrice réduite ?

C1 C2 C3 C4 Réduction de 20 unités C1 C2 C3 C4
des nombres en vert
P1 0 110 220 190 P1 0 90 200 170

P2 0 70 0 160 Ajout de 20 unités sur les P2 20 70 0 160


nombres en orange
P3 0 250 50 20 P3 0 230 30 0

P4 30 0 90 0 P4 50 0 90 0
Réduction

488 489
Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 3 : matrice réduite ? Étape 3 : matrice réduite ?

C1 C2 C3 C4 C1 C2 C3 C4
4 lignes C1 P1
P1 0 90 200 170 P1 0 90 200 170

C2 P2
P2 20 70 0 160 Solution optimale P2 20 70 0 160
C3 P3
P3 0 230 30 0 ⇓ P3 0 230 30 0
Étape 5 C4 P4
P4 50 0 90 0 P4 50 0 90 0

490 491

Algorithme hongrois : Exemple Algorithme hongrois : Exemple

Étape 3 : matrice réduite ? Étape 5 : solution optimale

C1 C2 C3 C4 C1 C2 C3 C4
C1 P1
P1 0 90 200 170 P1 0 90 200 170
C2 P2
P2 20 70 0 160 P2 20 70 0 160

P3 0 230 30 0 C3 P3 P3 0 230 30 0

C4 P4
P4 50 0 90 0 P4 50 0 90 0

492 493

Algorithme hongrois : Exemple

Étape 5 : solution optimale


Algorithme hongrois :
C1 C2 C3 C4 C1 C2 C3 C4

P1 0 90 200 170 P1 60 170 330 360 Problème de maximisation


P2 20 70 0 160 P2 130 200 200 400

P3 0 230 30 0 P3 50 300 170 180

P4 50 0 90 0 P4 120 90 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. Algorithme hongrois
Max C1 C2 C3 C4 Min C1 C2 C3 C4

P1 60 170 330 360 P1 340 230 70 40 Explication théorique


P2 130 200 200 400 P2 270 200 200 0

P3 50 300 170 180 P3 350 100 230 220

P4 120 90 250 200 P4 280 310 150 200


496 497

Algorithme hongrois : explication théorique Algorithme hongrois : explication théorique

Min ∑ ∑ cijxij
∑ x ij = 1 i = 1, … , n
C1 C2 C3 C4
∑ x ij = 1 j = 1, … , n
P1 60 170 330 360 ui + v j + e ij = cij
xij ≥ 0
P2 130 200 200 400 0 + 0 + eij = 300
P3 50 300 170 180
Max ∑ ui + ∑ v j
250 200
ui + vj ≤ c ij i = 1, … , n et P4 120 90

j = 1, … , n

498 499

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 C4
C1 C2 C3 C4
P1 60 170 330 360 ∆=60 ⇒ u1 = minj c1j = 60
u1 = 60 P1 0 110 270 300 ui + v j + e ij = cij
P2 130 200 200 400 ∆=130 ⇒ u2 = minj c 2j = 130
u2 = 130 P2 0 70 70 270 u2 + v3 + e23 = c23
P3 50 300 170 180 ∆=50 ⇒ u3 = minj c 3j = 50
u3 = 50 P3 0 250 120 130 130 + 0 + 70 = 200
P4 120 90 250 200 ∆=90 ⇒ u4 = minj c4j = 90
u4 = 90 P4 30 0 160 110

500 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 v2 =0 v3 =70 v4 =110

C1 C2 C3 C4 C1 C2 C3 C4

u1 = 60 P1 0 110 270 300 ∆ =0 ⇒ v1 = mini ( ci1 - ui )= 0 u 1 = 60 P1 0 110 220 190 ui + v j + e ij = cij


u2 = 130 P2 0 70 70 270 ∆ =0 ⇒ v2 = mini ( ci2 - ui )= 0 u 2 = 130 P2 0 70 0 160 u3 + v3 + e33 = c33
u3 = 50 P3 0 250 120 130 ∆ =70 ⇒ v 3 = mini ( ci3 - u i )= 70 u 3 = 50 50 20
P3 0 250 50 + 70 + 50 = 170
u4 = 90 P4 30 0 160 110 ∆ =110 ⇒ v4 = mini (c i4 - u i ) = 110 u 4 = 90 0 90 0
P4 30

∆=0 ∆=0 ∆=70 ∆=110


502 503

Algorithme hongrois : explication théorique Algorithme hongrois : explication théorique

Étape 3 : Matrice Réduite Étape 4 : Nouvelle réduction

v1 =0 v2 =0 v3 =70 v4 =110 v1 =0 v2 =0 v3 =70 v4 =110

C1 C2 C3 C4 C1 C2 C3 C4
3 lignes et il en faut 4 ⇒
u 1 = 60 P1 0 110 220 190 u 1 = 60 P1 0 110 220 190 Pour maximiser il faut réduire
solution du duale n’est pas la valeur des e i j et pour avoir
u 2 = 130 P2 0 70 0 160 optimale car la solution u 2 = 130 P2 0 70 0 160 une solution admissible il faut
primale n’est pas réalisable prendre le plus petit
u 3 = 50 P3 0 250 50 20 u 3 = 50 P3 0 250 50 20

u 4 = 90 P4 30 0 90 0 u 4 = 90 P4 30 0 90 0

504 505

Algorithme hongrois : explication théorique Algorithme hongrois : explication théorique

Étape 4 : Nouvelle réduction Étape 4 : Nouvelle réduction


Réduction de ∆=20 unités des Réduction de ∆=20 unités des
nombres en rouge nombres en rouge
⇓ ⇓
v1 =0 v2 =0 v3 =70 v4 =110 e ij ← ei j - ∆ v1 =0 v2 =0 v3 =70 v4 =110
e ij ← ei j - ∆
C1 C2 C3 C4 C1 C2 C3 C4

u 1 = 60 P1 0 110 220 190 P1 0 90 200 170 Pour conserver la relation


u 1 = 60

u 2 = 130 P2 0 70 0 160 u 2 = 130 P2 0 70 0 160 ui + v j + e ij = cij


u 3 = 50 P3 0 250 50 20 P3 0 230 30 0 il faut alors
u 3 = 50

P4 30 0 90 0 P4 30 0 90 0
u 4 = 90 u 4 = 90 u1 ← u1 + ∆
u3 ← u3 + ∆

506 507
Algorithme hongrois : explication théorique Algorithme hongrois : explication théorique

Étape 4 : Nouvelle réduction Étape 4 : Nouvelle réduction

Pour équilibrer les cases


v1 =0 v2 =0 v3 =70 v4 =110 v1 =0-20 v2 =0 v3 =70 v4 =110 (P1,C1) et (P3,C1), il faut
Ainsi pour tous les ei j alors
C1 C2 C3 C4 on conserve la relation C1 C2 C3 C4 v 1 ← v1 - ∆

u 1 = 60+20 P1 0 90 200 170 ui + v j + e ij = cij u 1 = 60+20 P1 0 90 200 170 Pour e11 et e31 on conserve
alors la relation
P2 0 70 0 160 P2 0 70 0 160
u 2 = 130 u 2 = 130 ui + v j + e ij = cij
30 0 mais pas pour 30 0
u 3 = 50+20 P3 0 230 u 3 = 50+20 P3 0 230
mais plus pour e 21 et e 41 c’est
0 90 0 e 11 et e 31 0 90 0 pourquoi il faut faire
P4 30 P4 30
u 4 = 90 u 4 = 90 e 21 ← e 21 + ∆
e 41 ← e 41 + ∆

508 509

Algorithme hongrois : explication théorique Algorithme hongrois : explication théorique

Étape 3 : matrice réduite ? Étape 5 : solution optimale

C1 C2 C3 C4 C1 C2 C3 C4
4 lignes
P1 0 90 200 170 P1 0 90 200 170

P2 20 70 0 160 Solution optimale P2 20 70 0 160

P3 0 230 30 0 ⇓ P3 0 230 30 0
Étape 5
P4 50 0 90 0 P4 50 0 90 0

510 511

Travail à faire : heure 22

N.O.P. chapitre 7 Nos 22, 23, 24


(chapitre 7 Nos 20, 21, 22)

512