La méthode M.P.M., méthode des potentiels metra
[Document réalisé pour la réunion du 27 janvier 2006 organisée à Marseille]

1. Introduction : les problèmes d’ordonnancement, définitions

1.1. L’ordonnancement

Supposons que nous ayons à réaliser la recette de l’Aigo boulido (ancienne recette du “ petit peuple ” méditerrannéen). À chacune des tâches élémentaires ou “ étapes ” de réalisation de la recette, nous associons une lettre code (indiquée ci-dessous entre parenthèses) et le temps nécessaire à son accomplissement. Bien évidemment la réalisation d’une telle recette ne nécessite pas un travail d’organisation si complexe qu’il faille mettre en œuvre une méthode d’ordonnancement aussi formalisée et mathématisée que celle que nous allons étudier… il ne s’agit là que d’un exemple pédagogique.

   Aigo boulido, recette pour 4 personnes
Denrées : 6 gousses d’ail, 3 cuillerées à soupe d’huile, 1 feuille de laurier, 1 branche de sauge, 2 oeufs, 4 tranches fines de pain rassis, sel.
1.	Mettre 1 litre ½ d’eau dans une casserole avec du laurier, de la sauge, du sel, et porter à ébullition (A, 5 mn).
2.	Éplucher de l’ail, le hacher, le mettre dans un mortier (B, 5 mn).
3.	Ajouter de l’huile d’olive dans le mortier et piler (C, 3 mn).
4.	Verser ce mélange dans l’eau bouillante et cuire à feu vif pendant 10 mn (D, 10 mn).
5.	Faire chauffer une soupière et mettre des tranches de pain rassis au fond (E, 5 mn).
6.	Casser des œufs en séparant le blanc et le jaune, mettre les jaunes dans un bol (F, ½ mn).
7.	Passer le bouillon au chinois (G, ½ mn).
8.	Verser une louche de bouillon sur les jaunes d’œufs et remuer vivement (H, ½ mn)
9.	Reverser cette préparation dans le bouillon en battant au fouet  (I, 1mn).
10.	Verser une louche de bouillon dans la soupière, laisser le pain s’imprégner, servir chaud (J, 2 mn).

Nous sommes en présence d’un travail qui comprend de nombreuses tâches ou opérations, ces deux derniers termes étant synonymes.

Observons maintenant les opérations B et C. Il est clair que B doit précéder C. Il est possible d’adopter la notation suivante pour symboliser l’expression “ B doit précéder C ” : B < C.
Ainsi la réalisation des diverses tâches doit tenir compte de contraintes : ici B < C signifie qu’il faudra respecter la contrainte d’antériorité de B par rapport à C.

B et C sont des éléments de la recette et il existe une relation, B<C, entre ces éléments.

La théorie des graphes est une façon de représenter, puis d’analyser, sous forme synthétique les éléments d’un ensemble et les relations qui les unissent.

Dans l’exemple qui nous préoccupe, les diverses tâches A, B, C... sont les éléments, et la relation que l’on met en avant est l’antériorité de certaines tâches par rapport à d’autres. Dans la théorie des graphes chaque élément est représenté par un sommet et la relation entre deux sommets par un arc (®) si la relation est à sens unique, par une arête («) si la relation n’est pas à sens unique.
Pour ce qui concerne la contrainte d’antériorité entre B et C il s’agit d’une relation à sens unique puisque si B<C alors C ne peut pas précéder B. Nous aurons donc la représentation suivante :  B®C

Dans tout ce qui va suivre, les graphes ne comporteront que des arcs. On dit, dans ce dernier cas, que le graphe est orienté.
Il nous est loisible de choisir des modes différents de représentation. Nous pouvons décider, comme indiqué plus haut, que B < C sera représenté par :

  B

  C

Mais nous pourrions inversement décider d’associer un arc (et non plus un sommet) à chaque tâche et un sommet à l’événement “ la tâche qui précède ce sommet est achevée ”. La représentation de B < C serait alors la suivante :                               

  2

  3

B (5)                          C(3)

Le sommet numéroté 2 est l’événement “ fin de la tâche B ” (ce qui ne correspond pas forcément au début immédiat de la tâche C, mais indique simplement que si  B < C, alors il faut attendre la fin de la réalisation de B pour pouvoir débuter C et que C débutera au plus tôt dès l’achèvement de B).
Le sommet numéroté 3 est l’événement “ fin de la tâche C ”.

