Vous êtes sur la page 1sur 31

Département de Mathématiques

Filière Génie Mathématique et


Informatique

Rapport

Problème d’affectation et de transport

Réalisé par :
SADIK Ilhame Encadré par :
MOUSSAOUI Khadija M. Jalil ABOUIR

année universitaire : 2023/2024


Table des matières

1 Probléme d’affectation 3
1.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Formulation du probléme d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Contraintes du probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Exemple d’Affectation de Tâches à des Machines . . . . . . . . . . . . . . . . . . . 5
1.5.1 Formulation du Problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Recherche de l’affectation optimale . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.1 la méthode Hongroise : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 Implémentation sous python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7.1 Bibliothéque : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7.2 Les fonctions sous python Pour résoudre Probléme d’affectation : . . . . . 9
1.7.3 Application sur l’exemple : . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Problème de transport 15
2.1 introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 notions nécessaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Solution de base réalisable : . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Solution optimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Algorithme de résolution du problème de transport . . . . . . . . . . . . . . . . . . 16
2.3.1 Étape 1 : Formuler et configurer le problème sous forme matricielle . . . . . 16
2.3.2 Étape 2 : Obtenir une première solution de base réalisable . . . . . . . . . . 16
2.3.3 Étape 3 : Tester la solution de base initiale pour l’optimalité . . . . . . . . 16
2.4 Méthodes de détermination de solution de base . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Méthode du Coin Nord-Ouest . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 2.2. Méthode du Coût Minimum : . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Application des méthodes de résolution du problème du transport . . . . . . . . . 17
2.5.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2 Modélisation Mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.3 Détermination d’une solution de base initiale en utilisat la Méthode de Coin
Nord-Ouest : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.4 Détermination d’une solution de base initiale en utilisat la Méthode du Coût
Minimum : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.5 solution optimale en utilisant la Méthode de Distribution Modifiée : . . . . 20
2.6 l’implémentation des méthodes de résolution du probléme du transport sous python : 23
2.6.1 méthode des moindres Coûts sous python . . . . . . . . . . . . . . . . . . . 23
2.6.2 méthode de Coin Nord-Ouest sous python . . . . . . . . . . . . . . . . . . . 27

2
Chapitre 1
Probléme d’affectation

1.1 Introduction :
Le problème d’affectation, un concept central en recherche opérationnelle et en informatique,
constitue le cœur de nombreuses applications pratiques. Il se pose lorsqu’il est nécessaire d’attribuer
de manière optimale des ressources limitées à des tâches spécifiques, avec pour objectif ultime de
maximiser l’efficacité opérationnelle, de minimiser les coûts ou d’atteindre d’autres critères de
performance prédéfinis.

Exemples d’Affectation dans des Contextes Réels


L’algorithme d’affectation trouve des applications concrètes dans de nombreux domaines, où il
est utilisé pour résoudre des problèmes d’attribution de ressources à des tâches ou à des agents.
Voici deux exemples illustrant l’application de l’algorithme d’affectation dans des contextes réels

• Affectation des Ouvriers à la Réalisation des Tâches Différentes : Dans le secteur


de la construction, les entreprises doivent souvent attribuer des ouvriers à différentes tâches
sur les chantiers de construction. L’algorithme d’affectation peut être utilisé pour déterminer
la meilleure répartition des ouvriers en fonction de leurs compétences, de leur disponibilité
et des exigences spécifiques de chaque tâche. Par exemple, certains ouvriers peuvent être
spécialisés dans la maçonnerie, d’autres dans le travail de plomberie ou d’électricité. En uti-
lisant l’algorithme d’affectation, l’entreprise peut optimiser l’utilisation de la main-d’œuvre
et garantir que chaque tâche est réalisée par les ouvriers les plus qualifiés et les mieux adaptés

• Affectation des Tâches à des Machines : Dans les usines et les installations de produc-
tion, les entreprises doivent souvent attribuer des tâches de fabrication à différentes machines
et équipements. L’algorithme d’affectation peut être utilisé pour optimiser l’utilisation des
machines en affectant efficacement les tâches à chaque machine en fonction de sa capacité, de
ses performances et des exigences de chaque tâche. Par exemple, certaines machines peuvent
être spécialisées dans le découpage, d’autres dans le soudage ou l’assemblage. En utilisant
l’algorithme d’affectation, l’entreprise peut maximiser le rendement de ses équipements et
minimiser les temps d’arrêt en veillant à ce que chaque tâche soit effectuée par la machine la
mieux adaptée.
Ce chapitre vise à introduire les fondements du problème d’affectation, à explorer ses différentes
dimensions et à mettre en lumière ses applications variées.

3
4 CHAPITRE 1. PROBLÉME D’AFFECTATION

1.2 Définitions
— Couplage : Soit un graphe G(X, U ) simple. On appelle couplage un ensemble d’arêtes tel
que deux arêtes quelconques de U ne sont pas adjacentes.
— Sommets Saturés : Un sommet d’un graphe est dit saturé par un couplage s’il est
l’extrémité d’une arête de ce couplage.
— Couplage Parfait : Un couplage est dit parfait s’il sature tous les sommets du graphe.
— Couplage Maximal : Un couplage est dit maximal s’il est impossible d’ajouter une arête
supplémentaire au couplage sans violer la définition d’un couplage.
— Couplage Maximum : Un couplage est dit maximum s’il est de cardinalité maximale,
c’est-à-dire s’il est impossible de trouver un couplage de taille plus importante dans le graphe.

