Optimisation Combinatoire: Affectation et Transport
Optimisation Combinatoire: Affectation et Transport
Dédicace
Du profond de mon cœur, je dédie ce travail à tous
ceux qui me sont chers,
A MA FAMILLE
A MES AMIS
EL-ALI
Napoléon.
Remerciements
Au terme de cette mémoire de projet de fin d’études, je
tiens à remercier mon encadrant Mr : Youssef AKDIM pour
ses orientations tout au long de l’élaboration de ce travail,
ses qualités de conseils et ses encouragements.
DEDICACE ________________________________________________________________________________ 1
REMERCIEMENTS ________________________________________________________________________ 2
1. TENTATIVE DE DEFINITION__________________________________________________________ 7
INTRODUCTION _________________________________________________________________________ 10
INTRODUCTION _________________________________________________________________________ 16
1. MODELISATION ____________________________________________________________________ 16
INTRODUCTION : ________________________________________________________________________ 31
INTRODUCTION _________________________________________________________________________ 53
1. PRESENTATION DE L’APPLICATION_________________________________________________ 53
3. PROBLEME DE TRANSPORT___________________________________________________________ 56
CONCLUSION ___________________________________________________________________________ 59
ANNEXE_________________________________________________________________________________ 60
Introduction
Générale
1. Tentative de définition
La recherche opérationnelle est l’ensemble des méthodes et techniques rationnelles
d’analyse et de synthèse des phénomènes d’organisation utilisable pour élaborer de
meilleures décisions ; chaque fois que l’homme, la machine, et les produits se trouvent en
relations actives.
2. Domaine d’application
L’activité de la capture des besoins consiste à identifier la plupart des cas d’utilisation et
les différents acteurs qui constituent l’environnement.
Pour la réalisation d’un projet consistant à accomplir des taches soumise à des contraintes
(trouver l’ordre des taches, les marges de réalisation des taches)
Les problèmes d’ordonnancement touchent tous les domaines de l’économie :
La construction (suivi de projet).
L’industrie (activité des ateliers en gestion de production et problèmes de logistiques).
L’administration (emploi du temps).
Problème de flot maximal :
Pour acheminer le plus possible de marchandises compte tenu des capacités de transport de
chaque arc dans un graphe valué.
Par exemple :
Acheminement d’un produit depuis les centres de productions vers les centres de
distributions (réseau géographique)
La répartition des communications téléphoniques.
Circulation routière.
Problème d’affectation :
Pour 25 personnes à affecter dans 25 postes, selon leurs compétences on cherche une
solution satisfaisante le plus possible de personnes.
Problème de transport :
Pour trouver des quantités à transporter depuis (m) usines vers (n) distributeurs en
minimisant la somme des couts de transport.
Projet de Fin d’Etudes Page | 7
Introduction générale
Chapitre I : Théorie
des graphes
Introduction
La théorie des graphes est un très vaste domaine tant du point de vue des recherches
fondamentales que de celui des applications. Elle s'est alors développée dans diverses
disciplines telles que la chimie (isomères), la biologie, les sciences sociales (réseaux de
transports), gestion de projets, informatique (topologie des réseaux, complexité
algorithmique, protocoles de transferts), la physique quantique, etc.
Depuis le début du 20ème siècle, la théorie des graphes constitue une branche à part entière
des mathématiques, a connu un grand regain d'intérêt pour les informaticiens, vont plutôt
chercher à concevoir des algorithmes efficaces pour résoudre des problèmes faisant
intervenir des graphes (recherche du plus court chemin, problème d’ordonnancement,
recherche d’un arbre couvrant, ...etc.). Tout ceci forme un ensemble très vaste, dont nous
n’aborderons que quelques aspects, essentiellement de nature algorithmique (problèmes
d’affectation et de transport).
Définition I-3.
Une chaıne est une séquence finie et alternée de sommets et d’arêtes, débutant et
finissant par des sommets, telle que chaque arête est incidente avec les sommets qui
l’encadre dans la séquence.
Une arête ne doit pas intervenir plusieurs fois dans la séquence contrairement à un
sommet.
Un cycle est une chaıne dont les extrémités coïncident.
Définition I-4.
Un arc est une ligne orientée qui relie deux nœuds ; et est lu dans le sens de la flèche.
Définition I-5.
Une boucle : arc partant d’un sommet allant vers lui-même.
1.2 Réseau de transport [figure 1]
Définition I-7.
Le réseau de transport est un graphe fini, sans boucle comportant une entrée (source)
et une sortie � (puits), telles que : depuis il existe un chemin vers tout autre sommet
et de tout sommet il existe un chemin vers . Tout arc = , est valué par
un entier positif nommé capacité de l’arc = , , qui présente une capacité de
transport associée à la liaison figurée par cet arc (Ex. tonnages disponibles sur des
bateaux, des camions, …)
Remarque.
Un graphe biparti permet notamment de représenter une relation binaire.
2. Technologies utilisées
Les outils de programmation utilisés pour le développement de l’application sont Java et
Eclipse.
Java permet de développer des applications client-serveur. Côté client, les applets sont à
l’origine de la notoriété du langage. C’est surtout côté serveur que Java s’est imposé dans
le milieu de l’entreprise grâce aux servlets, le pendant serveur des applets, et plus
récemment les JSP (JavaServer Pages) qui peuvent se substituer à PHP, ASP et ASP.NET.
2.2 Eclipse
Eclipse est un environnement de développement intégré (IDE) utilisé dans la
programmation informatique. Il contient un espace de travail de base et un système
extensible de plug-in pour personnaliser l'environnement.
Eclipse est écrit principalement en Java et son utilisation principale est pour le
développement d'applications Java, mais elle peut également être utilisée pour développer
des applications dans d'autres langages de programmation via des plug-ins, y compris Ada,
Il peut également être utilisé pour développer des documents avec LaTeX (via un plug-in
TeXlipse) et des paquets pour le logiciel Mathematica.
Conclusion
La théorie des graphes constitue aujourd’hui un corpus de connaissances très importants. Les
graphes permettent de modéliser et de résoudre de nombreux problèmes dans de nombreuses
situations couvrant des modèles mathématiques de l’optimisation et grâce à l’informatique
ces problèmes seront grandement simplifiés.
Chapitre II :
Problème
d’affectation
Introduction
Le problème d’affectation appartient à une catégorie spéciale de programmes linéaires dans
laquelle la fonction économique consiste à affecter un nombre de sources (ou origines) au
même nombre de destinations à un coût minimum ou à un profit maximum. Ainsi, chaque
source est associée à une et une seule destination.
1. Modélisation
Définition II-1:
Le problème d’affectation peut être représenté sous forme d’un graphe biparti [figure 3]
de la manière suivante :
� � =∑ ∑ � �
= =
∑ = = ,,
=
�
∑ = = ,,
=
∈{ , } = ,, = ,,
{
Variables :
Contraintes :
La première contrainte donne le nombre d’agents réalisant la tâche qui vaut à 1 pour
chaque = , ,
La deuxième contrainte donne le nombre de tâches réalisées par l’agent qui vaut à 1
pour chaque = ,,
But :
Le problème consiste à affecter les tâches aux agents, de façon à minimiser le coût total de
∑= ∑=
réalisation et en respectant les contraintes de réalisation des tâches et de
Remarques.
i. Le problème d’affectation est dit non standard, si on a agents et tâches avec
≠ . Mais on peut transformer ce problème non standard à un problème standard de la
manière suivante :
Si > alors nous créons − agents fictifs.
Si > alors nous créons − tâches fictives.
ii. Le problème standard d’affectation peut être résolu comme un problème de transport
ou les = = et les représentent les coûts unitaires de transport.
iii. Le problème d’affectation peut être défini comme un problème de maximisation.
=∑ ∑
= =
Le problème consiste à affecter les taches aux agents de telle sorte que la
rentabilité totale soit maximale, et sous les mêmes contraintes du problème de
minimisation.
3. Résolution par la méthode Hongroise (Kuhn, Egervary, König)
3.1. Principe de la Méthode Hongroise
L'algorithme hongrois ou méthode hongroise parfois appelé aussi algorithme de Kuhn-
Munkres est un algorithme d'optimisation combinatoire, qui résout le problème
d'affectation en temps polynomial. Il a été proposé en 1955 par le mathématicien américain
Harold Kuhn, qui l'a baptisé « méthode hongroise » parce qu'il s'appuyait sur des travaux
antérieurs de deux mathématiciens hongrois : Dénes Kőnig et Jenő Egerváry.
James Munkres a revu l'algorithme en 1957 et a prouvé qu'il s'exécutait en temps
polynomial.
Tâche 2
24 49 40 38 83 57
Tâche 3
73 35 77 63 22 25
Tâche 4
37 55 97 24 80 41
Tâche 5
47 20 96 5 75 12
Tâche 6
84 40 50 10 9 82
Etape 2 : Réduction-lignes
Tâche 1
29 40 91 81 0 56 (-2)
Tâche 2
0 25 16 14 59 33 (-24)
Tâche 3
51 13 55 41 0 3 (-22)
Tâche 4
13 31 73 0 56 17 (-24)
Tâche 5
42 15 91 0 70 7 (-5)
Tâche 6
75 31 41 1 0 73 (-9)
Tâche 1
29 27 75 81 0 53
Tâche 2
0 12 0 14 59 30
Tâche 3
51 0 39 41 0 0
Tâche 4
13 18 57 0 56 14
Tâche 5
42 2 75 0 70 4
Tâche 6
75 18 25 1 0 70
Tâche 1
29 27 75 81 0 53
Tâche 2
0 12 Ø 14 59 30
Tâche 3
51 0 39 41 Ø Ø
Tâche 4
13 18 57 0 56 14
Tâche 5
42 2 75 Ø 70 4
Tâche 6
75 18 25 1 Ø 70
Tâche 1 *
29 27 75 81 0 53
Tâche 2
0 12 Ø 14 59 30
Tâche 3
51 0 39 41 Ø Ø
Tâche 4 *
13 18 57 0 56 14
Tâche 5 *
42 2 75 Ø 70 4
Tâche 6 *
75 18 25 1 Ø 70
Tâche 1 *
29 27 75 81 0 53
Tâche 2
0 12 0 14 59 30
Tâche 3
51 0 39 41 0 0
Tâche 4 *
13 18 57 0 56 14
Tâche 5 *
42 2 75 0 70 4
Tâche 6 *
75 18 25 1 0 70
Tâche 1 *
27 25 73 81 0 51
Tâche 2
0 12 0 16 61 30
Tâche 3
51 0 39 43 2 0
Tâche 4 *
11 16 55 0 56 12
Tâche 5 *
40 0 73 0 70 2
Tâche 6 *
73 16 23 1 0 68
Tâche 1
27 25 73 81 0 51
Tâche 2
0 12 Ø 16 61 30
Tâche 3
51 Ø 39 43 2 0
Tâche 4
11 16 55 0 56 12
Tâche 5
40 0 73 Ø 70 2
Tâche 6
73 16 23 1 Ø 68
Tâche 1 *
27 25 73 81 0 51
Tâche 2
0 12 0 16 61 30
Tâche 3
51 Ø 39 43 2 0
Tâche 4 *
11 16 55 0 56 12
Tâche 5
40 0 73 0 70 2
Tâche 6 *
73 16 23 1 0 68
Tâche 1 *
16 14 62 81 0 40
Tâche 2
0 12 0 27 72 30
Tâche 3
51 0 39 54 13 0
Tâche 4 *
0 5 44 0 56 1
Tâche 5
40 0 73 11 81 2
Tâche 6 *
62 5 12 1 0 57
Tâche 1
16 14 62 81 0 40
Tâche 2
Ø 12 0 27 72 30
Tâche 3
51 Ø 39 54 13 0
Tâche 4
Ø 5 44 0 56 1
Tâche 5
40 0 73 11 81 2
Tâche 6
62 5 12 1 Ø 57
Tâche 1 *
16 14 62 81 0 40
Tâche 2
0 12 0 27 72 30
Tâche 3
51 0 39 54 13 0
Tâche 4
0 5 44 0 56 1
Tâche 5
40 0 73 11 81 2
Tâche 6 *
62 5 12 1 0 57
Tâche 1 *
15 13 61 80 0 39
Tâche 2
0 12 0 27 73 30
Tâche 3
51 0 39 54 14 0
Tâche 4
0 5 44 0 57 1
Tâche 5
40 0 73 11 82 2
Tâche 6 *
61 4 11 0 0 56
Tâche 1
15 13 61 80 0 39
Tâche 2
0 12 0 27 73 30
Tâche 3
51 0 39 54 14 0
Tâche 4
0 5 44 0 57 1
Tâche 5
40 0 73 11 82 2
Tâche 6
61 4 11 0 0 56
Tâche 2
24 49 40 38 83 57
Tâche 3
73 35 77 63 22 25
Tâche 4
37 55 97 24 80 41
Tâche 5
47 20 96 5 75 12
Tâche 6
84 40 50 10 9 82
û = + + + + + =
Conclusion
La méthode hongroise est un algorithme d’optimisation combinatoire, une des méthodes
privilégiées pour résoudre les problèmes d’affectation en temps polynomial, efficace et très
rapide par rapport à la méthode du simplexe qui conduit à des tableaux très grands d’ordre
(n) et la solution est fortement dégénérée : contient un nombre de variables soit (n).
Chapitre III :
Programmes de
transport
Introduction :
C’est en 1941 que Frank L. Hitchcock a formulé pour la première fois le problème de
transport, qui consiste à minimiser le coût de transport total d’un plan d’expédition. Le
problème de transport « classique » est en fait un cas particulier d’un problème de flux de
réseaux (minimiser à la fois la distance totale et le coût de transport)
Le problème de transport est un problème linéaire qui peut être représenté sous forme d’un
graphe et qu’on peut le résoudre en utilisant les différentes méthodes de résolution des
problèmes linéaires.
= ∑ ∑
= =
∑ =∑ ∀ = ,, ∀ = ,,
= =
∑ = = ,,
� =
∑ = = ,,
=
� ∀ = ,, ; � ∀ = ,,
{ � ∀ = ,, ∀ = ,,
But:
Le problème consiste à déterminer les quantités à transporter de façon que le coût total
de transport ∑ = ∑ = soit minimal.
Variables :
: La quantité à transporter de vers ∀ , ∈ { ,… , } × { ,… , }.
: Le coût unitaire de transporter de vers ∀ , ∈ { ,… , } × { ,… , }.
Contraintes :
la quantité totale de marchandises partant de est égale à la disponibilité
∑ = � = ; ∀ = ,, .
la quantité totale de marchandises reçue par est égale à la demande
∑= � = ; ∀ = ,, .
Remarque:
1. Pour résoudre le problème, on doit toujours vérifier que le total des quantités
disponibles correspond au total des quantités demandées, c’est-à-dire que l’offre globale soit
égale à la demande globale :
∑= =∑ = ∀ = ,, �� ∀ = , ,
demande [excès des disponibilités], il faut créer une destination fictive avec un offre
et attribuer un coût énorme ou nulle pour qu’aucune demande réelle ne puisse
satisfaire cette destination fictive.
∑= <∑ = ∀ = ,, �� ∀ = , , , la demande est supérieure à
l’offre [excès des demandes], il faut créer une origine fictive avec une demande et
attribuer un coût énorme ou nulle pour qu’aucun offre réel ne puisse satisfaire cette
origine fictive.
3. Résolution du problème
La résolution du problème par la méthode de Coin Nord-Ouest
La résolution du problème passe par deux étapes essentielles :
La première étape : Méthode de Coin Nord-Ouest
C’est de trouvé une solution de base initiale.
La deuxième étape : Méthode de Stepping Stone
Figure 8 : Représentation de la solution de base admissible sous forme d’un graphe biparti
Définition III-5:
Face aux difficultés rencontrées par les heuristiques pour avoir une solution
réalisable de bonne qualité pour des problèmes d’optimisation difficiles, les
métaheuristiques ont fait leur apparition. Ces algorithmes sont plus complets et
complexes qu’une simple heuristique, et généralement utilisent des processus
aléatoires et itératifs afin d’améliorer vers une solution optimale de très bonne
qualité.
3.2.2. Déroulement de l’algorithme de Stepping Stone
L’algorithme de Stepping Stone consiste à modifier la solution de base vers une
solution meilleure, donc à rendre non vide une case vide dans le tableau des
quantités.
chiffre du coût unitaire trouvé dans chaque cellule contenant un signe plus + et
D 'ou q représente la quantité maximal qu’on peut transporter sur la liaison ajouté.
q = min (40, 50) = 40, donc après la modification on obtient la nouvelle solution
représentée dans le tableau suivant :
o Coût de transport :
Le cout de transport de la nouvelle solution est :
= ∗ + ∗ + ∗ + ∗ + ∗
= < =
Itération 2 :
o Calcul des potentiels :
Le graphe biparti représente le calcul des potentiels da chaque sommet (origine et
destination) en respectant les règles de détermination des potentiels [*].
Puisque les coûts marginaux ne sont pas tous positifs ; donc la solution précédente
n’est pas optimale et on peut améliorer grâce à la liaison � , � � � ,�
puisque les deux valeurs sont égaux; alors on ajoute la liaison � , � dans le
graphe.
Remarque :
Cas où il y a plus de deux coûts marginaux négatifs, alors on choisit le coût
marginal le plus négatif.
o Chaine de substitution :
o Coût de transport :
Le cout de transport de la nouvelle solution est :
= ∗ + ∗ + ∗ + ∗ + ∗
= < = < =
Itération 3 :
o Calcul des potentiels :
Le graphe biparti représente le calcul des potentiels da chaque sommet (origine et
destination) en respectant les règles de détermination des potentiels [*].
o Coût de transport :
Le cout de transport de la nouvelle solution est :
= ∗ + ∗ + ∗ + ∗ + ∗
Itération 4 :
o Calcul des potentiels :
Le graphe biparti représente le calcul des potentiels da chaque sommet (origine et
destination) en respectant les règles de détermination des potentiels [*].
Tous les coûts marginaux sont positifs, donc la solution précédente est optimale et
on s’arrête.
Donc la solution optimale est :
Tableau 30 : Calcul de ∆
Dans la rangée correspondant à la différence maximale (ici la ligne � ) on remplira
la case contenant le plus petit élément (ici la case � ) avec le minimum de l’offre de
la ligne et de la demande de la colonne.
Puis on recommencera le processus autant de fois que nécessaire en supprimant à
chaque fois l’origine dont l’offre est entièrement utilisée et/ou la destination dont la
demande est complètement satisfaite.
On prend le plus grand delta ∆ (ligne et colonne), c’est en � qui est égale 6.
On sature avec le plus petit coût qui est � = 5 , on met 150 dans � .
On prend le plus grand delta ∆ (ligne et colonne), c’est en � qui est égale 5.
On sature avec le plus petit coût qui est � = , on met 150 dans � .
En fin la solution de base est représentée dans le tableau [Tableau 36 ] : et D’un coût
égal à :
= ∗ + ∗ + ∗ + ∗ + ∗
=
Test d’optimisation
Le graphe biparti ne contient aucun cycle d’amélioration, donc on ne peut pas
améliorer en utilisant l’algorithme de Stepping Stone.
Chapitre IV :
Implémentation
Introduction
Dans ce chapitre on va expliquer l’utilisation de l’application. Le modèle de test comprend
deux activités :
La première consiste à résoudre le problème d’affectation.
La deuxième consiste à évaluer les programmes de transport.
Donc dans ce qui suit, on va présenter les interfaces de l’application, qui vont détailler le
fonctionnement des deux problèmes.
Le test a prouvé la validité de l'utilisation de cette application pour trouver des solutions
optimales aux problèmes d’affectation et de transport.
1. Présentation de l’application
1.1. Menu principal
La première interface qui correspond au menu principal, est une interface qui donne la
possibilité d’effectuer le choix de l’un des deux problèmes par simple clic sur le
bouton correspondant.
2. Problème d’affectation
2.1. Choisir la taille du tableau
En cliquant sur le bouton Affectation, une boite de saisie s’ouvre et permet à
l’utilisateur de fournir la taille du tableau.
Conclusion
Le problème de transport est une méthode qui permet d’optimiser certaines décisions
relatives à la planification de la production. Grace à l’informatique cet exercice est
aujourd’hui grandement simplifié. Mais comme cette méthode fait partie de la programmation
linéaire, on doit s’assurer, avant de l’appliquer, que la relation entre toutes les variables
utilisées est bien linéaire.
On peut dire que : Les problèmes de transport et d’affectation sont des cas particuliers de la
programmation linéaire, qu’on ne résout pas par le simplexe habituel. Il existe une méthode
de résolution plus simple, non matricielle. Si les coûts sont entiers, la solution est également
entière, donc si on peut formuler un problème sous forme de transport, la solution en entier est
également facilement calculable.
Annexe
Dénes König [1884-1944]
Mathématicien hongrois.
En 1936, Auteur du premier manuel portant sur la théorie des graphes.
Ses résultats les plus connus sont le théorème de König et le lemme de König.
REFERENCES BIBLIOGRAPHIQUES
REFERENCES NETOGRAPHIQUES
http://www.fredptitgars.net/informatique/rcp101-recherche-
operationnelle-et-aide-a-la-decision/
http ://faculty.washington.edu\moishe\
http://fr.wikipedia.org