Cours de Recherche Opérationnelle - 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 110

RECHERCHE OPÉRATIONNELLE

Cours &Exercices

Dr. ANGO NGUEMA Pierre Gaëtant


[email protected]

Presse Universitaire

1
Préambule

La recherche opérationnelle est une méthode d’analyse scientifique d’un problème mis sous
forme mathématique. Cette méthode est particulièrement tournée vers la recherche de la
meilleure façon d’appréhender les faits et de prendre des décisions susceptibles de déboucher
sur les meilleurs résultats. Cette méthode se sert entre autres de sciences exactes et sciences
humaines à savoir :

- Les mathématiques avec la théorie des systèmes ;

- Les différentes méthodes d’optimisation et les méthodes statistiques ;

- La gestion, l’économie, plus particulièrement l’analyse économique et l’organisation


des entreprises ;

- L’informatique avec ses nombreuses applications.

La théorie des graphes est une tentative de visualisation des faits concrets susmentionnés,
c’est donc un essai de formalisation de situations réelles de notre vie quotidienne, au moyen
de dessin permettant d’exprimer commodément un problème posé puis de le résoudre par un
algorithme approprié.

A ce titre, le cours a pour but d’initier les étudiants, ou toute autre personne, aux principes de
base de la recherche opérationnelle. Le cours vise principalement à introduire et faire méditer
les concepts fondamentaux, les méthodes élémentaires d’une organisation dans le suivi et
évaluation des activités ou des tâches pour permettre un apprentissage autonome.

2
Sommaire

Chapitre 1 : Théorie des graphes et applications………………………………………. 4


Chapitre 2 : Problème de cheminement……………………………………………….. 18
Chapitre 3 : Problème d’ordonnancement……………………………………………... 30
Chapitre 4 : Problème de flot maximal……………………………………………….. 58
Chapitre 5 : Problème d’affectation…………………………………………………… 63
Chapitre 6 : Problème de transport………………………………………………….… 68
Chapitre 7 : Exercices…………………………………………………………………. 76
Bibliographie………………………………………………………………………….. 89

3
Chapitre 1 : Théorie des graphes et Applications

1. Définitions et généralités
1.1. Notion de graphe
Le terme de graphe désigne en mathématiques une opération d'application. Il possède deux
acceptions : (1) Le graphe d'une fonction (à distinguer de sa représentation graphique) ; (2)
un objet représentant une relation binaire, orientée ou non, entre des éléments d'un ensemble .

À l'origine, Claude Berge [1960] définit un graphe par un ensemble de « sommets », un


ensemble d' « arêtes » et une fonction d'incidence qui associe deux sommets à chaque arête.
Une arête est appelée une boucle si ses deux sommets sont identiques. Une arête est dite
multiple s'il existe au moins une autre arête avec les mêmes sommets, sa multiplicité étant le
nombre total d'arêtes ayant ces sommets. Un graphe est dit simple s'il n'a ni boucle ni arête
n(n − 1)
multiple. Le nombre maximum d'arêtes d'un graphe simple est donc Comb(2, n) = ,
2
où n est le nombre de sommets.

Un graphe possède des sommets et des « arcs » (ou arêtes). Un arc relie deux sommets entre
eux : un sommet de départ et un sommet d'arrivée. Sur un dessin, on peut représenter les
sommets par des points (ou des cercles) et les arcs par des flèches. En générale, les graphes
peuvent servir à modéliser, entre autres :

✓ Un réseau routier à grande échelle : chaque ville est un sommet, chaque route entre
deux villes est un arc (si elle ne passe pas par une autre ville), et même en général
deux arcs : un dans chaque sens si la route n'est pas à sens unique ;
✓ Un réseau routier à petite échelle : chaque intersection est un sommet, chaque tronçon
de rue entre deux intersections est un arc ;
✓ Un réseau de bus, un réseau ferré, ...
✓ Un réseau social ; Un réseau téléphonique ; Un réseau de canalisation d’eau;
✓ Le web : chaque page est un sommet, chaque lien hypertexte est un arc (de la page qui
le contient vers la page pointée) ;
✓ Beaucoup de systèmes discrets : qui passent d'un état à un autre de façon discontinue
au cours du temps, par des sauts. Voir automate fini et système de transition d'états ;
✓ En mécanique du solide, par exemple, le graphe des liaisons est un outil d'aide à la
modélisation cinématique des mécanismes. Les propriétés du graphe ont parfois une
signification (nombre de cycle, classe etc.) ;

4
✓ En électronique, il peut servir à déterminer le nombre d'équations indépendantes (loi
des mailles) disponibles.
Les graphes sont beaucoup utilisés en informatique. Outre leur efficacité dans la modélisation
programmatique de structure de données complexes, on les rencontre par exemple pour :

✓ Les bases de données : un modèle relationnel de données est représentable par un


graphe orienté regroupant des relations (sommets du graphe) et des dépendances (arcs
du graphe). On parle notamment de graphe sémantique normalisé pour désigner un
schéma de données relationnel résultant du processus de normalisation ;
✓ Le Web sémantique : une ontologie se décrit comme un ensemble de concepts
(sommets du graphe orienté) et de relations (arcs du graphe) ;
✓ Le parallélisme : les techniques d'optimisation d'algorithme ou de détermination
d'ordre d'exécution cohérente dans ce domaine prennent souvent en entrée des graphes
de dépendance de flot d'instructions ou de données, où les sommets sont
respectivement des instructions (de code à exécuter) et des données (initiales ou
calculées) et les arcs des relations de dépendance temporelle (telle instruction doit
s'exécuter après telle autre ; telle donnée doit être calculée avant telle autre).
Il existe différents types de graphes :

a) Un graphe non orienté G est un couple (S, A), où : S est un ensemble dont les
éléments sont les sommets ; Et A est un ensemble de paires (non ordonnées) de
sommets, appelées arêtes. Exemple d’un graphe avec trois sommets et trois arêtes :

b) Un graphe orienté G est un couple (S, A), où : S est un ensemble dont les éléments
sont les sommets ; Et A est un ensemble de couples (ordonnés) de sommets,
appelés arcs. Exemple d’un graphe orienté avec trois sommets et quatre arêtes.

5
Toutefois, d'autres types de graphes existent. On cite notamment :

▪ Le réseau multipolaire. Exemple Topologie typique d’un réseau multipolaire

▪ Le multigraphe ou p-graphe : au plus p arcs (respectivement arêtes) peuvent relier


deux sommets.
• Le graphe « valué » : à tout arc (respectivement arête) est associée une valeur (par
exemple : un poids, un coût, une distance, ...).
• L' hypergraphe : un (hyper-)arc (respectivement arête) peut relier plus de deux
sommets entre eux. L'ensemble A des (hyper-)arcs (respectivement arêtes)
vérifie : A  S i où Si désigne le produit cartésien de i occurrences de S.
i

En informatique, de nombreuses implémentations de graphes existent. On peut par exemple


numéroter les sommets, puis donner les arcs sous la forme d'une liste de couples. On peut
aussi utiliser une matrice d'adjacence, plus rapide mais exigeant plus d'espace mémoire.
Enfin, on peut associer à chaque sommet une liste d'adjacence, c'est-à-dire une liste
contenant tous les sommets vers lesquels pointent les arêtes partant de ce sommet.

6
Nous pouvons également définir un graphe comme la donnée d’une relation binaire sur un
ensemble des sommets : « Xi est en relation avec Xj » est équivalent à « (Xi, Xj) est un arc ».
Pour un graphe non orienté, la relation binaire ainsi définie est symétrique puisque si (X i, Xj)
est un arc, (X J, Xi) l’est aussi. On obtient ainsi la représentation d’un graphe sous forme de
méthode énumérée des sommets et arcs. Dans un graphe orienté G = ( X, U ), on notera pour
un sommet x,

- U-(x) = {yX / (y, x)U }= ensemble des antécédents du sommet x,


- U+(x) = {zX / (x, z)  U} = ensemble des sommets successeurs.
Exemple : Soit G = (X, U) avec X = {X1, X2, X3, X4, X5} et U+(x 3) = ; U+(x1) ={X3, X4};
U+(x2) = {X1, X3, X5}; U+(x4)={X4, X5}; U+(x5) = {X3, X4, X5} On en déduit le graphe
suivant :
X2

X1 X5

X3

X4

Exemple : Soit G = ( X, U ) avec X = {X1, X2, X3, X4, X5 , X6} et U={(X1, X2) ; (X1, X3) ;
(X2, X2) ; (X2, X3) ; (X2, X4) ; (X2, X5) ; (X3, X2) ; (X3, X4) ; (X4, X6) ; (X5, X6)} .

On en déduit le graphe suivant :


X4

X3
X6
X1

X5
X2

Notation

7
Le graphe noté G = (X, U) est défini par :

- X ensemble d’éléments appelés sommets représenté souvent par des points


- U, couples de sommets que l’on convient d’appeler arc ou arête.
Le cardinal card X est l’ordre du graphe G ou le nombre de sommets de G. On rappelle que
l’ensemble des sommets X est fini dès que la famille U est une séquence finie.

1.2. Champ d'utilisation


La théorie des graphes étudie les propriétés de ces objets. Parmi les problèmes classiques
figurent à cet effet :

- Le problème des sept ponts de Königsberg ou la recherche de cycles eulériens.


- La connexité : existe-t-il un chemin reliant deux sommets ?
- L'arbre couvrant de poids minimal (ou maximal).
- Le plus court (respectivement: le plus long) chemin entre deux sommets d'un graphe
valué.
- La coloration de graphe avec un nombre fixé de couleurs.
- Les sous-graphes denses maximaux (parfois appelés cliques).
- Les problèmes de flots maximaux ou minimaux.
- L'allocation de ressources.
- Le problème du voyageur de commerce (terme anglais : TSP — travelling salesman
problem).
- La décomposition d'un graphe en niveaux.
- La gestion de projet avec l’ordonnancement tel que le réseau PERT (ou MPM).
- Les graphes hamiltoniens et hypo-hamiltoniens.
Cette théorie est fortement liée à l'algorithmique et à la complexité.

1.3. Théorie des graphes


La théorie des graphes est la discipline mathématique et informatique qui étudie les graphes,
lesquels sont des modèles abstraits de dessins de réseaux reliant des objets. Ces modèles sont
constitués par la donnée de sommets (aussi appelés nœuds ou points, en référence
aux polyèdres), et d'arêtes (aussi appelées liens ou lignes) entre ces sommets ; ces arêtes sont
parfois non-symétriques (les graphes sont alors dits orientés) et sont appelées des flèches ou
des arcs. Les algorithmes élaborés pour résoudre des problèmes concernant les objets de cette
théorie ont de nombreuses applications dans tous les domaines liés à la notion de réseau
(réseau social, réseau informatique, télécommunications, etc.) et dans bien d'autres domaines

8
(par exemple génétique) tant le concept de graphe, à peu près équivalent à celui de relation
binaire (à ne pas confondre donc avec graphe d'une fonction), est général. De grands
théorèmes difficiles, comme le théorème des quatre couleurs, le théorème des graphes
parfaits, ou encore le théorème de Robertson-Seymour, ont contribué à asseoir cette matière
auprès des mathématiciens, et les questions qu'elle laisse ouvertes, comme la conjecture de
Hadwiger, en font une branche vivace des mathématiques discrètes. En général, il existe trois
grandes familles de graphes et cinq catégories au total :

➢ Structurés : il est alors possible de définir quatre identités topologiques remarquables :


• Homogènes (1) : les sommets et les arêtes reproduisent un schéma régulier. Le
schéma le plus commun est une architecture de type matriciel aussi appelé "en
filet de poisson" (mesh),
• Hiérarchiques (2) : structure typique des graphes où les sommets s'arrangent en
couches hiérarchisées et pyramidales,
• Cycliques (3) : on peut identifier des cycles dans le graphe. L'exemple le plus
parlant est le graphe circulaire,
• Centralisés/polaires (4) : c'est une architecture ou tous les sommets sont
rattachés à un seul sommet, le pôle,
➢ Quelconques (5) : aucune propriété topologique ne semble émerger,
➢ Multipolaires : c'est une architecture mixte entre les graphes centralisés et
décentralisés. Les réseaux multipolaires sont très étudiés en raison de leur proximité
avec de nombreux cas concrets et notamment Internet ou les réseaux de neurones. Les
graphes multipolaires sont caractérisés par deux types d'arêtes, celles qui forment les
liens émanant du pôle, les liens forts ; et les liens réunissant deux pôles entre eux : les
liens faibles. Les pôles peuvent par ailleurs prendre une architecture structurée
(souvent centralisée) ou quelconque.

2. Représentation d’un graphe à l’aide de dictionnaires


2.1. Dictionnaire des suivants
On appelle dictionnaire des suivants d’un graphe G= (X, U), un tableau à simple entrée dont
chaque ligne concerne un sommet précis et contient tous les suivants dudit sommet. En face
de chaque sommet x, on inscrit la liste des différents sommets qui représentent l’extrémité
terminale d’un arc U dont x est l’extrémité initiale.

9
2.2. Dictionnaire des précédents
On appelle dictionnaire des précédents d’un graphe G= ( X, U), un tableau à simple entrée
dont chaque ligne relève d’un sommet précis et contient tous les précédents du sommet en
question. En face de chaque sommet x on inscrit la liste des sommets qui sont à l’extrémité
initiale d’un arc dont x est l’extrémité terminale.
Remarque
On peut également confectionner le dictionnaire des précédents en se servant directement du
dictionnaire des suivants. Dans ce cas, on note sur la ligne des sommets x le nom des lignes
dans lesquelles x apparaît comme suivant. De même on peut confectionner le dictionnaire des
suivants en se servant directement du dictionnaire des précédents. Dans ce cas, on note sur la
ligne des sommets x le nom des lignes dans lesquelles x apparaît comme précédents.
Exemple : Soit le dictionnaire des suivants d’un graphe orienté en déduire le dictionnaire des
précédents et le graphe correspondant.
X S(x)
A b, d
b c
c -
d c

On commence par chercher la lettre « a » dans la colonne S(x) et comme « a » n’y apparaît
point cela signifie qu’il n’a pas de précédent. On passe à « b », la lettre « b » apparaît sur la
ligne « a », donc le précédent de « b » est « a » puis on passe à C et ainsi de suite. Graphe
orienté correspondant.
X S(x) P(x)
A b, d -
b c a
c - b, d
d c a

a c

10
Exemple : voici un graphe d’ordre 6.
Fig1 : u6
b u3 c e u7
u10

u2 u4
u1 u8

a u5 d u9 f

L’arc U7 = (e, e) est une boucle.


Exemple : se traduit par les sommets et arcs suivants : X= {a, b, c, d, e, f, }
U= { U1, U2, U3, U4, U5, U6, U7, U8, U9, U10}
U= { (a, b), (b, a), (b, c), (c, e), (e, c), (e, e), (e, f), (d, f), (a, d) ,(c,d)}
Pour U5 par exemple « a » est son extrémité initiale (la source) et « d » son extrémité
terminale (la cible). Dans la figure 1 ci-dessus. Les arcs ( c, e) et ( e, c) peuvent être remplacés
par une simple ligne non orientée. On aura alors par exemple l’arête [c, e] ou [e, c]. Une
flèche de « d » à « f » indique que « d » est en relation avec « f ». Si de plus, on indique un
nombre sur chaque arc (une distance, un coût, un temps) comme dans la figure ci-dessous
alors l’on parle de « graphe valué ». Fig2 :

10 u6
b u3 c e u7
u10
4
10
6 u
2 u4 20
u1 2 u8
5
3 14
a u5 d u9 f
Exemple : figure n°3
d c
a

e b

11

f
Exemple : Donner le dictionnaire des suivants et des précédents du graphe suivant

X1 X2
X5

X3 X4 X6
Représentations matricielles d’un graphe.
Matrice booléenne.
On construit un tableau à double entrée où figurent les sommets, en lignes (sommets initiaux)
et en colonnes (sommets finaux). A l’intersection d’une ligne x i et d’une colonne xj figure
« 0 » si l’arc (xi, xj ) n’existe pas et « 1 » si l’arc (xi , xj ) existe. Autrement dit : M= ( mij )
1 si ( xi , x j )  U
avec mij = 
0 si ( xi , x j )  U

Remarques
Une colonne de zéros correspond à une entrée. Une ligne de zéros correspond à une sortie.
Quand il n’existe pas d’arcs entre deux sommets considérés, on peut aussi ne rien mettre à la
place de 0.
Exemple : voici la matrice booléenne associée à l’exemple 2.
Arrivée
X X1 X2 X3 X4 X5 X6
X1 0 1 1 0 0 0
X2 0 1 1 1 1 0
X3 0 1 0 1 0 0
X4 0 0 0 0 0 1
X5 0 0 0 0 0 1
X6 0 0 0 0 0 0
X1 est une « entrée » et X6 est une « sortie »
Matrice aux arcs.
On construit un tableau à double entrée où figurent les sommets, en lignes (sommets initiaux)
et en colonnes (sommets finaux). A l’intersection d’une ligne xi et d’une colonne xj figure
« 0 » si l’arc (xi, xj ) n’existe pas et « xi xj » si l’arc (xi , xj ) existe. Cette matrice est littérale.

12
 xi x j si ( xi , x j )  U
Autrement dit : M= ( mij ) avec mij = 
 0 si ( xi , x j )  U

Voici la matrice aux arcs associée à l’exemple 2


Arrivée
X X1 X2 X3 X4 X5 X6
X1 0 X1 X2 X1 X3 0 0 0
X2 0 X2 X2 X2 X3 X2 X4 X2 X5 0
X3 0 X3 X2 0 X3 X4 0 0
X4 0 0 0 0 0 X4X6
X5 0 0 0 0 0 X5X6
X6 0 0 0 0 0 0

La matrice booléenne permet l’introduction et le traitement des graphes dans un ordinateur.


Autre présentation : Soit un graphe dont les sommets sont numérotés de 1 à n et la matrice
booléenne associée.
Arrivée
X 1 2 3 4 5 6
1 0 1 1 0 0 0
2 0 0 1 1 1 0
3 0 0 0 1 0 0
4 0 1 0 0 0 0
5 0 0 0 0 0 0
6 1 0 1 0 0 0

• La lecture ligne par ligne de cette matrice donne le dictionnaire des suivants.
• La lecture colonne par colonne de cette matrice donne le dictionnaire des
précédents.
Donnons le dictionnaire des suivants et des précédents et le graphe correspondant à cette
matrice.

3. Vocabulaire de la théorie des graphes


Fig1 :
E A

D C

13
1°) Sommets : ce sont des points d’où partent et arrivent des lignes orientées ou non orientées,
A, B, C, D, E, représentent les sommets du graphe. Fig n°1.
2°) Un arc : est une flèche ou ligne orientée pourvue d’une extrémité initiale et d’une
extrémité terminale. On peut relier deux sommets distincts ou non et ces deux sommets
exclusivement. Il sera entièrement défini par les couples de sommets qu’il relie. On note
généralement u = (xi, xj ) ou xi xj.
3°) Sommets adjacents : sont deux sommets distincts reliés directement par au moins un arc :
D et C sont adjacents ; B et D ne le sont pas. Fig1.
4°) Chemin : suite d’arcs dont l’extrémité terminale de chacun est l’extrémité initiale du
suivant sauf pour le dernier. Par exemple (C, D, E, A) est un chemin. Ce chemin est formé par
les arcs (C, D), (D, E), (E, A). Un chemin peut donc se définir soit par la suite des sommets
(n) qu’il contient, soit par la suite d’arcs le composant. La longueur d’un chemin (au sens des
arcs) est égale à (n-1). Exemple (C, D, E, A) est de longueur 3.
- Chemin ha miltonien. Un chemin est dit ha miltonien s’il passe une fois et une seule
fois par chaque sommet du graphe et contient tous les sommets. Exemple : E, A, B, C,
D, est un chemin ha miltonien (Fig1).
- Chemin pré-ha miltonien : Chemin passant au moins une fois par chaque sommet du
graphe.
- Chemin simple : Un chemin est dit simple lorsqu’il n’utilise pas deux fois le même
sommet, ou alors les arcs qu’il emprunte sont tous distincts. Il ne passe donc qu’une
fois par chacun de ses arcs.
5°) Circuit : c’est un chemin qui se ferme sur lui même, un chemin tel que l’extrémité initiale
du premier arc coïncide avec l’extrémité terminale du dernier. C’est un chemin qui revient à
son point de départ. Par exemple E, A, B, C, D, E de la Fig n° 1 est un circuit. Le chemin a, b,
c , a de la figure ci-dessous est un circuit .

c
b d

a
- Circuit hamiltonien : Il s’agit d’un circuit passant une fois et une seulement par chaque
sommet. C’est un circuit élémentaire de longueur n ; la longueur d’un chemin ou d’un
circuit étant le nombre d’arcs qui le composent.