1.3 Formulation du probléme d’affectation


Données :
— T = {t1 , t2 , ..., tn } : ensemble des tâches.
— M = {m1 , m2 , ..., mm } : ensemble des personnes.
— C = (cij ) : matrice de coûts où cij représente le coût d’attribution de la tâche ti à un personne
mj .

Objectif :
Minimiser le coût total d’attribution des tâches aux personnes.

Variables de Décision :
xij : variable binaire indiquant si la tâche ti est attribuée à un personne mj . Elle vaut 1 si la
tâche est attribuée à un personne , et 0 sinon.

Formulation :

n X
X m
Minimiser cij · xij
i=1 j=1

sous les contraintes :


m
X
Pour chaque tâche ti : xij = 1, ∀i ∈ {1, 2, ..., n}
j=1
n
X
Pour chaque personne mj : xij ≤ 1, ∀j ∈ {1, 2, ..., m}
i=1
Où xij ∈ {0, 1}, ∀i ∈ {1, 2, ..., n}, ∀j ∈ {1, 2, ..., m}
1.4. CONTRAINTES DU PROBLEME 5

1.4 Contraintes du probleme


— Une tache doit être affectée a une seule personne.
— Chaque personne doit effectuer une seule tache.

1.5 Exemple d’Affectation de Tâches à des Machines


Considérons un exemple où un chef d’entreprise souhaite affecter 4 tâches à 4 machines. Nous
supposons que le coût de production d’une tâche i sur une machine j est Cij (ce coût est infini
s’il n’est pas possible d’effectuer cette tâche sur cette machine). L’objectif est d’exécuter toutes les
tâches de manière à minimiser le coût total de production (la somme des coûts).

1.5.1 Formulation du Problème


Pour modéliser ce problème, nous pouvons utiliser la table d’affectation Ti où i = 1, 2, 3, 4
(tâches) et Mi i = 1, 2, 3, 4 (machines) pour représenter les coûts de production de chaque tâche
sur chaque machine.

M1 M2 M3 M4
T1 1 2 6 ∞
T2 ∞ 5 ∞ 10
T3 7 ∞ 5 6
T4 4 ∞ 3 ∞

Nous cherchons à affecter chaque tâche à une seule machine de manière à minimiser le coût
total de production. Cela peut être formulé comme un problème d’affectation avec les contraintes
suivantes :
X
Pour chaque tâche i : xij = 1
j
X
Pour chaque machine j : xij = 1
i

Où xij est une variable binaire qui prend la valeur 1 si la tâche i est affectée à la machine j, et
0 sinon.
6 CHAPITRE 1. PROBLÉME D’AFFECTATION

Le problème d’affectation consiste à trouver un couplage de cardinalité maximale qui est de


poids minimal (ou maximal)

1.6 Recherche de l’affectation optimale


Il existe plusieurs méthodes pour résoudre le problème d’affectation, telles que l’algorithme hon-
grois, la méthode brute-force, la programmation linéaire, etc. Le choix de la méthode de résolution
dépend des caractéristiques spécifiques du problème ainsi que de la taille de l’instance. Par exemple,
pour les problèmes de petite taille, une méthode brute-force pourrait être appropriée, tandis que
pour les problèmes de grande taille, une méthode plus efficace comme l’algorithme hongrois ou la
programmation linéaire pourrait être préférable.

1.6.1 la méthode Hongroise :


Notion :
— Il y a autant de tâches que de machines, c’est-à-dire m = n. Si ce n’est pas le
cas, il est toujours possible d’ajouter une machine (ou une tâche) fictive avec
des coûts d’exploitation nuls.
— Tous les poids sont positifs ou nuls. Si ce n’est pas le cas, on peut augmenter tous
les poids d’une même valeur sans changer la structure de la solution optimale.
— La recherche d’une affectation optimale (maximale ou minimale) par la méthode
Hongroise est basée sur la notion de ”zéros indépendants” dans une matrice
carrée de taille n × n, où n représente le nombre de tâches ou de machines.
— On appelle zéros indépendants les zéros qui n’appartiennent ni à la même
ligne ni à la même colonne d’une matrice.
— La solution optimale pour une matrice de taille n × n est obtenue s’il existe
des zéros indépendants. Cela signifie que chaque tâche est affectée à une seule
machine.
— Le principe de la méthode consiste à manipuler la matrice de manière à obtenir
n zéros indépendants.

les étapes :
La méthode hongroise comprend trois phases principales :
1. Obtention initiale de zéros
1.1. Soustraire le minimum de chaque ligne à toutes les valeurs de cette ligne.
1.2. Soustraire le minimum de chaque colonne aux valeurs correspondantes de
cette colonne.
2. Recherche d’une solution de coût nul
2.1. Prendre la ligne contenant le moins de zéros.
2.2. Encadrer le premier zéro de cette ligne.
2.3. Barrer les autres zéros de la ligne et de la colonne du zéro encadré.
2.4. Répéter jusqu’à l’impossibilité d’encadrer un zéro.
2.4.1. Si obtention de n zéros indépendants :
2.4.1.1. L’affectation est optimale.
1.6. RECHERCHE DE L’AFFECTATION OPTIMALE 7