On voit que la manière de modéliser le problème peut être différente alors même que notre objectif est identique : organiser au mieux la succession des tâches composant la recette.

À la première façon de réaliser la modélisation correspond la méthode M.P.M. que nous allons étudier. C’est la façon française de représenter le problème.

À la deuxième façon de réaliser la modélisation correspond la méthode P.E.R.T., que nous n’étudierons pas, et qui est la façon américaine de représenter le problème.

1.2. Planning d’ordonnancement ou programme

Un planning d’ordonnancement ou programme est relatif à la conception ou à la réalisation d’un ensemble complexe de tâches soumises à des contraintes nombreuses. Il consiste à déterminer l’ordre et le calendrier d’exécution des différentes tâches en tenant compte des contraintes. Il doit être suivi, pour être complet, par le contrôle du déroulement des travaux et il doit prévoir la coordination entre les différentes opérations pour déceler, en temps opportun, des retards prévisibles.

1.3. Les divers types de contraintes
On distingue :
1.3.1. Les contraintes potentielles, qui se subdivisent en :
1.3.1.1. Contraintes de succession ou contraintes d’antériorité : deux cas sont possibles.
1.3.1.1.1. Le cas d’une tâche qui ne peut débuter que lorsqu’une autre tâche a été exécutée.
1.3.1.1.2. Le cas d’une tâche qui ne peut débuter qu’après qu’une autre, non achevée, a débuté depuis un certain temps : il y a succession avec recouvrement.
Nous traiterons essentiellement des problèmes où seuls ces deux types de contraintes existent.
1.3.1.2. Contraintes de date. Dans ce cas une tâche ne peut commencer avant une date précise.
On parle aussi de contraintes de localisation temporelle.
1.3.2. Les contraintes disjonctives

Supposons que nous ne disposions, pour la préparation de la recette l’Aigo boulido, que d’un seul point de chauffe, les autres points étant utilisés pour la préparation d’autres recettes. Alors la tâche A (porter l’eau à ébullition) ne peut pas être réalisée en même temps que la tâche E (faire chauffer une soupière). On a donc : A < E ou (exclusif) E < A. L’exécution simultanée de A et E est impossible : nous sommes en présence d’une contrainte disjonctive.

1.3.3. Les contraintes cumulatives

Supposons que nous voulions impérativement exécuter tout ou partie de A et E en même temps : nous aurons besoin de cumuler deux points de chauffe durant l’exécution simultanée de A et E. Cette contrainte d’exécution simultanée que nous nous imposons crée une contrainte cumulative qui est de pouvoir disposer de deux points de chauffe au même moment. Ce cumul de deux points  de chauffe ne pourra excéder les capacités disponibles au moment considéré.

2. Tableau d’analyse d’un projet et graphe M.P.M.

La réalisation d’un graphe présentant l’analyse d’un problème d’ordonnancement nécessite une étude préalable des diverses tâches à considérer, de leur durée (déterminée ou aléatoire), et des relations entre les tâches (principalement les contraintes d’antériorité).
Habituellement, les conclusions de cette étude font l’objet d’une synthèse sous la forme d’un tableau. À titre d’exemple voici le tableau correspondant à la réalisation de la recette de l’Aigo boulido :

Tâches	Opérations préalables	Durées en minutes	

On pourrait aussi présenter un tableau dans lequel figureraient tous les antécédents (opérations préalables) et non les seuls antécédents immédiats comme cela est la cas ici.

A		5	
B		5	
C	B	3	
D	A, C	10	
E		5	
F		0,5	
G	D	0,5	
H	F, G	0,5	
I	H	1	
J	E, I	2	

Sur la base de ce tableau on trace le graphe M.P.M., en utilisant la symbolique vue plus haut, graphe dans lequel :

1.	Chaque opération est représentée par un “ sommet ”, habituellement dessiné sous la forme d’un rectangle dans lequel on inscrit le numéro ou la lettre code de l’opération. Le plus clair est de considérer que le sommet  A représente le début de l’opération A, que le sommet  B représente le début de l’opération B et ainsi de suite.
2.	Chaque arc représente une contrainte de succession et l’on inscrit sur cet arc une valeur numérique, appelée potentiel, qui est le délai minimum, après le début de la tâche notée à l’extrémité initiale de l’arc, au bout duquel peut démarrer la tâche notée à l’extrémité finale de l’arc. Ici nous avons considéré que la durée d’exécution d’une tâche était en même temps le délai minimum avant de pouvoir lancer la tâche qui lui est immédiatement postérieure ; mais il n’en n’est pas toujours ainsi.
3.	On introduit une opération initiale notée 0 ou 1 ou Début qui correspond au début du travail.
4.	On introduit une opération finale ou terminale notée “ n ” ou Fin qui correspond à l’achèvement du travail.