14
- Boucle : C’est un circuit de longueur « un », c’est à dire une ligne orientée qui revient
à son sommet de départ.
6°) Une arête : est une ligne non orientée qui équivaut à deux arcs orientés en sens inverses.
Deux arêtes sont adjacentes si elles ont une extrémité commune.
7°) Chaîne : il s’agit d’une suite d’arêtes dont chacune a une extrémité commune avec l’arête
précédente (exception faite de la première), et l’autre commune avec l’arête suivante
(exceptée la dernière). Chaîne hamiltonienne : C’est une chaîne indépendante de longueur (n-
1).
8°) Cycle : c’est une chaîne simple se fermant sur elle même. On rappelle que pour un cycle,
toutes les arêtes de la séquence sont distinctes et que le sommet initial coïncide avec le
sommet de la chaîne.
- Cycle hamiltonien : Cycle passant une fois et une seule par chaque arête de cycle
élémentaire.
- Cycle élémentaire : Cycle ne passant pas deux fois par le même sommet, sauf que le
sommet final coïncide toujours avec le sommet de départ.

4. Recherche de niveaux dans un graphe sans circuit:

Définition de niveau de génération : Dans un graphe sans circuit, il est possible de numéroter
les sommets du graphe de telle manière que le numéro affecté à chaque sommet soit inférieur
à celui des suivants et supérieur à celui des précédents. Ce numéro attribué à chaque sommet
est précisément le niveau de génération ou rang du sommet en question.
Procédure de détermination : Partant de l’exemple suivant :
b

g d
a

15
1ère étape : On confectionne le dictionnaire des précédents à partir du graphe et on obtient le
tableau 1
Tableau N°1
N° de ligne X P(x)
1 a b
2 b néant
3 c b, e, f
4 d a
5 e g
6 f e, g
7 g a

2ème étape : On recherche ensuite dans ce dictionnaire les lignes vides. Ici il n’y a qu’une ligne
vide « b » qui n’a pas de précédent. « b » est donc un sommet de niveau au rang zéro noté N0
= {b}.On barre ensuite tous les « b » dans les colonnes X et P(x), d’où le tableau N°2
Tableau n° 2
N° de lignes X P(x)
1 a néant
3 c e, f
4 d a
5 e g
6 f e, g
7 g a
On constate que la ligne « a » devient vide. Donc « a » est de niveau ou rang 1. Soit N1={a}
3ème étape : on barre tous les « a » dans le tableau n°2 et on obtient :

Tableau n° 3

N° de ligne X P(x)
3 c e, f
4 d néant
5 e g
6 f e, g
7 g néant

On constate que les lignes « d » et « g » deviennent vides. « d » et « g » sont les sommets de


niveau 2 . Soit N2 = {d, g }On barre ensuite tous les « d » et « g », d’où le tableau n°4 :
N° de ligne X P(x)
3 C f, e
5 e néant
6 f e

La ligne « e » devient à son tour vide, ce qui signifie que le sommet «e» est de rang 3.

16
Soit N3 = { e }
4ème étape : on barre tous les « e », d’où le tableau N°5 suivant.

Tableau n° 4

N° de X P(x)
ligne
3 c f
6 f néant
La nouvelle ligne vide est « f ». Donc le sommet « f » est de rang 4 .
Soit N4 = { f }
Ensuite on barre « f » , et on obtient le tableau N°6 dont la ligne « c » est vide. Le
sommet « c » sera de rang 5 d’où N5 = { c }.
Tableau n° 5
N° de X P(x)
ligne
3 c néant

En résumé, les différents niveaux sont :


N0 ={ b }, N1= { a }, N2 ={d, , g }, N3 ={ e }, N4 = { f }, N5 ={ c }
Le graphe de la figure n°1 devient donc le graphe suivant plus facile à lire et à exploiter
car ordonné par niveaux.

Exercice : Reprendre les mêmes procédures pour générer les niveaux du graphe
suivant :

E A

D C

17
Chapitre 2 : Problème de Cheminement

Il s’agit de présenter synthétiquement une méthode de recherche : (1) D’une chaîne dans un
graphe non orienté, (2) D’un chemin dans un graphe orienté.

1. Recherche d’une chaîne dans un graphe non orienté : cas d’un graphe quelconque,
Algorithme de l’arbre

Rappelons que dans un arbre, il existe une chaîne et une seule, laquelle relie deux sommets
donnés. Il suffit donc d’élaborer un graphe partiel du graphe de départ et qui soit un arbre.
Dans le cas où il y a « n » sommets, pour construire un arbre partiel, il suffira de choisir (n-1)
arêtes, en évitant de former un cycle comme le montre la figure ci-après.
x1

a
x2

b
x3
X4
33
Graphe initial Graphe partiel matérialisé ici par arbre

2. Recherche d’un chemin dans un graphe orienté : algorithme de TREMAUX

A/ Principe
1ère étape : partir du sommet origine et suivre un chemin en marquant d’une croix les arcs
parcourus.
2ème étape : Si on arrive à une impasse, rétrograder en marquant d’une deuxième croix l’arc
rétrogradé ou réutilisé.
3ème étape : Si on arrive à un sommet déjà exploité, revenir alors en arrière pour une impasse.
4ème étape : si en rétrogradant, on aboutit à un sommet xi, reparti immédiatement par un arc
non marqué, s’il en existe encore, sinon rétrograder par l’arc marqué ayant conduit à xi .
5ème étape : l’algorithme prend fin dès lors qu’on arrive au sommet final ou qu’on ne peut plus
continuer.

18
B/ Application
X1 Figure n°1

a X4

X2

X3 b
3. Détermination de chemins de longueurs k, joignant deux sommets

3.1. Enumération des chemins de longueur k


Détermination du nombre de chemins de longueurs k joignant deux sommets. Considérons la
matrice booléenne M= (mij ) , d’un graphe où mij représente le nombre d’arc allant de i à j.
On se propose d’élever au carré, au cube, à la puissance k. Soit C= (cij ) = Mk , le terme cij de
la matrice C .
B = M2 contient bij, le nombre de chemin de longueur 2 allant de i à j :
bij = mik mkj , or mij.mkj représente le nombre de chemin ikj, puisque chaque arc ik associé à
kj forme un chemin ikj distinct. Donc mik.mkj est le nombre de chemin de longueur 2 allant
de i à j et passant successivement par les différents sommets. M3 contient le nombre de
chemins de longueur 3 allant de i à j. Il en résulte que C=Mk=(cij ) ; le terme cij de la matrice
C donne le nombre de chemins de longueurs k allant du sommet i au sommet j. Il convient de
rappeler qu’on obtient dans la matrice, le nombre de chemin mais pas leur description. Par
ailleurs, s’il existe un nombre k tel que Mk = 0, le graphe ne contient pas de circuit. Si la
matrice Mn+1 (n égal au nombre de sommets) est non nulle, alors le graphe contient au moins
un circuit. Dans le cas où Mn= 0, donne l’assurance que le graphe ne contient pas de circuit.
Pour un sommet « i » situé sur un circuit de longueur k, le terme de la diagonale mii de Mk est
différent de 0.
4
Figure n°2 3
5

2
1

19
Sommets de départ
1 2 3 4 5 6
1 0 1 0 0 0 0
M= 2 0 0 1 0 0 0
3 0 0 0 1 1 0
4 0 1 0 0 0 0
5 0 0 0 1 0 0
6 1 0 1 0 0 0

Enumération des chemins de longueur k


Détermination du nombre de chemins de longueurs k joignant deux sommets. On se propose
d’élever au carré, au cube, à la puissance 6.
Description des chemins de longueur k
Soit la figure n°3 et considérons la matrice M, aux arcs du graphe. On se propose d’élever au
carré, au cube ainsi de suite, en adoptant les lois de composition suivantes :
*la loi « multiplicative » : concaténation de deux arcs (puis de deux de chemins) dont les
extrémités terminales du premier et initiale du second sont le même par exemple. (A, B).(B,
C) = ( A, B, C ), ( A, E ). (E, C) = (A, E, C)
*La loi « additive » est la réunion ensembliste, que nous noterons comme une simple
juxtaposition. Par exemple : (A, B, C) et (A, E, C) figure dans la même case M2. On obtient
ainsi, en renouvelant l’opération M², M3, M4, ...

Matrice aux arcs


A B C D E
A AB AC AE
M= B BB BC
C CD
D DA DE
E EA EC
A B C D E
A 0 1 1 0 1
B 0 1 1 0 0
C 0 0 0 1 0
D 1 0 0 0 1
E 1 0 1 0 0

M2 =

20
A B C D E
A AEA ABB ABC ACD
AEC
B BBB BBC BCD
C CDA CDE
D DEA DAB DAC DAE

DEC
E EAB EAC ECD EAE

Tableau n° 6

A B C D E
A AEAEA AEABB AEABC AEACD ABCDE
ABCDA ABBBB AEAEC ABBCD AECDE
AECDA ACDAB ABBBC ACDAE
ACDEA ACDAC
ACDEC
B BBCDA BBBBB BBBBC BBBCD BBCDE
BCDEA BCDAB BCDAC BCDAE
BCDEC
M4 = C CDAEA CDABB CDABC CDACD CDEAE
CDEAB CDAEC CDECD
CDEAC
D DEAEA DEABB DEABC DEACD DACDE
DACDA DABBB DEAEC DABCD DAEAE
DECDA DAEAB DABBC DAECD DECDE
DAEAC
E EACDA EABBB EABBC EABCD EACDE
ECDEA ECDAB ECDAC EAECD ECDAE
EAEAB ECDEC EAEAE
EAEAC

21
On remarque qu’on aboutit dans M2, à l’énumération de tous les chemins de longueur 2 dans
M3 à l’énumération de tous les chemins de longueur 3, etc. Pour contrôler le nombre de
chemins obtenus, on élève la matrice booléienne M au carré, au cube etc. On obtient :
Tableau n° 7 M’22 =
A B C D E
A 1 1 2 1 0
B 0 1 1 1 0
C 1 0 0 0 1
D 1 1 2 0 1
E 0 1 1 1 1

A B C D E
A 1 2 2 2 2
B 1 1 1 1 1
M’3 = C 1 1 2 0 1
D 1 2 3 2 1
E 2 1 2 1 1

A B C D E
A 4 3 5 2 3
B 2 2 3 1 2
M’ = C
4
1 2 3 2 1
D 3 3 4 3 3
E 2 3 4 2 3

Pour chercher dans le graphe G les chemins élémentaires, on modifie légèrement la règle de la
multiplication littérale : On retient que les chemins ne comportant aucune répétition de lettres,
ce que Kaufmann et Y. Malgrange ont appelé « multiplication latine » la concaténation
assortie de cette restriction.
A B C D E
A ABC ACD
AEC
A’2 B BCD
C CDA DAC CDE
DEC
D DEA DA DAE
B
E EA EAC ECD
B

22
A B C D E
A ABCDE
B BCDEA
A’4 = C CDEAB
D DEABC
E ECDAB EABCD

En fait dans A’4 apparaissent les chemins (A, B, C , D, E) ; (B, C, D, A, E) ; (E, C, D, A, B),
le premier se renfermant sur lui même, engendre (B, C, D, E, A) ; (C, D, E, A, B) ; (D, E, A,
B, C) ;(E, A, B, C, D). Dans un graphe de n sommets les plus longs chemins élémentaires
comportent, s’ils existent (n-1) arcs. Ils passent une fois et une seule par tous les sommets du
graphe : ce sont les chemins hamiltoniens. (A, B, C, D, E, A) est un chemin hamiltonien qui
se reforme sur lui-même c’est donc un circuit hamiltonien.

3.2. Problème de l’arbre de valeur minimale

En recherche opérationnelle, on rencontre souvent des problèmes de distribution faisant appel


à la notion d’arbre de valeur minimale, (ou maximale). Etant donné, un graphe valué G, de n
sommets et d’au moins n arêtes, on veut construire, en utilisant (n – 1) arêtes, un arbre dont la
somme des valeurs des arêtes sera minimale (ou maximale).
En 1956 J.B Kruskal donne un algorithme pour résoudre ce problème, cela consiste à :
a) Etablir une liste des arêtes par valeurs croissantes, dans le cas où k arêtes sont de même
valeurs, on les distinguera en ajoutant   0 à la valeur de la seconde, 2 à la valeur de la
troisième ainsi de suite sans que l’addition de (k − 1) et la kième valeur, dépasse la valeur
de l’arête immédiatement supérieure dans le graphe.
b) Choisir l’arête de valeur minimale, puis, successivement, au fur et à mesure de la
construction de l’arbre, l’arête de valeur immédiatement supérieure dans la liste ne
formant pas de cycle avec les arêtes retenues jusque-là. On s’arrête lorsque tous les
sommets du graphe sont connectés (ou ce qui revient au même lorsque le nombre arêtes
retenues est égal à (n – 1).
c) Pour obtenir la valeur de l’arbre, additionner les valeurs de (n – 1) arêtes obtenues en
ayant soin de prendre  = 0 .
On montre sans difficultés que la solution est unique si toutes les arêtes sont initialement de
valeurs différentes.

23
Un autre algorithme plus rapide (car il n’impose pas de trier les arêtes sur leur valeur) et plus
commode (car il permet de décomposer le problème) a été proposé en 1961 par G.
SOLLENS, chef de travaux au C.N.A.M. (Centre national des arts et métiers de Paris)
a) Comme l’algorithme précédent on distingue les arêtes de même valeur initiale.
b) A chaque étape de l’algorithme
 Choisir arbitrairement un sommet en dehors de ceux qui ont déjà été retenus et
reliés à l’arête de valeur la plus faible (pour un minimum)
 Puis connecter ce sommet à l’un des sommets auxquels il est adjacent.
c) Lorsque l’ensemble des sommets a été utilisé entièrement :
 Ou bien le résultat est déjà un arbre et la solution est trouvée.
 Ou bien on a encore plusieurs sous-arbres et chacun sera considéré comme l’un
des sommets d’un multi graphe (un graphe dont deux sommets sont au moins
reliés par plus d’un arc). Les arêtes de ce multigraphe étant toutes des arêtes
qui sont successibles de se connecter deux à deux à ce sous-arbre et l’on
reprendra l’algorithme en b.
La validité de cet algorithme est d’aider à justifier la procédure qui est nécessairement finie et
ne peut engendre que de sous-arbres. Ces sous-arbres sont optimaux puisqu’en chaque
sommet, on sélectionne l’arête localement optimale. Finalement on construit un arbre à partir
de ces sous-arbres optimaux, ce qui constitue une application de la programmation
dynamique, un arbre optimal ne pouvant être formé que de sous-arbres optimaux.
Exercices : Arbre minimum recouvrant
Trouver dans le graphe suivant l’arbre recouvrant qui minimise la somme totale des valeurs.

A
I
E

B H
C
S

D
F
G K

24
4. Programmation dynamique dans le cas déterministe

4.1. Recherche de chemin optimal : Algorithme de FORD


Position du problème
Il s’agit de chercher le ou les chemins de longueur extrémale (minimum ou maximum) partant
du sommet numéro 1 et aboutissant à un sommet donné.

Chemin critique
Dans un graphe valué à valeurs positives, sans circuit possédant une entrée et une sortie, on
peut associer la somme des valeurs des arcs qui le composent. Soit x 0 l’entrée, x n −1 la sortie

et d ij la valeur associée à (xi , x j ) . Le problème consiste à déterminer le chemin de valeur

optimale (chemin critique) : minimale ou maximale entre x 0 et x n −1 . On utilise l’algorithme

de Ford

Principe : Algorithme de FORD, pour le maximum


1er Etape : Numérotation des sommets du graphe value dans n’importe quel ordre, mais en
commençant par X0 et en finissant par Xn-1 (si n est le nombre total de sommets).
2ème étape : Affectation d’une valeur Ti = 0 avec 1 i  n-1 à tous les sommets du graphe
« valué »
3ème étape : Pour tout arc (Xi, Xj), si la différence Eji = Tj -Ti est inférieure au nombre inscrit
sur l’arc (appelé valuation), on substitue à « Tj » la quantité T’j = Ti + Dij où Dij représente la
valuation comprise entre les sommets Xi et Xj.
Par contre, si cette différence Eji = Tj -Ti est supérieure au nombre inscrit sur l’arc, alors on ne
change rien.
4ème étape : On continue les itérations jusqu'à ce qu’aucun Ti ne soit plus augmenté.
Application :
Recherche de chemin de longueur maximale à l’aide d’un graphe « valué ».
A 25 G
13 22
14 4 6
8 3
E B F S
11 2 5
15 27
C 17 D

25
Principe Algorithme de FORD, pour le minimum.
1er étape : Numérotation des sommets du graphe « valué » dans n’importe quel ordre, le
sommet initial étant noté X0 et le sommet final Xn-1 ( avec n le nombre total de sommets du
graphe)
2ème étape : Affectation d’une valeur Ti =  avec 1 i  n-1 à tous les sommets , sauf pour le
sommet initial auquel on attribue la valeur T0= 0.
3ème étape : Pour chaque arc (Xi , Xj ) si la valeur Eji= Tj - Ti est supérieur à Dij, valuation de
l’arc XiXj, on remplace alors Tj par T’j= Ti + Dij.
Par contre, si Eji = Tj -Ti est inférieur à Dij, on ne change absolument rien.
4ème étape : On réitère la 3ème étape jusqu'à ce que aucun arc ne permette plus de diminuer les
Ti Application :
Rechercher le chemin de longueur minimale à l’aide du graphe « valué » de la figure 1.

A 25 G
13 22
14 4 6
8 3
E B F S
11 2 5
15 27

Autres présentations
C 17 D

Chemins de valeurs minimales : On associe à chaque sommet x j désignant un sommet

« suivant » un coefficient  j défini par :

1 = 0
 j = Min ( i + dij )  où xi désigne le précédent de x j
La valeur  n représente la valeur du chemin minimal entre x1 et x n . Les valeurs  j sont

portées au-dessus des sommets dans le diagramme sagittal.


Exemple :
x1
On procède sommet par sommet en partant de l’entrée x 0 8
x5
4
x0 7
6
0 = 0 5
1 = 0 + 4 = 4 5
 2 = Min(4 + 6,0 + 5) = 5 x2 x4
9

26
 4 = Min( 2 + 9 ) = 14

 5 = Min(12,12,19 ) = 12

x 0 x1 x5
Le chemin qui minimise a pour valeur 12 et il est constitué des sommets
x 0 x 2 x5
Sur le graphique ce chemin critique minimal est représenté par un double trait et les valeurs
 i sont placées au dessus des sommets xi .
Remarque : pour trouver les arcs qui constituent le chemin critique, on part de la sortie et on
repère l’arc qui donne la valeur  correspondante.

Chemins maximaux

On associe à chaque sommet x j un coefficient  j tel

Que 1 = 0, j = Max (i + dij )  où xi désignele précédentde x j

 n −1 représente la valeur maximale du chemin entre x 0 et x n −1 .

Les  j sont portées au-dessous des sommets dans le diagramme sagittal.

Exemples : x1 10 x5

0 = 0
3
1 = 0 + 3 = 3
6
 2 = Max(0 + 5, 3 + 1) = 5 x0
1 5
 4 = 5 + 4 = 9
 5 = Max((3 + 10), 5 + 6, 9 + 5) = 14 5
x2 4 x4

Par exemple l’arc ( x 0 , x1 ) est critique mais ne fait pas partie du chemin maximal du graphe.

Le chemin maximal a pour valeur 14 et il est constitué des sommets x 0 x 2 x 4 x5 .

Arcs critiques : On appelle arc critique tout arc xi , x j  tel que ij =  j −  i . Tout arc faisant

partie du chemin critique est critique mais la réciproque est fausse.

4.2. Notion de programmation dynamique certaine :


La programmation dynamique est une méthode d’optimisation des systèmes ou de leur
représentation mathématique dans laquelle on opère par phases ou séquences. Le point départ
de cette méthode est le « théorème d’optimalité » mis en valeur il y a quelques années par le
mathématicien américain Richard Bellman.

27
En recherche opérationnelle, il s’agit d’élaborer une politique économique optimale. Bellman
exprime ceci : « toute politique économique optimale ne peut être formée que de sous-
politiques optimales ».
Donc il est évident que tout chemin optimal soit constitué de portions de chemins, elles-même
optimales. S’il n’en était pas ainsi pour une portion quelconque, celle ci pourrait être
remplacée par une autre meilleure et par conséquent ne serait pas optimal contrairement à
l’hypothèse. On considère généralement que la programmation dynamique concerne
l’évolution dans le temps d’un système économique, celle-ci étant à chaque phase
partiellement aléatoire (intervention du hasard) et partiellement contrôlée (intervention de
l’homme). On peut distinguer (R.Fortet) les évolutions de première et seconde espèces selon
que, à chaque phase, l’intervention du hasard précède la décision humaine ou au contraire la
suit. Les cas limites sont ceux opposés :
- Où le hasard disparaît : cas déterministe ;
- Où la décision humaine ne se manifeste pas (processus stochastique).
Exemple
La construction d’une autoroute entre les villes A et K comme l’indique le dictionnaire des
suivants, passe par les villes (points) intermédiaires de passage pouvant être classés en
groupes ou « phases » et les arcs du graphe ayant été valués par l’indication des coûts totaux
(coûts de réalisation + coûts sociaux etc.).
Dans ces conditions, la meilleure des politiques F (N0, N1, N2, N3, N4) correspondant au
chemin de coût minimal (avec Ni = niveau de génération).