2.4.1.2. Le coût minimal est la somme des valeurs correspondantes dans la


matrice initiale.
2.4.2. Sinon, passer à l’etape 3.
3. Recherche d’une solution optimale
3.1. Marquer les lignes et colonnes pour couvrir tous les zéros de la matrice.
3.2. Répéter jusqu’à ce qu’il n’y ait plus de ligne ou de colonne à marquer.
8 CHAPITRE 1. PROBLÉME D’AFFECTATION

on va appliquer cette méthode sur l’exemple précédant :

étapes 1 :

M1 M2 M3 M4 M1 M2 M3 M4
T1 1 2 6 ∞ T1 0 1 5 ∞
T2 ∞ 5 ∞ 10 T2 ∞ 0 ∞ 4
T3 7 ∞ 5 6 T3 2 ∞ 0 0
T4 4 ∞ 3 ∞ T4 1 ∞ 0 ∞

étapes 2 :

M1 M2 M3 M4 M1 M2 M3 M4
T1 0 1 5 ∞ T1 1 2 6 ∞
T2 ∞ 0 ∞ 4 T2 ∞ 5 ∞ 10
T3 2 ∞ 0
 0 T3 7 ∞ 5 6
T4 1 ∞ 0 ∞ T4 4 ∞ 3 ∞

On obtient 4 zéros indépendants, alors l’affectation est optimale. La valeur d’af-


fectation minimale est égale à (1 + 5 + 6 + 3) =15 de la matrice de départ

— Sur le graphe ci-dessous, les arêtes en rouge représentent un couplage de taille


4.
— Tous les sommets sont saturés par le couplage, ce qui signifie que chaque sommet
est connecté à une arête du couplage. Par conséquent, le couplage est parfait.

1.7 Implémentation sous python


1.7.1 Bibliothéque :
En Python, les bibliothèques comme NumPy et Matplotlib facilitent l’implémentation
et la visualisation de ce processus, offrant ainsi une solution précise et efficace pour
les problèmes d’affectation.
1.7. IMPLÉMENTATION SOUS PYTHON 9

1.7.2 Les fonctions sous python Pour résoudre Probléme d’affectation :


— Fonction min zero row(zero mat, mark zero) :
Cette fonction trouve la ligne contenant le moins de zéros dans une matrice
booléenne et marque les éléments correspondants comme faux. L’algorithme
peut être décrit comme suit :
- Pour chaque ligne de la matrice booléenne zero mat, la fonction calcule le
nombre de zéros présents. La ligne avec le moins de zéros est alors identifiée.
- Les indices de la ligne et de la colonne de ce zéro sont ajoutés à la liste
mark zero. Ces indices sont ensuite marqués comme faux dans la matrice
zero mat.

— Fonction mark matrix(mat) :


Cette fonction trouve les solutions potentielles pour le problème LAP en uti-
lisant l’algorithme de marquage. Voici le processus en détail : - La matrice
d’entrée mat est convertie en une matrice booléenne zero bool mat, où les zéros
sont remplacés par True et les autres valeurs par False.
- Tant qu’il reste des zéros dans la matrice booléenne, la fonction utilise la
fonction ligne zero min pour trouver et marquer les lignes et colonnes avec le
moins de zéros possibles.
- Les positions des zéros marqués sont enregistrées dans les listes marked zero row
et marked zero col.
10 CHAPITRE 1. PROBLÉME D’AFFECTATION

— Fonction ajust matrix(mat, cover rows, cover cols) : Cette fonction ajuste
la matrice en soustrayant le minimum des éléments non couverts et en ajoutant
ce minimum aux éléments couverts. Voici les étapes : - Elle parcourt toutes les
lignes non couvertes de la matrice et soustrait le minimum de chaque ligne non
couverte. - Ensuite, elle parcourt tous les éléments non couverts de la matrice
et soustrait le minimum de chaque colonne non couverte. - Enfin, elle ajoute le
minimum retiré aux intersections des lignes couvertes et des colonnes couvertes.
1.7. IMPLÉMENTATION SOUS PYTHON 11

— Fonction hungarian algorithme(mat) : Cette fonction implémente l’algo-


rithme hongrois pour résoudre le problème LAP. Voici les étapes de l’algo-
rithme : - Elle commence par soustraire le minimum de chaque ligne et chaque
colonne de la matrice initiale. - Ensuite, elle effectue un marquage et un ajus-
tement itératifs jusqu’à ce que toutes les lignes et toutes les colonnes soient
couvertes. - Elle retourne les positions des éléments sélectionnés dans la solu-
tion optimale.

— Fonction ans calculation(mat, pos) : Cette fonction calcule le coût total