Le graphe associé au tableau de l’Aigo boulido est le suivant :

Début

B

A

C

F

E

D

G

H

I

J

Fin

0

0

0

0

5

5

0,5

10

5

0,5

0,5

1

2

3

La longueur des arcs n’est pas proportionnelle au temps.

3. Construction du graphe : précisions

3.1. Présentation

3.1.1. Sommet initial et sommet final

Il est souvent plus commode et plus esthétique de remplacer ces deux sommets par des segments de droite verticaux. On évite ainsi les surcharges lorsque de nombreux arcs sont incidents à ces sommets.

B

A

C

F

E

D

G

H

I

J

0

0

0

0

5

5

0,5

10

5

0,5

0,5

1

2

Début

Fin

3

3.1.2. Arcs

Le mieux est de tracer des arc rectilignes ou en lignes polygonales. Par exemple :

Si l’on ne peut éviter les intersections d’arcs, la solution suivante est  souvent la plus claire :

C

A

B

C

B

D

4

3

                                                                           (A, B, C, D ne sont ici que pour fixer les idées et ne
                                                                             correspondent pas à l’exemple de l’Aigo boulido)

On rappelle que le potentiel attaché à un arc est un délai minimum à respecter  : par exemple pour l’arc (A, D) le potentiel égal à 4 signifie que D peut débuter au mieux 4 unités de temps après le début de A, mais cela ne signifie pas que A dure nécessairement 4 unités de temps. 

Ce qui peut poser problème : supposons, de plus, que A dure 10 unités de temps, B 3, C 1, D 2 et que ce soient les seules tâches du programme. Il faut penser à rajouter un arc de potentiel 10.

C

A

B

D

4

3

2

1

Fin

10

3.2. Cas complexes

3.2.1. Opérations parallèles

Soient A, B, C, D quatre opérations. On suppose que B et C succèdent toutes deux à A et précèdent toutes deux D. On suppose de plus que B et C sont des opérations qui, en fonction de leurs durées respectives et des délais dont on dispose, se déroulent ou doivent pouvoir se dérouler simultanément. La représentation est la suivante :

A

B

C

D

3.2.2. Dépendance et indépendance entre opérations

Soient quatres opérations A, B, C, D. On suppose que A précède C et que A et B, indépendantes -c’est-à-dire sans contraintes de succession entre elles-, précèdent D. On peut dire autrement que C succède à A (mais sans succéder à B) et que D succède à A et simultanément à B. Alors on a :

A

B

C

D

Dessiner un arc entre B et C serait faux car C ne suit pas B

3.2.3. Successions avec recouvrement ou opérations composées

Soient cinq opérations A, B, C, D, E de durées, en jours, respectives 2, 7, 3, 4, 2. A précède B. C peut débuter 1 jour après le début de B ; D peut débuter 3 jours après le début de B et E suit B, c’est-à-dire ne peut débuter qu’après l’achèvement de B.

A

B

C

D

E

2

1

Car C peut débuter 1 jour après le début de B

3

Car D peut débuter 3 jours après le début de B

7

E suit B : B doit être achevée entièrement pour que E puisse débuter

C’est en jouant sur les potentiels des arcs qu’il est possible de proposer une représentation graphique juste :

Ainsi tient-on compte des contraintes de succession avec recouvrement (ou avec attente) en utilisant simplement des potentiels convenables.

Cet exemple et les précédents, comme certains commentaires ont été pris dans le livre de Ferret et Langlois, “ mathématiques appliquées, opérations financières, initiation à la R.O. ” aux éditions Foucher, Paris 1979.

3.2.4. Cas de conditions limites de démarrage

Supposons qu’en ce qui concerne la recette de l’Aigo boulido :
•	la tâche B ne puisse débuter au mieux que 4 minutes après le début de la réalisation de la recette,
•	la tâche D ne puisse débuter au mieux que 8 minutes après le début de la réalisation de la recette.

Le graphe se trouverait ainsi modifié :

B

A

C

F

E

D

G

H

I

J

4

0

0

0

5

5

0,5

10

5

0,5

0,5

1

2

Début

Fin

Un potentiel de 4 apparaît à la place du potentiel de 0.

8

Un arc nouveau, affecté d’un potentiel ou durée de 8, apparaît.

3

3.2.5. Circuits et niveaux dans le graphe

Le graphe doit être sans circuit. Cette caractéristique est importante car il serait, sinon, impossible de déterminer une durée de réalisation de l’ensemble des tâches puisqu’il serait possible en présence d’un circuit de “ tourner ” indéfiniment sur la succession d’arcs représentant le circuit.

En l’absence de circuits il est possible de définir des niveaux dans le graphe : A, B, E, F sont les tâches du premier niveau, C, D, G, H, I, J constituent, ensuite, les niveaux 2, 3, 4, 5, 6, 7 successifs (ici représentés par une seule tâche chaque fois).

3.2.6. Réseau P.E.R.T. 
	
Si l’on avait utilisé une représentation de type P.E.R.T. le graphe aurait été le suivant :

1

C(3)

B(5)

A(5)

D(10)

G(0,5)

H(0,5)

I(1)

F(0,5)

E(5)

J(2)

2

3

4

5

6

7

8

     

4. Calculs sur le graphe : dates, marges et chemin critique

4.1. Durée minimale de réalisation d’un programme : chemin critique

Lorsqu’on observe un graphe entre le sommet de début et celui de fin on voit qu’il est généralement possible d’emprunter divers chemins pour relier le début à la fin. Chaque chemin est matérialisé par une succession de sommets et d’arcs et correspond à une certaine succession de tâches. La réalisation successive des diverses tâches qui jalonnent un chemin donné a une durée totale qui dépend des durées de réalisation de chacune des tâches du chemin. Cette durée totale est appelée “ longueur au sens des durées du chemin ”, en abrégé : longueur du chemin.
La durée minimale de réalisation d’un programme est donnée par la longueur du chemin le plus long, c’est-à-dire par la succession de tâches la plus défavorable en ce qui concerne la durée. En effet la durée minimum ne peut être inférieure à la somme des durées nécessaires pour parcourir la succession la plus défavorable au sens des durées.
Le chemin le plus long est appelé chemin critique. Il arrive qu’il existe plusieurs chemins critiques qui ont évidemment tous la même longueur.

La longueur du chemin critique donne la durée minimale de réalisation du programme.

Les sommets qui jalonnent le chemin critique sont les tâches critiques.
Tout retard pris dans le lancement ou l’exécution d’une tâche critique augmente d’autant la durée minimum de réalisation du programme.

4.2. Dates relatives aux tâches

Soient :
. Tdébut = 0 la date de début du programme.
. début, a, b, c..., i..., n les indices désignant les sommets : Début, A, B, C..., I..., Fin
. Ti la date au plus tôt de début de la tâche I.
. d(h,i) le potentiel de l’arc reliant la tâche H à la tâche immédiatement postérieure I, c’est-à-dire le délai minimum séparant le début de H du début de I avec H< I
. P(i) l’ensemble des précédents de I, c’est-à-dire l’ensemble des sommets (tâches) précédant le sommet I.

Alors :
Ti = Max [Th + d(h,i)] avec H  P(i) 

L’ordonnancement au plus tôt est le suivant :

0
B

0
A

5
C

0
F

0
E

8
D

18
G

18,5
H

19
I

20
J

0

0

0

0

5

5

0,5

10

5

0,5

0,5

1

2

0
Début

22
Fin

3

La date au plus tôt est le max de 0 + 5 = 5 et de 5 + 3 = 8

Le double trait est la marque du chemin critique, chemin le plus long qui donne la durée minimale d’exécution du programme = 22

Après avoir calculé les dates au plus tôt de début des tâches il est utile de s’intéresser aux dates au plus tard de début de ces mêmes tâches afin de connaître le retard maximum qu’il serait possible d’apporter au commencement d’une tâche sans remettre pour autant en question la date au plus tôt d’achèvement du travail (ici 22 minutes). A cette fin on décide que la date au plus tard d’achèvement du travail doit être égale à sa date au plus tôt.

Soient :
. Ti* la date au plus tard de début de la tâche I. On fixe Tn* = Tn (ici Tn* = Tn = 22).
. d(i,j) le potentiel de l’arc reliant I à J avec I < J  (J succède immédiatement à I).
. S(i) l’ensemble des tâches succédant immédiatement à la tâche I.