Tableau n° 8 : dictionnaire des suivants


X A B C D E F G H I J K
S(x) B,C,D E,G E,F,G,H E,G,H I,J I,J I,J J K K -

Tableau n° 1 : arcs « valués »


Ui AB AC AD BE BG CE CF CG CH DE
Vi 8 5 7 3 4 5 4 6 4 3

Tableau n° 2 (suite tableau n°1)


Ui DG DH EI EJ FI FJ GI GJ HJ IK JK
Vi 2 3 4 5 4 4 3 2 4 5 7

1) Représentation graphique.

(construire le graphique associé)

28
2) Résolution.
Tableau n° 3
N2 chemins possibles chemin optimal coût
E

Tableau n° 4
N3 chemins possibles chemin optimal coût
I

29
Chapitre 3 : Problèmes d’ordonnancement : Méthode PERT et Méthode française

Les retards rapportés aux réalisations de projets industriels et commerciaux ainsi


qu’à leur livraison ponctuelle aux clients ; la mauvaise conception du produit à fabriquer ;
enfin et surtout le manque de coordination entre les responsables des opérations concernant
l’ordre de passage des différentes tâches et leur fin, sont des problèmes d’ordonnancement.
Beaucoup d’entreprises doivent affronter ces problèmes ce qui nécessitent de facto
l’apprentissage des techniques d’ordonnancement.

1. Notion de projet, tâche et ordonnancement


1.1. Notion de projet
Un projet est un ensemble de taches ou opérations a, b, c, d, ... permettant d’atteindre un
objectif fixé lesquelles tâches sont elles même soumises à un certain ordre de contraintes
telles que : les contraintes potentielles, les contraintes disjonctives, les contraintes
cumulatives.
1) Contraintes potentielles Elles sont de deux types :
- les contraintes de succession qui se traduisent par le fait qu’une tâche A ne peut
commencer que si la tâche B est achevée ;
- les contraintes de localisation temporelle, qui implique qu’une tâche A ne peut débuter
avant une date imposée (par exemple, appareil non disponible avant cette date) ou ne
peut se terminer après une date imposée (appareil à libérer impérativement avant cette
date).
2) Les contraintes disjonctives imposent la non réalisation simultanée de deux tâches A et B
(Pour des raisons d’utilisation d’un même appareil par exemple ou pour cause de main
d’œuvre).
3) Les contraintes cumulatives : elles limitent les possibilités d’ordonnancement, car elles
tiennent compte de tous les facteurs productifs : hommes, machines, moyens financiers. C’est
ainsi qu’il ne saurait être question de programmer , par exemple pour un mois donné , des
opérations qui , en temps normal requièrent toutes ensembles , l’équivalent de dix mois de
travail d’un corps de métier qui ne comporterait sur le terrain que deux représentants (par
exemple programmer un cours de 75 heures en une semaine) .

1.2. Notion De Tâche.

30
Une « tâche » ou « activité » est une opération. L’ensemble des tâches forme le projet. On
peut donc la définir comme étant l’unité ou l’élément d’un projet. On associe à chaque tâche
sa durée et une contrainte d’antériorité (de succession) par rapport aux autres tâches. C’est
ainsi qu’on dira que A est immédiatement antérieur à B, si B ne peut débuter que lorsque A
est achevée.

1.3. Méthode d’ordonnancement


C’est un ensemble de méthodes qui permettent au responsable du projet de prendre des
décisions nécessaires dans de meilleures conditions possibles. Une telle méthode doit :
- d’analyser le projet en profondeur c’est à dire décomposer en tache ;
- de mettre sur pied, un plan d’action contribuant à réaliser le dit projet tout en
respectant les contraintes.
- et enfin de contrôler le bon déroulement du projet.

2. Diagramme de GANTT
C’est un graphe de planning et de prévision ayant pour but, de mettre en évidence, les durées
et de permettre ainsi, le contrôle à tout moment de l’évolution du projet par comparaison des
réalisations aux prévisions. Le diagramme de GANTT se présente sous forme d’un tableau
quadrillé dans lequel une colonne correspond à une unité de temps et une ligne à une tâche ou
opération. La tâche se matérialise par une barre horizontale dont la longueur représente la
durée (de la tâche). Cette longueur de la barre est proportionnelle à la durée prévue de la
tâche. Le travail effectué ou le déroulement réel de la tâche est représenté parfois, par des
barres horizontales en pointillés, juste au dessus de celles figurant les prévisions. Exemple :
Construction du diagramme de GANTT. La construction d’une maison se compose en 10
tâches dont les caractéristiques sont les suivants.
Tâches Durée Tâches Précédentes Durée effctuée
A 7 mois sans précédents 5 mois
B 5 mois succède à A 5 mois
C 6 mois succède à B 6 mois
D 8 mois succède à C 8 mois
E 9 mois succède à C,F,G 7 mois
F 4 mois succède à A 3 mois
G 3 mois succède à A 3 mois
H 4 mois succède à D 4 mois
I 6 mois succède à H 6 mois
J 3 mois succède à I 2 mois

31
En déduire le diagramme de GANTT correspondant, la durée prévue et l’état d’avancement
du projet. .
A. Avantages du diagramme de GANTT
Facilement compréhensible par les exécutants, de par sa clarté et sa simplicité il peut servir de
base à des plans d’action intermédiaire plus détaillés. Il permet également de suivre le
déroulement des opérations dans le temps et résume assez bien l’analyse du projet établie par
les responsables respectifs.
B. inconvénients de diagramme de GANTT
Le diagramme cache les erreurs de forme et de fond commises au niveau de l’analyse du
projet. Il ne met pas en évidence les tâches critiques à partir desquelles tout retard apporté au
niveau de l’exécution, entraîne un retard équivalent dans la réalisation de l’ensemble du
projet. Il est impossible de rectifier ponctuellement la durée d’une tâche précise, sans avoir à
décaler d’autant les suivantes pour redresser complètement ou partiellement l’édifice. Si un
des maillons de la chaîne change, c’est donc tout l’édifice qui s’écroule. Enfin il y a une
insuffisance dans la mise en évidence des liaisons existantes entre les différentes tâches.

3. Méthode PERT (technique d’évaluation et de contrôle des programmes)


A) But de la méthode PERT
L’objet essentiel de la méthode PERT ou méthode des potentiels - étapes est de mettre en
évidence les différentes liaisons qui existent entre les tâches. L’outil de base demeure le
graphe du projet c’est à dire l’organisation ou articulation des opérations les unes par rapport
aux autres.

B) Structure fondamentale de la méthode PERT


On peut décomposer sommairement la méthode en quatre phases principales notamment
celles :
a) de la confection d’un graphe traduisant l’organisation de l’ensemble des tâches les
unes par les autres , par conséquent, la mise en évidence du programme envisagé ;
b) de la recherche du chemin critique et on peut en avoir plusieurs dans le même graphe
ou réseau PERT ;
c) de l’introduction des temps, accompagnée de la détermination de la durée de la
réalisation de l’ensemble des opérations et du calcul des marges ;
d) et de l’exploitation des résultats, leur interprétation et la mise sur pied d’actions
correctrices.

32
C).Construction d’un réseau PERT
Cette construction doit obéir aux conventions fondamentales suivantes.
1) Conventions fondamentales régissant la construction d’un réseau PERT :
a) deux tâches successives doivent être représentées par 2 flèches placées l’une à la
suite de l’autre ;
b) chaque arcs représente une tâche élémentaire. Si la tâche « i » doit être antérieur à la
tâche « j », l’extrémité finale de l’arc « i » coïncide avec l’extrémité initiale de l’arc « j » ;
c) les sommets du graphe représentent alors des « étapes » dans le déroulement des
opérations ;

i j
1 2 3
Etape Etape Etape Etape
initiale finale initiale finale
de i de i de j de j

d) le graphe doit posséder une « entrée » sommet sans antécédents qui est l’extrémité
initiale des arcs associés aux tâches sans antécédents c’est à dire pouvant commencer sans
préalable. Ce sommet correspond à « l’étape début des opérations ». De même le graphe doit
posséder une « sortie » sommet sans successeurs qui est l’extrémité finale des arcs associés
aux tâches sans successeurs ce sommet correspond à l’étape « fin des opérations » ;
e) chaque tâche doit correspondre à une flèche et une seule ;
f) le graphe ne doit contenir ni boucles, ni circuits ;
g) le graphe devra comporter le moins possible de croisement d’arcs ;
h) chaque sommet correspondant à une étape doit être présenté par un cercle à
l’intérieur du quel est prévu un système de repérage (numéro ou lettre) permettant d’identifier
et de suivre aisément l’ordre de succession des tâches ;
i) afin de faciliter la consultation du graphe, on oriente les flèches de la gauche vers la
droite

D/ Cas particulier d’utilisation de tâche fictives.


Une tâche fictive est une tâche de durée nulle ne mettant en jeu aucun moyen matériel et
financier. Elle est généralement représentée par des arcs ou flèches en pointillés.
L’introduction des tâches fictives permet de solutionner certaines situations complexes et de
lever des ambiguïtés, par exemple lorsque deux ou plusieurs opérations sont menées

33
parallèlement ou lorsque deux ou plusieurs tâches ont même sommet initial et même sommet
terminal.
Exemples
Exemple 1

i k
l succède à j
1 2 3

j l
k succède à i et j
tâche fictive (5 2)
4 5 6

Exemple 2
A et B doivent être terminés pour que C et D puissent commencer.

A C

B D

Exemple 3
A et B antérieures C et B antérieure à D la représentation ci-dessous n’est pas bonne.

A C

B D

La représentation correcte implique que A précède C uniquement et non D.

34
A C
E1 E
1
Tâche fictive de durée 0 entre
E1 et E2
B D
E2

Le PERT-Temps

En attribuant à chaque opération une durée prévisionnelle de son exécution, il sera possible de
mettre évidence « un chemin critique » formé d’une succession de tâches critiques au niveau
desquelles tout retard entraînerait la non réalisation de l’ensemble du projet dans les délais
prévus. Ce chemin critique représente le temps minimum nécessaire pour la réalisation du
projet. Alors que les tâches critiques rendent le programme rigide, les tâches non critiques
quant à elles laissent une certaine marge de manoeuvre dans le déroulement des travaux.

Dès que le chemin critique sera établi (et implicitement les « dates au plus tôt » et « au plus
tard »), il sera possible de convertir le graphe PERT en diagramme de GANTT et de contrôler
aisément le déroulement des travaux.

La détermination des marges à partir du calcul des dates au plus tôt et au plus tard, permettra,
en outre de connaître le temps encore disponible par tâche, la marge de manoeuvre disponible,
de déceler certains retards d’imputer les responsabilités, et d’apporter des actions correctrices
qui s’imposent.

Recherche du chemin critique

1) Le chemin critique est le temps minimum nécessaire quant à la réalisation du projet. Il est
composé exclusivement de tâches critiques c’est à dire dont l’exécution ne doit être ni
retardée ni ralentie sous peine d’augmentation d’autant le délais de la réalisation de
l’ensemble du projet. Ce chemin passe par les sommets dont les dates au plus tôt et plus tard
coïncide. Son « intervalle de flottement » est nulle.

35
2) Date au plus tôt d’un événement : Il s’agit de la date avant laquelle une tâche ne peut
démarrer. C’est donc la date attendue de la réalisation d’un événement ou date avant laquelle
un événement ne peut se réaliser.

3) Date au plus tard d’un événement : C’est la date limite de réalisation d’un événement.
Si l’événement venait à se réaliser après la date, le projet tout entier ne pourrait jamais se
réaliser dans le délai correspondant à la longueur du chemin critique.

Détermination des dates au plus tôt et des dates au plus tard.

Dates au plus tôt :


a) On affecte à l’entrée la date t1= 0 ;
b) Pour le sommet j, on calcule la date au plus tôt (tj), en posant :
tj = Max {(ti +dij),…..}, avec : ti est la date au plus tôt du sommet i ;
tj est la date au plus tôt du sommet j;
dij est la valeur (durée) de la tâche représentée par l’arc ij ;
tS est la date au plus tôt de fin des opérations (cette valeur est la durée minimum de
l’ouvrage)

Date au plus tard. :


On adopte la méthode suivante :
a) Inversion de l’orientation de tous les arcs du graphe ( une sorte de compte à
rebours) ;
b) Avec le nouveau graphe on calcule les dates au plus tôt ( les rôles de l’entrée et de
sortie sont inversés)
c) Les dates au plus tard sont obtenues par différence entre la durée minimale de
l’ouvrage et les dates ainsi calculées.

Notion d’intervalle de Flottement et de marges


a) Position du problème
Pour affiner le suivi des opérations et le contrôle de la ponctualité quant au respect des dates
au plus tôt et au plus tard. Il devient alors indispensable, pour le responsable du projet de se
pencher sur le degré de liberté dont il dispose, pour éventuellement augmenter la durée d’une

36
tâche sans pour cela compromettre la fin du projet dans les délais impartis. Pour cela le
responsable doit avoir à sa disposition les intervalles de flottements pour chaque étape ou
événement. S’intéresser d’avantage aux tâches qu’aux événements de début et de fin qui
encadrent la tâche, sous entend que l’on s’intéresse aux « marges ».

b) Intervalle de flottement
Pour chaque sommet on obtient un intervalle de flottement en faisant la différence entre la
date au plus tard et la date au plu tôt du même événement. L’intervalle de flottement est un
intervalle dans lequel peut intervenir la réalisation d’un événement sans compromettre
l’exécution de l’ensemble du projet ni sa durée totale minimale.

c) Les marges
On distingue trois sortes de marges : marge totale, marge libre et marge certaine pour
chaque tâche.
Evénement ou étape Ei Evénement ou étape Ej

Ei Ej

ti t'i tj t'j

Date au Date au Date au Date au


plus tôt plus tard plus tôt plus tard
de Ei de Ei de Ej de Ej

Tij= tâche comprise entre Ei et Ej

d ij = durée de la tâche Tij

marge libre de Tij : ML (Tij) = tj – ti- dij

marge totale de Tij :MT(Tij)=t’j- ti- dij

marge certaine de Tij : MC (Tij) = tj - t’i- dij équivalent à zéro si Mc est négative .

On a toujours : 0 ≤ Mc ≤ M L ≤ MT

Signification économique et influence sur la durée du projet .

37
1) La marge libre d’une opération
Elle correspond pour cette opération, au retard maximum que l’on peut apporter à son
démarrage sans perturber la date de sa réalisation au plus tôt de l’événement suivant.
Concrètement si une tâche commence à sa date au plus tôt et si sa durée est augmentée de sa
marge libre, il n’y a pas de perturbation dans la suite du projet, les dates au plus tôt et au plus
tard des autres opérations restant inchangées. Un retard supérieur à la marge libre se répercute
sur les tâches suivantes en diminuant leurs marges.

2) La marge totale d’une opération


C’est un retard maximum que l’on peut apporter à son démarrage sans perturber la date de fin
des travaux. Pratiquement la marge totale représente la fluctuation maximale pour la tâche
considérée, à condition qu’elle est commencée le plus tôt possible. Notons que si une marge
totale a été utilisée, certaines tâches subséquentes deviennent critique et il apparaît alors un
deuxième chemin parfois appelé chemin sous critique.

3) La marge certaine
C’est le retard maximum que l’on peut apporter à son démarrage sans perturber la date de
réalisation au plus tôt de l’événement suivant bien que l’événement précédent n’ait été réalisé
qu’à sa date limite.

Mise à jour d’un réseau -PERT : Contrôle et surveillance du déroulement des opérations.

4. Méthode française (Méthode des potentiels)


Contrairement à la méthode PERT, on n’a pas besoin de construire de graphe. Mais, si l’on
en traçait un, les sommets représenteraient les opérations et les arcs les contraintes. Les arcs
seraient valués chacun par nombre indiquant la durée minimale devant s’écouler entre le
début de la tâche formant l’extrémité terminale. Cette méthode ne nécessite aucune définition
d’événement ni non plus aucun tracé de graphe.
Exemple
Un projet se compose de 10 tâches dont les caractéristiques sont les suivants.

38
Tâches Durée Tâches Précédentes
A 7 mois sans précédent
B 5 mois succède à A
C 6 mois succède à B
D 8 mois succède à C
E 9 mois succède à C, F, G
F 4 mois succède à A
G 3 mois succède à A
H 4 mois succède à D
I 6 mois succède à H
J 3 mois succède à I

Principe
Cette méthode consiste à dresser un tableau dans lequel chaque opération ( on les
prend dans un ordre quelconque) est dotée d’une colonne et d’une sous-colonne. Il existe deux
événements, le début (Dt) et l’achèvement (Fn) des opérations.

Dans chacune des colonnes, on écrit les opérations qui doivent précéder celle qui est
indiquée en tête de colonne. On indique aussi la durée de ces opérations préalables. Quand
une opération n’est précédée par aucune autre et si elle peut commencer dès le démarrage de
l’ensemble, on écrit Dt et l’on indique zéro, à côté de Dt.

Une fois cette opération effectuée, on écrit zéro en face de Dt, dans la sous colonne
correspondant aux opérations qui comportent un Dt. Comme il y a sûrement au moins une
opération qui comporte un Dt et seulement un Dt dans la colonne on a immédiatement une
colonne « complète » c’est à dire dont la colonne et la sous colonne sont remplies : on fait la
somme des chiffres inscrits dans la colonne et la sous colonne et l’on obtient : 0+0=0 , on en
déduit que la date de début de l’opération A est zéro ( Pour l’exemple ci-dessus) on marquera
zéro dans la sous colonne correspondante. Ici, dans les colonnes B, F, G, on a trois nouvelles
colonnes « complètes » et l’on inscrit respectivement : 0+7 = 7, 0+7 = 7, et 0+7 =7 en tête des
colonnes B, F et G et ainsi de suite.

On arrive facilement, sauf en cas de graphe linéaire, où toutes les opérations se


suivraient sur un seul chemin ( là, il n’y a pas de problèmes),à une colonne où figurent
plusieurs opérations préalables. Lorsque la colonne est « complète » au sens ci-dessus, on fait
les additions des nombres inscrits sur la même ligne dans la colonne et la sous colonne et l’on
inscrit en tête de colonne, le maximum des résultats obtenus qui est la date la plus proche à
laquelle peut commencer l’opération inscrite en tête de colonne.

39
En continuant ainsi, on arrive à marquer la colonne Fn’, le nombre qui est indiqué en
tête de cette colonne donne la date la plus proche d’achèvement de l’ensemble des opérations.

Détermination du chemin critique et des dates au plus tard.

Pour trouver le chemin critique, il suffit de reprendre dans le tableau en partant de la fin, les
opérations enchaînées dont la ligne a fourni le nombre indiqué en tête de colonne. On utilise
pour cela le tableau des prédécesseurs en remontant : on cherche le ou les arcs tels que tFn= ti
+ Vi, Fn,

Pour calculer les dates au plus tard, on utilise le tableau des successeurs. On fixe la date au
plus tard de la tâche Fn à ω, la date la plus proche d’achèvement trouvé. On calcule en
remontant les dates au plus tard des tâches en appliquant la formule :

t ' = min
i j  (i ) 
(t ' − v )
j ij  où (i ) est l’ensemble des successeurs de i.

5. METHODE M.P.M (Méthode des Potentiels Métra) développée en France par La


S.E.M.A
La méthode MPM ou méthode des potentiels est une autre méthode pour représente un projet ;
Les sommets du graphe symbolisent les tâches et portent leurs noms. Les arcs représentent
des contraintes de succession et portent la durée (le potentiel) de la tâche du sommet initial.
Du sommet « Début » partent des arcs de valeur 0 et la fin du projet est symbolisée par un
sommet « Fin »
Principe de la représentation
- 1 sommet du graphe correspond à une opération
- Un arc du graphe définit une relation d’antériorité et la valeur de l’arc donne le temps
minimal qui s’écoule entre le début de la Tâche Origine et le début de la Tâche
Extrémité.

Exemple :

5
A B

Les méthode MPM et PERT sont donc inverses et donnent des représentations
graphiques différentes d’un projet.

40
Le choix de l’une ou de l’autre de ces méthodes dépend de la complexité du projet : existence
de tâches fictives, dates de début ou de fin de tâche particulière, arcs qui se ‘’croisent’’ …
Le graphe MPM porte sur les sommets les renseignements suivants :
- La date de début au plus tôt : DA notée en *
- La date de début au plus tard : DP notée en **
- Le nom de la tâche notée en ***
En faisant la différence entre les dates portées sur les sommets du graphe MPM on obtient les
marges totales.

* * *

* * *

Le graphe PERT porte sur les sommets les renseignements suivants :


6. La date de début au plus tôt : DA notée en *
7. La date de fin au plus tard : FP notée en **
8. Le numéro de l’étape notée en ***
En faisant la différence entre les dates portées sur les sommets du graphe PERT on obtient les
marges flottement.

* * *

* * *

On voit en remontant ce tableau que la détermination de Tz s’est faite par i,f,b,a qui
constituent le chemin critique.
Détermination de la date au plus tard
Il s’agit de déterminer pour chaque tache x, une date de début au plus tard Tx* telle que T fin
(date de fin de travaux) ne soit pas retardée.
1) on pose Tfin* =Tfin