de la solution optimale et crée une matrice contenant uniquement les éléments
sélectionnés. Voici les étapes : - Elle parcourt les positions des éléments sélectionnés
dans la solution optimale et ajoute leurs valeurs au coût total. - Elle crée une
nouvelle matrice contenant les éléments sélectionnés en remplaçant les autres
valeurs par zéro. - Elle retourne le coût total de la solution optimale ainsi que
la matrice contenant les éléments sélectionnés.
12 CHAPITRE 1. PROBLÉME D’AFFECTATION

— Fonction draw custom bipartite graph(cost matrix, ans pos) :


Cette fonction dessine un graphe biparti représentant l’affectation optimale des
tâches aux machines. Voici le processus en détail :
- Un objet graphe biparti G est créé à l’aide de la bibliothèque NetworkX.
- Les nœuds de chaque partition sont ajoutés au graphe, avec des identifiants
de la forme ’M i’ pour les machines et ’T j’ pour les tâches.
- Les arêtes entre les machines et les tâches sont ajoutées au graphe, avec les
poids correspondants extraits de la matrice des coûts cost matrix.
- Le graphe biparti est dessiné en utilisant la fonction nx.draw(), avec des styles
personnalisés pour les nœuds et les arêtes.
- Les étiquettes des arêtes, représentant les coûts associés à chaque affectation,
sont ajoutées au graphe.

— Fonction optimal assignment table(cost matrix, ans pos) :


Cette fonction crée une représentation visuelle du tableau d’affectation op-
timale, mettant en évidence les coûts associés à chaque affectation. Voici le
processus en détail :
- Un tableau d’affectation est initialisé avec des zéros, de même taille que la
matrice de coûts cost matrix.
- Les coûts d’affectation sont remplis dans le tableau d’affectation aux positions
spécifiées par les éléments de la liste ans pos.
- Le tableau d’affectation est affiché graphiquement en utilisant la fonction
plt.imshow(), avec une colormap ’Greens’ pour indiquer les valeurs plus élevées.
- Les étiquettes des axes x et y sont définies pour représenter les tâches et les
machines respectivement.
- Les valeurs des coûts d’affectation sont affichées à l’intérieur de chaque cellule
1.7. IMPLÉMENTATION SOUS PYTHON 13

du tableau.

1.7.3 Application sur l’exemple :

Cost matrix est représente la matrice des coûts d’affectation des tâches aux ma-
chines, où les valeurs np.inf est ∞ indiquent des affectations impossibles.
Après avoir appliqué l’algorithme hongrois , nous obtenons la position des éléments
dans la solution optimale. Ensuite, nous calculons le coût total minimal de la solution
optimale ainsi que la matrice contenant les éléments sélectionnés. Après l’exécution
du code, le coût total minimal de la solution optimale est affiché : 15

On va justement faire appel aux fonctions déjà expliquées dans la partie précédente.
14 CHAPITRE 1. PROBLÉME D’AFFECTATION

1.8 Conclusion
En résumé, ce chapitre aborde le problème d’affectation, un domaine crucial dans
de nombreuses applications pratiques. Nous avons introduit les concepts clés, for-
mulé le problème et présenté un exemple d’affectation de tâches à des machines. En
utilisant la méthode hongroise, une approche itérative, nous avons illustré comment
résoudre ce problème de manière efficace en Python. En conclusion, ce chapitre met
en lumière l’importance des méthodes algorithmiques pour résoudre les problèmes
d’affectation et démontre comment les outils informatiques modernes comme Python
peuvent être utilisés pour obtenir des solutions précises et rapides.
Chapitre 2
Problème de transport

2.1 introduction :
Le problème de transport est l’un des défis majeurs de la programmation linéaire,
abordé dans de nombreux domaines tels que la logistique, la gestion des opérations
et la recherche opérationnelle. Il surgit lorsque des biens doivent être déplacés depuis
plusieurs sources vers plusieurs destinations, chacune ayant une offre et une demande
spécifiques.
L’objectif principal est de minimiser les coûts totaux associés au déplacement des
biens, en prenant en compte les capacités de production des sources et les exigences
de demande des destinations.
La méthode du problème de transport repose sur une modélisation mathématique
rigoureuse, où les flux de biens entre les sources et les destinations sont représentés
par une matrice de coûts ou de distances. À l’aide de techniques d’optimisation
linéaire, comme le simplexe ou d’autres méthodes spécifiques au problème de trans-
port, il est possible de déterminer les allocations optimales qui minimisent les coûts
de transport tout en respectant les contraintes de capacité et de demande.

2.2 notions nécessaires


On va introduire quelques notions et définitions nécessaires qui vont nous servir
dans la compréhension de la résolution de ce problème.

2.2.1 Solution de base réalisable :


Une solution de base réalisable est une solution qui respecte toutes les contraintes
du problème et qui comprend exactement (m−1)×(n−1) flux nuls, où m représente
le nombre de sources et n le nombre de destinations.
Une solution de base réalisable est dite dégénérée si le nombre d’allocations dans
celle-ci est inférieur à (m + n − 1).
Cette définition nous permet de caractériser les solutions qui constituent les points
de départ possibles dans la résolution du problème de transport. Les solutions de
base réalisables offrent une base fondamentale pour l’exploration de l’espace des so-
lutions, tandis que les solutions de base dégénérées signalent la présence de certaines
particularités qui peuvent influencer le processus de résolution.

15
16 CHAPITRE 2. PROBLÈME DE TRANSPORT

2.2.2 Solution optimale


Une solution réalisable (pas nécessairement de base) est considérée optimale si
elle minimise le coût total du transport.

2.3 Algorithme de résolution du problème de transport


2.3.1 Étape 1 : Formuler et configurer le problème sous forme matricielle
La formulation du problème de transport est similaire à la formulation du problème
PL. Ici, la fonction objective est le coût total du transport et les contraintes sont
l’offre et la demande disponibles à chaque source et destination, respectivement.

2.3.2 Étape 2 : Obtenir une première solution de base réalisable


Cette solution de base initiale peut être obtenue en utilisant l’une des méthodes
suivantes :
— Méthode de Coin Nord-Ouest.
— Méthode du Coût Minimum.
La solution obtenue par l’une des méthodes ci-dessus doit satisfaire les conditions
suivantes :
1. La solution doit être réalisable, c’est-à-dire qu’elle doit satisfaire toutes les
contraintes de l’offre et de la demande.
2. Le nombre d’attribution positive (les cases allouées) doit être égal à m + n − 1,
où m est le nombre de lignes et n est le nombre de colonnes.
La solution qui satisfait les conditions mentionnées ci-dessus est appelée une solution
de base non dégénérée.

2.3.3 Étape 3 : Tester la solution de base initiale pour l’optimalité


L’utilisation de l’une des méthodes suivantes pour tester l’optimalité de la solu-
tion de base initiale obtenue :
— Méthode Stepping Stone.
— Méthode de distribution modifiée.
Si la solution est optimale, arrêtez, sinon déterminez une nouvelle solution améliorée.

2.4 Méthodes de détermination de solution de base


2.4.1 Méthode du Coin Nord-Ouest
La méthode du Coin Nord-Ouest consiste à remplir au maximum la case du
tableau en haut à gauche (le ≪ coin Nord-Ouest ≫), puis à compléter sur la ligne
ou la colonne (de façon à atteindre l’offre ou la demande) et à continuer ainsi à
compléter les cases immédiatement à droite et en dessous alternativement.
Cette méthode présente l’avantage de fournir rapidement et aisément une solution
de base. Cependant, elle a l’inconvénient de ne jamais tenir compte des coûts associés
aux allocations, ce qui signifie qu’elle est généralement assez éloignée de l’optimum.
2.5. APPLICATION DES MÉTHODES DE RÉSOLUTION DU PROBLÈME DU TRANSPORT 17

Par conséquent, cela peut nécessiter ensuite de nombreuses étapes pour atteindre la
solution optimale.

2.4.2 2.2. Méthode du Coût Minimum :


La méthode du Coût Minimum est une méthode pour calculer une solution de
base réalisable d’un problème de transport où les variables de base sont choisies en
fonction du coût unitaire du transport. La méthode du coût minimum trouve une
meilleure solution de départ en se concentrant sur les coûts de transport les moins
chers.
1. Identifiez la case ayant un coût minimum de transport unitaire (Cij ).
2. S’il y a deux ou plus de coûts minimaux, sélectionnez la ligne et la colonne
correspondant à la rangée numérotée inférieure.
3. S’ils apparaissent dans la même rangée, sélectionnez la colonne numérotée
inférieure.
4. Choisissez la valeur du xij correspondante autant que possible sous réserve des
contraintes de disponibilité et de demande.
5. Si la demande est satisfaite, supprimez la colonne.
6. Si la disponibilité est épuisée, supprimez la ligne.
7. Répétez les étapes 1 à 6 jusqu’à ce que toutes les restrictions soient satisfaites.

2.5 Application des méthodes de résolution du problème du


transport
2.5.1 Problématique
”Le secteur de la technologie émergente connaı̂t une croissance exponentielle, et
l’entreprise X se trouve au cœur de cette révolution en tant que l’un des leaders
mondiaux dans le développement de l’intelligence artificielle. Avec une demande
mondiale en constante augmentation, l’entreprise est confrontée à un défi logistique
majeur lorsqu’il s’agit de la livraison de ses produits innovants.
Chaque année, lors de la saison des fêtes, la demande pour les produits de l’entre-
prise X atteint un pic record. Des milliers de commandes affluent de tous les coins
du monde, nécessitant une logistique impeccable pour assurer une livraison rapide
et efficace. Les entrepôts de l’entreprise sont en ébullition, avec une équipe dévouée
travaillant jour et nuit pour traiter les commandes.
Cette période intense d’activité nécessite une logistique robuste et bien planifiée
pour répondre à la demande croissante. Cependant, la complexité est accrue par
le fait que de nombreux transporteurs sont en congé pendant cette période, ce qui
ajoute une pression supplémentaire sur la chaı̂ne logistique.
Pour illustrer, un petit entrepôt régional de l’entreprise X peut être approvisionné
par des centaines de fournisseurs locaux. Cela nécessite une coordination étroite pour
organiser les tournées de collecte et garantir que les produits arrivent à temps pour
être expédiés aux clients.
Le transport de produits technologiques implique des équipements spécialisés
et des compétences spécifiques à chaque étape de la chaı̂ne logistique, depuis la
18 CHAPITRE 2. PROBLÈME DE TRANSPORT

réception des matières premières jusqu’à la livraison finale aux clients. Cette syn-
chronisation complexe nécessite une planification minutieuse et une coordination
étroite entre toutes les parties prenantes impliquées.”

2.5.2 Modélisation Mathématique


Soit xij la variable de décision représentant le nombre de produits technologiques
transportés de chaque entrepôt i (où i = 1, 2, 3) à chaque destination j (où j =
A, B, C). La fonction objective représente le coût total de transport pour chaque
itinéraire. Chaque terme dans la fonction objective reflète le coût du transport pour
un certain nombre de produits technologiques sur une route spécifique.

// A B C l′ of f re
1 6 8 10 150
2 7 11 11 175
3 4 5 12 275
demande 200 100 300 600

2.5.3 Détermination d’une solution de base initiale en utilisat la


Méthode de Coin Nord-Ouest :
1. Initialisation : On commence par examiner la cellule en haut à gauche du
tableau (le coin nord-ouest). Dans ce cas, c’est la cellule 1A.
2. Affectation de la quantité maximale : On alloue autant d’unités que
possible dans cette cellule, en fonction de l’offre et de la demande disponibles.
Ici, nous pouvons affecter 6 unités, ce qui correspond à l’offre de la source 1 et
à la demande de la destination A.
3. Mise à jour de l’offre et de la demande : Après avoir affecté les unités
dans la cellule 1A, nous ajustons les valeurs de l’offre et de la demande
restantes en conséquence. L’offre de la source 1 est maintenant réduite à 144
et la demande de la destination A est satisfaite.
2.5. APPLICATION DES MÉTHODES DE RÉSOLUTION DU PROBLÈME DU TRANSPORT 19

4. Examen des lignes et des colonnes : Nous examinons maintenant la ligne


et la colonne de la cellule 1A. Comme la ligne 1 n’est pas épuisée et que la
colonne A n’est pas épuisée, nous continuons avec cette ligne et cette colonne.
5. Répétition : Nous répétons les étapes ci-dessus pour la cellule suivante non
encore remplie. Dans ce cas, ce serait la cellule 1B.
6. Vérification de la solution : Une fois que toutes les unités ont été allouées,
nous vérifions que la solution obtenue satisfait toutes les contraintes du
problème de transport. Dans ce cas, la solution est réalisable car elle respecte
l’offre et la demande.

// A B C l′ of f re
1 150 X X X
2 50 100 25 175
3 X X 275 275
demande 200 100 300 600
La fonction objectif s’écrit :

Z = 6x1A + 8x1B + 10x1C + 7x2A + 11x2B + 11x2C + 4x3A + 5x3B + 12x3C

Toutes les contraintes sont vérifiées de l’offre et de la demande et de la positivitée :

x1A + x1B + x1C = 150


x2A + x2B + x2C = 175
x3A + x3B + x3C = 275

x1A + x2A + x3A = 200


x1B + x2B + x3B = 100
x1C + x2C + x3C = 300

La solution de départ (composée de 4 variables de base) est :

x2A = 50 unités

x2B = 100 unités


x2C = 25 unités
x3C = 275 unités
Le coût du transport est calculé en évaluant la fonction objective :

Z = 6x1A + 8x1B + 10x1C + 7x2A + 11x2B + 11x2C + 4x3A + 5x3B + 12x3C

= 6×(150)+8×(0)+10×(0)+7×(50)+11×(100)+11×(25)+4×(0)+5×(0)+12×(275)
= 5925
la représentation graphique :
20 CHAPITRE 2. PROBLÈME DE TRANSPORT

2.5.4 Détermination d’une solution de base initiale en utilisat la Méthode


du Coût Minimum :

On commence par trouver le minimum parmi les coûts de transport. on a le


minimum est 6. Ensuite, nous attribuons à cette case la quantité la plus grande
possible afin de satisfaire la demande de la destination ou d’épuiser l’offre de la
source. Ce processus est répété jusqu’à ce que toutes les sources et destinations
soient satisfaites.

// A B C l′ of f re
1 6 8 25 10 125 150
2 7 11

 11 175 175
3 4 200 5 75 12

 275
demande 200 100 300 600

2.5.5 solution optimale en utilisant la Méthode de Distribution Mo-


difiée :

La Méthode de Distribution Modifiée est une technique utilisée dans la program-


mation linéaire pour résoudre des problèmes de transport. Elle permet de trouver
une solution optimale en minimisant le coût total de transport tout en respectant
les contraintes de demande et d’offre.

1. Initialisation : Commencez par initialiser les valeurs des variables ui et vj à


zéro.

2. Calcul des coûts de transport unitaires : Pour chaque cellule allouée cij ,
calculez le coût de transport unitaire cij − ui − vj .

3. Calcul des pénalités pour les cellules vides : Pour chaque cellule vide cij ,
calculez les pénalités ∆ij = cij − ui − vj .

4. Détermination des nouvelles valeurs ui et vj : À partir des pénalités


calculées, déterminez de nouvelles valeurs ui et vj de manière itérative jusqu’à
ce qu’une solution optimale soit atteinte.

5. Réaffectation : Une fois que les nouvelles valeurs ui et vj sont déterminées,


réaffectez les unités de ressources de manière à minimiser le coût total de trans-
port.

6. Vérification de l’optimalité : Vérifiez si la solution obtenue est optimale


en examinant les pénalités calculées. Si toutes les pénalités sont positives ou
nulles, la solution est optimale ; sinon, revenez à l’étape 4.

Nous utiliserons à nouveau la solution de base initiale obtenue par la méthode du


coût minimum. Le tableau pour la solution initiale avec les modifications requises.
2.5. APPLICATION DES MÉTHODES DE RÉSOLUTION DU PROBLÈME DU TRANSPORT 21

/ vj va vb vc /

ui / A B C l of f re
u1 1 6 8 25 10

 150
u2 2 7 11

 11 175 175
u3 3 4 200 5 75 12

 275
/ demande 200 100 300 600
Les équations sont les suivantes :

x1B : u1 + vB =8
x1C : u1 + vC = 10
x2C : u2 + vC = 11
x3A : u3 + vA =4
x3B : u3 + vB =5

Après avoir assigné u1 = 0, nous avons :

vB =8
vC = 10
u2 =1
u3 = −3
vA =7

/ vj va = 7 vb = 8 vc = 10 /

ui / A B C l of f re
u1 = 0 1 6 8 25 10
 150
u2 = 1 2 7 11
 11 175 175
u3 = −3 3 4 200 5 75 12
 275
/ demande 200 100 300 600
Les calculs sont les suivants :

x1A :∆1A = c1A − u1 − vA = 6 − 0 − 7 = −1


x2A :∆2A = c2A − u2 − vA = 7 − 1 − 7 = −1
x2B :∆2B = c2B − u2 − vB = 11 − 1 − 8 = +2
x3C :∆3C = c3C − u3 − vC = 12 − (−3) − 10 = +5

Ces calculs indiquent que la cellule 1A ou la cellule 2A diminuera le coût de 1 par


tonne ciblée. Notez que ces changements de coût sont les mêmes que ceux calculés
dans la méthode de la pierre de touche. Ainsi, la même information est obtenue
22 CHAPITRE 2. PROBLÈME DE TRANSPORT

en évaluant les chemins dans la méthode de la pierre de touche et en utilisant les


formules mathématiques de la méthode de distribution modifiée.
Nous pouvons sélectionner soit la cellule 1A soit la 2A, car elles sont liées à 1. Si la
cellule 1A est sélectionnée comme entrée de la variable hors base, il faut déterminer
le chemin d’accès de cette cellule afin de savoir combien réaffecter.
/ vj va = 6 vb = 7 vc = 10 /

ui / A B C l of f re
u1 = 0 1 6 8 25 10
 150
u2 = 1 2 7 11
 11 175 175
u3 = −2 3 4 200 5 75 12
 275
/ demande 200 100 300 600
Les calculs sont les suivants :

x1A : u1 + vA =6 Donc : vA = 6
x1C : u1 + vC = 10 Donc : vC = 10
x2C : u2 + vC = 11 Donc : u2 = 1
x3A : u3 + vA =4 Donc : u3 = −2
x3B : u3 + vB =5 Donc : vB = 7

Changements de coûts pour les cellules vides :

x1B : ∆1B = c1B − u1 − vB = 8 − 0 − 7 = +1


x2A : ∆2A = c2A − u2 − vA = 7 − 1 − 6 = 0
x2B : ∆2B = c2B − u2 − vB = 11 − 1 − 7 = +3
x3C : ∆3C = c3C − u3 − vC = 12 − (−2) − 10 = +4

Toutes les valeurs ∆ij sont positives ou nulles, donc la solution obtenue est opti-
male.

x1A = 25 unitée,
x2C = 175 unitée,
x3A = 175 unitée,
x1C = 125 unitée,
x3B = 100 unitée
Le coût total de transport est :

Z = 6 × (25) + 8 × (0) + 10 × (125) + 7 × (0) + 11 × (0) + 11 × (175)


+ 4 × (175) + 5 × (100) + 12 × (0)
= 4525 dollars.
2.6. L’IMPLÉMENTATION DES MÉTHODES DE RÉSOLUTION DU PROBLÉME DU TRANSPORT SOUS PYTH

2.6 l’implémentation des méthodes de résolution du probléme


du transport sous python :
2.6.1 méthode des moindres Coûts sous python

La méthode des coûts minimaux est utilisée pour résoudre le problème du trans-
port, qui consiste à trouver la manière la moins coûteuse de transporter des res-
sources de plusieurs sources vers plusieurs destinations, en respectant les contraintes
d’offre et de demande.
L’algorithme est implémenté dans le code Python suivant :
1. Importation de bibliothèques : Le code commence par importer la bi-
bliothèque NumPy, utilisée pour les calculs numériques.
2. Définition de la fonction ‘minimumc ostm ethod‘ :
3. Initialisation de la matrice d’allocation : Une matrice d’allocation vide
est initialisée.
4. Boucle principale : Tant qu’il reste de l’offre non satisfaite et de la demande
non comblée, on recherche la cellule avec le coût minimum.
5. Recherche du coût minimum : On parcourt toutes les cellules de la matrice
des coûts pour trouver celle ayant le coût le plus bas, tout en vérifiant qu’il
reste de l’offre et de la demande pour cette cellule.
6. Allocation en fonction du coût minimum : Une fois la cellule de coût
minimum trouvée, on alloue la quantité minimale entre l’offre disponible et la
demande pour cette cellule.
7. Mise à jour de l’offre et de la demande : On met à jour les quantités
disponibles d’offre et de demande.
24 CHAPITRE 2. PROBLÈME DE TRANSPORT

8. Retour de la matrice d’allocation : Une fois toute l’offre et la demande


satisfaites, la matrice d’allocation est retournée.
En conclusion, cet algorithme utilise une approche itérative pour minimiser les
coûts de transport en allouant de manière efficace les ressources des sources vers les
destinations, tout en respectant les contraintes d’offre et de demande.

les résultats sont conformes avec ce qu’on a déja fait manullement.


matrice d’allocation :
on va afficher la matrice d’allocation maintenant
2.6. L’IMPLÉMENTATION DES MÉTHODES DE RÉSOLUTION DU PROBLÉME DU TRANSPORT SOUS PYTH

diagramme représentant les entreprises et les entrepôts :


26 CHAPITRE 2. PROBLÈME DE TRANSPORT

calcul du cout de transport :


2.6. L’IMPLÉMENTATION DES MÉTHODES DE RÉSOLUTION DU PROBLÉME DU TRANSPORT SOUS PYTH

2.6.2 méthode de Coin Nord-Ouest sous python

1. Création du graphe : Un objet Graph de NetworkX est créé pour représenter


le réseau.
2. Ajout des nœuds : Pour chaque usine et chaque entrepôt, un nœud est ajouté
au graphe. Les usines sont étiquetées ”Usine” suivie de leur numéro, et les
entrepôts sont étiquetés ”Entrepôt” suivie de leur numéro.
3. Ajout des arêtes : Pour chaque allocation non nulle dans la matrice d’allo-
cation, une arête est ajoutée entre l’usine correspondante et l’entrepôt corres-
pondant. Le poids de l’arête correspond à la quantité allouée.
4. Définition des positions des nœuds : Les positions des nœuds sont définies
en utilisant un dictionnaire de positions où chaque nœud est associé à sa posi-
tion x, y.
5. Dessin des nœuds et des arêtes : Les nœuds et les arêtes sont dessinés
sur le graphe. Les nœuds sont représentés par des cercles de couleur bleue
claire et sont étiquetés avec leur nom. Les arêtes sont étiquetées avec le poids
correspondant.
6. Ajout des poids des arêtes : Les poids des arêtes (quantités allouées) sont
ajoutés au graphique pour indiquer combien de ressources sont transportées
entre chaque paire usine-entrepôt.
7. Affichage du diagramme : Le diagramme de réseau est affiché à l’aide de
Matplotlib.
Ce code permet donc de visualiser de manière graphique comment les ressources
sont allouées entre les usines et les entrepôts, facilitant ainsi la compréhension du
problème du transport et de sa résolution.
28 CHAPITRE 2. PROBLÈME DE TRANSPORT

matrice d’allocation :
2.6. L’IMPLÉMENTATION DES MÉTHODES DE RÉSOLUTION DU PROBLÉME DU TRANSPORT SOUS PYTH

diagramme représentant les entreprises et les entrepôts


30 CHAPITRE 2. PROBLÈME DE TRANSPORT

calcul du cout de transport


2.6. L’IMPLÉMENTATION DES MÉTHODES DE RÉSOLUTION DU PROBLÉME DU TRANSPORT SOUS PYTH

Conclusion
En conclusion, le problème du transport est un élément essentiel dans de
nombreux domaines, de la logistique à la planification des opérations, en passant
par la gestion des chaı̂nes d’approvisionnement. À travers ce chapitre, nous avons
exploré différentes méthodes de résolution telles que la méthode des coûts
minimaux, la méthode du coût total minimal et le simplexe.
Chaque méthode offre ses propres avantages et inconvénients, et le choix de la
méthode appropriée dépend souvent de la complexité du problème et des objectifs
spécifiques à atteindre. Les avancées technologiques ont permis le développement
de logiciels spécialisés capables de résoudre efficacement des problèmes de
transport même de grande envergure.
Comprendre et maı̂triser les principes du problème du transport est crucial pour
améliorer l’efficacité opérationnelle, réduire les coûts logistiques et maintenir la
compétitivité dans un marché en constante évolution. Il est donc essentiel pour les
entreprises de développer des compétences dans ce domaine afin de prendre des
décisions stratégiques éclairées et de maximiser leur rentabilité.
En définitive, le problème du transport joue un rôle central dans la gestion des
opérations et la prise de décisions commerciales. En continuant à explorer de
nouvelles méthodes et technologies, les entreprises peuvent s’assurer d’optimiser
leurs processus logistiques et de maintenir un avantage concurrentiel sur le marché.

Vous aimerez peut-être aussi