Alors :
Ti* = min [Tj* - d(i,j)] avec J  S(i)

Sur le chemin critique Ti = Ti*. De même que l’ensemble des Ti est appelé ordonnancement au plus tôt ou ordonnancement minimum, l’ensemble des Ti* donne l’ordonnancement au plus tard ou ordonnancement limite. Le graphe est maintenant le suivant :

0   0
B

0   3
A

5    5
C

0   18
F

0   15
E

8    8
D

18  18
G

18,5  18,5
H

19     19
I

20      20
J

0

0

0

0

5

5

0,5

10

5

0,5

0,5

1

2

 0     0
Début

22   22
Fin

3

Sur le chemin critique, Ti = Ti*

Une fois calculée la date au plus tôt , Tn, on impose Tn* = Tn

Pour trouver l’ordonnancement limite on remonte “ à l’envers ” dans le graphe : 20 = 22 - 2

Supposons que pour une autre recette proche de l’Aigo boulido les contraintes soient modifiées : on admet que l’opération H ne suive plus F et que H puisse commencer 7 minutes après le début de D. Le graphe partiel de cette recette serait le suivant :

8    8
D

18  18
G

18,5  18,5
H

19     19
I

10

0,5

0,5

7 

La date au plus tard de D est 8 car on prend le min. entre 18 - 10 = 8  et 
18,5 - 7 = 11,5

4.3. Marges relatives aux tâches
Pour une opération I donnée, identifiée par l’indice i, trois marges sont calculées :
. MTi qui est la marge totale de l’opération,
. MLi qui est la marge libre de l’opération,
. MCi qui est la marge certaine de l’opération.
Marge totale : MTi = Ti* - Ti  
MTi est  le délai ou retard maximum que l’on peut apporter à la mise en route de I sans  modifier la durée minimale de réalisation du programme. Bien évidemment si MTi est utilisée les dates au plus tôt et les marges des opérations suivantes seront recalculées.

Marge libre : MLi = min [Tj - Ti - d(i,j)]   avec   j  S(i)

Il faudra prendre la plus petite des valeurs trouvées en appliquant la formule qui figure dans les crochets

Dates au plus tôt successives des opérations succédant immédiatement à I

Date au plus tôt de I

Potentiels successifs entre I et les opérations succédant immédiatement à I (délais entre le début de I et  le début des diverses opérations succédant immédiatement à I)

Ensemble des tâches succédant immédiatement à I

 MLi est le délai ou retard maximum (retard par rapport à Ti) que l’on peut apporter à la mise en route de I sans remettre en question les dates au plus tôt des opérations ultérieures.
Marge certaine : MCi = Max [0 ou de min[Tj - Ti* - d(i,j)]]   avec   j  S(i)

Il faudra prendre la plus petite des valeurs trouvées en appliquant la formule qui figure dans les crochets

Dates au plus tôt successives des opérations succédant immédiatement à I

Date au plus tard de I

Potentiels successifs entre I et les opérations succédant immédiatement à I (délais entre le début de I et  le début des diverses opérations succédant immédiatement à I)

Ensemble des tâches succédant immédiatement à I

Si min [...] est  < 0 il faut prendre la valeur 0

MCi est le délai ou retard maximum (retard par rapport à Ti*) que l’on peut apporter à la mise en route de I sans remettre en question les dates au plus tôt des opérations ultérieures et cela bien que l’opération I ait commencé à sa date au plus tard. Mci est particulièrement intéressante puisqu’elle permet de “recaler” un ordonnancement sur les dates attendues (dates au plus tôt) tout en disposant tout de même d’un délai pour lancer une tâche alors même que cette tâche avait été “calée” par des retards antérieurs sur sa date au plus tard. Il est rare de disposer d’une marge certaine.

Les marges sont en général portées sur le graphe en dessous ou en dessus des rectangles matérialisant les sommets et dans l’ordre MTi, MLi, MCi. On a d’ailleurs toujours MTi   MLi  MCi  0.

Pour l’Aigo boulido seules les opérations A, F, E, ont des marges : 

pour A [3 ; 3 ; 0], pour F [18 ; 18 ; 0] et pour E [15 ; 15 ; 0].

Sur le chemin critique toutes les marges sont nulles. Il en résulte que l’élasticité d’un programme est d’autant plus faible que le nombre de tâches critiques est important par rapport au nombre total de tâches et que les diverses marges des opérations non critiques sont faibles ou inexistantes.