41
2) soit x un sommet dont tous les sommets suivants, y sont marques (par sommet marque, il
faut entendre que Ty* a déjà été détermine) on a alors Tx*= Min {(Ty*-dx)} pour y
appartenant a l’ensemble des arcs.
Détermination des marges
a) la marge totale
c’est le retard maximum que l’on peut prendre dans la mise en route d’une tache , sans
remettre en cause les dates au plus tard des taches suivantes donc sans retarder la fin des
travaux. Pour une tache x, cette marge totale est donc égale a Tx*-Tx=Mt
b) la marge libre.
C’est le retard maximum que l’on peut apporter a la mise en route d’une tache sans remettre
en cause la date au plus tôt d’aucune tâche.
1- construction du graphe
Les opérations mises en jeu dans la construction de la maison de Monsieur NDO sont les
suivantes :
a) aménagement des voies d’accès ;
b) travaux de fouille
c) travaux de terrassement …….
Opération Durée Opérations pré requises Opérations suivantes
A 4 - B, G
B 6 A F
C 4 - E, F
D 12 - E
E 10 B, C, D H
F 24 B, C I
G 7 A H
H 10 E, G I
I 3 F, H -

N0 = {A, C, D} ; N1 = {B, G} ; N2 = {E, F} ; N3 = {H} et N4 = {I}

Pour construire le graphe, les sommets seront placés de gauche à droite en fonction de leur
niveau. A un niveau, les sommets seront situés de façon à limiter le nombre d’intersections
entre les arcs. Un arc reliera un sommet i à un sommet j si j appartient à P (i). Chaque sommet
sera figuré par un rectangle du type :

Tx Tx’
x

42
Exemple :
4 17
22 24
4 7 34 34
0 0 G 10
H
A 10 10 I
4 4 4 24 3
6
F
B
37 37
0 6 4 10
12 14
Fin
C 4
E

0 2 12

Détermination de la date au plus tôt


On affecte pour longueur aux arcs la durée de la tâche origine. (les contraintes n’étant que des
contraintes de succession) Tx désigne donc la longueur des arcs partant du sommet.
Pour les tâches de niveau 0 on pose Tx = 0, ce qui signifie que ces tâches peuvent commencer
en même temps.Le fait de choisir pour tx la longueur du chemin le plus long garantit que la
contrainte, d’antériorité a été respectée.
Tx donne bien la date au plus tôt à laquelle peut commencer la tâche x.
Fx désignant la tâche finale, Tfx est la date à laquelle l’ensemble des travaux peut
s’achever au plus tôt. L’ensemble des arcs ayant contribué à la détermination de T fx constitue
le chemin critique.
Exemple 1

Tâches Tâches antérieures durée Tâches


suivantes
A C 10 -
B D 12 -
C - 4 A
D - 10 B

N0 = {C, D} ; N1 = {A, B}

43
Graphe PERT

C(4) 2 A(10)

Dt 4 12 Fin

0 0 22 22

D(10) B(12)
3

10 10

Graphe MPM
C 4 A

0 8 4 12
10
Fin
Dt
22 22
0 0

12
D B
10
0 0 10 10

Exemple 2

Tâches Tâches antérieures Durée Tâches Suivantes


A - 18 B, C , E ,F
B A 13 C
C A, B, E 12 -
D - 16 F
E A 14 C
F A, D 15 -

N0 = {A, D} ; N1 = {B, E, F} ; N2 = {C}

44
Graphe PERT

B(13 3
1 )

A(18 32 32
18 18 C(12)
)

E(14 0
)
0 0

44 44
32 32
D(16) 0

F(15)

18 29

B
18 19
Q 18 13 C
18 19
0 0 32 32
0 0 32 32

0 18 14
18 12
E
18 18
Dt 18 18 Fin
0 0
0 0 44 44
44 44

0
15

D
0 13 F
16 18 29
0 13
18 29

Remarque : sur le graphe PERT, il faut placer une contrainte de liaison entre A et D et une
tâche fictive entre B et E.

45
Exemple 3

Tâches Tâches antérieures durée Tâches


suivantes
A C 2 E
B - 7 D, E
C - 5 A
D B 3 F
E B, A 5 -
F D, d + 12 2 -

N0 = {B, C} ; N1 = {A, D} ; N2 = {E, F}

d + 12 : F ne peut commencer que 12 jours après le début des travaux

Graphe PERT
A(2)
1 3

C(5) 7 8
5 6 E (6)
Dt

0 0
5
0
14 14

B(7) 0
F(2)
4

2 12 12
D(3)
7 9

C A E
0 1 5 5 6 2 7 8
0 1 5 6 7 8

0 6

Fin
14 14
Dt 7 14 14
0 0
0 0

2
12
0

B D 12
0 2 7 7 9 3 12 12
0 2 7 9 12 12

46
Comparaison des méthodes P.E.R.T et M.P.M dans la prise en compte de
certaines contraintes potentielles
a) Comparaison des graphes lorsque les délais sont des durées opératoires
uniquement, contraintes de succession
Prenons l’exemple très simple suivant : Un ensemble de travaux comprend 7 opérations. Le
tableau suivant précise les durées opératoires et les contraintes de succession.

Opération Durée Opération préalable


a 3
b 2
c 4 a
d 3 a
e 5 b, d
f 4 b, d
g 2 c, f

Graphe de P.E.R.T
c(4)
2 4
a(3) g(2)

f(4)
d(3)
1 6

b(2) v(0)

3 5
e(5)

Fig.7
Graphe de M.P.M
3 4
a c
g

0
3 4
2

3
D d f

2
F
3

b 2
e

Fig.8

47
a c
2 4
g F

6
D
1 d f

5
b 3 e

Fig.9
Sur le graphe de la figure 7 (P.E.R.T), le sommet 1 représente le début du programme, le
sommet 6 la fin de celui-ci. Il est inutile de marquer un sommet supplémentaire 7 pour la fin.
(On aurait pu aussi se servir du sommet 5 pour marquer l’évènement « fin ».) L’arc v, de
durée nulle, représente une opération virtuelle, destinée à relier le sommet 5 au sommet
terminal 6.

Le graphe M.P.M de la figure 8 fait intervenir les sommets D et E représentants les tâches
« début » et « fin ». Les contraintes potentielles sont simplement de succession / le potentiel
de chaque arc issu de l’un des sommets a , b, …, g est égal à la durée d’exécution de
l’opération correspondante, qui ici représente le délai minimum séparant les débuts de deux
tâches qui se suivent.

Les arcs issus du sommet D sont affectés de potentiels nuls puisque la tache correspondant est
de durée nulle ; cela signifie que les tâches a et b peuvent commencer dès le début.
La figure 9 visualise la dualité des 2 modes de représentation.
b) Opérations parallèles
Soient deux opérations b et c devant satisfaire aux conditions suivantes : s’effectuer en
même temps (opérations parallèles), succéder à une même opération a, précéder une
même opération d. Les durées respectives de a, b, c, d sont : 3, 2, 5, 7
P.E.R.T
La représentation suivante est incorrecte :
b(2)

a(3) d(7)
1 2 3 4
c(8)

48
Fig. 10
En effet, elle conduit à un multigraphe (cf. page 278).
Il convient d’introduire ici un évènement fictif 3’ et une opération virtuelle b’ de durée nulle.
La représentation suivante est correcte :
Évènement
fictif

3'
Opération
b(2)
b‘(0) virtuelle

1 2 3 4
a(3) c(5) d(7)

Fig. 11.
Cette représentation correcte n’est pas unique, car b et c jouent des rôles symétriques.
M.P.M.
Les artifices de représentation d’une telle situation en P.E.R.T. sont inutiles en M.P.M. On
obtient très naturellement le graphe suivant :
b

3
2

a d

3 5

Fig. 12
Tout arc issu de d sera affecté d’un potentiel égal au délai correspondant, qui pourra être 7 ou
d’autres valeurs.
c) Opérations dépendantes et indépendantes Soient, d’une part, a et b de durées 5 et 2,
indépendantes ; d’autres part, c et d de durées 3 et 1 indépendantes. Ces opérations

49
sont telles que c succède à a sans succéder à b, d succède à a sans succéder à b, d
succède à la fois à a et à b.
P.E.R.T.
La représentation suivante est incorrecte :

c(3)
4
1 a(5)

3
b(2) d(1)

2 5
Fig. 13
En effet : d succède bien à a et b, mais c, qui ne doit succéder qu’à a, succède aussi à b, ce qui
est exclu. Comme dans la situation précédente, il convient d’introduire un événement fictif 3’
et une opération virtuelle a’ de durée nulle pour obtenir la représentation correcte suivante :

a(5) c(3)

1 3' 4

a‘(0)

2 3 5
b(2) d(1)

Fig. 14
c et d ne jouent pas des rôles symétriques : la représentation précédente est la seule possible.
M.P.M.
La représentation incorrecte ci-contre a pour équivalent en M.P.M.

50
5
a c

5
2

b d
2

Fig. 15
La représentation correcte est encore ici très naturelle :
Fig.16
5
a c

b d
2

Dans cette représentation partielle, on n’a figuré aucun arc partant de c et de d.

d) Opérations composées (successions avec recouvrement)

Considérons la situation où certaines opérations peuvent débuter avant l’achèvement complet


d’une opération. Celle-ci devra, en représentation P.E.R.T. être fractionnée en sous opérations
successives afin de pouvoir traduire l’enclenchements, chose inutile en représentation
M.P.M., ce qui évite d’éventuelles discontinuités dans le déroulement d’une telle opération.
Prenons l’exemple suivant : la tâche a dure 2 jours ; b, de durée 7 jours succède à a ; e de
durée 2 jours, succède à b. c, de durée 3 jours, peut débuter 1 jour après le début de b ; d, de
durée 4 jours, peut débuter 3 jours après le début de b.

51
P.E.R.T. L’opération b doit être fractionné en 3 sous opérations successives : b1, b2, b3 de
durées respectives 1 jour, 2 jours, 4 jours. La représentation correcte est la suivante :

4 6
c(3)
d(4)

1 2 3 5 7 8
a(2) b1(1) b2(2) b3(4) e(2)

Fig. 17
M.P.M.
Evidemment, on pourrait, en M.P.M., fractionner l’opération b de la même façon et obtenir la
représentation suivante :

c d

1 2

a b1 b2 b3 e
2 1 2 4

Fig.18
Mais les 3 sommets b1, b2, b3 peuvent être condensés en un seul : b, en modifiant
correctement les potentiels sur les arcs issus de b. On obtient la représentation simplifiée
suivante :
c

2 7
a b
2 e
(1+2+4)

3 (2+1)

Fig.19

52
Cet exemple illustre parfaitement la raison pour laquelle M.P.M. introduit des délais, ce qui
conduit à plus de souplesse et de simplicité que P.E.R.T. (cf. 3-b) On tient compte des
contraintes de succession avec recouvrement (ou avec attente) en utilisant simplement des
potentiels convenables.

e) Conditions de limites de démarrage


Dans certains cas (livraisons de matériaux nécessitent certains délais, intempéries, etc.) il
arrive que telle ou telle opération qui doit normalement succéder à d’autres sans attente
imposée, ne puisse être entreprise qu’après une certaine date T qui représente un délai
déterminé par rapport à la date de démarrage des travaux. On exprime cette contrainte
particulière de lancement de telles opérations par des arcs, aussi bien en P.E.R.T. qu’en
M.P.M. L’évaluation des arcs ainsi introduits suppose que O est choisi comme date de début
des travaux. Illustrons tout ceci à l’aide des 3 exemples suivants :
1. b, durée 2 jours, succède à a de durée 3 jours, mais ne peut débuter qu’après un
délai de 10 jours après le début des travaux.
2. b (durée 2 jours) et c (durée 1 jour) succède à a (durée 3 jours), mais ne
peuvent démarrer que 10 jours après le début des travaux
3. Dans les mêmes conditions que l’exemple 2, seule b ne peut démarrer
qu’après un délai de 110 jours
P.E.R.T.
1. L’événement 1 marque le début des travaux. L’arc l de valeur 10, reliant 1 à j traduit la
contrainte de démarrage de b. Il représente une opération artificielle.
a(3) b(2)

i j k

l(10)

1
Fig.20
2. De même l’arc l(10) traduit la contrainte de démarrage concernant b et c :

53
a(3) b(2)

i j k
c(1)

l(10)

k
1
Fig.21
3. Il y a lieu d’introduire, en plus de l’arc l(10), l’évènement fictif j’ et l’opération
virtuelle b’ de durée nulle.
a(3) c(1)

i j m

b‘(0)

1 j’ k
l(10) b(2)

Fig.22
M.P.M.
1. L’opération D représente le lancement des travaux. La contrainte de démarrage de b se
traduit par l’arc (D, b) muni du potentiel 10.
3
a b

10

Fig.23

54
2. De même les arcs (D, b) et (D, c) de potentiel 10 traduisant la contrainte de
démarrage b et c :
3
a b

10

D
10
c

Fig.24
4. L’arcs (D, b) de potentiel 10 suffit pour traduire la contrainte de démarrage
concernant b :
3
a c

10
D
b

Fig.25
Exercices d’applications
Exercice 1 : Recherche d’un chemin critique.
La réalisation d’un ouvrage se décompose en tâches suivantes A, B, C, D, E, F, G, H. Les
durées respectives sont les suivantes : A (12 jours), B (24 jours), C (14 jours), D(22jours), E
(16jours), F (12 jours), G (24 jours), H (21 jour). On se propose de déterminer la durée
minimum nécessaire quant à la réalisation dudit ouvrage, ainsi que les dates auxquelles
doivent ou peuvent débuter les tâches pour que cette minimum soit respectée. On rappelle, en
effet, que les tâches A et B sont sans tâche antérieure. Par contre, la réalisation de la tâche F
nécessite l’achèvement des tâches C et D et donc de A et de B, et précède la réalisation de la

55
tâche H. Les tâches E et H sont sans successeurs, mais H suit G et F tout comme E vient
immédiatement après A. Notons que C est précédé par A et que D suit B, ainsi que le résume
le tableau suivant :
Tâches A B C D E F G H
Tâches précédentes --- -- A B A C, D B F, G

Exercice 2 : Génération. Chemin critique ; calcul de marges et des intervalles de


flottement.
La construction d’un entrepôt peut se décomposer en 10 tâches reliées entre elles par des
conditions d’antériorité. L’entreprise chargée de cette construction vous communique le
tableau des enchaînements des différentes activités, avec indications des durées respectives de
chaque tâche (voir tableau annexe) Pour planifier son travail, elle vous demande de
représenter sur un graphe, le chemin critique indiquant le temps minimum nécessaire pour la
réalisation de ce projet.
Tableau annexe
Désignation Activités pré requises Durée (jours)
A Acceptation des plans 4
B préparation du terrain 2
C Commande des matériaux A 1
D Creusage des fondations A, B 1
E Commande des portes et fenêtres A 2
F Livraison des matériaux C 2
G Coulage des fondations D, F 2
H Livraison des portes et fenêtres E 10
I Pose des murs de la charpente du toit G 4
J Mise en place des portes et fenêtres H,I 1
Travail à faire
1) Construire le « réseau PERT » dans lequel l’événement sera matérialisé par un cercle
2) Déterminer le chemin critique du projet.
3) Calculer la marge libre, la marge totale et la marge certaine de chaque tâche.
4) Déterminer le flottement de chaque sommet ou événement.

Exercice 3 Construction d’un réseau PERT


La réalisation d’un projet exige que soient effectuées dix opérations A, B, C, D, E, F, G, H, I,
J. Les conditions d’antériorité qui relient ces tâches figurent dans la matrice associée ci-
dessous :

56
Départ
A B C D E F G H I J
A
B 1
C 1
D
E 1 1
F 1 1 1
G 1 1 1 1
H 1
I 1 1 1 1 1 1 1 1 1
J 1 1
Tâches A B C D E F G H I J
Durée 6 10 7 5 12 6 8 11 8 5
Travail à faire : Construire un graphe orienté matérialisant les relations entre les tâches ainsi
que les différentes étapes que doit présenter la réalisation du projet. Déterminer la durée
minimum de réalisation de ce projet.
Exercice 4 Méthode PERT
L’entreprise « Bon temps » décide de lancer un nouveau produit sur le marché. Les services
commerciaux ont déterminé l’ensemble des tâches nécessaires à cette action :{a, b, c, d, e, f,
g, h, i, j, k}. Les conditions d’antériorité liant ces tâches et celles-ci sont rassemblées dans le
tableau ci-dessous :
Tâches Tâches antérieures Durée des tâches
a e 6
b j, e 8
c aucune 12
d aucune 14
e aucune 8
f d 5
g f, d 10
h a, c, d 6
i h, a, c, e, k, d, f 8
j e 12
k f, d 4
1) Déterminer les tâches immédiatement antérieures à chaque tâche.
2) Tracer le graphe du projet par la méthode de PERT ou par la méthode des potentiels et
déterminer le ou les chemins critiques en indiquant sur le graphe les dates au plus tôt et les
dates au plus tard. Les services commerciaux aimeraient connaître en quel temps minimum le
lancement sera réalisé. Dresser le tableau des marges de flottement (marges totales) et des
marges libres.

57
Chapitre 4 : Problème de flot maximal

Flot à travers un réseau

On appelle réseau de transport un graphe sans circuit, comportant une entrée X0 et une sortie
Xn dont les arcs ont été valués par des nombres représentant leur capacité de transport ( le flux
maximal de matière susceptible d’être transportée). Le problème à résoudre dans un réseau de
transport, consiste en général, étant données des capacités disponibles en X1 ( entrée ), on
cherche à faire passer le maximum de matière jusqu'à Xn (sortie) compte tenu des capacités
de chaque arc. Les capacités de transport peuvent représenter des tonnages disponibles sur
des bateaux, des camions, des wagons ou encore des débits dans les oléoducs, canalisations,
voies de transmissions etc.
Rappels : Soit le graphe suivant :

x3 x4

x6
x1

x5
x2
Une chaîne est une suite de sommets adjacents (sommets reliés par un arc). Le sens des arcs
n’est pas pris en compte. Ainsi une chaîne peut comporter des arcs directs (ils sont inclus dans
la chaîne selon leur sens) ou / et des arcs inverses (ils sont inclus dans la chaîne selon le sens
inverse à leur sens). Par exemple les suites {x1 ; x2 ; x3 ; x 4 } ou {x6 ; x4 ; x3 ; x 2 } sont des
chaînes, La première ne contient que des arcs directs tandis que la seconde contient à la fois
un arcs direct {x3 ; x2 } et deux arcs indirects {x6 ; x4 } et {x4 ; x3 }.
- Un chemin est une suite de sommets adjacents dans un graphe orienté. C’est une
« chaîne ne comportant que des arcs directs ». La suite {x1 ; x2 ; x5 ; x 6} est un
chemin.
- Un circuit est un chemin dont le 1ier et le dernier sommet sont confondus.
La suite { x2; x3 ; x2 } est un circuit.
Vocabulaire
Un arc est dit saturé si le flot qui le traverse est égal à sa capacité  .

Un chemin saturé est un chemin qui a au moins un arc direct saturé.

58
Une chaîne est saturée si elle comprend au moins un arc direct saturé.
Un flot est dit complet si tout chemin de l’entrée à la sortie est saturé.
Un flot est maximal si toutes les chaînes de l’entrée à la sortie sont saturées.
On montre qu’un flot de valeur maximale est complet.

Recherche du flot maximal : Algorithme de Ford – Fulkerson


A partir d’un flot initial on aboutit à un flot complet puis maximal.
1) A chaque étape, on choisit un chemin, de l’entrée à la sortie, non saturé et on repère
sur ce chemin, la plus petite capacité compte tenu des capacités déjà utilisées
2) On décide alors de faire passer la capacité sélectionnée par les arcs du chemin, ce qui a
pour effet de saturer des arcs.
3) On itère le processus jusqu’à ce qu’il n’y ait plus de chemin non saturé, le flot est alors
complet.
4) On vérifie si toutes les chaînes sont saturées :
Si oui alors le flot complet est maximal
Si non, on met en œuvre un algorithme qui permet de saturer les chaînes et d’aboutir à un
flot maximal.
Exemple 1 :

X5
5
9
X3 6
5
2
5 X4 5
8
X1 X6
3
6
10
10 X2
Compte tenu des capacités ij transitée par un arc (xi, xj ), il faut pouvoir la faire passer
également par les arcs suivants. Donc chaque arc de capacité  ij on ne pourra faire passer
qu’une capacité inférieure ou égale tout en essayant de garder les quantités maximales.
De x1 on peut faire partir au maximum 5 + 8 + 10 =23
Des suivants de x1 on peut également faire partir des flux de matière.

59
On remarque que l’on ne peut faire parvenir à x 6 qu’une quantité égale à 9 + 5 +6 = 20, par
conséquent il existe dans le réseau de goulots d’étranglement, Il faut donc s’assurer que
chaque quantité transportée est compatible avec l’ensemble du réseau.
- Etape 1 : le flot initial F0 a pour valeur 0 : V0 = 0. Sur le graphique on place à coté de
toutes les capacités la valeur 0.
- Etape 2 : Passage au flot suivant F. On considère un chemin non saturé (tous les
chemins sont non saturés à cette étape) et on repère la plus petite capacité  sur ce
chemin. Pour tous les arcs A de ce chemin, on fait passer  en l’indiquant sur le
graphe en barrant pour ces arcs les 0 et plaçant la valeur . Pour tous les arcs U qui ne
font pas partie du chemin sélectionné, on ne change rien ( on laisse les 0 ). La valeur
du flot du flot F1 est V1=  . Par exemple on choisit le chemin (x1 ; x2 ; x6 ), la plus
petite capacité sur le chemin est  = 6. Pour les arcs (x1 ; x2 ) et ( x2 ; x6 ), on remplace
les 0 par 6. Pour les autres arcs on ne modifie rien. Ainsi l’arc ( x2 ; x6 ) est saturé ce
qu’on peut matérialiser sur le graphique par un double trait ( l’arc saturé). La valeur du
flot F1 est V1= 0+6 = 6.
- Etape 3. Passage au flot suivant F2 . On considère un chemin non saturé, par exemple
le chemin ( x1 ; x2 ; x4 ; x5 ; x6 ) . La plus petite capacité sur ce chemin est = min
{10 - 6 ; 3- 0 ; 6-0 ; 9 - 0} = 3. Pour tous les arcs du chemin sélectionné, on modifie
les anciennes capacités en leur ajoutant la valeur . Pour les autres arcs on ne change
rien . Ainsi l’arc ( x2 ; x4 ) est saturé on le matérialise sur le graphique par un double
trait ( l’arc saturé). La valeur du flot F2 est V2= 6+3 = 9.
- Etape 4 : Passage au flot suivant F3 . Soit le chemin non saturé, ( x1 ; x4 ; x6 ) . La
capacité minimale sur ce chemin est  = min {8 - 0 ; 5 - 0 } = 5. On modifie les
capacités des arcs sur le graphique et on fait apparaître l’arc saturé ( x4 ; x6 )
matérialisés par un double trait . La valeur du flot F3 est V3= 9 +5 = 14 .
- Etape 5 : Passage au flot suivant F4. Soit le chemin non saturé, ( x1 ; x4 ; x5 ; x6 ) . La
capacité minimale sur ce chemin est  = min {5 - 0 ; 6-3 ; 9-3 } = 3. On modifie les
capacités des arcs sur le graphique et on fait apparaître l’arc saturé ( x1 ; x4 ) et ( x4 ; x4
) matérialisés par un double trait . La valeur du flot F4 est V4= 14+3 = 17 .
- Etape 6 : Passage au flot suivant F5 . On choisit le chemin non saturé, (x1 ; x3 ; x5 ; x6
) La plus petite capacité sur ce chemin est  = min {5 - 0 ; 5- 0 ; 9-6 } = 3. On
modifie les capacités des arcs sur le graphique et on fait apparaître l’arc saturé( x5 ; x6
) matérialisé par un double trait . La valeur du flot F5 est V5= 17+3 = 20.

60
- Etape 7. le flot suivant F6 est complet car tous les chemins qui mène de x1 à x6 sont
saturés. Le flot est également maximal car toutes les chaînes qui partent de x1 à x6 sont
saturées La plus petite capacité sur ce chemin est  = min {5 - 0 ; 5- 0 ; 9- 6 } = 5. On
remarque également que 20 est la valeur maximale pouvant arriver en x6.
Exemple 2
Soit le réseau de transport suivant :

D
5
8
B 3 2
4
1
5 C 4 5
8
A G
E
2
7
6
F

Pour résoudre le problème de flot , on peut employer l’algorithme de FORD- FULKERSON,


qui s’énonce comme suit : Repartons de l’exemple 2, pour exposer l’algorithme de FORD-
FULKERSON .Rendons ce réseau complet puis maximal :
a) Faire passer un flot au jugé puis améliorer ce flot jusqu'à ce que tout chemin de
l’entrée à la sortie, compte au moins un arc saturé ( c’est à dire transportant exactement sa
capacité ).
Etape 1 : on choisit le chemin (A ; F ; G),  = min {6-0 ; 7- 0 } = 6.
V1 = 6 et l’arc (A ; F) est saturé, on peut le marquer de 2 traits.
Etape 2 : on choisit le chemin (A ; C ; D ; G),  = min { } = 3.
V2 = 6+3=9 et l’arc (C ; D) est saturé, on peut le marquer de 2 traits.
Etape 3 : on choisit le chemin (A ; C ; F ; G),  = min { } =1 .
V3 = 9+1= 10 et l’arc (F ; G) est saturé, on peut le marquer de 2 traits.
Etape 4 : on choisit le chemin (A ;B ; D ; E ; G),  = min { }=2.
V4 = 10+2=12 et l’arc (D ; E) est saturé, on peut le marquer de 2 traits.
Etape 5 : on choisit le chemin (A ; B ; D ; G),  = min { } = 2.
V5 = 12+2=14 et l’arc (A ; B) est saturé, on peut le marquer de 2 traits.
Etape 6 : on choisit le chemin (A ; C ; E ; G),  = min { } = 3.
V6 = 14+3=17 et l’arc (E ; G) est saturé, on peut le marquer de 2 traits.

61
On obtient le graphe suivant :

B 5 D
4 8
1 3 2
A 8 C 4 E 5
G
2
6 7

F
Etape 7 : le flot est complet car tous les chemins entre A et G sont saturés mais par contre le
flot n’est pas maximal car il existe au moins une chaîne non saturée.
En effet la chaîne ( A ; C ; E ; D ; G) n’est pas saturée .
b) Pour saturer une chaîne on utilise l’algorithme suivant :
(i) on considère le flot complet de valeur V et une chaîne non saturée ;
(2i) pour les arcs directs de la chaîne, on considère les différences entre les capacités
des arcs et les flots qui les traversent et on prend la plus petite de ces différences notée ’ ;
(3i) pour les arcs inverses, on prend le plus petit des flots qui les traversent noté ’’ ;
(4i) on pose = min{’ ; ’’} ;
(5i) on définit un nouveau flot en ajoutant la valeur  à tous les arcs directs de la
chaîne, en retranchant  à tous les arcs inverses de la chaîne et en ne modifiant pas les valeurs
des arcs qui ne font pas partie de la chaîne.
La valeur du nouveau flot sera V’= V + .
On itère le processus jusqu’à ce que toutes les chaînes soient saturées.
Dans le cas de l’exemple 2 ; sur la chaîne (A ; C ; E ; D ; G), ’ = min {1 ; 1 ; 3}=1 et ’’=2
donc = min{1 ; 2 }=1 . On ajoute1 aux arcs ( A ; C) ; ( C ; E) et ( D ; G) et retranche 1 à (
E ; D), la valeur du flot est V’=17+1=18.

Il n’y a plus de chaîne non saturée. Le flot est maximal et de valeur 18.

B 5 D
4 8
1 3 2
A 8 C 4 E 5
G
2
6 7

F
62
Chapitre 5 : Problème d’affectation.

En informatique, plus précisément en recherche opérationnelle et d'optimisation combinatoire,


le problème d'affectation consiste à attribuer au mieux des tâches à des agents. Chaque agent
peut réaliser une unique tâche pour un coût donné et chaque tâche doit être réalisée par un
unique agent.

Les affectations (c'est-à-dire les couples agent-tâche) ont toutes un coût défini. Le but est de
minimiser le coût total des affectations afin de réaliser toutes les tâches.

L'affectation optimale entre le groupe d'agent et de tâche est représenté ici par les arcs rouges.
Plus formellement, l'objectif est de déterminer un couplage d'une taille égale au nombre de
tâches, de poids minimum dans un graphe biparti « valué ». Si il y a autant d'agents que de
tâches, il s'agit de déterminer un couplage parfait de poids minimum dans un graphe biparti.
Le problème d'affectation est aussi lié au problème du flot de coût minimum.

Le problème d'affectation est généralement résolu en temps polynomial par l'algorithme


hongrois, il appartient par conséquent à la classe de complexité P. L'algorithme hongrois,
parfois appelé algorithme de Kuhn-Munkres, résout le problème en temps polynomial. On
peut aussi écrire le problème sous forme d'un problème d'optimisation linéaire. Sa solution
sera entière car la matrice ainsi définie est totalement unimodulaire.

Fondamentalement et de façon générale, il s’agit encore, d’une application de l’algorithme de


FORD- FULKERSON. Nous partirons d’un exemple pour exposer la méthode.

Exemple
Une administration désire procéder aux mutations des Messieurs A, B, C, D et E et leur offre
les postes a, b, c, d et e. Ces fonctionnaires désirant maximiser leur satisfaction générale,
décident d’effectuer chacun un classement des postes offerts de 1 à 5 et obtiennent le tableau
suivant regroupant leurs avis (tableau 1)

63
a b C D e
A 1 2 3 4 5
B 1 4 2 5 3
C 3 2 1 5 4
D 1 2 4 2 5
E 2 1 4 3 5

Principe : pour maximiser la satisfaction générale, il convient de choisir un chiffre et un seul


par ligne et un seul par colonne, de manière que la somme des cinq chiffres choisis soit
minimale (si chacun pouvait obtenir le poste qu’il a choisi n°1, la somme serait 5)
Pour maximiser la satisfaction générale, il faut que la somme des cinq chiffres choisis soit
minimale.
On ne change rien au problème en soustrayant ligne par ligne puis colonne par colonne, le
plus petit élément de la ligne ou de la colonne. Si l’on pouvait choisir un zéro par ligne et par
colonne, on aurait la solution (exemple du tableau n°1) mais ce n’est souvent pas le cas
(exemple 2 du tableau n°2). Appliquons ce principe aux tableaux n°1 et n°2
Tableau
a b c d e
A 0 1 2 3 4 1
B 0 3 1 4 2 1
C 2 1 0 4 3 1
D 0 2 3 1 4 1
E 1 0 3 2 4 1
5

a b c d e
A 0 1 2 2 2
B 0 3 1 3 0
C 2 1 0 3 1
D 0 2 3 0 2
E 1 0 3 1 2
0 0 0 1 2 3

64
Tableau 1.1
a b c d e
A 0
B 0
C 0
D 0
E 0

Dans le cas du premier exemple, on a pu choisir un zéro par ligne et par colonne, on a donc la
solution au problème posé : c’est à dire à Monsieur
A on attribue le poste a
B on attribue le poste e
C on attribue le poste c
D on attribue le poste d
E on attribue le poste b
La somme des 5 chiffres est égale à 9.

B 1 e
1 1 1
A 1 d
1 1
1
O 1 D 1 S
1 1 c 1
C
1 1 b 1
E 1 a
Exemple 2

Tableau n°2
A b C d e
A 1 2 3 4 5
B 1 4 2 5 3
C 3 2 1 5 4
D 1 2 3 5 4
E 2 1 4 3 5

65
Tableau n°2.1
a b c d e
A 0 1 2 3 4 1
B 0 3 1 4 2 1
C 2 1 0 4 3 1
D 0 1 2 4 3 1
E 1 0 3 2 4 1
5
Tableau n°2.2.

a b c d e
A 0 1 2 1 2
B 0 3 1 2 0
C 2 1 0 2 1
D 0 1 2 2 1
E 1 0 3 0 2
0 0 0 2 2 4
Tableau n°2.3
a b c d e
A 0
B 0
C 0
D
E 0

Dans le cas de l’exemple 2, si l’on pouvait choisir un zéro par ligne et par colonne, on aurait
la solution mais ceci n’est pas possible.
De plus, nous savons déjà que le coût d’affectation ne serait pas inférieur à 9 (somme des
chiffres ôtés aux différentes rangées pour faire apparaître un zéro par ligne et par colonne)

- Affectons le zéro unique de la ligne A, nous ne pouvons plus affecter sur la ligne B
que le zéro de la colonne « e »
- Affectons le zéro unique de la colonne « c », nous ne pouvons plus affecter aucun zéro
de la ligne D, l’unique zéro qu’elle contenait ayant été exclu de l’affection par le
choisi du zéro de la ligne A
- Enfin sur la ligne E, nous avons le choix entre le zéro de la colonne « b » et celui de la
colonne « d ». Retenons par exemple le premier d’où le tableau 2..3
Nous n’avons pas pu obtenir la solution mais il convient de vérifier que nous ne pouvons
affecter d’avantage de zéros.
A on attribue le poste a
B on attribue le poste e
C on attribue le poste c

66
E on attribue le poste b
D n’a pas poste et le poste d n’a pas été attribué
La somme des 5 chiffres est égale à 8.

Pour cela, considérons un graphe en forme de réseau de transport dont les arcs tous de
capacité 1, correspondent, entre les points A, B, C, D, E d’une part, et les sommets a, b, c, d ,
e d’autre part, aux zéro du dernier tableau 2.3.

1 c
C 5

1 B 1 e 1
5 5 1 5
1 1 5
5
1 A 1 a 1
O 5 5 S
1 1 1
5 5
D 1
b
1
1 5
5
E 1 b

Nous avons donc un flot maximal ce qui veut dire que, quels que soient les choix sur le
tableau 2.3, nous n’arriverons pas à affecter plus de 4 zéros. Pour résoudre le problème nous
aurons recours à la méthode hongroise (deux mathématiciens hongrois EGERVARY et
KÖNIG).

Reprenons le tableau 2.3, en mentionnant également les zéros que nous avons dû éliminer des
choix ultérieurs par suite d’affectation d’un autre zéro sur la même ligne ou la même
colonne : ces zéros seront dits : zéros barrés, les zéros affectés seront dits : zéros encadrés
a) Marquons toute ligne n’ayant pas de zéro encadré (ici la ligne D)
b) marquons ensuite toute colonne ayant un zéro barré sur une ligne marquée (ici la colonne
« a »)
c) Marquons alors toute ligne ayant un zéro encadré dans une colonne marquée (ici la ligne
A) et revenons à b) jusqu'à ce que le marquage ne soit plus possible (c’est le cas dès à
présent de notre exemple)

67
a B c d e
A 0 1 2 1 2
B 0 3 1 2 0
C 2 1 0 2 1
D 0 1 2 2 1
E 1 0 3 0 2

◼ Traçons alors un trait sur les lignes non marquées et les colonnes marquées (tableau n°6)
◼ Considérons le plus petit nombre du tableau restant : Retranchons le (ici 1) de tous les
éléments non rayés et ajoutons aux éléments rayés 2 fois (tableau 7)
Sur le tableau 7, il est maintenant possible d’affecter un zéro par ligne et par colonne, et ceci
de trois manière différentes qui constituent les solutions équivalentes du problème, en ce sens
qu’elles donnent toutes en revenant au tableau n°1, la somme 10 .
On remarquera que le coût de 10, correspond bien à la somme de la borne inférieure 9 trouvée
précédemment et du plus petit élément soustrait postérieurement au tableau.
Au cas où le tableau 2.4 n’aurait pas fourni la solution, il faut reprendre l’algorithme, après
avoir affecté le plus possible de zéros et recommencer la procédure de marquage, et ainsi de
suite jusqu'à obtention de la solution cherchée.

a b C d e
A
B
C
D
E

68
Chapitre 6 : Problème De Transport

Fondamentalement, dans les problèmes de transports, un des problèmes le plus classique en


gestion consiste à optimiser un gain, un coût, ou toutes autres valeurs fonctions de nombreux
paramètres. De plus ces paramètres ne peuvent généralement pas être fixés à volonté, mais
sont soumis à des contraintes.

La valeur à optimiser et les contraintes sont très souvent des fonctions linéaires des
paramètres. Il existe alors diverses techniques pour résoudre ce problème. Nous allons
présenter quelques-unes d’entre elles : la méthode géométrique, le simplexe, la méthode du
coin Nord-Ouest, la méthode de la différence maximale et l’algorithme Stopping Stone.

1. Prérequis : Programmation linéaire

1.1. Définitions et généralités

On appelle Programmation Linéaire (PL), une méthode de recherche opérationnelle ou le


problème mathématique qui consiste à optimiser (maximiser les profits ou minimiser les
coûts) une fonction linéaire de plusieurs variables qui sont reliées par des relations
linéaires appelées contraintes techniques de production. En utilisant les techniques de
résolution des systèmes d’équation et d’inéquation.

Les programmes linéaires seront résolus graphiquement ou par des méthodes algébriques en
particulier la méthode du simplexe. Un programme linéaire se présente sous la forme d’une
fonction linéaire : Z= f(x) qu’il faut optimiser (maximiser ou minimiser) sous des contraintes
(équations ou inéquations) linéaires.

En raison de sa pratique et de son utilité, les prérequis en Algèbre Linéaire sont nécessaires,
au préalable, en ce qui les techniques mathématiques de base (équations et inéquations
linéaires, système d’équations et d’inéquations linéaires, Matrice, Méthode de substitution,
Méthode de combinaison linéaire, Méthode de déterminant, Méthode de pivot de Gauss,
Méthode graphique pour les équations à 2 inconnus, …).

Dans le cas de la méthode graphique, chaque équation est représentée par une droite, la
solution est un point (s’il existe) d’intersection entre 2 droites. Réciproquement pour trouver
les coordonnées entre ces 2 droites, on résout le système formé par les équations de ces
droites.

69
1.2. La forme canonique

L’objectif de la programmation linéaire est de trouver la valeur optimale d’une fonction


linéaire sous contraintes linéaires. La fonction à optimiser est baptisée fonction coût ou
fonction économique. On la nomme généralement Z. Un problème de programmation linéaire
se modélise de la façon suivante : Soit la fonction économique Z que l’on souhaite optimiser
(maximiser ou minimiser) : Z = C1 × X1 + C2 × X2 + ... + Cn × Xn

Où les Xi sont des variables qui influent sur la valeur de Z, et les Ci les poids respectifs de ces
variables modélisant l’importance relative de chacune de ces variables sur la valeur de la
fonction économique. Les contraintes relatives aux variables s’expriment de la façon suivante

A1.1 × X1 + A1.2 × X2 + . . . + A1.n × Xn ≤ B1


A2.1 × X1 + A2.2 × X2 + . . . + A2.n × Xn ≥ B2
...
Am.1 × X1 + Am.2 × X2 + . . . + Am.n × Xn ≤ Bm
avec Xi ≥ 0 ∀i
Le modèle ci-dessus contient des contraintes de type « ≤ » et d’autres de type « ≥ ».
Cependant lorsqu’on voudra résoudre un problème, la première étape consistera à le
modéliser sous une forme dite « canonique ».

Pour un problème de maximisation la forme canonique se décrit qu’avec des contraintes de


type « ≤ » et pour un problème de minimisation la forme canonique se décrit qu’avec des
contraintes de type « ≥ ».

Si lors de la modélisation des contraintes de l’autre type sont apparues, il suffit de multiplier
par −1 les deux membres pour renverser l’opérateur.

La forme canonique d’un problème de type maximisation est :

MaxZ = C1 X 1 + C2 X 2 + ... + CnXn


 A1.1 X 1 + A1.2 X 2 + . . . + A1.n X n  B1
A X + A X + . . . + A X  B

s / c  2.1 1 2.2 2 2.n n 2

...
 Am.1 X 1 + Am.2 X 2 + . . . + Am.n X n  Bm
Avec Xi  0i

La forme canonique d’un problème de type minimisation est :

70
MinZ = C1 X 1 + C2 X 2 + ... + CnXn
 A1.1 X 1 + A1.2 X 2 + . . . + A1.n X n  B1
A X + A X + . . . + A X  B

s / c  2.1 1 2.2 2 2.n n 2

...
 Am.1 X 1 + Am.2 X 2 + . . . + Am.n X n  Bm
Avec Xi  0i

Nous allons dans un premier temps nous intéresser au problème de type maximisation

1.3. Modélisation : la mise en équation du problème


La première étape du problème est la modélisation sous sa forme analytique. Pour illustrer les
deux prochains axes (Graphiques et simplexe) nous allons modéliser jusqu’à la forme
canonique un exemple.

Exemple 1 :

Une entreprise fabrique deux types de ceintures : A et B. Le type A est de meilleure qualité
que le type B. Le bénéfice net est 200fcfa pour le type A et 150fcfa pour le type B. Le temps
de fabrication pour le type A est deux fois le temps de fabrication pour le type B et si toutes
les ceintures étaient du type B l’entreprise pourrait en fabriquer 1000 par jour.
L’approvisionnement en cuir est suffisant pour 800 ceintures par jour (type A ou B). Enfin
400 boucles de type A et 700 boucles du type B sont disponibles chaque jour. Quels sont les
nombres respectifs de ceintures des deux types à fabriquer chaque jour de manière
à maximiser le bénéfice total de l’entreprise ?

Étape de la modélisation du problème

a- Il convient de bien définir les variables d’activités du problème. Pour notre


exemple, en appelant x le nombre de ceintures du type A et y le nombre de ceintures
du type B à fabriquer chaque jour.
b- Il faut trouver la fonction économique (ou fonction objectif). La marge dégagée par
l’atelier sera de 200x+150y FCFA. Donc la fonction économique à maximiser est :
Z = 200x + 150y (unité : FCFA).
c- Définir les contraintes techniques du problème. En effet, l’entreprise ne peut pas
produire à l’infini ces deux types de ceintures. On obtient les contraintes suivantes :
x ≤ 400 (contrainte liée aux boucles de type A)
y ≤ 700 (contrainte liée aux boucles de type B)
x +y ≤ 800 (contrainte liée à l’approvisionnement en cuir)

71
2x + y ≤ 800 (contrainte liée au temps de fabrication)
Avec x ≥ 0 et y ≥ 0, les contraintes de non négativité

d- Etant donné l’objectif du producteur, de maximiser sa fonction économique, nous


obtenons le programme linéaire suivant sous sa forme canonique :
MaxZ = 200 x + 150 y
 x  400
 y  700

s /c x0; y0
 x + y  800
2 x + y  1000

1.4. Méthode graphique (ou géométrique)

Dans le plan, les systèmes linéaires à deux inconnues se résolvent graphiquement. Soit un
système d’inéquations à 2 inconnus, à chaque inéquation correspond un demi-plan (ensemble
solution) borné par la droite (D) d’équation associée à l’inéquation. Pour déterminer le demi
plan solution, on trace la droite (D) d’équation ax + by + c = 0, puis en choisissant un point
quelconque A du plan n’appartenant pas à la droite (D), on détermine le signe de l’expression
(ax + by + c), (par exemple l’origine du repère quand cela est possible) et on en déduit le plan
solution cherché.

L’ensemble solution du système sera l’intersection des m demi-plan solutions. Cette méthode
n'est applicable que dans le cas où il n'y a que deux variables. Son avantage est de pouvoir
comprendre ce que fait la méthode générale du Simplexe, sans entrer dans la technique
purement mathématique.

Exemple 2 : Soit à résoudre le problème suivant :

MaxZ = 1200 x1 + 1000 x2


3x1 + 4 x2  160
s / c
6 x1 + 3 x2  180
x1  0; x2  0

Les droites d’équations à représenter sont donc les suivantes :

3x1 + 4 x2  160  D : 3 x1 + 4 x2 = 160


 soit  1
6 x1 + 3x2  180  D2 : 6 x1 + 3x2 = 180

Les solutions, si elles existent appartiennent donc à cet ensemble appelé région des solutions
admissibles. D’où l’illustration ci-contre :

72
Il s'agit donc de chercher à l'intérieur de ce domaine, le couple (x1 , x2) maximisant la
fonction objectif. Or l'équation 1200 x1 + 1000 x2 = z0 est représentée par une droite de pente
constante (-1,2) dont tous les points (x1 , x2) fournissent la même valeur z0 pour la fonction
économique. En particulier, la droite 1200 x1 + 1000 x2 = 0 passe par l'origine et donne une
valeur nulle à la fonction économique. Pour augmenter la valeur de z0 et donc la fonction
économique, il suffit d'éloigner de l'origine (dans le quart de plan x1 ≥ 0 ; x2 ≥ 0) la droite de
pente -1,2 Pour respecter les contraintes, cette droite sera déplacée jusqu'à l'extrême limite où
il n'y aura plus qu'un point d'intersection (éventuellement un segment) avec la région des
solutions admissibles.

On remarquera que la solution optimale se trouve nécessairement sur le pourtour de la région

73
des solutions admissibles. La solution se trouvant sur les deux droites d'équation
3 x1 + 4 x2 = 160
6 x1 + 3 x2 = 180
la résolution de ce système conduit à la solution x1 =16 , x2 = 28, d'où z = 47200.

Remarques : Très simple à utiliser cette méthode atteint vite ses limites pour des problèmes
correspondant aux cas réels. En dehors des cas d’école, il est rare de pouvoir construire un
modèle avec seulement deux variables. Et quand ce n’est pas le cas, il faut alors utiliser
d’autres méthodes. Le chapitre suivant présente une des méthodes les plus utilisées, car très
performante : le simplexe.

1.5. Résolution par la méthode du simplexe

La méthode du simplexe a été mise au point par Georges Dantzig dans les années 1950. Elle
permet dans une très grande majorité des cas d’atteindre l’optimum du problème très
rapidement. Son principe consiste à parcourir un chemin sur les frontières du domaine des
solutions admissibles, en s’approchant à chaque étape un peu plus de l’optimum.
L’heuristique essaye de trouver parmi tous les chemins un qui soit très court.

1.5.1. La forme standard

L’algorithme du simplexe sert à résoudre un problème de programmation linéaire de type


maximisation (ou de minimisation), avec plus de deux variables d’activité, qui s’exprime sous
la forme canonique suivante :

MaxZ = C1 X 1 + C2 X 2 + ... + CnXn


 A1.1 X 1 + A1.2 X 2 + . . . + A1.n X n  B1
A X + A X + . . . + A X  B

s / c  2.1 1 2.2 2 2.n n 2
; Avec Xi  0i
...
 Am.1 X 1 + Am.2 X 2 + . . . + Am.n X n  Bm

Pour résoudre ce problème, on va commencer par transformer les inégalités en égalités en


introduisant une variable « d’écart : ei » positive ou nulle pour chacune des contraintes.

Par exemple avec une nouvelle variable e1, on peut transformer l’inégalité A1.1 × X1 + A1.2
× X2 + . . . + A1.n × Xn ≤ B1 pour la faire devenir l’égalité A1.1 × X1 + A1.2 × X2 + . . . +
A1.n × Xn + e1 = B1. Avec les m variables d’écart, notre problème devient :

74
MaxZ = C1 X 1 + C2 X 2 + ... + CnXn
 A1.1 X 1 + A1.2 X 2 + . . . + A1.n X n + e1 = B1
A X + A X + . . . + A X + e = B

s / c  2.1 1 2.2 2 2.n n 2 2
; Avec Xi  0i, ei  0i
...
 Am.1 X 1 + Am.2 X 2 + . . . + Am.n X n + em = Bm
Ceci est la forme standard du problème.
Exemple 3 :
Forme canonique Forme standard
MaxZ = 200 x + 150 y MaxZ = 200 x + 150 y
 x  400  x + e1 = 400
  y + e2 = 700
 y  700 
s /c s /c
 x + y  800  x + y + e3 = 800
2 x + y  1000 2 x + y + e4 = 1000
x0; y0 x  0 ; y  0; e1  0 ; e2  0 ; e3  0 ; e4  0

1.5.2. Le tableau du simplexe

Avant de mettre en œuvre l’algorithme du simplexe, on transforme ces équations sous la


forme d’un tableau qui aura n + m + 2 colonnes, et m + 2 lignes :
- La première ligne contiendra le nom de nos colonnes.
- Il y aura une ligne pour chacune des équations 1 à m.
- La dernière ligne sert pour la fonction économique.
- La première colonne sert à connaître ce qu’on va appeler les « variables en base ». Au
début on y placera la variable d’écart Ei de la ligne. Les variables qui ne seront pas
dans cette colonne seront « hors base ».
- Ensuite on place n colonnes, une pour chaque variable Xj .
- Ensuite on place m colonnes, une pour chaque variable Ei.
- Enfin on place une dernière colonne qui contiendra la somme de chaque ligne (Bi).
- Enfin la valeur «Somme» de la ligne  j est initialisée avec 0 (sauf exception expliquée

plus loin).
Donc le tableau obtenu est le suivant :
X1 X2 … Xn E1 E2 … Em Somme
E1 A1.1 A1.2 … A1.n 1 0 0 0 B1
E2 A2.1 A2.2 … A2.n 0 1 0 0 B2
.
.
Em Am.1 Am.2 … Am,n 0 0 0 1 Bm
j C1 C2 … Cn 0 0 0 0 0

75
Avant d’aller plus loin, décryptons le sens de ce tableau. Tout le long de l’algorithme du
simplexe ce tableau va donner des solutions (de plus en plus optimales pour la valeur de Z) du
système d’équations de la forme standard. Dans cette solution toutes les variables hors base
ont une valeur nulle. La valeur des variables en base se lit dans la dernière colonne (la
colonne « Somme »). Enfin le  j de la colonne «Somme» donne l’opposé de la valeur de Z.

Donc ce premier tableau du simplexe donne la solution de départ qui va servir à amorcer
l’algorithme du simplexe : toutes les variables Xi sont à 0, toutes les variables d’écart Ei
valent le Bi de leur ligne d’équation et la valeur de Z est 0. Sur ce tableau la dernière ligne
 j donne les gains (ou les coûts, si la valeur est négative) marginaux des variables de leur

colonne.

Autrement dit, elle permet de savoir de combien va augmenter (ou diminuer si la valeur est
négative) la valeur de Z si on augmente de 1 la variable de cette colonne. Par exemple, si on
arrive à trouver une solution admissible qui augmente de 1 la valeur de X2, alors la valeur de
Z va augmenter de C2.

Exemple 4 : Soit à résoudre le programme linéaire suivant :


 x + y  900  x + y + e1 = 900
  x + 2 y + e = 1200
 x + 2 y  1200  2

F. canonique  7 x + 3 y  7000  F. standard :  7 x + 3 y + e3 = 7000


 MaxZ = 1000 x + 1200 y  MaxZ = 1000 x + 1200 y
 
 x0 y0  x  0 y  0 ei  0

Le tableau du simplexe se présente comme suit :

V Hors base x Y e1 e2 e3 R test

V dans la base
e1 1 1 1 0 0 900
e2 1 2 0 1 0 1200
e3 7 3 0 0 1 7000
Z 1000 1200 0 0 0 0

1.5.3. Résolution par l’algorithme de Dantzig

Partons de l’exemple 4 précèdent.

76
 x + y + e1 = 900
 x + 2 y + e = 1200
 2

F. standard :  7 x + 3 y + e3 = 7000
 MaxZ = 1000 x + 1200 y

 x  0 y  0 ei  0

Elle prend pour point de départ la solution pour laquelle la fonction économique a pour valeur
0. A chaque étape, on cherche à améliorer la solution de départ afin d’atteindre l’optimum :
Sommet O, : x = 0, y = 0 , Z = 0 e1 = 900 , e2 = 1200, e3 = 7000. Cette solution est appelée
solution de base. Les variables non nulles (e1, e2, e3) sont dites variables dans la base. Les
variables nulles (x et y) sont dites variables hors base.

Il convient de modifier la solution de base afin d’améliorer la fonction économique. Dans


notre exemple, elle doit augmenter. L’objectif étant de rechercher un maximum, cela signifie
que l’une des variables hors base va prendre une valeur positive tandis qu’une variable dans la
base (variable d’écart) va prendre la valeur 0. Ce qui conduit à sélectionner une variable qu’il
faudra augmenter pour améliorer la fonction économique.

1ère itération
(1) Sélection de la variable entrante.

La lecture des coefficients de la fonction économique (1000x+1200y) nous indique que y


accroît d’avantage Z que x. Le coefficient 1200 représente l’augmentation de la fonction
économique lorsque y passe de 0 à 1. La variable y va entrer donc dans la base ainsi la
variable entrant dans la base est sélectionnée d’après le critère de Dantzig.
Dans la fonction économique exprimée en fonction des variables hors base, la variable hors
base affectée du plus grand coefficient positif sera sélectionnée.

(2) Sélection de la variable sortante

On exprime les variables principales (variables de la base) en fonction des variables hors base.
On a y ≠ 0 et x = 0 (variable hors base), les variables e1, e2, e3 s’écrivent :
e1=900 - y ≥ 0  y ≤ 900
e2=1200 - 2y ≥ 0  y ≤ 1200/2= 600
e3=7000 -3y ≥ 0  y ≤ 7000/3
La valeur maximale de y est : Y = Min (900,600, 7000/3) = 600. La variable d’écart e2
devient : e2 =1200-2 × 600 = 0. Le choix de y comme variable dans la base a annulé la variable
d’écart e2 qui prend alors la place de y comme variable hors base. On a, à l’issu de la 1ère
itération :

77
- Variables hors base : x = 0, e2 = 0
- Variables dans la base : y = 600, e1= 900-600 = 300, e3=7000-3 ˟ 600=5200,
Z=1200 ˟ 600 =720000
Le critère de sortie est donc : la variable dans base correspondant au rapport le plus
petit positif sera sélectionnée (l’infini et un rapport négatif ne sont pris en compte)

2ème itération
On veut exprimer des nouvelles variables dans la base e1, y et e3 et la fonction économique en
x e
fonction des variables hors base, x et e2. On avait en b) e2 = 1200 − x − 2 y  y = 600 − − 2 ,
2 2
en remplaçant cette valeur de la variable entrante on a :
x e2 x e2 3x 3e2 11x 3e2
e1 = 300 − − ; y = 600 − + ; e3 = 7000 − 7 x − 100 + + = 5200 − − ;
2 2 2 2 2 2 2 2
x e2
Z = 1000 x + 1200(600 − − ) , Z = 720000 + 400x - 600e2 Après la première itération, le
2 2
programme devient :

 x e
 + e1 − 2 = 300
2 2

 x e
+ y + 2 = 600
 2 2
 11x 3e2
 + + e3 = 5200
 2 2
400 x − 600e2 = −720.000

a) Sélection de la variable entrante. : On n’a pas intérêt à faire rentrer la variable e2 qui
diminuera la fonction économique de 600. C’est donc la variable x rentre dans la base d’après
le critère de DANTZIG.
b) Sélection de la variable sortante. : x entrant dans la base, e2, étant hors base, reste égale à 0.
On a alors :
x
e1= 300 - ≥0  x ≤ 600
2
x
y = 600 - ≥0  x ≤ 1200
2
11x
e3 = 5000- ≥0  x ≤ 10400/11
2
La valeur maximale de x est : x = Min (600, 1200, 945) = 600. La variable d’écart e1 = 300-
600
= 0. Cette seconde itération nous a permis d’atteindre un autre sommet :
2

78
- Les variables hors base sont : e1 = 0, e2 = 0
600
- Les variables dans la base sont : x= 600, y = 600 - = 300, e3 = 5200 -11× 300
2
=1900
- La fonction économique a pour valeur : Z =720000 +400 × 600 = 960000
Les variables dans la base x, y et e3 et les variables hors base son e1 et e2. Tous les coefficients
des variables hors base de la fonction économique sont négatifs. Si on fait rentrer ces valeurs
dans la base, on diminuera la valeur de la fonction économique. La solution trouvée est donc
optimale : Z= 960000 -800 e1- 200 e2

Conclusion

Dans le cadre de la recherche d’un maximum, tous les coefficients de la fonction économique
sont négatifs ou nuls. La solution trouvée est optimale. Dans le cas de notre exemple à
l’optimum on a : x= 600, y =3 00, e3=1900, e1=e2=0 et Z = 960000

Et le programme devient :
 x + 2e1 − e2 = 600
 y − e1 + e2 = 300


 e3 − 11e1 + 4e2 = 1900
−800e1 − 200e2 = −960.000

Ainsi, les itérations liées à la résolution du programme standard initial se présente comme
suit :
1ère itération
V Hors base X Y e1 e2 e3 R test

V dans la base
e1 1 1 1 0 0 900 900/1=900
e2 1 2 0 1 0 1200 1200/2=600→
e3 7 3 0 0 1 7000 7000/3=2333.3
Z 1000 1200 0 0 0 0

Critère de sélection de la variable entrant dans la base: On sélectionne la variable HB


ayant le plus grand coefficient positif dans la ligne Z. Ici c’est 1200 (colonne en bleu, y
rentre dans la base), puis on calculera le test afin de voir le critère de sortie, c'est-à-dire,
prendre les coefficients du résultat (R) et les divisés par les coefficients du critère entrant
pour obtenir le test (dernière colonne).

79
A partir de ce test, on choisira le plus petit élément afin d’indiquer le critère de sortie (ici
c’est la ligne e2 en jaune qui représente la ligne pivot qui permettra à travers la méthode du
pivot de Gauss de modifier les autres lignes dans le processus d’itération avenir). D’où le
tableau ci-dessous.

2ème itération

VHB X ° e1 e2 e3 R test
VB
e1 ½ 0 1 -1/2 0 300 300/0.5=600→
Y ½ 1 0 1/2 0 600 600/0.5=1200
e3 11/2 0 0 -3/2 1 5200 5200/5.5=945.45
Z 400 0 0 -600 0 -720000

Processus d’itération est à reproduire tant que les coefficients de lignes Z ne sont pas tous
nuls ou inférieurs à zéro. Alors, le critère de sélection de la variable entrant dans la base:
On sélectionne la variable HB ayant le plus grand coefficient positif dans la ligne Z. Ici
c’est 400 (colonne en bleu), le test indique que l’on choisira le critère de sortie e1 (x rentre
dans la base). D’où le tableau ci-dessous.

Solution
VHB ° ° e1 e2 e3 R
VB
x 1 0 2 -1 0 600
y 0 1 -1 1 0 300
e3 0 0 -11 4 1 1900
Z 0 0 -800 -200 0 -960000

Nous constatons que les éléments de la ligne Z (en jaune) sont tous nuls ou négatifs, le
processus d’itération s’arrête. Les solutions du programme se lisent sur la dernière colonne
(R). Donc x = 600 et y = 300. Nous avons donc ici atteint la solution optimale.

Remarques importantes:

(1) S'il existe une variable HB ayant un coefficient positif dans la ligne Z et telle que tous
les coefficients correspondants dans le tableau soient nuls ou négatifs, alors la solution
est infinie ;

(2) Si, à la fin des itérations, une variable est HB avec un coefficient nul dans la ligne Z,
alors on a une arête (plan,...) optimale. Les autres sommets solutions sont obtenus en
faisant rentrer cette variable dans la base.

80
1.6. Le programme DUAL
A tout programme linéaire appelé PRIMAL correspond un programme linéaire appelé DUAL
obtenu de la manière suivante:

PRIMAL DUAL
M CONTRAINTES D'INFÉRIORITÉ N contraintes de supériorité
N VARIABLES D'ACTIVITÉ n variables d'écart
M VARIABLES D'ÉCART m variables d'activité
ÉCRITURE EN LIGNE écriture en colonne

NB : En outre, le dual permet de contourner la difficulté liée à la résolution des


programmes linéaires à minimiser du fait des variables artificielles qui intègrent sa
forme standard en dehors des variables d’écart.

Exemple 5 : Partons du programme linéaire de l’exemple 2

PRIMAL DUAL
3 x1 + 4 x2 ≤ 160 3 y1 + 6 y2 ≥ 1200
6 x1 + 3 x2 ≤ 180 4 y1 + 3 y2 ≥ 1000
Max z = 1200 x1 + 1000 x2 Min w = 160 y1 + 180 y2
x1≥ 0 ; x2 ≥ 0 y1 ≥ 0 ; y2 ≥ 0

A l'optimum, le primal et le dual sont liés par les règles suivantes: (1) Les fonctions
objectifs z et w ont la même valeur optimale. (2) La valeur marginale d'une variable dans un
programme est égale à l'opposé de la valeur optimale de la variable associée dans l'autre
programme et réciproquement. Exemple après itération, nous avons les solutions suivantes :

PRIMAL z = 47200 x1 x2 e1 e2
valeurs optimales 16 28 0 0
valeurs marginales 0 0 -160 -120
DUAL w = 47200 u1 u2 y1 y2
valeurs optimales 0 0 160 120
valeurs marginales -16 -28 0 0

2. Programmation linéaire sous logiciel


De nos jours, il existe une panoplie de logiciel qui permettent de résoudre des problèmes de
programmation linéaire. Nous nous focaliserons sur Excel du fait l’accessibilité et du logiciel
MathStudent.

81
2.1. Résolution d’un programme linéaire avec Excel

Le solveur d'EXCEL est un outil puissant d'optimisation et d'allocation de ressources. Il peut


vous aider à déterminer comment utiliser au mieux des ressources limitées pour maximiser les
objectifs souhaités (telle la réalisation de bénéfices) et minimiser une perte donnée (tel un
coût de production).

En résumé, il permet de trouver le minimum, le maximum ou la valeur au plus près d'une


donnée tout en respectant les contraintes qu'on lui soumet. Plutôt que de vous contenter
d'approximations, vous pouvez faire appel au solveur pour trouver la meilleure solution.
Utilisez le solveur lorsque vous recherchez la valeur optimale d'une cellule donnée (la
fonction économique) par ajustement des valeurs de plusieurs autres cellules (les variables)
respectant des conditions limitées supérieurement ou inférieurement par des valeurs
numériques (c’est à dire les contraintes).

La résolution d'un programme linéaire avec Excel s'effectue en deux phases. Une première
phase consiste à écrire le programme linéaire dans le chiffrier en assurant qu'il existe une
cellule pour chaque variable, la fonction-objectif ainsi que les membres de gauche et de droite
de toutes les contraintes. La deuxième phase consiste à résoudre le programme linéaire avec le
solveur d'Excel. Pour ce faire, l’exemple 6 suivant sera utilisé :

Exemple 6 : Nous devions maximiser la fonction économique.

Max Z = 10x1 + 15x2 + 25x3


sous les contraintes :
1x1 + 2x2 + 4x3 <= 20000
1x1 + 1x2 + 3x3 <= 16000
3x1 + 5x2 + 3x3 48000
x1 , x2 , x3 >= 0
a- Utilisation du solveur

Il est fort probable que les commandes du solveur n’apparaissent pas encore dans le menu
Outils. Afin d’effectuer une programmation linéaire sous Excel, il est nécessaire, au
préalable, d’installer les macros complémentaires du solveur, qui est également utile pour
résoudre les programmes liés à la logistique (Problème de transports, problème d’affectation,
problème de la pétrolière, Problème de fabrication d'horaire pour le centre d'appels, …).

82
➢ Pour installer le solveur :
1 Cliquez sur la section "Données"
2 Cliquez avec le bouton droit de la souris sur une section, i.e. sur la barre d'outils
apparaissant sous Données;
3 Sélectionnez "Personnaliser la barre d'outils Accès Rapide";
4 Allez dans "Compléments" et sélectionnez le "Complément Solveur";
5 Une section "Analyse" contenant le "Solveur" devrait alors apparaître dans la
section "Données".
➢ Pour résoudre le problème avec le solveur :
1 Cliquez sur la section "Données";
2 Cliquez sur l'outil "Solveur" dans la section "Analyse";
3 La fenêtre de l'outil solveur apparaît.
Il faut alors indiquer au Solveur dans quelles cellules se trouvent vos variables et votre
fonction objectif (valeur cible). Il faut également indiquer s'il s'agit d'une minimisation ou
d'une maximisation. Finalement, il faut entrer toutes vos contraintes (i.e. "ajouter une
contrainte"). Pour l'ajout des contraintes, une fenêtre apparaît. Vous devez alors indiquer la
cellule où se trouve le membre de gauche, choisir une inégalité et indiquer la cellule où se
trouve le membre de droite. En appuyant sur le bouton "Options", on peut par la suite indiquer
s'il s'agit d'un programme linéaire ou non linéaire.

b- Illustration à partir de l’exemple


Le problème peut être synthétisé sur cette feuille de calcul EXCEL:

83
(1)Les variables sont les quantités respectives des différents investissements (cellules jaunes).
(2) Les contraintes sont les valeurs imposées dans la donnée (cellules rouges). (3) La cellule
cible est celle contenant la formule exprimant la valeur à optimiser (cellules bleues).

Afin d’optimiser la fonction économique, nous allons utiliser la commande Solveur… du


menu Outil. Première étape : Configurer l’outil Solveur. Il est fort probable que les
commandes du solveur n’apparaissent pas encore dans le menu Outils. Ainsi déroulez le menu
Outils puis:

Deuxième étape : Spécifications de la cellule cible. Dans la zone Cellule cible à définir,
tapez la référence de la cellule que vous voulez minimiser, maximiser (c’est à dire la fonction
économique).

(1)Si vous désirez maximiser la cellule cible, choisissez le bouton Max. (2) Si vous désirez
minimiser la cellule cible, choisissez le bouton Min. (3) Si vous désirez que la cellule cible se
rapproche d'une valeur donnée, choisissez le bouton Valeur et indique la valeur souhaitée
dans la zone à droite du bouton.

Remarques : • Allez plus vite en cliquant directement sur la cellule à spécifier plutôt que de
taper sa référence au clavier. • La cellule cible doit contenir une formule dépendant
directement ou indirectement des cellules variables spécifiées dans la zone Cellules variables.

84
Troisième étape : Spécifications des cellules variables. Tapez dans la zone Cellule variables
les références des cellules devant être modifiées par le solveur jusqu'à ce que les contraintes
du problème soient respectées et que la cellule cible atteigne le résultat recherché.

Remarques :

• Allez plus vite en cliquant-glissant directement sur les cellules à spécifier plutôt que de
taper leurs références au clavier.
• Il est probable que le solveur vous propose automatiquement les cellules variables en
fonction de la cellule cible. Contrôlez que sa proposition n’est pas trop exotique.
• Vous pouvez spécifier jusqu'à 200 cellules variables.
• Dans le programme initial, on définit les cellules variables par des zéros.
Quatrième étape : Spécifications des contraintes

A l'aide des boutons Ajouter, Modifier et Supprimer de la boîte de dialogue, établissez votre
liste de contraintes dans la zone Contraintes.

Remarques : • Après avoir cliqué dans chaque case à compléter, il suffit de cliquer dans les
cellules correspondantes directement sur la feuille Excel. Puis sur la touche pour
confirmer • Une contrainte peut être une limité inférieurement (≤), supérieurement (≥) ou
limité aux nombres entiers (opérateur ent). • La cellule à laquelle l'étiquette Cellule fait
référence contient habituellement une formule qui dépend des cellules variables. • Le solveur
gère jusqu'à 200 contraintes.

85
Cinquième étape : Les options du solveur

Cette boîte de dialogue permet de contrôler les caractéristiques avancées de résolution et de


précision du résultat. En général, la plupart des paramètres par défaut sont adaptés à la
majorité des problèmes d'optimisation. Concentrons-nous sur quelques options plus
spécifiques:

- Modèle supposé linéaire : A cocher seulement si le système d'équations est linéaire.


Si la case est activée alors que le problème n'est pas linéaire, EXCEL affichera un
message d'erreur pendant la résolution. En revanche, si le problème est linéaire et que
la case est activée, la résolution est plus rapide.
- Différence entre problème linéaire et non linéaire : Sur un graphe, un problème
linéaire serait représenté par une droite. On trouve donc dans un problème linéaire des
opérations arithmétiques simples comme : l'addition et la soustraction. Sur un graphe,
un problème non linéaire serait représenté par une courbe, traduisant une relation non
proportionnelle entre les variables du système. Le cas le plus courant est quand 2
variables du système sont multipliées l'une avec l'autre.
- Afficher le résultat des itérations : Interrompt le solveur et affiche les résultats
produits par chaque itération. Cette option permet de suivre étape après étape les
différents programmes de base.
Sixième étape : Résolution et résultat : Une fois tous les paramètres du problème mis en

place, le choix du bouton amorce le processus de résolution du problème. Vous


obtenez alors une de ces réponses :

86
Que faire des résultats du solveur : (1) Garder la solution trouvée par le solveur ou rétablir
les valeurs d'origine dans votre feuille de calcul. (2) Créer un des rapports intégrés du solveur

en sélectionnant celui qui nous concernera.

Septième étape : Rapport des réponses. Au bas de l’écran, vous pouvez obtenir le rapport
des réponses en sélectionnant la feuille correspondante:

Ce rapport donne l'évolution des cellules variables et de la cellule cible. On remarque donc
bien qu'il y a eu une maximisation du bénéfice.

87
Le rapport rappelle les différentes valeurs des contraintes, leurs formules, et dans quelle
mesure elles ont été respectées.

- Lié : La valeur finale de la cellule contenant une contrainte atteint effectivement la


valeur maximum. Exemple: $B$10 devait-être <=16’000 et vaut bien finalement
16’000. La Marge (que l’on appelle temps mort) est donc égale à 0.
- Non lié : La contrainte est respectée mais la valeur finale de la cellule n'est pas égale à
la valeur maximum ou minimum de la contrainte. Exemple : Pas d’exemple ici pour ce
cas. Les Marges (temps mort) valent ici 0 pour les 3 contraintes.

2.2. Programmation Linéaire sous MathStudent


1- Cliquer sur l’icône
2- Cliquer sur système linéaires pour les représentations graphique ou sur simplexe pour
la méthode des tableaux

Menu des
Outils

Commandes
pour résoudre
les PL par les
tableaux

Commandes
pour résoudre
par le
graphique

Nous reprenons l’Exemple 6 : Nous devions maximiser la fonction économique.

88
Max Z = 10x1 + 15x2 + 25x3
sous les contraintes :
1x1 + 2x2 + 4x3 <= 20000
1x1 + 1x2 + 3x3 <= 16000
3x1 + 5x2 + 3x3 48000
x1 , x2 , x3 >= 0

Etant donné que nous avons trois variables d’activité, nous sommes obligés de résoudre par la
méthode du simplexe. Pour cela nous allons saisir les données dans l’interface « simplexe ».
Ainsi, cliquer sur cette commande et vous obtenez l’image ci-contre :

Pour indiquer
- Supérieur ou égal ≥
- Inférieur ou égal≤

Saisir le nombre de
contraintes techniques
(Les équations)

Saisir le nombre de
variables d’activité

Cliquer selon S’active en dernière lieu,


l’objectif lié à la une fois les étapes
fonction économique prédéfinies sont effectuées

Dans notre exemple, nous cliquons sur la « maximisation », puis nous cliquons sur
« inéquations de type <= », en suite nous saisissons le chiffre (3) pour le nombre de
contraintes de même pour le nombre de variables, car notre programme contient 3 contraintes
(inéquations) et 3 variables inconnues (x1, x2, x3). D’où :

89
Ensuite cliquer sur « Suivant » afin d’obtenir l’interface qui nous permettra de saisir la
fonction économique, ainsi que les différentes contraintes du programme linéaire. La touche
« Suivant » permet d’accéder l’interface suivante :

Saisir la fonction
économique

Saisir les
contraintes de
production

NB : le logiciel ne tient pas compte des majuscules, et la saisir des noms des variables se fait
dans l’ordre des lettres de l’alphabet. Donc, ici : x = x1, y = x2, z = x3. En outre, ne pas
espacer les éléments saisis, ne pas intégrer le signe de la multiplication entre les coefficients
et les variables. Cliquer sur les fenêtres pour saisir les données.

90
Une fois ce tableau obtenu, cliquer sur « Suivant » ensuite sur « résolution », puis cliquer sur
« itération suivante » de façon continue afin de générer les résultats du programme linéaire.

Le logiciel indique
la fin des itérations

Le logiciel vous
propose une
solution optimale
du PL

Cliquer sur
historique pour
visualiser toutes
les itérations : de
la forme
canonique à la
solution finale

91
Il est également
possible de
visualiser la
version
imprimante

3. Résolution par la méthode de transport :

Nous partirons d’un exemple pour exposer la méthode puis nous généraliserons le principe.

Exemple 1:

Soit trois origines I , II et III disposant de 10,16,30 tonnes de marchandises et quatre


destinations 1 ; 2 ; 3 ; 4, demandant 11 ; 14 ; 12 ; 19 tonnes de celles-ci respectivement.
Connaissant le coût de transport de l’origine i vers la destination j noté c i j , comment
organiser ce transport au moindre coût ? Voici la matrice des coûts de transport.
i 1 2 3 4 a i= qi
j disponible
I 7 8 10 19 10
II 3 7 5 11 16
III 9 5 5 18 30
b j= q. demandée 11 14 12 19 56

92
On note :
- ai la quantité disponible à l’origine i ;
- bj la quantité demandée par la destination j ;
Remarquons ici l’offre est égale à la demande (O=D= 56)
Toute solution du problème est constituée par un ensemble de nombres positifs ou nuls x ij
représentant la quantité effectivement transportée de l’origine i vers la destination j et tels
que :
m n
(1)  ai =  b j
i =1 j =1
(en supposant que l’offre est égale à la demande)

x
j =1
ij = ai i=1, 2,……..,m.

x
i =1
ij = bi j=1, 2, …….., n.

m n
(2) Minimiser Z=  c x
i =1 j =1
ij ij ai , bj , cij sont des nombres positifs

Nous avons affaire à une programmation linéaire particulière qu’il n’est pas intéressant de
résoudre par l’algorithme du simplexe.

Généralisation :

Soit m origines disposant des qi ( i=1,2,3, …., m ) et n destinations demandant les quantités
qj ( j=1,2,3,… ,n ) . Connaissant le coût de transport de l’origine i vers la destination j noté cij
, comment organiser ce transport au moindre coût ?

Entre les m origines et les n destinations constituant un graphe biparti on peut tracer m * n
arcs qui symbolisent les chemins que l’on peut employer pour transporter des marchandises
de chaque origine vers chaque destination.

Soit O1 ..........Om les quantités de marchandises disponibles dans chaque origines et


D1,.............Dn les quantités demandées à chaque destination. On s’impose que la somme des
quantités disponibles soit égale à la somme des quantités demandées à chaque destination.

◼ Si l’offre est supérieure à la demande on crée une destination fictive vers laquelle
tous les coûts de transport sont nuls puisqu’elles représentent en fait des
marchandises qui vont restées sur leurs lieux d’origine.

93
◼ Si la demande est supérieure à l’offre, on crée une origine fictive, à partir de
laquelle les coûts de transport sont arbitrairement élevés pour ne pas troubler le
processus de minimisation du coût des marchandises effectivement transportées.

Les capacités des arcs sont supposés illimités, mais chaque arc a un coût unitaire de transport
Ci,j . Soit xi,j les quantités transportées de l’origine i à la destination j. On cherche Min
Somme xi,j*ci,j . En respectant les contraintes Somme (i - origines) xij = Oi , Somme (j -
destinations) xi,j = Dj . En Programmation linéaire, comme nous l’avons susmentionné
précédemment : il s’agit d’une optimisation d’une fonction linéaire des xij sous des contraintes
également linéaires.

Définitions
1) Solution admissible : une solution « admissible » est un ensemble de valeurs xij qui
satisfait aux contraintes sans nécessairement minimiser le coût de transport (2).
2) Une solution de base d’un programme de transport est une solution admissible
comportant (m+n-1) xij positifs dont le graphe ne comporte pas de cycle.
3) Une solution de base comporte donc mn-(m+n-1) xij nuls, c’est-à-dire (m-1)(n-1)
zéros ; le graphe d’une solution de base comporte (m+n) sommets et (m+n-1) arcs.
De plus il est sans cycle ; il s’agit donc d’un arbre.
La résolution des programmes de transport s’articule en deux phases :

a- L’obtention d’une solution de base ;


b- l’optimisation de celle ci à l’aide de l’algorithme de « Stepping- stones »

Commençons par indiquer deux méthodes permettant d’obtenir une solution de base ou s’y
ramenant.

Recherche de solution de base :

3.1. Méthode du coin Nord-Ouest.

Il s’agit d’une méthode rapide sans fondement théorique qui consiste à transporter de l’origine
I vers la destination 1 (coin nord-ouest du tableau) la quantité maximale possible c’est-à-dire
de a1 et b1, soit ici min {10 ; 11} =10, ce qui épuise l’origine I et il reste à pourvoir la
destination 1 de (11-10)=1 à partir de l’origine II. Le reste du stock (16-1)=15 de l’origine II
épuise la demande (de 14 unités) de 2 et fourni 1 unité à la destination 3. Les disponibilités
de l’origine III épuisent le reste de la destination 3 (12-1)=11 et la demande de la destination
4. Nous obtenons le tableau suivant :

94
1 2 3 4 ai
I 10 0 0 0 10
II 1 14 1 0 16
III 0 0 11 19 30
bj 11 14 12 19 56

Le coût de cette opération est Ct=710+3+714+5+511+1819=573.


Cette procédure aboutit nécessairement à une solution sans cycle. La solution obtenue ici est
une solution de base car on a (4-1)(3-1)=6 zéros.

3.2. Méthode de la différence maximale.

Elle consiste à calculer pour chaque rangée (colonne ou ligne) la différence entre le coût le
plus petit et celui immédiatement supérieur ( ou égal). On recherche la différence maximale 
parmi les lignes et les colonnes et on affecte à la liaison de plus petit coût dans la rangée
correspondant à , soit x*(i* ; j*), la quantité la plus élevée possible xi*j*=min{ai* ; bj*). On
épuise ainsi une disponibilité, une demande ou les deux en même temps. On réduit le
problème en supprimant la rangée ou les rangées (ligne ou colonne) épuisées et on reprend le
processus avec le problème réduit ainsi de suite.

Reprenons le premier exemple.

Premier pas :

i 1 2 3 4 ai L
j
I 7 8 10 19 10 1
II 3 7 5 11 16 2
III 9 5 5 18 30 4
bj 11 14 12 19 56
C 4 2 5 7

La différence maximale 4 = 18 – 11 = 7 est relative à la colonne 4 dans laquelle le coût le


plus faible est CII 4 = 11, on affecte à la liaison II-4 la quantité xII 4 = min (aII, b4 ) = min (16,
19 )=16. Ce qui a pour effet d’épuiser l’origine II qu’on va supprimer du tableau suivant, donc
la disponibilité résiduelle de la destination 4 est b4 : b4 = 19-16= 3.

95
Deuxième pas :
i 1 2 3 4 ai L
j
I 7 8 10 19 10 1
III 9 5 5 18 30 4
bj 11 14 12 3 40
C 2 3 5 1

La différence maximale 3 = 10 – 5 = 5, est relative à la colonne 3 dans laquelle le coût le


plus faible est CIII 3 = 5, on affecte à la liaison III-3 la quantité xIII 3 = min (aIII, b3 ) = min
(30, 12 )=12. Ce qui a pour effet d’épuiser la destination 3 qu’on va supprimer du tableau
suivant, il en résulte que la disponibilité résiduelle de l’origine III est a III : aIII = 30 -12=18.
Troisième pas
i 1 2 4 ai L
j
I 7 8 19 10 1
III 9 5 18 18 4
bj 11 14 3 28
C 2 3 1

La différence maximale III = 9 – 5 = 4, est relative à la ligne III dans laquelle le coût le
plus faible est CIII 2 = 5, on affecte à la liaison III-2 la quantité xIII 2 = min (aIII , b2 ) = min
(14, 18 ) =14. Ce qui a pour effet d’épuiser la destination 2 qu’on va supprimer du tableau
suivant. La disponibilité résiduelle de l’origine III est aIII : aIII = 18-14 = 4.
Quatrième étape
i 1 4 ai L
j
I 7 19 10 12
III 9 18 4 9
bj 11 3 14
C 2 1

La différence maximale I = 19 – 7 = 12, est relative à la ligne I dans laquelle le coût le


plus faible est CI 1 = 7, on affecte à la liaison I -1 la quantité xI1 = min (aI , b1 ) = min (10,
11) =10. Ce qui a pour effet d’épuiser l’origine I , qu’on va supprimer du tableau suivant. La
disponibilité résiduelle de la destination 1 est b1: b1 = 11-10 = 1.

96
Cinquième étape
i 1 4 ai L
j
III 9 18 4 9
bj 1 3 4

La suppression de la ligne I , fournit un tableau à une seule ligne, différence maximale I = 18


– 9 = 9, les quantités xIII1 = 1 et xIII4 = 3 sont imposées.
Voici le résumé de la solution obtenue et le graphe associé :
i 1 2 3 4 ai
j
I 10 0 0 0 10
II 0 0 0 16 16
III 1 14 12 3 30
bj 11 14 12 19 56

Le coût de cette opération est Ct=710+19+514+125+1611+183 =439.

Optimisation d’une solution de base : algorithme du STEPPING-STONE

Calcul des coûts marginaux à l’aide des potentiels

Première présentation :

Pour une solution de base (BALLA.HAMMER(B.H) par exemple), on crée un ensemble de


potentiels en attribuant un potentiel nul à un sommet quelconque du premier niveau (en
pratique celui du plus fort degré) ici III : uIII = 0, puis de proche en proche on attribue à
chaque sommet un potentiel (noté Ui pour l’origine i et Vj pour la destination j) tel que pour
tout arc (i, j) le l’arbre de liaison affectée l’on ait cij = Vj - Ui .

Principe :
1) On calcule ensuite les coûts marginaux ij = cij – ( Vjj - Ui ), pour les liaisons non
affectées sans devoir recourir à des chaînes de substitution.
2) A) si tous les ij sont positifs ou nuls, l’optimum est atteint et la solution cherchée
est donnée par les quantités xij trouvées.
B) Si tous les ij ne sont pas positifs ou nuls, on recherche la chaîne de substitution
U associé à ij négatif, qui permet de réaliser le transport auquel il correspond. On
cherche ensuite la quantité maximale déplaçable.

97
Soit u- l’ensemble des arcs du cycle représentant les liaisons sur lequel le transport est
diminué et Soit u+ l’ensemble des arcs du cycle représentant les liaisons sur lequel le
transport est augmenté : calculer : q = min{ xij } tel que (i,j)  u-
Substituer la quantité q le long du cycle pour obtenir une nouvelle
Solution Xij : = xij – q , pour si (i,j)  u-
Xij : = xij + q , pour si (i,j)  u+
xij inchangés pour (i,j)  u ; au besoin ramener cette nouvelle solution de base , passer à (1)
Privilégions maintenant la solution ne conduisant pas directement à l’optimum, ce qui nous
donne la possibilité d’exposer, concrètement la deuxième phase de résolution des problèmes
de transport.
Exemple 2

Voici la matrice des coûts de transport.

j 1 2 3 4 a i= qi
i disponible
I 7 8 5 19 4
II 3 7 2 11 6
III 9 5 10 18 3
b j= q. demandée 2 2 6 3 13
Voici le résumé de la solution obtenue par la méthode de B.H et le graphe associé :

1 2 3 4 Ui
I 0 0 4 0 -3
II 2 0 1 3 0
III 0 2 1 0 -8
Vj 7 -3 2 11

Ainsi pour la solution de B.H, on a figuré dans le tableau ci- dessous les valeurs des ij (
liaisons non affectées) . Les substitutions associées ij positifs conduisent à des solution plus
chères.
1 2 3 4
I +1 +6 * +5
II * +10 * *
III -2 * * -1

Comme III1 =-2, on peut effectuer une substitution : le cycle associé est III-1-II-3-III (on le
trouve en ajoutant III-1 à l’arbre associé (ou encore puisqu’il est de longueur 4 directement
sur le tableau de xij ). La quantité maximale q que l’on peut substituer le long de ce cycle est

98
fixée par le fait que xII1 , xIII1 doivent rester positifs ou nuls dans la solution : ce sont en effet
sur ces liaisons qu’on diminue les quantités transportées, ici q = 1.

Tableau des xij après substitution

1 2 3 4
I 4
II 1 2 3
III 1 2

On obtient ainsi une solution où tous les ij sont positif donc l’optimum est atteint. Cet
optimum est unique car aucun ij n’est nul, sinon on peut déduire par des substitutions pour
lesquelles ij = 0, des solutions équivalentes.

Tableau des ij associés


1 2 3 4
I +1 +6 * +5
II * +8 * *
III * * +2 +1

Deuxième présentation :
Nous avons vu que pour reconnaître qu’une solution de base obtenue par une procédure
quelconque est pas optimale, Il faut calculer les coûts marginaux relatifs aux relations
inutilisées. Nous avons eu recours au calcul des différences de potentiel sur l’arbre
représentatif de la solution de base en utilisant la formule : xy = Ux + cxy - Vy.

Mais il n’est pas nécessaire de tracer le graphe, lui même, on peut opérer directement sur la
matrice des coûts en ayant soin de diviser chaque case en 2 parties l’une recevant (de façon
définitive) le coût de transport de la relation correspondante, l’autre la quantité affectée dans
une solution déterminée.
On choisit alors la relation affectée ayant le coût le plus grand ( ici II-4) et l’on pose UII = 0
(origine des potentiels) face à la ligne II sur la droite de la matrice : on a alors V1 =0+3=3 et
V4 =0+11=11et par suite, l’inscription du potentiel , 3 et 11, respectivement sous la colonne 1
et 4 au bas de la matrice ainsi de suite.

99
Pour calculer le coût marginal d’une relation inoccupé, on la repère d’abord sur le tableau

Remarque importante

- S’il y avait plusieurs négatifs on calculerait le gain relatif à chacune des substitutions
possibles et l’on choisirait de réaliser celle qui apporte le gain total le plus grand.
- Parfois, plusieurs substitutions sont possibles simultanément et rien n’empêche de les
réaliser ensemble, il suffit qu’elles se traduisent par des chaînes de substitution
indépendantes.

Exemple 2

Voici la matrice des coûts de transport.

i 1 2 3 4 a i= qi
j disponible
I 7 8 5 19 4
II 3 7 2 11 6
III 9 5 10 18 3
b j= q. demandée 2 2 6 3 13

100
Chapitre 7 : Exercices
Exercice 1

N° Questions vrai faux


1 Un chemin simple ne passe pas plus d’une fois
par les arcs qui le composent
2 Un chemin hamiltonien passe une et une seule
fois par chaque sommet
3 Le rang ou le niveau d’un sommet x
représente le nombre maximum d’arcs d’un
chemin d’extrémité terminale x. C’est la
longueur au sens des arcs d’au moins un
chemin reliant un sommet de niveau 0 au
sommet x
a) Soit la relation binaire R sur E par x Ry↔y «x est
multiple y », donner le graphe sagittal de R, .avec
E={1,2,3,4,5,6,7,8,9}
b) Donner la matrice booléenne associée :

c) le dictionnaire des précédents associé :

d) le dictionnaire des suivants associé :

Exercice 2
Considérons un graphe G = (X , U) dont les arêtes sont évaluées par des coûts ; on veut
trouver dans ce graphe qui représente le projet d’un réseau de distribution. Déterminer l’arbre
de valeur minimale entre C et S.
A
I
E

B H
C
S

D
F
G K
Exercice 3
Une armée en mission devrait rejoindre une unité située au point 12 de la carte ci-dessous qui
comporte les liaisons entre les villes 1 à 12 avec leurs ‘’ chances de réussite.’’, ces chances
étaient exprimées par un nombre compris entre 1 et 10 ( mesurant le nombre de chances sur

101
dix succès ). Ignorant le calcul des probabilités, le commandant avait simplement choisi son
itinéraire en maximisant la somme globe des chances.
1) Déterminer l’itinéraire emprunté par l’armée.
2) Quelle était alors sous l’hypothèse d’indépendance des variables aléatoires ‘’ chances
de succès ‘’ la probabilité que cette armée réussisse ?
3) Quel aurait été son itinéraire s’il avait connu les principe du calcul des probabilités

9 4 8 5
2 4 6 8 10

6
9

9
1 5 12
8 6 3 9 2 3
8

6
8

3 5 7 9 11

9 2 5 4

Exercice 4
A C

G
B
D

F E
1) Le dictionnaire des suivants et le dictionnaire des précédents.
2) Déterminer le niveau de chaque sommet.
3) Présenter le graphe sous une forme « plus lisible », les sommets étant disposés selon
leur niveau respectif.

Exercice 5
Pour aller de la ville A à la ville I , on peut prendre plusieurs itinéraires de montants (coûts)
variables. A partir de la matrice ci-dessus, représenter le graphe valué correspondant aux
différents trajets.

102
Quel itinéraire doit-on prendre pour minimiser montant du trajet ou pour le maximiser ?
arrivée
A B C D E F G H I
A 18 30
B 26 37
C 47 39
D
E 44 60 64
F 90
G 75
H 55 59
I

Exercice 6
Déterminer le chemin de valeur maximale entre S et K.

G 75 H
A 25

10 10 20
15 40 10
25

15 25 F 25 I 75
S K
B

20 20 15 20
20 40 60

14 15
C
E
J
15
12 10

103
Exercice 7
Déterminer le chemin de valeur maximale entre S et O.

20 45
0 0
10
C 0 J 25 L
25
0 0

20 15 35 10
0 0 0 10 0
B 15 0
10 D I 35 M 60
0
0 0 0
O
10 20 25
10 0 0
15 0 80
0 H
0 E 10
0
35 N
S
25 30 0
40 15
0 0 0
15 0 20
60 0
A 30 20 G
F
0

Exercice 8
La construction d’un réseau routier entre les villes I et XII comme l’indique le dictionnaire des
suivants, passe par les villes (points) intermédiaires de passage pouvant être classés en
groupes ou « phases » et les arcs du graphe ayant été valués par l’indication des coûts
totaux (coûts de réalisation + coûts sociaux etc.).
Déterminer le (ou les) chemin critique du graphe associé

Tableau n° 9 : dictionnaire des suivants


X 1 2 3 4 5 6 7 8 9 10 11 12
S(x) 2,3,4 5,4 4,6 5,8 8 7,9,10 8,10,11 11 10,12 11,12 12 -

Tableau n° 10 : arcs « valués »


Ui 1-2 1-3 1-4 2-4 2-5 3-4 3-6 4-5 4-8 5-8
Vi 10 14 11 9 11 9 12 20 13 15

104
Tableau n° 11 (suite tableau n°2)
Ui 6-7 6-9 6-10 7-8 7-10 7-11 8-11 9-10 9-12 10-11 10-12 11-12
Vi 25 18 19 28 24 22 36 21 25 28 31 33

Exercice 9
L’organisation des examens de la première session demande la réalisation d’un certain
nombre de tâches. Le tableau suivant énumère les différentes tâches, leurs durées ainsi que
leur relation d’antériorité.

Désignation de la Libellé Durée en Tâches


Tâche i Jours Préalable
A Préparation des feuilles d’examen et des 3 -
salles
B Epreuves des techniques quantitatives 1 A
C Epreuves Comptabilité, d’économie et droit 1 B
public
D Epreuves des techniques quantitatives et 1 B, C
d’économie
E Anonymat des copies 4 B* ,C ,D
F Retrait et Correction des copies 10 E
G Retour des copies 2 F
H Levée d’anonymat des copies et calcul des 3 G
moyennes
I Délibération « Ecrit » 1 H
J Epreuves Orales 3 I
K Délibérations Finales et proclamation des 2 I, J
résultas

B* signifie 4 jours après B


Questions :
1- calculer l’ordonnancement au plus tôt par la méthode française puis donner les
chemins critiques
2- Tracer le graphe PERT aussi simple que possible.
3- Calculer les dates au plus tôt et plus tard des événements introduits dans le graphe
PERT, en déduire les intervalles de flottement de chaque tâche puis conclure.
En déduire le diagramme de GANTT correspondant , la durée prévue et l’état.

Exercice 10

La société ANGO - IMPORT pour s’installer à OYEM, réalise une étude d’implantation. Un
certain nombre de tâches doivent être réalisées qui partent de la recherche des financements à
l’ouverture de ladite société. Le tableau suivant énumère les différentes tâches, leurs durées
ainsi que leur relation d’antériorité.

105
Désignation de la Tâche i Durée en Jours Tâches Préalable
A 60 -
B 40 -
C 10 A, B
D 12 A, B
E 25 B
F 25 A
G 6 A
H 6 A, F
I 4 A, F
J 8 A,B, E, F, G, H, J
K 8 A, B, D
L 2 A, B, D, K
M 10 A, B, D
N 2 Toutes les autres tâches

1- Déterminer les tâches immédiatement antérieures à chaque tâche.


2- Tracer le graphe du projet par la méthode PERT et déterminer le ou les
chemins critiques.
3- a) Si on accuse un retard de 3 jours dans le démarrage de la tâche K,
modifierait-il la date d’ouverture de la société ?
b) Pourquoi un retard de 3 jours dans le démarrage de la tâche F, modifierait la
date d’ouverture de la société ? Quelle sera la nouvelle date ?
c) Déterminer la marge libre de la tâche D puis interpréter le résultat.
d) Déterminer la marge totale de la tâche M puis interpréter le résultat.
Exercice 11
Calculer le chemin critique, sa valeur, les dates aux plus tôt , les différentes marges.
Comparer la solution par la méthode des potentiels-tâches et la méthode des potentiel-étapes.

Désignation de Libellé Durée Tâches


la (en mois) préalables
tâche i
a Obtention d’un permis d’exploitation. 4 -
b Etablissement d’une piste de 6km. 6 a
c Transport et installation de deux sondeuses. 0,5 b
d Création de bâtiments provisoires pour les bureau et
logement d’ouvriers. 1 b
e Goudronnage de la piste. 2 b
f Adduction d’eau. 3 b
g Campagne de sondage. 8 c, d
h Forage et équipement de trois puits. 6 e, f, g
i Transport et installation au fond du matériel
d’exploitation. 1 h, j
j Construction de bureaux et logements en dur. 8 e, f, g
k Traçage et aménagement de fond. 12 h,j
l Construction d’une laverie. 8 h,j
1- A partir de la méthode française déterminer le chemin critique et la durée du projet.
2- A partir de la méthode PERT, déterminer le réseau associé à ce projet puis calculer les
différentes marges et donner leurs interprétations

106
Exercice 12
Soit trois origines I , II et III disposant de 30,56,34 tonnes de marchandises et quatre
destinations 1 ; 2 ; 3 ; 4, demandant 21 ; 24 ; 26 ; 39 tonnes de celles-ci respectivement.
Connaissant le coût de transport de l’origine i vers la destination j noté c i j , comment
organiser ce transport au moindre coût ? Voici la matrice des coûts de transport.
i 1 2 3 4
j
I 7 8 10 19
II 3 7 5 11
III 9 5 5 18

Exercice 13
Soient A,B,C,D,E,F de jeunes programmeurs auxquels on a l’intention de confier des codes
destinés à traiter les problèmes a, b, c, d, e et f. Leurs compétences étant diverses, on a noté
sur 100 leur aptitude à entreprendre tel ou tel travail ce qui est donné dans le tableau suivant

A B c d e f
A 86 94 82 84 37 85
B 59 22 56 27 30 75
C 56 19 64 20 20 22
D 54 26 95 75 17 97
E 28 68 45 49 97 19
F 31 24 88 1 17 20

Déterminer les couplages optimaux


Exercice 14
La construction d’un immeuble nécessite, entre autres, les opérations ci-après :

Opération Temps Doit avoir lieu après


(jours)
A Etude Chauffage 10 ……..
B Etude couverture 3 ……..
C Etude charpente 15 A et B
D Etude du Chantier 10 A, B , C
E Nivellement du terrain 15 ………
F Installation du chantier 5 D
G Puits (terrassement) 30 E et F
H Puits (Béton) 20 G
I Longrine (terrassement) 4 E et F
J Longrine (Béton) 18 I
K Construction charpente en atelier 55 C
L Canalisation (Terrassement) 5 E et F*
M Canalisation (Béton) 20 L
N Transport de la charpente 5 K
O Montage charpente 25 J, H, N, M
P Montage brique et crépissage 60 O
Q Peinture 10 Toutes les autres tâches

107
F* signifie 10 jours après la fin de F.
A partir de la méthode française déterminer le chemin critique et la durée du projet.
A partir de la méthode PERT, déterminer le réseau associé à ce projet puis calculer les marges (libre et
totale) et battements de chaque étape et donner leurs interprétations pour un cas de votre choix.
Tracer le graphique de Gantt correspondant puis le commenter.

Exercice 15
Calculer le chemin critique, sa valeur, les dates aux plus tôt , les différentes marges.
Comparer la solution par la méthode des potentiels-tâches et la méthode des potentiel-étapes.

Désignation de Libellé Durée Tâches


la (en mois) préalables
tâche i
a Obtention d’un permis d’exploitation. 4 -
b Etablissement d’une piste de 6km. 6 a
c Transport et installation de deux sondeuses. 0,5 b
d Création de bâtiments provisoires pour les bureau et
logement d’ouvriers. 1 b
e Goudronnage de la piste. 2 b
f Adduction d’eau. 3 b
g Campagne de sondage. 8 c, d
h Forage et équipement de trois puits. 6 e, f, g
i Transport et installation au fond du matériel
d’exploitation. 1 h, j
j Construction de bureaux et logements en dur. 8 e, f, g
k Traçage et aménagement de fond. 12 h,j
l Construction d’une laverie. 8 h,j
A partir de la méthode française déterminer le chemin critique et la durée du projet.
3- A partir de la méthode PERT, déterminer le réseau associé à ce projet puis calculer les
différentes marges et donner leurs interprétations

Exercice 16
Trois châteaux d’eau A, B et C gérés par un syndicat intercommunal, alimentant quatre
villages D, E, F et G. Le château A bénéficie d’une alimentation et d’une réserve capable de
débiter 55L/s. Le château B peut seulement débiter 35L/s et le château C, 30L/s.
Plusieurs canalisations existent et leur débit en litre/seconde, est mentionné pour chacune. Le
village D aurait besoin d’un débit de 30L/s, le village E, 20L/s, le village F, 30L/s et enfin le
village G, 30L/s. Plusieurs canalisations existent : [ AD : 10L/s ; AE :15L/s ; AG :20L/s ;
BD :20L/s ; BE :25L/s ; BF :25L/s ; CF :20L/s ; CG :15L/s ]. On demande d’établir la
meilleure alimentation possible et de déterminer s’il y a lieu, entre quels points il importe de
construire des canalisations supplémentaires.

108
Exercice 17
Pour aller de la ville A à la ville K, on peut prendre plusieurs itinéraires de montants (coûts)
variables. A partir de la matrice ci-dessus, représenter le graphe value correspondant aux
différents trajets.
Quel itinéraire doit-on prendre pour minimiser montant du trajet?

A B C D E F G H I J K
A 8 10
B 6 7
C 7 9
D 5
E 4 6 6
F 9
G 7
H 5
I 12 10
J 14 12 15
K

Exercice 18
Trois châteaux d’eau A , B, C et D gérés par un syndicat intercommunal, alimentant quatre
villages E, F, G et H. Le château A bénéficie d’une alimentation et d’une réserve capable de
débiter 55L/s. Le château B peut seulement débiter 35L/s et le château C, 30L/s et 45L/s.
Plusieurs canalisations existent et leur débit en litre/seconde, est mentionné pour chacune. Le
village E aurait besoin d’un débit de 40L/s, le village F, 50L/s, le village G, 35L/s et enfin le
village H, 40L/s. Plusieurs canalisations existent : [ AE : 10L/s ; AF :15L/s ; AG :20L/s ;
BE :20L/s ; BF :25L/s ; BH :25L/s ; CF :20L/s ; CG :15L/s : CH :18L/s ; DF :25L/s ;
DH :20L/s ; DG :15L/s ]. On demande d’établir la meilleure alimentation possible et de
déterminer s’il y a lieu, entre quels points il importe de construire des canalisations
supplémentaires.
Exercice 19
Soient A,B,C,D,E,F de jeunes programmeurs auxquels on a l’intention de confier des codes
destinés à traiter les problèmes a, b, c, d, e et f. Leurs diverses compétences à entreprendre tel
ou tel travail sont classées de 1 à 6, ce qui est résumé dans le tableau suivant

A b C d e F
A 6 4 2 4 3 5
B 5 2 6 2 3 5
C 5 1 4 2 2 3
D 1 2 6 5 5 4
E 2 6 4 1 3 5
F 3 4 6 1 1 2
Déterminer les couplages optimaux

109
BIBLIOGRAPHIE

- ALJ A. et FAURE R., Guide de le Recherche opérationnelle, T.2 les applications,


Masson 1990.
- ANGO NGUEMA P.G, Cours de Programmation Linéaire, exercices et corrigés, 1ère
édition, Presse Universitaire, 2020.
- DESBAZEILLE G. , Exercices et Problème de Recherche opérationnelle, 2e édition
Dunod, 1976.
- DO ANGO SIMPLICIO, Recherche Opérationnelle, édition 2016, Presse Universitaire
- ECOTO F., Initiation à la Recherche opérationnelle, Ellipses, 1986.
- GOUJET C. et NICOLAS C., Mathématiques appliquées à la Gestion, Décision en
avenir incertain, Initiation à la Recherche opérationnelle, 4e édition Masson, 1989.
- HELARY J.M. et PEDRONO R., Recherche opérationnelle, Exercices corrigés,
graphes et programmation dynamique, Hermann Paris, 1983.
- ROSEAUX, Exercice et problèmes résolus de Recherche opérationnelle, T.1 graphes :
leur usages, leurs algorithmes, Masson 1991.
- Kevin Wayne, Diaporama [archive] présentant l'équivalence entre la coupe minimale
et le flot maximal. Support d'étude pour le livre Algorithm Design de Jon Kleinberg et
Éva Tardos, Addison Wesley, 2005.
- Rick Durrett, Random Graph Dynamics [archive], Cambridge Series in Statistical and
Probabilistic Mathematics, 2006, chap. 1
- J-C. Bermond et al., Communications dans les réseaux de processeurs, Masson,
1994 (ISBN 978-2-225-84410-2). Paru sous le pseudonyme Jean de Rumeur.
- Hans L. Bodlaender, « A linear time algorithm for finding tree-decomposition of small
treewidth », dans SIAM journal on Computing, vol. 25, 1996, p. 1305-1317
- Olivier Cogis et Claudine Schwartz, Théorie des graphes : problèmes, théorèmes,
algorithmes, Paris, Cassini, 2018, 280 p. (ISBN 978-2-84225-189-5)

110

Vous aimerez peut-être aussi