Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions MyIA.AI.Notebooks/Search/Part1-Foundations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Trois extensions complètent le panorama. La couverture exacte et les Dancing Li

## Pourquoi cette partie

Cette partie est l'alphabet de toute la série : la formalisation en espace d'états, le backtracking et les heuristiques qu'on y construit sont réutilisés tels quels par la programmation par contraintes (Partie 2) et par les 40 notebooks d'application. Mais son véritable enseignement est un réflexe d'ingénieur : chaque algorithme y est présenté comme un compromis — complétude contre mémoire, garantie contre temps de calcul, exploration contre exploitation — et jamais comme une recette. C'est ce réflexe, plus que tel ou tel algorithme, qui distingue celui qui applique une bibliothèque de celui qui choisit une stratégie.
Cette partie est l'alphabet de toute la série : la formalisation en espace d'états, le backtracking et les heuristiques qu'on y construit sont réutilisés tels quels par la programmation par contraintes (Partie 2) et par les notebooks d'application. Mais son véritable enseignement est un réflexe d'ingénieur : chaque algorithme y est présenté comme un compromis — complétude contre mémoire, garantie contre temps de calcul, exploration contre exploitation — et jamais comme une recette. C'est ce réflexe, plus que tel ou tel algorithme, qui distingue celui qui applique une bibliothèque de celui qui choisit une stratégie.

## Objectifs d'apprentissage

Expand Down Expand Up @@ -71,6 +71,7 @@ Cette partie est l'alphabet de toute la série : la formalisation en espace d'é
| 11 (.NET) | [Search-11-Metaheuristics (C#)](Search-11-Metaheuristics-CSharp.ipynb) | .NET (C#) | **Jumeau .NET** : PSO (inertie décroissante + clamp velocity), recuit simulé (acceptation Metropolis, pas proportionnel à √(T/T₀)), algorithme génétique (tournoi, croisement arithmétique, mutation gaussienne, élitisme) from-scratch, fonctions de benchmark (Sphere/Rastrigin/Rosenbrock/Ackley), convergence gbest monotone, benchmark comparatif PSO/SA/GA, optimisation de profit (retrouve l'optimum analytique x≈17.14, y≈15.71), TSP par recuit 2-opt — parité #4956, tables texte au lieu de matplotlib | ~1h30 |
| 11b (.NET) | [Search-11b-Metaheuristiques-Deep](Search-11b-Metaheuristiques-Deep.ipynb) (+ [T2 PSO](Search-11b-Metaheuristiques-Deep-Part2.ipynb), [T3 ABC](Search-11b-Metaheuristiques-Deep-Part3.ipynb), [T4 Benchmark](Search-11b-Metaheuristiques-Deep-Part4.ipynb)) | .NET (C#) | **Déclinaison deep-dive** en 4 volets — un algorithme from-scratch approfondi par tranche : recuit simulé (T1), Particle Swarm Optimization (T2), Artificial Bee Colony (T3), benchmark comparatif capstone (T4). Complète le jumeau 11 (.NET) (survol PSO/SA/GA) par un traitement détaillé algorithme par algorithme | ~4×45 min |
| 11c | [Search-11c-Empirical-Algorithm-Selection](Search-11c-Empirical-Algorithm-Selection.ipynb) | Python 3 | Distillation du projet L4 EPITA SCIA 2026 (Th. Deguest, PR source #42) : **sélection empirique d'algorithmes** sous protocole commun (timeout 5 s, budget nœuds explicite, métriques uniformes) sur deux terrains — Sudoku (BT naïf/MRV, DLX, CP-SAT, Z3, GA, recuit simulé ; tranche 1) et Puissance 4 (random, minimax, alpha-beta, MCTS ; round-robin double, tranche 2) — front de Pareto qualité-coût, sweep de budget qui **inverse la sélection**, carte problème × paradigme : No Free Lunch mesuré (Rice 1976, Wolpert 1996), écho App-14 | ~1h30 |
| 11d | [Search-11d-Descente-Sous-Budget](Search-11d-Descente-Sous-Budget.ipynb) | Python 3 | Variante de Search-11 et Search-11c : la loi derrière les descentes sous budget (op 11 du chantier ICT, [#12204](https://github.com/jsboige/CoursIA/issues/12204)). Les hypothèses de `SymbolicAI/Lean/mimo_lean/Descent.lean` sont exercées au runtime : décroissance stricte et confinement vérifiés à chaque mouvement accepté, plafond d'évaluations vérifié à chaque exécution, sans violation sur des graines fixes. L'hypothèse `hnostall` (un mouvement améliorant existe toujours hors de la cible) y est réfutée : à budget généreux, tous les blocages sont des optima locaux hors cible. La courbe qualité-budget plafonne ensuite, car les arrêts restants sont des blocages et non des interruptions. Bibliothèque standard seule, trois exercices (restarts, barrière, voisinage 2-flip) | ~45 min |
| 12a | [Search-12a-Composer-Regards](Search-12a-Composer-Regards.ipynb) | Python 3 | **Composer des regards** (op 12 du chantier ICT, [#12204](https://github.com/jsboige/CoursIA/issues/12204)) : play forward (`g`, Dijkstra depuis le départ) × coplay backward (`d`, Dijkstra depuis l'arrivée) sur un gridworld pondéré 10×14 déterministe — corridor optimal isolé par `f* = g + d` (19/140 nœuds), associativité de la composition à relais (toujours vraie comme opérateur), exactitude conditionnelle (écart 0 sur route, +2 hors route : inégalité triangulaire), **paire de lectures incompatibles exhibée** (coût × pas : divergence dès le pas 1, route à +32 de coût ; A* 24 vs 75 expansions) — 2e attestation directe, substrat indépendant de GT-21 (#12245) | ~1h |
| 13a | [Search-13a-Traverser-Murs-Certifies](Search-13a-Traverser-Murs-Certifies.ipynb) | Python 3 | **Traverser un mur** (op 13 du chantier ICT, [#12204](https://github.com/jsboige/CoursIA/issues/12204)) : pavage hexagonal de 61 salles (coordonnées axiales), deux chambres séparées par une double chaîne de murs (8+9 cellules de coût 3 contre sol à 1) fermant l'anneau de bout en bout, six swaps générateurs (les six directions hexagonales) — chemin minimal **certifié** par quatre organes indépendants (Dijkstra L=12, audit de potentiels : 312 arêtes, 0 violation, égalités serrées le long du chemin ; 0-1 BFS : épaisseur m_path=2 ; flot max Edmonds-Karp par nœuds fendus : largeur m=8 = coupure minimale, certificat de coupe par BFS) — distinction **épaisseur** (murs sur un chemin) vs **largeur** (murs à démolir, Menger), test négatif de l'opération : percement Δ=−2 et certificat rejeté (pas un morphisme) contre swap silencieux de feuille Δ=0 et certificat préservé (morphisme), balayage du coût c_w qui bascule le point de passage (3 → 2 murs franchis) — 2e attestation directe, substrat indépendant de GT-24 (#12364) | ~1h |

Expand All @@ -84,7 +85,7 @@ Les notebooks absorbés forment un **triptyque** aux stratégies complémentaire

Les trois premiers notebooks forment le socle commun — on y apprend à poser un problème, puis à l'explorer systématiquement — et tout le reste s'y greffe. Au-delà, le parcours n'est pas linéaire : cinq branches indépendantes s'ouvrent, à prendre dans l'ordre de vos curiosités :

- **Recherche locale et évolutive** : Search-4 (LocalSearch) puis Search-5 (GeneticAlgorithms) puis Search-11 (Metaheuristics)
- **Recherche locale et évolutive** : Search-4 (LocalSearch) puis Search-5 (GeneticAlgorithms) puis Search-11 (Metaheuristics), puis Search-11d (Descente-Sous-Budget) pour la loi de terminaison des descentes
- **Recherche dans les jeux** : Search-3 puis Search-6 (AdversarialSearch) puis Search-7 (MCTS)
- **Couverture exacte** : Search-2 puis Search-8 (DancingLinks)
- **Boîte à outils de graphes** : Search-2 puis Search-2b (NetworkX, ou son jumeau C#) puis Search-2c (QuikGraph)
Expand Down Expand Up @@ -192,7 +193,7 @@ Le véritable enseignement, au-delà du catalogue d'algorithmes, est un **réfle
### Prochaines étapes

- **La programmation par contraintes** : la suite naturelle est la [Partie 2 (CSP)](../Part2-CSP/README.md), qui réutilise le backtracking et les heuristiques de cette partie pour propager des contraintes plutôt que d'énumérer — la réduction de l'espace de recherche y devient systématique plutôt qu'heuristique.
- **Les applications** : les [40 notebooks d'application](../Applications/README.md) (détection de contours, TSP, VRP, optimisation de portefeuille, hyperparameter tuning) mobilisent directement les métaheuristiques et la recherche locale vues ici sur des problèmes réels.
- **Les applications** : les [notebooks d'application](../Applications/README.md) (détection de contours, TSP, VRP, optimisation de portefeuille, hyperparameter tuning) mobilisent directement les métaheuristiques et la recherche locale vues ici sur des problèmes réels.
- **Les ponts vers les autres séries** : les Dancing Links irriguent [Sudoku](../../Sudoku/README.md), Minimax et MCTS se prolongent dans [GameTheory](../../GameTheory/README.md) (OpenSpiel) puis [RL](../../RL/README.md) (politiques apprises), et les prédicats Z3 de Search-10 ouvrent sur [SymbolicAI](../../SymbolicAI/README.md). Reprendre un de ces ponts après avoir posé les fondations de la recherche donne aux primitives une nouvelle profondeur.
- **La série dans son ensemble** : le [sommaire Search](../README.md) cartographie les quatre parties et les applications — celle-ci est le socle commun.

Expand Down
6 changes: 3 additions & 3 deletions MyIA.AI.Notebooks/Search/Part2-CSP/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Pour le setup complet, voir le [README de la série Search](../README.md).
| Solveur CP-SAT trop lent sur les grandes instances | Préférer les contraintes globales (AllDifferent, Cumulative) aux contraintes binaires équivalentes ; utiliser LNS (CSP-3) |
| Comment choisir entre CP-SAT et un solveur SAT ? | CP-SAT pour les contraintes globales et l'optimisation (objectif), SAT pour la décision pure ; CSP-6 détaille les compromis |
| CSP-9 : les algorithmes distribués ne convergent pas | Vérifier que le réseau de contraintes est un arbre, ou utiliser AWC (Weak-Commitment) au lieu d'ABT |
| Où sont les applications concrètes ? | Voir [Applications](../Applications/README.md) : 40 notebooks (N-Queens, Nurse Scheduling, VRP, TSP...) |
| Où sont les applications concrètes ? | Voir [Applications](../Applications/README.md) : notebooks d'application (N-Queens, Nurse Scheduling, VRP, TSP...) |

## Ponts vers SymbolicAI

Expand Down Expand Up @@ -160,7 +160,7 @@ CSP-1 (Fundamentals) ──> CSP-2 (Consistency) ──> CSP-3 (Advanced)
| Série | Lien | Relation |
| ------- | ------ | ---------- |
| [Partie 1 : Search](../Part1-Foundations/README.md) | Fondamentaux | Prérequis : backtracking, heuristiques |
| [Applications](../Applications/README.md) | 40 notebooks d'application | Mise en pratique des CSP |
| [Applications](../Applications/README.md) | Notebooks d'application | Mise en pratique des CSP |
| [Search (parent)](../README.md) | Vue d'ensemble | Contexte et parcours global |
| [Sudoku](../../Sudoku/) | Résolution par contraintes | Application directe des CSP |
| [SymbolicAI/SMT/Z3-Linq2Z3](../../SymbolicAI/SMT/Z3-Linq2Z3/README.md) | Solveur SMT | CSP-6 (LCG) et automates symboliques |
Expand Down Expand Up @@ -215,7 +215,7 @@ Le véritable enseignement est une **sensibilité à la modélisation** : le mê

### Prochaines étapes

- **Les applications** : les [40 notebooks d'application](../Applications/README.md) (N-Queens, Nurse Scheduling, VRP, TSP, Picross, Minesweeper CSP) mettent en pratique CP-SAT sur des problèmes concrets avec benchmark baseline-comparison.
- **Les applications** : les [notebooks d'application](../Applications/README.md) (N-Queens, Nurse Scheduling, VRP, TSP, Picross, Minesweeper CSP) mettent en pratique CP-SAT sur des problèmes concrets avec benchmark baseline-comparison.
- **Vers le raisonnement symbolique** : la modélisation déclarative de cette partie est le premier contact avec un mode de raisonnement qu'approfondissent [Z3/SMT](../../SymbolicAI/SMT/Z3-Linq2Z3/README.md) (SMT solving), les [Planners](../../SymbolicAI/Planners/) (PDDL, HTN) et [Tweety](../../SymbolicAI/Tweety/) (logique formelle) côté SymbolicAI. CSP-6 (LCG) fait explicitement le pont vers SAT.
- **Retour aux fondamentaux** : après avoir vu la puissance de la propagation, reprendre [Search-2 (backtracking)](../Part1-Foundations/Search-02-Uninformed.ipynb) — le DFS y apparaît comme un cas particulier de CSP sans propagation, et l'on mesure le saut qu'apportent AC-3/MAC.
- **La série dans son ensemble** : le [sommaire Search](../README.md) cartographie les quatre parties et les applications — celle-ci est le socle déclaratif qui prolonge la Partie 1 (recherche) et prépare la Partie 4 (métaheuristiques) et les Applications.
Expand Down
6 changes: 3 additions & 3 deletions MyIA.AI.Notebooks/Search/_archive/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Ce répertoire contient les anciennes versions des notebooks Python qui se trouv
### `CSPs_Intro.ipynb`

- **Date d'archivage** : 2026-07-03
- **Raison** : Remplacé par la sous-série `Part2-CSP/` (9 notebooks dédiés : `CSP-1-Fundamentals.ipynb` à `CSP-9-Advanced-Topics.ipynb`) qui introduit les concepts progressivement (contraintes, propagation, backtracking, AC-3, recherche locale) plutôt qu'en un seul document monolithique.
- **Raison** : Remplacé par la sous-série `Part2-CSP/` (notebooks dédiés : `CSP-1-Fundamentals.ipynb` à `CSP-9-Distributed.ipynb`) qui introduit les concepts progressivement (contraintes, propagation, backtracking, AC-3, recherche locale) plutôt qu'en un seul document monolithique.
- **Contenu original** : introduction aux CSPs (Constraint Satisfaction Problems) — définitions, formalisme, exemples jouets.
- **Nouvelle structure** : `Part2-CSP/CSP-1-Fundamentals.ipynb` couvre les mêmes bases avec un cadre unifié (variables/domaines/contraintes), puis les notebooks 2 à 9 développent chaque technique.

Expand All @@ -17,13 +17,13 @@ Ce répertoire contient les anciennes versions des notebooks Python qui se trouv
- **Raison** : Remplacé par la sous-série `Part1-Foundations/` qui sépare clairement exploration non-informée (`Search-02-Uninformed.ipynb` : BFS, DFS, UCS, IDS, profondeur itérative) et exploration informée (`Search-03-Informed.ipynb` : greedy best-first, A*, variantes pondérées) en deux notebooks distincts plutôt qu'un document mêlant les deux familles.
- **Contenu original** : survol des algorithmes d'exploration non-informée (BFS/DFS) et informée (A*) en un seul notebook.
- **Nouvelle structure** :
- `Part1-Foundations/Search-1-Landscape.ipynb` — panorama
- `Part1-Foundations/Search-01-StateSpace.ipynb` — formalisation de l'espace d'états (le « panorama » annoncé n'a pas de carnet homonyme)
- `Part1-Foundations/Search-02-Uninformed.ipynb` — exploration non-informée
- `Part1-Foundations/Search-03-Informed.ipynb` — exploration informée et heuristiques

## Vérification de la migration

- **Part1-Foundations/** : 11 notebooks (Search-1 à Search-11), couverture exhaustive incluant uninformed + informed + variantes (IDA*, SMA*, RBFS) + benchmarks.
- **Part1-Foundations/** : séries Search-1 à Search-11 et leurs accrétions, couverture des algorithmes non informés et informés (BFS, DFS, UCS, IDDFS, A*, IDA*) et des benchmarks de métaheuristiques.
- **Part2-CSP/** : 9 notebooks (CSP-1 à CSP-9), couverture CSPs du fondamental aux techniques avancées (AC-3, forward checking, MAC, recherche locale).
- **Recherche linéaire dans la racine** : `find MyIA.AI.Notebooks/Search/ -maxdepth 1 -name "*.ipynb" -not -path "*/archive/*"` ne renvoie plus que les sous-répertoires `Part1-Foundations/`, `Part2-CSP/`, `Part4-Metaheuristics/`, `search_lean/`, `archive/` (C204-PR #5187) et (C205-PR #5193) ont déjà migré les autres familles.

Expand Down
Loading