Chapitre 5 · Semestre 5

Les problèmes de transport et d'affectation

Intelligence Artificielle et Recherche Opérationnelle

Objectifs du chapitre — À la fin de ce chapitre, vous saurez :

  • formuler un problème de transport et vérifier son équilibre ;
  • construire une solution de base par les méthodes du coin nord-ouest, du moindre coût et de Vogel ;
  • tester l'optimalité d'une solution par la méthode des potentiels (MODI) ;
  • formuler un problème d'affectation ;
  • le résoudre par la méthode hongroise.

5.1 Le problème de transport

Une entreprise dispose de $m$ origines (usines, entrepôts) qui offrent des quantités $a_i$, et de $n$ destinations (clients, magasins) qui demandent des quantités $b_j$. Transporter une unité de l'origine $i$ vers la destination $j$ coûte $c_{ij}$. On cherche les quantités $x_{ij}$ qui minimisent le coût total :

$$\min Z = \sum_{i}\sum_{j} c_{ij}\,x_{ij} \quad \text{s.c.} \quad \sum_j x_{ij} = a_i \;\; \text{(offres)}, \qquad \sum_i x_{ij} = b_j \;\; \text{(demandes)}, \qquad x_{ij} \ge 0$$

C'est un programme linéaire, mais sa structure particulière permet des méthodes beaucoup plus rapides que le simplexe général. Il est au cœur de la logistique : approvisionnement des points de vente d'une chaîne de distribution, acheminement des phosphates, des céréales importées ou des carburants vers les régions.

Définition — Problème équilibré : l'offre totale est égale à la demande totale, $\sum a_i = \sum b_j$. Si l'offre dépasse la demande, on ajoute une destination fictive (stock non expédié) à coût nul ; si la demande dépasse l'offre, une origine fictive (demande non satisfaite).

Une solution de base d'un problème à $m$ origines et $n$ destinations comporte $m + n - 1$ cases occupées (l'une des contraintes est redondante, puisque l'offre totale égale la demande totale).

5.2 Trouver une première solution

On présente les données dans un tableau de transport : une ligne par origine, une colonne par destination, le coût dans chaque case, les offres en marge droite et les demandes en bas.

  • Coin nord-ouest : on part de la case en haut à gauche, on y affecte le maximum possible ($\min(a_i, b_j)$), on barre la ligne ou la colonne épuisée et on continue vers la droite ou vers le bas. Méthode rapide mais aveugle aux coûts.
  • Moindre coût : on affecte le maximum possible à la case de plus petit coût encore disponible, et ainsi de suite. Elle tient compte des coûts mais peut « piéger » des quantités dans des cases très chères à la fin.
  • Vogel (méthode des pénalités) : pour chaque ligne et chaque colonne, on calcule la pénalité, différence entre les deux plus petits coûts disponibles. On choisit la ligne ou la colonne de plus forte pénalité et on affecte le maximum possible à sa case la moins chère. On recalcule les pénalités après chaque affectation. Elle donne souvent la solution optimale ou une solution très proche.

La pénalité mesure le surcoût qu'on subirait si l'on ne servait pas la ligne (ou la colonne) par sa case la moins chère : on traite d'abord les situations où une erreur coûterait le plus cher.

5.3 Tester l'optimalité : la méthode des potentiels (MODI)

On associe un potentiel $u_i$ à chaque origine et $v_j$ à chaque destination, tels que, pour chaque case occupée :

$$u_i + v_j = c_{ij}$$

On fixe arbitrairement $u_1 = 0$ et l'on déduit les autres potentiels de proche en proche. Pour chaque case vide, on calcule le coût réduit :

$$\delta_{ij} = c_{ij} - u_i - v_j$$

Critère d'optimalité : la solution est optimale si tous les coûts réduits des cases vides sont positifs ou nuls.

Si une case a un coût réduit négatif, y faire passer une unité réduit le coût total de $|\delta_{ij}|$. On construit alors un cycle (chemin fermé alternant lignes et colonnes, passant uniquement par des cases occupées) : on ajoute $\theta$ à la case entrante, on retranche et on ajoute alternativement $\theta$ le long du cycle, avec $\theta$ égal à la plus petite quantité des cases « à retrancher ». Puis on recommence le test. C'est exactement le simplexe, appliqué à la structure du tableau de transport.

Un coût réduit nul sur une case vide signale une solution optimale multiple.

5.4 Le problème d'affectation

