diff --git a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-3-Advanced-CSharp.ipynb b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-3-Advanced-CSharp.ipynb index 25f8633176e..8d4217389ef 100644 --- a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-3-Advanced-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-3-Advanced-CSharp.ipynb @@ -1566,6 +1566,19 @@ "Part of #4956 (marathon parité .NET ⇄ Python série CSP).\n", "See #4711 (jurisprudence IKVM 8.15.0 + Choco)." ] + }, + { + "cell_type": "markdown", + "id": "ca086b61", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## Références\n", + "\n", + "- **Handbook of Constraint Programming** (Rossi, van Beek, Walsh, 2006) : Ch. 7 *Global Constraints* (Willem-Jan van Hoeve, Irit Katriel, p. 205) couvre AllDifferent/Cumulative/Circuit/Table — les quatre contraintes globales mises en œuvre ici avec Choco-solver.\n", + "- [*The CP-SAT Primer*](https://d-krupke.github.io/cpsat-primer/) (Krupke & Schmitt, 2023, CC-BY, lecture en ligne gratuite) : le fonctionnement interne de CP-SAT — presolve, LNS, portfolio de workers —, le solveur de la moitié Python du binôme." + ] } ], "metadata": { diff --git a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-4-Scheduling-CSharp.ipynb b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-4-Scheduling-CSharp.ipynb index 6d6685b395d..9e259e452dd 100644 --- a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-4-Scheduling-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-4-Scheduling-CSharp.ipynb @@ -732,6 +732,18 @@ "- [Sudoku-11-Choco-CSharp.ipynb](../../Sudoku/Sudoku-11-Choco-CSharp.ipynb) — la route Choco-solver via IKVM\n", "- [EPIC #4956](https://github.com/jsboige/CoursIA/issues/4956) — parité .NET ⇄ Python des séries de notebooks" ] + }, + { + "cell_type": "markdown", + "id": "b0736f0b", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## Référence\n", + "\n", + "[*The CP-SAT Primer*](https://d-krupke.github.io/cpsat-primer/) (Krupke & Schmitt, 2023, CC-BY) : l'ordonnancement industriel sous CP-SAT — bornes, presolve, décision puis optimisation — ainsi que la documentation OR-Tools ([ortools/sat/docs](https://github.com/google/or-tools/tree/stable/ortools/sat/docs)) que suit la voie native .NET de ce carnet." + ] } ], "metadata": { diff --git a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-5-Optimization-CSharp.ipynb b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-5-Optimization-CSharp.ipynb index dea8c08ac3f..d45bee04a8f 100644 --- a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-5-Optimization-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-5-Optimization-CSharp.ipynb @@ -1427,6 +1427,19 @@ "- [EPIC #4956](https://github.com/jsboige/CoursIA/issues/4956) — parité .NET ⇄ Python des séries de notebooks\n", "- [Issue #5005](https://github.com/jsboige/CoursIA/issues/5005) — bug kernel iopub post-`#r \"nuget:\"` (tracking output capture)\n" ] + }, + { + "cell_type": "markdown", + "id": "3ddc643c", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## Références\n", + "\n", + "- **Handbook of Constraint Programming** (Rossi, van Beek, Walsh, 2006) : Ch. 15 *Operations Research Methods in Constraint Programming* (J. N. Hooker, p. 525) — le pont entre CP et recherche opérationnelle (Branch-and-Price, hybrides CP/IP, relaxation lagrangienne), socle des méthodes exactes des problèmes Bin Packing / Knapsack / Cutting Stock résolus ici avec Choco-solver.\n", + "- [*The CP-SAT Primer*](https://d-krupke.github.io/cpsat-primer/) (Krupke & Schmitt, 2023, CC-BY, lecture en ligne gratuite) : optimisation combinatoire sous CP-SAT — bornes, presolve, stratégies de recherche —, le solveur de la moitié Python du binôme." + ] } ], "metadata": { diff --git a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-6-Hybridization-CSharp.ipynb b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-6-Hybridization-CSharp.ipynb index d7322259122..ca6f8357c7a 100644 --- a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-6-Hybridization-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-6-Hybridization-CSharp.ipynb @@ -1549,7 +1549,9 @@ "2. **Google OR-Tools CP-SAT** : https://developers.google.com/optimization/cp/cp_solver -- documentation officielle\n", "3. **Learning to Branch** (2018) : E. Khalil et al. -- ML pour le branchement CP\n", "4. **EPIC #3801** (axe-2 SOTA) : registre des verdicts SOTA-OK et problemes non-triviaux\n", - "5. **EPIC #4956** : marathon parite Python ⇔ .NET pour Search/CSP\n" + "5. **EPIC #4956** : marathon parite Python ⇔ .NET pour Search/CSP\n", + "6. **Hybridizing Constraint Programming and Meta-Heuristics for MMRCMPSP** (Ahmeti & Musliu, PATAT 2020/2021, p. 206 ; version journal : *Journal of Heuristics* 31(1), 2025) : un hybride CP × métaheuristique récent et complet (modèle CP exhaustif puis recherche métaheuristique, nouvelles bornes sur les instances MMRCMPSP)\n", + "7. [*The CP-SAT Primer*](https://d-krupke.github.io/cpsat-primer/) (Krupke & Schmitt, 2023, CC-BY) : les mécanismes internes de CP-SAT (presolve, LNS, indices de littéraux) mobilisés côté solveur par la voie native .NET\n" ] } ], diff --git a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-7-Soft-CSharp.ipynb b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-7-Soft-CSharp.ipynb index 49179531110..71bd83f6b6e 100644 --- a/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-7-Soft-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part2-CSP/CSP-7-Soft-CSharp.ipynb @@ -2542,6 +2542,20 @@ "Part of #4956 (marathon parité .NET ⇄ Python série CSP).\n", "See #4711 (jurisprudence IKVM 8.15.0 + Choco)." ] + }, + { + "cell_type": "markdown", + "id": "3e182cc8", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## Références\n", + "\n", + "- **Handbook of Constraint Programming** (Rossi, van Beek, Walsh, 2006) : Ch. 9 *Soft Constraints* (Meseguer, Rossi, Schiex, p. 279) — la présentation canonique des c-semirings et de la frontière classic/fuzzy/weighted parcourue dans ce carnet.\n", + "- **Semiring-based Constraint Solving and Optimization** (Bistarelli, Montanari, Rossi, 1997) : le cadre algébrique unificateur — Boolean, Fuzzy et Weighted comme instances d'un même semiring.\n", + "- [*The CP-SAT Primer*](https://d-krupke.github.io/cpsat-primer/) (Krupke & Schmitt, 2023, CC-BY, lecture en ligne gratuite) : le fonctionnement interne de CP-SAT (presolve, LNS, hints), le solveur de la moitié Python du binôme." + ] } ], "metadata": { diff --git a/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0020-2026-10-25-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0020-2026-10-25-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..9c358a00a7c --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0020-2026-10-25-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-25' +by: myia-po-2028:CoursIA +python_sha: 674baf1bd8aaf577c49deb322c9482972d537a49 +csharp_sha: 8d4217389ef9f5e8f29a02bd9832ac7f5877ff56 +content_python_sha: 684255d0a01745db79bdaa8b32045e8569f784d58d167245e46b51b1b4365d36 +content_csharp_sha: 2103954a085dac6a1151485e2f03118ebebd2ee39e525f0e7d407b83aa94bc2a diff --git a/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0021-2026-10-26-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0021-2026-10-26-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..f2ec7ef4b17 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-3-advanced/0021-2026-10-26-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-26' +by: myia-po-2028:CoursIA +python_sha: d6f8d803a055094c53a79ea2078d1394de28040c +csharp_sha: 8d4217389ef9f5e8f29a02bd9832ac7f5877ff56 +content_python_sha: 7889f00eb2e047ebec6aeafc90524b31d0554c3a1186f2a8b783bde1749d48ef +content_csharp_sha: 2103954a085dac6a1151485e2f03118ebebd2ee39e525f0e7d407b83aa94bc2a diff --git a/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0014-2026-10-25-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0014-2026-10-25-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..70c817981b5 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0014-2026-10-25-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-25' +by: myia-po-2028:CoursIA +python_sha: dae0893f41fe017163f817659c2f424979f535eb +csharp_sha: 9e259e452dd3d72597205eeffbe45d52a47f611b +content_python_sha: a2d6fb6085fedff22e84b53cefce6262f6672270dfe3f5505e1655a50d3f2737 +content_csharp_sha: f6e96761873202aa49f72d0b57c5bfb3d63161a70879e455e97016e1b5a02598 diff --git a/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0015-2026-10-26-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0015-2026-10-26-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..691917bf8e6 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-4-scheduling/0015-2026-10-26-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-26' +by: myia-po-2028:CoursIA +python_sha: 72214bd2f855b6a57b65a0b2689b61520e581e64 +csharp_sha: 9e259e452dd3d72597205eeffbe45d52a47f611b +content_python_sha: 978caa3de0b9fe061a44afde8d60977f50bdf9db7a277912bb8c27eab82b8b8d +content_csharp_sha: f6e96761873202aa49f72d0b57c5bfb3d63161a70879e455e97016e1b5a02598 diff --git a/scripts/notebook_tools/twin_pairs.d/csp-5-optimization/0022-2026-10-25-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-5-optimization/0022-2026-10-25-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..2e19bfe6471 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-5-optimization/0022-2026-10-25-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-25' +by: myia-po-2028:CoursIA +python_sha: f389d9e63d1b8717b5fbe8736aa3c9f754787fe1 +csharp_sha: d45bee04a8f8021f8f7767aaf10be453350496e9 +content_python_sha: 25c1a8a040abe5bb345d2774fd0c63572c028e80941d4c3403427671d5b93358 +content_csharp_sha: 0cc6ad6893086afb3b02f817c6b08a7a04417417da5ab18c96bc7d935049f646 diff --git a/scripts/notebook_tools/twin_pairs.d/csp-6-hybridization/0018-2026-10-26-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-6-hybridization/0018-2026-10-26-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..79edc24ffe0 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-6-hybridization/0018-2026-10-26-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-26' +by: myia-po-2028:CoursIA +python_sha: dc004fc74536b19a23abe72485803e7d1f63f28f +csharp_sha: ca6f8357c7a4d5fe5d6ba5298eb558a6fb8d23cd +content_python_sha: acb1059a65f37f5450e19deb881f3dd7e5d1b4e992c47c8b5c709c0fa0a6fc5d +content_csharp_sha: 474e3cca16dae2a4dc2b78963c659b9d9c9201dc2cd61a3bf70bdf38c8d83102 diff --git a/scripts/notebook_tools/twin_pairs.d/csp-7-soft/0019-2026-10-25-myia-po-2028-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/csp-7-soft/0019-2026-10-25-myia-po-2028-CoursIA.yaml new file mode 100644 index 00000000000..e0f0b3c1867 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/csp-7-soft/0019-2026-10-25-myia-po-2028-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-10-25' +by: myia-po-2028:CoursIA +python_sha: 1f3775720608e792318541a06c1ac0f2e8e2296e +csharp_sha: 71bd83f6b6ef0df928e90b23f9ebcbb3334630e9 +content_python_sha: 995f0a7d538f55c57f9ee96399d671750be6b16bc8726795eb3f2681bcb24935 +content_csharp_sha: e4740471c9f61985edfd807088d448f8d8174f5e4917eedc38f111559ae825a4