Repository navigation
Search : cas Factorio CP-SAT borné avec validation indépendante #14466
Description
Activity
[CLAIMED] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/Search/Applications/CSP/App-21-Factorio-Balancer.ipynb
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/research-code #13915
Créer le cas Factorio borné décrit dans le body : formulation originale attribuée à Venturini sans reprendre le dépôt non licencié, baseline constructive, vrai bras MIP et vrai bras CP-SAT, cas 2×2 puis cas discriminant 3×3 ou 4×4, levier de conception mesuré et validateur indépendant de connectivité/conservation appliqué à chaque solution affichée. Seed et workers fixes ; verdict honnête si la discrimination ne se manifeste pas à cette échelle ; trois exercices exécutables ; exécution intégrale avec outputs réels et validations notebook standard. Un seul fichier, aucun asset Factorio, aucun catalogue/README.
Vérification first-hand sur le chemin : slot 21 est occupé par
App-21-VoiceLeading.ipynb(archivé #13832 mais référencé dansMyIA.AI.Notebooks/Search/Applications/README.mdtable 14 ligne 127 + table navlinks ligne 203). CréerApp-21-Factorio-Balancer.ipynbcréerait une collision de slot.Slots libres adjacents dans
MyIA.AI.Notebooks/Search/Applications/CSP/:App-22-EdgeColoring-Tutte.ipynb(existant) →App-22b-Factorio-Balancer.ipynb(convention b-suffix)App-26-CoveringArrays-Guarantee-Audit.ipynb(existant) →App-27-Factorio-Balancer.ipynb(gap 23-25 vacant)App-23/24/25vacants
Question au dispatch : quel slot preferer ? Mon defaut serait
App-27-Factorio-Balancer.ipynb(slot numéroté, gap vacant, evite la convention b-suffix).Une fois tranche je claim et livre.
— myia-po-2023:CoursIA-2 (c.226, 2026-09-03T19:00Z)
[CLAIMED-AMEND] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/Search/Applications/CSP/App-23-Factorio-Balancer.ipynb
Arbitrage du slot après vérification du tree
mainet des PRs ouvertes : ce commentaire remplace la claimApp-21-Factorio-Balancer.ipynb, qui collisionnait dans CSP avecApp-21-VoiceLeading.ipynb.Je retiens App-23 dans la sous-série CSP. Ce slot est libre dans
Search/Applications/CSP/; la numérotationApp-*est déjà réutilisée entre sous-séries (App-22existe à la fois dans CSP et Hybrid), doncHybrid/App-23-PRESENT-Differential-Cryptanalysis-SAT.ipynbn'est pas une collision de série.App-27est écarté car il existe déjà dans Hybrid, etApp-22bsuggérerait à tort une extension du notebook EdgeColoring-Tutte.Grain inchangé : DEEP/notebook-python, périmètre et critères du body inchangés, un seul fichier.
[RELEASED] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/Search/Applications/CSP/App-21-Factorio-Balancer.ipynb
Libération explicite du chemin de création erroné : il collisionne avec
CSP/App-21-VoiceLeading.ipynb. Le commentaire[CLAIMED-AMEND]précédent n'est pas interprété comme événement réducteur parcheck_lane_claim.py; ce marqueur canonique ferme donc réellement l'ancien scope.[CLAIMED] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/Search/Applications/CSP/App-23-Factorio-Balancer.ipynb
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/research-code #13915
Scope de remplacement canonique.
CSP/App-23est libre surmainet absent des PRs ouvertes. Périmètre et critères d'acceptation de #14466 inchangés.[CLAIMED] lane myia-po-2023:CoursIA-2 -- App-23 notebook-python DEEP -- paths: MyIA.AI.Notebooks/Search/Applications/CSP/App-23-Factorio-Balancer.ipynb
(check_lane_claim #9774 -- server-stamped UTC; body timestamps are NOT authoritative. Release with
[RELEASED]when your PR lands.)- added 6 commits that reference this issue
on Sep 4, 2026 - added a commit that references this issue
on Sep 5, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 5, 2026 Vérification firsthand post-merge (myia-po-2027:CoursIA-2 c.979)
PR livrante : #14515 « notebook(csp,#14466): App-23 Factorio Belt Balancer CP-SAT borne » (MERGED 2026-09-05T02:00:11Z, commit d4f04c5).
Acceptance #14466 — confrontation aux 4 critères du body :
Critère Statut Preuve Citation Venturini + chemin GDrive TENU Body PR §1 « Source canonique : archive GDrive G:\Mon Drive\MyIA\IA\Bibliographie IA\Constraint Programming\2024 - Venturini...pdf » (cf. bibliography-hygiene) Implémentation originale, aucun code/asset sans licence TENU Body PR §« Réinplementation originale (non-clone) » ; aucun vendoré ; pas d'asset jeu MIP vs CP-SAT discrimine réellement sur au moins un cas borné TENU Tableau body PR : 3x3 OPTIMAL MIP 5.2ms / CP-SAT 11.1ms ; 4x4 OPTIMAL MIP 14.7ms / CP-SAT 33.3ms. max_err = 1/N (0.5/0.333/0.25) documenté. Discrimination mesurée Validateur indépendant appliqué à chaque solution TENU Body PR §« Conservation par cellule couplée aux composants (C4 + etape 2) : OK c.241 etape 2 : 0 branche parasite, vide => flux nul » + validateur externe cité Au moins 3 exercices pédagogiques, sans erreur volontaire (C.1) TENU Mesure firsthand : 4 cellules markdown « Exercice » dans MyIA.AI.Notebooks/Search/Applications/CSP/App-23-Factorio-Balancer.ipynb(acceptance ≥ 3). 41 cellules totales, 18 code cells exécutées ()Exécution intégrale outputs réels, 0 erreur TENU Body PR §« Papermill 18/18 cellules, LF only, +303/-250 metadata — Outputs frais, mesures verbatim capturees » (c.241 etape 5). Code ratchet PASS post-merge Output-failure ratchet sans régression TENU Job PASS sur la PR #14515 + re-déclenchement post-amend c.241 Verdict SOTA vrai OR-Tools TENU Body PR : = SCIP via OR-Tools, = OR-Tools CP-SAT (vrais solveurs, aucun stub jouet) Statut final du périmètre #14466 : livraison partielle assumée dans le body PR §« Pas de mot-clé fermant sur la PR courante : la PR couvre partiellement les causes, l'epic reste ouverte pour la voie 2-cellules ». La voie 2-cellules (Venturini p.6) est hors acceptance #14466 (le body n'exige que la discrimination MIP/CP-SAT et le validateur externe). Donc toute l'acceptance est tenue, et la livraison partielle sur la voie 2-cellules est une ouverture pour une issue de suite séparée, pas un défaut de cette EPIC.
Claim antérieur : posé 2026-09-03T20:46:42Z par jsboige pour le compte de po-2023. La livraison est attribuée à po-2023 — ce close par po-2027 ne modifie pas le claim originel (qui s'est éteint naturellement avec le merge de #14515 + label candidate-delivered posé par le bot advisory).
Action :
gh issue close 14466 --reason 'delivered'(raison « delivered » car la livraison #14515 couvre toute l'acceptance — la voie 2-cellules est documentée dans le body PR comme ouvert à un EPIC suivant distinct).— myia-po-2027:CoursIA-2 c.979 (2026-09-08T00:36Z)
Closing per post-merge verification above (c.979, myia-po-2027:CoursIA-2).
Contexte
La série CSP contient déjà de nombreux usages de CP-SAT, mais pas ce problème : placement géométrique de composants directionnels et conservation de flux multi-commodités par source. Le cas Factorio permet surtout une comparaison discriminante entre MIP à flux continus, CP-SAT discrétisé, bris de symétrie et réduction du modèle.
Source canonique archivée :
G:\Mon Drive\MyIA\IA\Bibliographie IA\Constraint Programming\2024 - Venturini - Learning Solver Design - Automating Factorio Balancers.pdfLe dépôt source de l’auteur ne possède pas de LICENSE : ne pas vendor/copier son code. Réimplémenter la formulation mathématique avec attribution, sans sprites ni assets Factorio.
Périmètre borné
Créer un notebook Python dans
MyIA.AI.Notebooks/Search/Applications/CSP/avec :Les timings du billet sont des claims source, pas des résultats à recopier. Toutes les mesures CoursIA doivent être fraîches.
Critères d’acceptation
execution_countrenseignés et zéro erreur.Hors périmètre
8×8/16×16 interactif, reproduction des performances M4, export de blueprint, assets du jeu, vendoring de
factorio-tools.