Partie 1 — Fondations de la Planification
← Setup (00-Environment) | ↑ Planification | Partie 2 — Classique →
Cette première partie pose le vocabulaire formel de la planification automatique. Avant de résoudre un problème, il faut savoir le décrire : qu’est-ce qu’un état, une action, un but ? Comment représenter un monde assez précisément pour qu’une machine puisse y chercher une suite d’actions ? Les trois notebooks de cette partie construisent progressivement ce cadre conceptuel, du triptyque État-Action-But jusqu’à la constatation qui motive toute la suite de la série : la recherche aveugle dans l’espace d’états explose combinatoirement.
Position dans la série
| Étape | Question |
|---|---|
← 00-Environment |
L’environnement Python/Docker est-il prêt ? |
| Partie 1 — Fondations | Comment modéliser un problème de planification ? |
02-Classical → |
Comment résoudre ce problème avec un planificateur industriel ? |
Le fil conducteur de cette partie est le passage du problème informel (« je veux empiler ces blocs ») au modèle formel (un domaine PDDL, un état initial, un but). C’est cette traduction qui rend le problème soluble par un algorithme — et qui révèle, au notebook 3, pourquoi un algorithme naïf ne suffit pas.
Notebooks
| # | Notebook | Durée | Contenu |
|---|---|---|---|
| 1 | Planners-1-Introduction | 30 min | Triptyque État-Action-But, hypothèses STRIPS (1971), taxonomie des paradigmes de planification |
| 1 (C#) | Planners-1-Introduction-Csharp | 30 min | Jumeau C# du 1 : la planification automatique from-scratch en .NET 9, triptyque État-Action-But réimplémenté sans lib de planification (See #4956) |
| 2 | Planners-2-PDDL-Basics | 40 min | Syntaxe PDDL : domaines, problèmes, types, prédicats, actions, préconditions, effets |
| 2 (C#) | Planners-2-PDDL-Basics-Csharp | 40 min | Jumeau C# du 2 : planificateur STRIPS from-scratch (modèle typé, grounding, BFS forward), domaines Logistics + Gripper (See #4956) |
| 3 | Planners-3-State-Space | 35 min | Recherche dans l’espace d’états, explosion combinatoire \(O(2^n)\), nécessité des heuristiques |
| 3 (C#) | Planners-3-State-Space-Csharp | 35 min | Jumeau C# du 3 : BFS/DFS/Greedy/A* from-scratch sur terrain pondéré (See #4956) |
Prérequis
- Python 3.9+ : programmation orientée objet, types, dataclasses
- .NET 9 (jumeaux C# uniquement) : les notebooks
-Csharps’exécutent sous .NET Interactive, sans prérequis Python - Algorithmique de base : graphes (BFS, DFS), parcours
- Logique propositionnelle : prédicats, connecteurs
Aucun prérequis en planification : les concepts sont introduits depuis zéro. Le notebook 0-Setup (partie précédente) doit avoir été exécuté une fois pour installer unified-planning et vérifier l’environnement.
À l’issue de cette partie
Vous saurez :
- Définir ce qu’est la planification automatique et la distinguer de l’apprentissage supervisé
- Modéliser un problème en PDDL — domaine, problème, actions avec préconditions et effets
- Représenter l’espace d’états d’un problème et mesurer son explosion combinatoire
- Justifier pourquoi la recherche aveugle ne suffit pas — et donc pourquoi les heuristiques (partie 2) sont indispensables
Pour continuer
- Résoudre les problèmes modélisés ici → Partie 2 — Planification Classique : Fast Downward, heuristiques A* / h-FF / LM-cut, domaines IPC
- Revoir la vue d’ensemble → Planification (README parent)
La transition vers la partie 2 est naturelle : le notebook 3 conclut que la recherche dans l’espace d’états est nécessaire mais coûteuse ; la partie 2 montre comment un planificateur industriel (Fast Downward) et de bonnes heuristiques (LM-cut) la rendent praticable.