M08 - Ordonnancement : méthode MPM et chemin critique
Objectif
Planifier un projet (ex. déploiement d’un réseau) : dates au plus tôt, au plus tard, marges, chemin critique et durée minimale.
1. La méthode en 5 étapes
flowchart LR A["1. Tableau des tâches<br/>durées + antériorités"] --> B["2. Graphe MPM<br/>(une tâche = un nœud)"] B --> C["3. Dates au PLUS TÔT<br/>passage de gauche à droite<br/>→ MAXIMUM"] C --> D["4. Dates au PLUS TARD<br/>passage de droite à gauche<br/>→ MINIMUM"] D --> E["5. Marges<br/>+ chemin critique"]
| Notion | Formule |
|---|---|
| Tôt(T) | ; 0 pour les tâches sans antériorité |
| Fin du projet | |
| Tard(T) | ; pour les dernières tâches : Fin − durée |
| Marge totale | Tard − Tôt : retard possible sans retarder le projet |
| Marge libre | : retard possible sans retarder aucune autre tâche |
| Tâche critique | Marge totale = 0 |
| Chemin critique | Chemin début → fin formé de tâches critiques ; sa longueur = durée minimale du projet |
Représentation d’un nœud :
| Tâche | |
|---|---|
| Tôt | Tard |
| Durée |
2. Exemple complet
| Tâche | Description | Durée (j) | Antériorités |
|---|---|---|---|
| A | Étude des besoins | 3 | - |
| B | Commande du matériel | 2 | A |
| C | Câblage des locaux | 4 | A |
| D | Configuration et tests | 1 | B, C |
flowchart LR DEB["Début<br/>0 | 0"] --> A["A (3 j)<br/>Tôt 0 | Tard 0"] A --> B["B (2 j)<br/>Tôt 3 | Tard 5"] A --> C["C (4 j)<br/>Tôt 3 | Tard 3"] B --> D["D (1 j)<br/>Tôt 7 | Tard 7"] C --> D D --> FIN["Fin<br/>8 | 8"] style A fill:#fecaca,stroke:#b91c1c style C fill:#fecaca,stroke:#b91c1c style D fill:#fecaca,stroke:#b91c1c
Plus tôt : A = 0 ; B = C = 0 + 3 = 3 ; D = max(3 + 2, 3 + 4) = 7 ; Fin = 7 + 1 = 8. Plus tard : D = 8 − 1 = 7 ; B = 7 − 2 = 5 ; C = 7 − 4 = 3 ; A = min(5, 3) − 3 = 0.
| Tâche | Tôt | Tard | Marge totale | Marge libre |
|---|---|---|---|---|
| A | 0 | 0 | 0 | 0 |
| B | 3 | 5 | 2 | 2 |
| C | 3 | 3 | 0 | 0 |
| D | 7 | 7 | 0 | 0 |
→ Chemin critique A → C → D, durée minimale 8 jours. B peut prendre 2 jours de retard sans conséquence.
3. Impact d’un retard
| Situation | Conséquence |
|---|---|
| Retard ≤ marge libre | Aucune autre tâche n’est décalée |
| Marge libre < retard ≤ marge totale | Des tâches suivantes sont décalées, mais pas la fin du projet |
| Retard > marge totale | Le projet est retardé de (retard − marge totale) |
| Retard sur une tâche critique | Le projet est retardé d’autant |
Pour réduire la durée du projet, il faut raccourcir une tâche critique (raccourcir B ne sert à rien).
4. Script : scripts/maths/mpm.py
python3 mpm.py "A:3: B:2:A C:4:A D:1:B,C"Format : Nom:Durée:Antériorités (antériorités séparées par des virgules, vide si aucune). Affiche Tôt, Tard, marges totale et libre, chemin critique et durée minimale.
5. Lien avec le BTS
Gestion de projet informatique (déploiement, migration, épreuve E5/E6 : planifier une réalisation), diagrammes de Gantt (GLPI Projets, MS Project, GanttProject). Un Gantt Mermaid dans Obsidian :
gantt title Projet déploiement (8 jours) dateFormat YYYY-MM-DD section Critique A Étude des besoins :crit, a, 2026-11-02, 3d C Câblage :crit, c, after a, 4d D Config et tests :crit, d, after c, 1d section Avec marge B Commande matériel :b, after a, 2d