Il s'agit d'affecter $n$ personnes (ou machines, véhicules) à $n$ tâches, une personne par tâche et une tâche par personne, au moindre coût (ou temps). Avec $x_{ij} = 1$ si la personne $i$ fait la tâche $j$ et 0 sinon :

$$\min Z = \sum_{i}\sum_{j} c_{ij}\,x_{ij} \quad \text{s.c.} \quad \sum_j x_{ij} = 1, \qquad \sum_i x_{ij} = 1, \qquad x_{ij} \in \{0, 1\}$$

C'est un problème de transport particulier où toutes les offres et demandes valent 1. Le nombre d'affectations possibles est $n!$ : déjà 3 628 800 pour $n = 10$. On ne peut pas les énumérer, d'où l'intérêt d'une méthode efficace.

5.5 La méthode hongroise (Kuhn, 1955)

Elle repose sur une propriété simple : retrancher une même constante à tous les coûts d'une ligne (ou d'une colonne) ne change pas l'affectation optimale, puisque chaque ligne contient exactement une affectation.

  1. Réduire les lignes : retrancher à chaque ligne son plus petit élément.
  2. Réduire les colonnes : retrancher à chaque colonne son plus petit élément.
  3. Chercher une affectation sur les zéros : un zéro par ligne et par colonne (zéros indépendants). S'il en existe $n$, c'est l'optimum.
  4. Sinon, couvrir tous les zéros avec le nombre minimal de lignes et de colonnes. Soit $k$ le plus petit élément non couvert : le retrancher à tous les éléments non couverts, l'ajouter aux éléments couverts deux fois (intersections). Revenir à l'étape 3.

Exemple. Trois techniciens d'une usine de Kénitra doivent régler trois machines ; les durées (en heures) sont :

M1 M2 M3
T1 14 5 8
T2 2 12 6
T3 7 8 3

Réduction des lignes (minimums 5, 2 et 3) : T1 → (9 ; 0 ; 3), T2 → (0 ; 10 ; 4), T3 → (4 ; 5 ; 0). Chaque colonne contient déjà un zéro. Les zéros (T1, M2), (T2, M1) et (T3, M3) sont indépendants : affectation optimale T1 → M2, T2 → M1, T3 → M3, pour $5 + 2 + 3 = 10$ heures.

Un problème de maximisation (rendement, chiffre d'affaires) se ramène à une minimisation en remplaçant chaque valeur par (plus grande valeur du tableau − valeur). Un problème non carré se complète par des lignes ou colonnes fictives à coût nul.

5.6 Méthode : résoudre un problème de transport

  1. Vérifier l'équilibre ; ajouter une origine ou destination fictive si nécessaire.
  2. Construire une solution de base (Vogel de préférence) ; vérifier qu'elle compte $m + n - 1$ cases occupées.
  3. Calculer les potentiels $u_i$, $v_j$ sur les cases occupées.
  4. Calculer les coûts réduits des cases vides ; s'ils sont tous positifs ou nuls, c'est optimal.
  5. Sinon, faire entrer la case la plus négative par un cycle et recommencer.
  6. Calculer le coût total et interpréter (quelles liaisons utiliser, quelles liaisons abandonner).

Les pièges à éviter

  • Oublier d'équilibrer le problème avant d'appliquer les méthodes.
  • Calculer une pénalité de Vogel avec des cases déjà barrées.
  • Calculer les potentiels avec des cases vides (uniquement les cases occupées).
  • Avoir moins de $m + n - 1$ cases occupées (dégénérescence) : ajouter alors une case occupée avec une quantité nulle.
  • Dans la méthode hongroise, couvrir les zéros avec plus de lignes que nécessaire.

Exercice 1 — Distribution d'un fabricant de matériaux

Un fabricant de matériaux de construction approvisionne trois chantiers (Rabat, Fès, Marrakech) depuis trois dépôts. Coûts de transport (en DH par tonne), offres et demandes hebdomadaires (en tonnes) :

Dépôt \ Chantier Rabat Fès Marrakech Offre
Casablanca 9 29 24 50
Tanger 25 30 58 30
Agadir 55 78 25 20
Demande 40 35 25

Travail à faire :

  1. Le problème est-il équilibré ? Combien de cases occupées doit compter une solution de base ?
  2. Construisez une solution par la méthode du coin nord-ouest, puis par celle du moindre coût. Calculez leurs coûts.
  3. Construisez une solution par la méthode de Vogel et calculez son coût.
  4. Testez l'optimalité de la solution de Vogel par la méthode des potentiels. Concluez.
Voir le corrigé

1) Offre totale $50 + 30 + 20 = 100$ ; demande totale $40 + 35 + 25 = 100$ : le problème est équilibré. Une solution de base compte $3 + 3 - 1 = \mathbf{5}$ cases occupées.

2) Coin nord-ouest : Casablanca-Rabat 40 ; Casablanca-Fès 10 ; Tanger-Fès 25 ; Tanger-Marrakech 5 ; Agadir-Marrakech 20. Coût : $360 + 290 + 750 + 290 + 500 = \mathbf{2\,190}$ DH.

Moindre coût : Casablanca-Rabat (9) : 40 ; Casablanca-Marrakech (24) : 10 ; Agadir-Marrakech (25) : 15 ; Tanger-Fès (30) : 30 ; Agadir-Fès (78) : 5. Coût : $360 + 240 + 375 + 900 + 390 = \mathbf{2\,265}$ DH. Ici, le moindre coût fait moins bien que le coin nord-ouest : il « piège » 5 tonnes sur la liaison la plus chère (Agadir-Fès).

3) Vogel

  • Pénalités initiales : lignes Casablanca $24 - 9 = 15$, Tanger $30 - 25 = 5$, Agadir $55 - 25 = 30$ ; colonnes Rabat $25 - 9 = 16$, Fès $30 - 29 = 1$, Marrakech $25 - 24 = 1$. La plus forte est Agadir (30) : Agadir-Marrakech reçoit 20 (Agadir épuisé, Marrakech demande encore 5).
  • Nouvelles pénalités : Casablanca 15, Tanger 5, Rabat 16, Fès 1, Marrakech $58 - 24 = 34$. Marrakech (34) : Casablanca-Marrakech reçoit 5 (Casablanca garde 45).
  • Puis : Casablanca $29 - 9 = 20$, Tanger 5, Rabat 16, Fès 1. Casablanca (20) : Casablanca-Rabat reçoit 40 (Casablanca garde 5).
  • Reste Fès (35) : Casablanca-Fès 5 et Tanger-Fès 30.

Solution : Casablanca → Rabat 40, Fès 5, Marrakech 5 ; Tanger → Fès 30 ; Agadir → Marrakech 20. Coût : $360 + 145 + 120 + 900 + 500 = \mathbf{2\,025}$ DH.

4) Potentiels (cases occupées) : $u_{Casa} = 0$, d'où $v_{Rabat} = 9$, $v_{\text{Fès}} = 29$, $v_{Marrakech} = 24$ ; Tanger-Fès : $u_{Tanger} = 30 - 29 = 1$ ; Agadir-Marrakech : $u_{Agadir} = 25 - 24 = 1$.

Coûts réduits des cases vides :

  • Tanger-Rabat : $25 - 1 - 9 = 15$ ;
  • Tanger-Marrakech : $58 - 1 - 24 = 33$ ;
  • Agadir-Rabat : $55 - 1 - 9 = 45$ ;
  • Agadir-Fès : $78 - 1 - 29 = 48$.

Tous sont positifs : la solution de Vogel est optimale, et unique (aucun coût réduit nul). Le coût minimal est de 2 025 DH par semaine, soit 165 DH de moins que le coin nord-ouest et 240 DH de moins que le moindre coût. Le dépôt de Casablanca, central, sert les trois chantiers.

Exercice 2 — Affecter quatre commerciaux

Une entreprise affecte quatre commerciaux (A, B, C, D) à quatre régions (R1 à R4). Le tableau donne les frais annuels estimés (en milliers de DH) :

R1 R2 R3 R4
A 82 83 69 92
B 77 37 49 92
C 11 69 5 86
D 8 9 98 23

Trouvez l'affectation de coût minimal par la méthode hongroise.

Voir le corrigé

Réduction des lignes (minimums 69, 37, 5, 8) : A (13 ; 14 ; 0 ; 23), B (40 ; 0 ; 12 ; 55), C (6 ; 64 ; 0 ; 81), D (0 ; 1 ; 90 ; 15).

Réduction des colonnes (minimums 0, 0, 0, 15) : la colonne R4 devient (8 ; 40 ; 66 ; 0).

Zéros : A-R3, B-R2, C-R3, D-R1, D-R4. A et C ne peuvent pas tous deux prendre R3 : seulement 3 zéros indépendants. On couvre tous les zéros avec 3 traits : colonne R3, ligne B, ligne D. Plus petit élément non couvert : 6 (C-R1). On le retranche aux éléments non couverts (lignes A et C hors R3) et on l'ajoute aux intersections (B-R3, D-R3) :

R1 R2 R3 R4
A 7 8 0 2
B 40 0 18 40
C 0 58 0 60
D 0 1 96 0

Affectation : A → R3, B → R2, C → R1, D → R4 (quatre zéros indépendants). Coût : $69 + 37 + 11 + 23 = \mathbf{140}$ milliers de DH.

Exercice 3 — Améliorer la solution du coin nord-ouest

Dans l'exercice du cours, la solution du coin nord-ouest est : Casablanca-Rabat 40, Casablanca-Fès 10, Tanger-Fès 25, Tanger-Marrakech 5, Agadir-Marrakech 20 (coût 2 190 DH).

  1. Calculez les potentiels et les coûts réduits des cases vides.
  2. Améliorez la solution par un cycle. Quel est le nouveau coût ?
Voir le corrigé

1) $u_{Casa} = 0$ ; $v_{Rabat} = 9$, $v_{\text{Fès}} = 29$ ; Tanger-Fès : $u_{Tanger} = 1$ ; Tanger-Marrakech : $v_{Marrakech} = 57$ ; Agadir-Marrakech : $u_{Agadir} = 25 - 57 = -32$. Coûts réduits : Casablanca-Marrakech $24 - 0 - 57 = \mathbf{-33}$ ; Tanger-Rabat $25 - 1 - 9 = 15$ ; Agadir-Rabat $55 + 32 - 9 = 78$ ; Agadir-Fès $78 + 32 - 29 = 81$. La solution n'est pas optimale.

2) Cycle : Casablanca-Marrakech (+), Tanger-Marrakech (−), Tanger-Fès (+), Casablanca-Fès (−). $\theta = \min(5 ; 10) = 5$. Nouvelle solution : Casablanca-Marrakech 5, Tanger-Marrakech 0 (sort de la base), Tanger-Fès 30, Casablanca-Fès 5. Coût : $2\,190 - 33 \times 5 = \mathbf{2\,025}$ DH : c'est la solution optimale trouvée par Vogel.

L'essentiel — Transport et affectation

  • Transport : $\min \sum c_{ij} x_{ij}$, offres $\sum_j x_{ij} = a_i$, demandes $\sum_i x_{ij} = b_j$ ; équilibrer avec une origine ou destination fictive à coût nul.
  • Solution de base : $m + n - 1$ cases occupées.
  • Solutions initiales : coin nord-ouest (ignore les coûts), moindre coût, Vogel (pénalité = écart entre les deux plus petits coûts ; souvent optimale).
  • MODI : $u_i + v_j = c_{ij}$ sur les cases occupées ($u_1 = 0$) ; coût réduit $\delta_{ij} = c_{ij} - u_i - v_j$ sur les cases vides.
  • Optimal si tous les $\delta_{ij} \ge 0$ ; sinon, cycle avec $\theta$ = plus petite quantité à retrancher ; gain $= |\delta| \times \theta$.
  • Affectation : $x_{ij} \in \{0 ; 1\}$, une personne par tâche ; $n!$ possibilités.
  • Méthode hongroise : réduire lignes puis colonnes ; chercher $n$ zéros indépendants ; sinon couvrir les zéros par un minimum de traits, retrancher le plus petit non couvert, l'ajouter aux intersections.
  • Maximisation : remplacer chaque valeur par (maximum − valeur).
1Un problème de transport est équilibré lorsque :
2Une solution de base d'un problème à 3 origines et 4 destinations compte :
3La méthode du coin nord-ouest a pour défaut de :
4Dans la méthode de Vogel, la pénalité d'une ligne est :
5Dans la méthode MODI, les potentiels se calculent sur :
6Une solution de transport est optimale quand les coûts réduits des cases vides sont :
7Dans un cycle d'amélioration, la quantité déplacée θ est :
8Le problème d'affectation est un cas particulier du problème de transport où :
9La première étape de la méthode hongroise consiste à :
10Pour traiter un problème d'affectation de maximisation par la méthode hongroise, on :

S'entraîner sur des sujets réels

Des sujets réels de concours (master, licence d'excellence) avec une épreuve de Intelligence Artificielle et Recherche Opérationnelle : énoncé complet et corrigé indicatif.

Voir les 13 sujets de concours en Intelligence Artificielle et Recherche Opérationnelle →