diff --git a/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb b/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb index 8808527e65..bea7867878 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb @@ -5,10 +5,10 @@ "id": "dc6364b8", "metadata": { "papermill": { - "duration": 0.002786, - "end_time": "2026-09-28T11:49:53.595623", + "duration": 0.003481, + "end_time": "2026-10-05T02:09:01.993236+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.592837", + "start_time": "2026-10-05T02:09:01.989755+00:00", "status": "completed" }, "tags": [] @@ -38,8 +38,9 @@ ">\n", "> **Ce n'est pas un port du C# `14_Optimize_MaxSAT`** (qui est DSL + toy corpus :\n", "> knapsack 5 objets, nurse-roster 3×3). Ici l'optimisation est construite **à frais\n", - "> nouveaux** sur le corpus réel du meal-planner, en encodage PB brut.", - "\n\n**Navigation** : [<< 16d - Convergence](Z3-16d-Meal-Planner-Convergence-Scale-Python.ipynb) | [17 - Array Theory >>](Z3-17-Array-Theory-Python.ipynb) | [README Z3-Python](README.md)\n" + "> nouveaux** sur le corpus réel du meal-planner, en encodage PB brut.\n", + "\n", + "**Navigation** : [<< 16d - Convergence](Z3-16d-Meal-Planner-Convergence-Scale-Python.ipynb) | [17 - Array Theory >>](Z3-17-Array-Theory-Python.ipynb) | [README Z3-Python](README.md)\n" ] }, { @@ -47,10 +48,10 @@ "id": "a9f205da", "metadata": { "papermill": { - "duration": 0.002034, - "end_time": "2026-09-28T11:49:53.600013", + "duration": 0.002824, + "end_time": "2026-10-05T02:09:01.999214+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.597979", + "start_time": "2026-10-05T02:09:01.996390+00:00", "status": "completed" }, "tags": [] @@ -74,10 +75,10 @@ "id": "94c11604", "metadata": { "papermill": { - "duration": 0.001931, - "end_time": "2026-09-28T11:49:53.603934", + "duration": 0.002457, + "end_time": "2026-10-05T02:09:02.004304+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.602003", + "start_time": "2026-10-05T02:09:02.001847+00:00", "status": "completed" }, "tags": [] @@ -100,16 +101,16 @@ "id": "0af29c65", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:49:53.608970Z", - "iopub.status.busy": "2026-09-28T11:49:53.608636Z", - "iopub.status.idle": "2026-09-28T11:49:53.645618Z", - "shell.execute_reply": "2026-09-28T11:49:53.645051Z" + "iopub.execute_input": "2026-10-05T02:09:02.010656Z", + "iopub.status.busy": "2026-10-05T02:09:02.010486Z", + "iopub.status.idle": "2026-10-05T02:09:02.041475Z", + "shell.execute_reply": "2026-10-05T02:09:02.040771Z" }, "papermill": { - "duration": 0.04059, - "end_time": "2026-09-28T11:49:53.646443", + "duration": 0.035158, + "end_time": "2026-10-05T02:09:02.042040+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.605853", + "start_time": "2026-10-05T02:09:02.006882+00:00", "status": "completed" }, "tags": [] @@ -120,7 +121,7 @@ "output_type": "stream", "text": [ "Cache : R=712 recettes, C=5 constituants. Pools : Entree=52, Plat principal=370, Accompagnement=47, Pain=65, Dessert=178.\n", - "Theoreme : 7 menus x 5 plats. bornes patient dynamiques : energie[21020,94280], proteines>=150, sel<=25.\n" + "Theoreme : 7 menus x 5 plats. bornes patient dynamiques : energie[20515,91485], proteines>=135, sel<=25.\n" ] } ], @@ -185,10 +186,10 @@ "id": "6e6f52ea", "metadata": { "papermill": { - "duration": 0.002257, - "end_time": "2026-09-28T11:49:53.653083", + "duration": 0.001511, + "end_time": "2026-10-05T02:09:02.045275+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.650826", + "start_time": "2026-10-05T02:09:02.043764+00:00", "status": "completed" }, "tags": [] @@ -212,16 +213,16 @@ "id": "cfeab817", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:49:53.658863Z", - "iopub.status.busy": "2026-09-28T11:49:53.658564Z", - "iopub.status.idle": "2026-09-28T11:49:55.250564Z", - "shell.execute_reply": "2026-09-28T11:49:55.250135Z" + "iopub.execute_input": "2026-10-05T02:09:02.049062Z", + "iopub.status.busy": "2026-10-05T02:09:02.048885Z", + "iopub.status.idle": "2026-10-05T02:09:02.526985Z", + "shell.execute_reply": "2026-10-05T02:09:02.526447Z" }, "papermill": { - "duration": 1.596064, - "end_time": "2026-09-28T11:49:55.251381", + "duration": 0.480767, + "end_time": "2026-10-05T02:09:02.527517+00:00", "exception": false, - "start_time": "2026-09-28T11:49:53.655317", + "start_time": "2026-10-05T02:09:02.046750+00:00", "status": "completed" }, "tags": [] @@ -231,16 +232,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "MIN sel : sat en 0.02s, valeur optimale = 0\n", - " Menu min-sel : Entree: Ajvar | Plat principal: 10-Minute Lasagna | Accompagnement: Alioli (Garlic-Oil | Pain: Almond Nutmeg Stic | Dessert: 1993 1st Place Gin\n" + "MIN sel : sat en 0.03s, valeur optimale = 0\n", + " Menu min-sel : Entree: All-You-Can-Eat Co | Plat principal: Abadoo's Granola | Accompagnement: Acorn Squash, Indo | Pain: Aberffraw Cakes | Dessert: $100 Chocolate Cak\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "MAX prot : sat en 1.40s, valeur optimale = 1948\n", - " Menu max-prot : Entree: Aioli Platter | Plat principal: 19-Alarm Chili | Accompagnement: African Vegetarian | Pain: All Bran Bread - P | Dessert: Almond Marzipan Cr\n" + "MAX prot : sat en 0.27s, valeur optimale = 1763\n", + " Menu max-prot : Entree: Aioli Platter | Plat principal: Alligator Sauce Pi | Accompagnement: African Vegetarian | Pain: Almond-Pumkin Muff | Dessert: Almond Cream Filli\n" ] } ], @@ -283,10 +284,10 @@ "id": "1c6369ca", "metadata": { "papermill": { - "duration": 0.002476, - "end_time": "2026-09-28T11:49:55.256580", + "duration": 0.001472, + "end_time": "2026-10-05T02:09:02.530785+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.254104", + "start_time": "2026-10-05T02:09:02.529313+00:00", "status": "completed" }, "tags": [] @@ -311,10 +312,10 @@ "id": "cbdefa78", "metadata": { "papermill": { - "duration": 0.002308, - "end_time": "2026-09-28T11:49:55.261228", + "duration": 0.001481, + "end_time": "2026-10-05T02:09:02.533764+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.258920", + "start_time": "2026-10-05T02:09:02.532283+00:00", "status": "completed" }, "tags": [] @@ -345,16 +346,16 @@ "id": "56060010", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:49:55.267760Z", - "iopub.status.busy": "2026-09-28T11:49:55.267522Z", - "iopub.status.idle": "2026-09-28T11:49:55.349574Z", - "shell.execute_reply": "2026-09-28T11:49:55.348795Z" + "iopub.execute_input": "2026-10-05T02:09:02.537546Z", + "iopub.status.busy": "2026-10-05T02:09:02.537370Z", + "iopub.status.idle": "2026-10-05T02:09:02.624454Z", + "shell.execute_reply": "2026-10-05T02:09:02.624054Z" }, "papermill": { - "duration": 0.08646, - "end_time": "2026-09-28T11:49:55.350944", + "duration": 0.089994, + "end_time": "2026-10-05T02:09:02.625179+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.264484", + "start_time": "2026-10-05T02:09:02.535185+00:00", "status": "completed" }, "tags": [] @@ -365,7 +366,7 @@ "output_type": "stream", "text": [ "Menu + soft prefs : sat en 0.01s\n", - " Menu preferentiel : Entree: Ajvar | Plat principal: Abstract Chocolate | Accompagnement: Almonnaise | Pain: All-Season Bread | Dessert: Absolutely Apricot\n", + " Menu preferentiel : Entree: All-You-Can-Eat Co | Plat principal: Almond Horns | Accompagnement: Almonnaise | Pain: 'sense and Sensibi | Dessert: 1850 Blackberry Pi\n", " (add_soft = MaxSAT natif : 1 ligne par preference, vs ~6 lignes de variable de relaxation a la main)\n" ] } @@ -405,10 +406,10 @@ "id": "094f05eb", "metadata": { "papermill": { - "duration": 0.002977, - "end_time": "2026-09-28T11:49:55.356556", + "duration": 0.001737, + "end_time": "2026-10-05T02:09:02.628692+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.353579", + "start_time": "2026-10-05T02:09:02.626955+00:00", "status": "completed" }, "tags": [] @@ -429,10 +430,10 @@ "id": "a1a3107c", "metadata": { "papermill": { - "duration": 0.002554, - "end_time": "2026-09-28T11:49:55.361843", + "duration": 0.001697, + "end_time": "2026-10-05T02:09:02.632180+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.359289", + "start_time": "2026-10-05T02:09:02.630483+00:00", "status": "completed" }, "tags": [] @@ -464,16 +465,16 @@ "id": "02f92f24", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:49:55.370962Z", - "iopub.status.busy": "2026-09-28T11:49:55.370405Z", - "iopub.status.idle": "2026-09-28T11:50:20.570089Z", - "shell.execute_reply": "2026-09-28T11:50:20.569563Z" + "iopub.execute_input": "2026-10-05T02:09:02.636175Z", + "iopub.status.busy": "2026-10-05T02:09:02.636007Z", + "iopub.status.idle": "2026-10-05T02:09:13.411813Z", + "shell.execute_reply": "2026-10-05T02:09:13.410579Z" }, "papermill": { - "duration": 25.205986, - "end_time": "2026-09-28T11:50:20.570849", + "duration": 10.778863, + "end_time": "2026-10-05T02:09:13.412644+00:00", "exception": false, - "start_time": "2026-09-28T11:49:55.364863", + "start_time": "2026-10-05T02:09:02.633781+00:00", "status": "completed" }, "tags": [] @@ -483,8 +484,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "BOX (priority='box', 1 check, 2 optima independants) en 1.57s :\n", - " sel minimum absolu = 0 g | proteines maximum absolu = 1948 g\n", + "BOX (priority='box', 1 check, 2 optima independants) en 0.34s :\n", + " sel minimum absolu = 0 g | proteines maximum absolu = 1763 g\n", "Front de Pareto (scalarisation ponderee alpha*sel - (1-alpha)*prot) :\n", " alpha | sel(g) | prot(g)\n" ] @@ -493,14 +494,14 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.00 | 25 | 1948\n" + " 0.00 | 25 | 1763\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " 1.00 | 0 | 200\n", + " 1.00 | 0 | 178\n", " -> alpha=0 = maximise les proteines (sel libre) ; alpha=1 = minimise le sel (prot libre).\n" ] } @@ -537,10 +538,10 @@ "id": "48ab288b", "metadata": { "papermill": { - "duration": 0.00244, - "end_time": "2026-09-28T11:50:20.575759", + "duration": 0.001885, + "end_time": "2026-10-05T02:09:13.416749+00:00", "exception": false, - "start_time": "2026-09-28T11:50:20.573319", + "start_time": "2026-10-05T02:09:13.414864+00:00", "status": "completed" }, "tags": [] @@ -567,10 +568,10 @@ "id": "14a411f0", "metadata": { "papermill": { - "duration": 0.002318, - "end_time": "2026-09-28T11:50:20.581682", + "duration": 0.001921, + "end_time": "2026-10-05T02:09:13.420749+00:00", "exception": false, - "start_time": "2026-09-28T11:50:20.579364", + "start_time": "2026-10-05T02:09:13.418828+00:00", "status": "completed" }, "tags": [] @@ -591,16 +592,16 @@ "id": "ab83f332", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:20.587171Z", - "iopub.status.busy": "2026-09-28T11:50:20.586969Z", - "iopub.status.idle": "2026-09-28T11:50:20.715057Z", - "shell.execute_reply": "2026-09-28T11:50:20.714670Z" + "iopub.execute_input": "2026-10-05T02:09:13.425359Z", + "iopub.status.busy": "2026-10-05T02:09:13.425197Z", + "iopub.status.idle": "2026-10-05T02:09:13.567902Z", + "shell.execute_reply": "2026-10-05T02:09:13.567207Z" }, "papermill": { - "duration": 0.131762, - "end_time": "2026-09-28T11:50:20.715686", + "duration": 0.145707, + "end_time": "2026-10-05T02:09:13.568407+00:00", "exception": false, - "start_time": "2026-09-28T11:50:20.583924", + "start_time": "2026-10-05T02:09:13.422700+00:00", "status": "completed" }, "tags": [] @@ -640,10 +641,10 @@ "id": "9162f542", "metadata": { "papermill": { - "duration": 0.002371, - "end_time": "2026-09-28T11:50:20.720780", + "duration": 0.001779, + "end_time": "2026-10-05T02:09:13.572204+00:00", "exception": false, - "start_time": "2026-09-28T11:50:20.718409", + "start_time": "2026-10-05T02:09:13.570425+00:00", "status": "completed" }, "tags": [] @@ -664,16 +665,16 @@ "id": "83137bc4", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:20.726647Z", - "iopub.status.busy": "2026-09-28T11:50:20.726377Z", - "iopub.status.idle": "2026-09-28T11:50:21.637553Z", - "shell.execute_reply": "2026-09-28T11:50:21.637118Z" + "iopub.execute_input": "2026-10-05T02:09:13.576628Z", + "iopub.status.busy": "2026-10-05T02:09:13.576418Z", + "iopub.status.idle": "2026-10-05T02:09:14.555806Z", + "shell.execute_reply": "2026-10-05T02:09:14.555119Z" }, "papermill": { - "duration": 0.915309, - "end_time": "2026-09-28T11:50:21.638331", + "duration": 0.982447, + "end_time": "2026-10-05T02:09:14.556422+00:00", "exception": false, - "start_time": "2026-09-28T11:50:20.723022", + "start_time": "2026-10-05T02:09:13.573975+00:00", "status": "completed" }, "tags": [] @@ -684,9 +685,9 @@ "output_type": "stream", "text": [ "Plan hebdo optimal (min sel semaine) : sat en 0.26s, sel total optimal = 2\n", - " Menu 1 : Entree: Accra (Saltfish | Plat principal: Almond Praline C | Accompagnement: Acorn Squash, In | Pain: All-Bran Fruit L | Dessert: 1993 1st Place G\n", - " Menu 2 : Entree: Almond Brussels | Plat principal: Almond Shortbrea | Accompagnement: Aioli Sauce - Ga | Pain: ( From Bread Mix | Dessert: Abby's Famous Pe\n", - " Menu 3 : Entree: African Tomato-A | Plat principal: Almond Nut Crunc | Accompagnement: Adobo Marinade | Pain: 1-2-3 Meurbeteig | Dessert: Almond Crecents\n", + " Menu 1 : Entree: Airport Slaw | Plat principal: Almond Paste | Accompagnement: Almond Milk (Non | Pain: All-Bran Fruit L | Dessert: Almond Date Shak\n", + " Menu 2 : Entree: Almond Brussels | Plat principal: Almond Paste | Accompagnement: Acorn Squash W/ | Pain: Ale Bread | Dessert: Almond Tea Jelly\n", + " Menu 3 : Entree: All-You-Can-Eat | Plat principal: Almond Liqueur | Accompagnement: Acorn Squash, In | Pain: Aberffraw Cakes | Dessert: Acorns\n", " (... 4 menus supplementaires ; 35 cours sur la semaine au sel total minimal.)\n" ] } @@ -722,10 +723,10 @@ "id": "s6b-intro", "metadata": { "papermill": { - "duration": 0.002548, - "end_time": "2026-09-28T11:50:21.643564", + "duration": 0.001758, + "end_time": "2026-10-05T02:09:14.560129+00:00", "exception": false, - "start_time": "2026-09-28T11:50:21.641016", + "start_time": "2026-10-05T02:09:14.558371+00:00", "status": "completed" }, "tags": [] @@ -746,16 +747,16 @@ "id": "s6b-code", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:21.649539Z", - "iopub.status.busy": "2026-09-28T11:50:21.649032Z", - "iopub.status.idle": "2026-09-28T11:50:22.004821Z", - "shell.execute_reply": "2026-09-28T11:50:22.004455Z" + "iopub.execute_input": "2026-10-05T02:09:14.564442Z", + "iopub.status.busy": "2026-10-05T02:09:14.564274Z", + "iopub.status.idle": "2026-10-05T02:09:14.896208Z", + "shell.execute_reply": "2026-10-05T02:09:14.895284Z" }, "papermill": { - "duration": 0.359751, - "end_time": "2026-09-28T11:50:22.005676", + "duration": 0.335406, + "end_time": "2026-10-05T02:09:14.897225+00:00", "exception": false, - "start_time": "2026-09-28T11:50:21.645925", + "start_time": "2026-10-05T02:09:14.561819+00:00", "status": "completed" }, "tags": [] @@ -773,15 +774,15 @@ "output_type": "stream", "text": [ "\n", - "=== Plan hebdomadaire OPTIMAL (D=7, minimise le cout, resolu en 297.5 ms) ===\n", + "=== Plan hebdomadaire OPTIMAL (D=7, minimise le cout, resolu en 258.9 ms) ===\n", "Cout total minimal de la semaine : 7940 centimes = 79.40 EUR\n", - " Jour 1 : Smoothie banane, Soupe poireaux fromage, Chili con carne -> 1420 kcal, 56 g prot\n", - " Jour 2 : Pain beurre confiture, Riz saute legumes, Tarte tatin salee -> 1590 kcal, 44 g prot\n", - " Jour 3 : Fromage blanc miel, Sandwich thon, Risotto champignons -> 1490 kcal, 56 g prot\n", - " Jour 4 : Fromage blanc miel, Riz saute legumes, Tarte tatin salee -> 1530 kcal, 52 g prot\n", - " Jour 5 : Porridge fruits rouges, Soupe poireaux fromage, Risotto champignons -> 1500 kcal, 46 g prot\n", - " Jour 6 : Pain beurre confiture, Sandwich thon, Chili con carne -> 1490 kcal, 60 g prot\n", - " Jour 7 : Smoothie banane, Pates pesto, Lasagnes -> 1540 kcal, 52 g prot\n" + " Jour 1 : Pain beurre confiture, Sandwich thon, Chili con carne -> 1490 kcal, 60 g prot\n", + " Jour 2 : Pain beurre confiture, Riz saute legumes, Risotto champignons -> 1630 kcal, 40 g prot\n", + " Jour 3 : Smoothie banane, Sandwich thon, Lasagnes -> 1440 kcal, 58 g prot\n", + " Jour 4 : Fromage blanc miel, Soupe poireaux fromage, Risotto champignons -> 1460 kcal, 50 g prot\n", + " Jour 5 : Fromage blanc miel, Soupe poireaux fromage, Tarte tatin salee -> 1420 kcal, 54 g prot\n", + " Jour 6 : Porridge fruits rouges, Riz saute legumes, Tarte tatin salee -> 1570 kcal, 48 g prot\n", + " Jour 7 : Smoothie banane, Pates pesto, Chili con carne -> 1550 kcal, 56 g prot\n" ] } ], @@ -879,10 +880,10 @@ "id": "s6b-interp", "metadata": { "papermill": { - "duration": 0.002568, - "end_time": "2026-09-28T11:50:22.010925", + "duration": 0.00269, + "end_time": "2026-10-05T02:09:14.903143+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.008357", + "start_time": "2026-10-05T02:09:14.900453+00:00", "status": "completed" }, "tags": [] @@ -900,16 +901,16 @@ "id": "s6b-lecture", "metadata": { "papermill": { - "duration": 0.002506, - "end_time": "2026-09-28T11:50:22.015748", + "duration": 0.00262, + "end_time": "2026-10-05T02:09:14.908408+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.013242", + "start_time": "2026-10-05T02:09:14.905788+00:00", "status": "completed" }, "tags": [] }, "source": [ - "**Lecture chiffree — quatre ordres de grandeur sur le corpus de jouet.** Le plan a cout minimal ci-dessus (D=7, 24 plats) se resout en `297.5` ms dans ce notebook ; le [16](Z3-16-Meal-Planner-Python.ipynb) mesure, sur le meme corpus de jouet, l'enumeration des 36 combinaisons **0,06 ms**, le plan SMT booleen D=3 **2,4 ms** et l'`Optimize` a cout minimal D=1 **17,7 ms**. L'enumeration gagne partout ou elle reste tractable — mais sa pente est exponentielle en le nombre de variables quand celle du solveur suit la combinatoire contrainte. Passer de 3 a 7 jours avec corpus elargi et contrainte de variete coute ~124x (2,4 ms -> `297.5` ms) : observation sur cette paire de runs, pas une loi (jours et corpus changent en meme temps). La lecture pratique : le temps du solveur achete l'exactitude a l'echelle ou l'enumeration explose, et la fenetre [1400, 1900] kcal avec 40 g de proteines reste resolue en moins d'une seconde a D=7.\n" + "**Lecture chiffree — quatre ordres de grandeur sur le corpus de jouet.** Le plan a cout minimal ci-dessus (D=7, 24 plats) se resout en une fraction de seconde dans ce notebook (le temps exact est imprime par la cellule de code ci-dessus) ; le [16](Z3-16-Meal-Planner-Python.ipynb) mesure, sur le meme corpus de jouet, l'enumeration des 36 combinaisons **0,06 ms**, le plan SMT booleen D=3 **2,4 ms** et l'`Optimize` a cout minimal D=1 **17,7 ms**. L'enumeration gagne partout ou elle reste tractable — mais sa pente est exponentielle en le nombre de variables quand celle du solveur suit la combinatoire contrainte. Passer de 3 a 7 jours avec corpus elargi et contrainte de variete coute environ deux ordres de grandeur (millisecondes -> fraction de seconde) : observation sur cette paire de runs, pas une loi (jours et corpus changent en meme temps). La lecture pratique : le temps du solveur achete l'exactitude a l'echelle ou l'enumeration explose, et la fenetre [1400, 1900] kcal avec 40 g de proteines reste resolue en moins d'une seconde a D=7.\n" ] }, { @@ -917,10 +918,10 @@ "id": "ac069b63", "metadata": { "papermill": { - "duration": 0.008024, - "end_time": "2026-09-28T11:50:22.026163", + "duration": 0.002751, + "end_time": "2026-10-05T02:09:14.913800+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.018139", + "start_time": "2026-10-05T02:09:14.911049+00:00", "status": "completed" }, "tags": [] @@ -957,10 +958,10 @@ "id": "35992ba8", "metadata": { "papermill": { - "duration": 0.002559, - "end_time": "2026-09-28T11:50:22.031522", + "duration": 0.002568, + "end_time": "2026-10-05T02:09:14.919087+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.028963", + "start_time": "2026-10-05T02:09:14.916519+00:00", "status": "completed" }, "tags": [] @@ -985,16 +986,16 @@ "id": "8ebd35c4", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:22.037443Z", - "iopub.status.busy": "2026-09-28T11:50:22.037234Z", - "iopub.status.idle": "2026-09-28T11:50:22.040267Z", - "shell.execute_reply": "2026-09-28T11:50:22.039848Z" + "iopub.execute_input": "2026-10-05T02:09:14.925033Z", + "iopub.status.busy": "2026-10-05T02:09:14.924810Z", + "iopub.status.idle": "2026-10-05T02:09:14.927984Z", + "shell.execute_reply": "2026-10-05T02:09:14.927462Z" }, "papermill": { - "duration": 0.006839, - "end_time": "2026-09-28T11:50:22.040918", + "duration": 0.006948, + "end_time": "2026-10-05T02:09:14.928456+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.034079", + "start_time": "2026-10-05T02:09:14.921508+00:00", "status": "completed" }, "tags": [] @@ -1020,10 +1021,10 @@ "id": "14b29f00", "metadata": { "papermill": { - "duration": 0.002596, - "end_time": "2026-09-28T11:50:22.046067", + "duration": 0.002099, + "end_time": "2026-10-05T02:09:14.932761+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.043471", + "start_time": "2026-10-05T02:09:14.930662+00:00", "status": "completed" }, "tags": [] @@ -1043,16 +1044,16 @@ "id": "35020dd2", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:22.051832Z", - "iopub.status.busy": "2026-09-28T11:50:22.051641Z", - "iopub.status.idle": "2026-09-28T11:50:22.054361Z", - "shell.execute_reply": "2026-09-28T11:50:22.053918Z" + "iopub.execute_input": "2026-10-05T02:09:14.937699Z", + "iopub.status.busy": "2026-10-05T02:09:14.937501Z", + "iopub.status.idle": "2026-10-05T02:09:14.940340Z", + "shell.execute_reply": "2026-10-05T02:09:14.939698Z" }, "papermill": { - "duration": 0.006492, - "end_time": "2026-09-28T11:50:22.054999", + "duration": 0.006101, + "end_time": "2026-10-05T02:09:14.940882+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.048507", + "start_time": "2026-10-05T02:09:14.934781+00:00", "status": "completed" }, "tags": [] @@ -1078,10 +1079,10 @@ "id": "b905b16c", "metadata": { "papermill": { - "duration": 0.002563, - "end_time": "2026-09-28T11:50:22.060254", + "duration": 0.001822, + "end_time": "2026-10-05T02:09:14.944633+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.057691", + "start_time": "2026-10-05T02:09:14.942811+00:00", "status": "completed" }, "tags": [] @@ -1100,16 +1101,16 @@ "id": "da67109a", "metadata": { "execution": { - "iopub.execute_input": "2026-09-28T11:50:22.066282Z", - "iopub.status.busy": "2026-09-28T11:50:22.066091Z", - "iopub.status.idle": "2026-09-28T11:50:22.068951Z", - "shell.execute_reply": "2026-09-28T11:50:22.068577Z" + "iopub.execute_input": "2026-10-05T02:09:14.950317Z", + "iopub.status.busy": "2026-10-05T02:09:14.950139Z", + "iopub.status.idle": "2026-10-05T02:09:14.953707Z", + "shell.execute_reply": "2026-10-05T02:09:14.953049Z" }, "papermill": { - "duration": 0.006791, - "end_time": "2026-09-28T11:50:22.069658", + "duration": 0.007714, + "end_time": "2026-10-05T02:09:14.954380+00:00", "exception": false, - "start_time": "2026-09-28T11:50:22.062867", + "start_time": "2026-10-05T02:09:14.946666+00:00", "status": "completed" }, "tags": [] @@ -1147,21 +1148,21 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.3" + "version": "3.13.15" }, "papermill": { "default_parameters": {}, - "duration": 30.421904, - "end_time": "2026-09-28T11:50:22.311667", + "duration": 14.769514, + "end_time": "2026-10-05T02:09:15.194561+00:00", "environment_variables": {}, "exception": null, "input_path": "Z3-16e-Meal-Planner-Optimize-Python.ipynb", "output_path": "Z3-16e-Meal-Planner-Optimize-Python.ipynb", "parameters": {}, - "start_time": "2026-09-28T11:49:51.889763", + "start_time": "2026-10-05T02:09:00.425047+00:00", "version": "2.6.0" } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +}