Skip to content

[EPIC] MGS vs mealpy — comparaison appariée par paire de moteurs, pour diagnostiquer le noyau MetaGeneticSharp #12373

Description

@jsboige

Etat mesure au 2026-10-05 (lane myia-po-2026:CoursIA, sous-grain de #13906 acceptance 4 via l'umbrella #4427)

Livraison non inscrite par le corps ci-dessous : #15995 (mergee 2026-09-14, lane po-2023:CoursIA-2) — 2 exercices pedagogiques + 1 exemple guide dans MGS-29-GA-vs-Mealpy.ipynb (paire 8), voie (d) arbitree par ai-01 pour dissoudre le faux positif detect_solution_leaks sur la fence csharp inline. Verifiee firsthand : merge a 07:26Z, fichier unique, DEEP/notebook-python.

Corrections d'etat du bloc precedent (« Etat au 2026-09-02 ») :

Portee du non-verifie : recensement a la main (search REST « 12373 » sur les PRs mergees, 28 resultats tries un a un — les PRs picker/guard/twin-parity qui citent ce numero en passant sont des mentions incidentes, pas des livraisons) ; l'organe epic_body_staleness.py n'a pas pu tourner ce cycle (quota GraphQL epuise sur le siege) — sa fenetre systematique 800 PRs reste l'autorite des qu'il revient.

Origine : demande user du 2026-08-20T13:42Z sur #11954, point 5 — « maintenant qu'on a proprement onboardé PythonNet qui n'attendait que ça, étudier la possibilité de créer un Epic dans la série MGS pour la comparaison des 2 ». Ouverte le 2026-08-22.

État au 2026-09-02 — les 9 paires et la synthèse sont livrées, la question directrice est tranchée. Le corps qui suit a été réécrit à partir des livraisons : il portait encore « à ouvrir » sur 8 des 9 lignes du tableau alors que les 8 notebooks correspondants étaient sur main depuis le 2026-08-29 (#13906). Ce qui reste vit dans deux issues successeur nommées en fin de page.

La question directrice, et sa réponse

MGS-22 (#12302) a livré la première comparaison appariée sur Sudoku-5 : mealpy OriginalPSO à ~28 conflits médians là où MGS ParticleSwarmOptimization plafonnait à ~43, à budget d'évaluations égal et pour un ms/éval identique (0,99×). L'hypothèse du user — « possible que les perfs ne suivent pas mealpy sous NumPy optimisé » — était donc réfutée sur son axe explicite, et la question devenait : cet écart de convergence est-il spécifique au PSO, ou systématique au noyau MGS ?

Réponse mesurée sur les 9 paires, notebook MGS-31-Synthese-Croisee.ipynb (#13694, mergé le 2026-08-30) :

Axe Verdict Mesure
Coût systématique — c'est une frontière de runtime, pas d'algorithme mealpy plus cher par évaluation sur 8/9 paires, ratio médian 2,38× (jusqu'à 7,86× en P8). L'unique inversion (P1, 0,82×) est un artefact d'instrumentation du banc fondateur, documenté dans la paire. Les tests fitness-seule des paires isolent la frontière : 5,13×–5,33×
Qualité spécifique à la paire — pas une propriété du noyau mealpy devant sur 6/9, MGS devant sur 3/9, amplitudes de −6,5 à +17 conflits médians

Deux bras de décomposition tranchent l'attribution là où le tableau seul resterait ambigu : P7 (deux formules mealpy convergent à l'identique, 25,5 partout, MGS reste à 30,5) désigne le noyau ; P9 (un bras ablaté à 52,0 bat le bras complet à 54,0 sur le même moteur) désigne la stratégie. Le notebook re-dérive l'intégrité avant d'afficher : INTEGRITE : 9/9 paires conformes, 0 écart(s).

Les 9 paires — livrées, vérifiées sur main

Protocole commun (gabarit MGS-22, non renégociable d'une paire à l'autre — c'est ce qui les rend comparables) : budget d'évaluations égalisé avec les deux chiffres réels reportés · ≥4 graines nommées, médiane + min/max · contre-vérification croisée du coût (recalcul côté C# du meilleur individu rendu par Python) · ms/éval séparé du temps total · graines passées explicitement aux deux moteurs (solve(prob, seed=N) côté mealpy 3.x, ResetSeed(N) côté MGS) · un résultat « MGS perd » est un livrable valide.

# Paire Jumeau mealpy Notebook sur main Livré par
1 ParticleSwarmOptimization OriginalPSO MGS-22-MGS-vs-Mealpy.ipynb #12302
2 DifferentialEvolution OriginalDE MGS-23-DifferentialEvolution-vs-Mealpy.ipynb #12382
3 SimulatedAnnealing OriginalSA MGS-24-SimulatedAnnealing-vs-Mealpy.ipynb #12404
4 WhaleOptimisation OriginalWOA MGS-25-WhaleOptimisation-vs-Mealpy.ipynb #12405
5 EquilibriumOptimizer OriginalEO MGS-26-EquilibriumOptimizer-vs-Mealpy.ipynb #12423
6 ForensicBasedInvestigation OriginalFBIO MGS-27-ForensicBasedInvestigation-vs-Mealpy.ipynb #12571
7 BareBonesParticleSwarm jumeau construit (Kennedy 2003 n'a pas d'équivalent direct) MGS-28-BareBonesPSO-vs-Mealpy.ipynb #12943
8 Default (GA composé) BaseGA MGS-29-GA-vs-Mealpy.ipynb #13282, puis fixes #13406 / #13518
9 ScatterSearch jumeau construit + bras de décomposition MGS-30-ScatterSearch-Decomposition.ipynb #13397
— Synthèse croisée — MGS-31-Synthese-Croisee.ipynb #13694

La paire 8 mérite d'être lue jusqu'au bout : la PR d'origine (#13269) a été fermée sans merge parce que la première version ré-évaluait le coût côté Python. C'est #13282 (« reeval mealpy en C# dans le bench — verdict change ») qui l'a livrée, en changeant le verdict. La forme du banc n'était pas un détail de plomberie.

Islands5* (archipel hétérogène) figurait au catalogue initial comme dixième ligne : il n'a pas de jumeau mealpy et n'est donc pas une comparaison. Ce n'était pas un grain de cette Epic, et il n'en devient pas un rétroactivement — c'est une capacité distinctive de MGS, à traiter comme telle ailleurs.

Ce que cette Epic n'était pas

Ce n'était pas une campagne de benchmark pour classer les moteurs. Le classement mealpy/MGS n'a aucun intérêt en soi : mealpy est une bibliothèque mature à ~200 algorithmes, MGS est notre lib maison. L'intérêt était diagnostique — se servir de mealpy comme témoin instrumenté pour trouver ce qui, dans le noyau MGS, laisse de la performance sur la table. Le diagnostic a rendu son verdict ; le corollaire est que le noyau n'est pas la cause de l'écart de qualité, ce qui déplace le travail correctif d'un cran.

Successeurs — c'est là que le travail continue

Le corps de cette Epic disait : « si l'écart est systématique, chercher la cause dans le noyau et ouvrir les issues correctives dans le submodule ». L'écart de coût est systématique, celui de qualité ne l'est pas ; les deux issues qui portent la suite sont ouvertes :

Deux trackers de paires restent techniquement ouverts alors que leurs notebooks sont sur main — #13268 (paire 8) et #13394 (paire 9) : fermés avec preuve dans le même geste que cette Epic.

Contexte

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    qualityNotebook quality issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions