Skip to content

Commit

Permalink
Update notebooks to avoid merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
anirban-chaudhuri committed Jul 10, 2023
1 parent fe6f625 commit 27af0a8
Show file tree
Hide file tree
Showing 2 changed files with 178 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,21 @@
"execution_count": 13,
"id": "8d9914c4",
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'requests'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[1], line 8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmira\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodeling\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01maskenet\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpetrinet\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AskeNetPetriNetModel\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyciemss\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minterfaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m setup_model, calibrate, intervene\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyciemss\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mPetriNetODE\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minterfaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_petri_model, setup_petri_model\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msympy\u001b[39;00m\n",
"File \u001b[0;32m~/Projects/pyciemss/src/pyciemss/PetriNetODE/interfaces.py:5\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorch\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyro\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minfer\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Predictive\n\u001b[0;32m----> 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyciemss\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mPetriNetODE\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 6\u001b[0m PetriNetODESystem,\n\u001b[1;32m 7\u001b[0m ScaledBetaNoisePetriNetODESystem,\n\u001b[1;32m 8\u001b[0m MiraPetriNetODESystem,\n\u001b[1;32m 9\u001b[0m get_name,\n\u001b[1;32m 10\u001b[0m )\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyciemss\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrisk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mouu\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m computeRisk, solveOUU\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpyciemss\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrisk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrisk_measures\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m alpha_quantile, alpha_superquantile\n",
"File \u001b[0;32m~/Projects/pyciemss/src/pyciemss/PetriNetODE/base.py:8\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwarnings\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Dict, List, Optional, Union, OrderedDict\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mrequests\u001b[39;00m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnetworkx\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'requests'"
]
}
],
"source": [
"import mira\n",
"from mira.metamodel import Concept, ControlledConversion, GroupedControlledConversion, Initial, NaturalConversion, Parameter, Template, TemplateModel\n",
Expand Down Expand Up @@ -1534,9 +1548,9 @@
],
"metadata": {
"kernelspec": {
"display_name": "pyciemss-main",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "pyciemss-main"
"name": "python3"
},
"language_info": {
"codemirror_mode": {
Expand Down
163 changes: 161 additions & 2 deletions notebook/integration_demo/demo.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
"import os\n",
"from pyciemss.PetriNetODE.interfaces import (\n",
" load_and_sample_petri_model,\n",
" load_and_calibrate_and_sample_petri_model\n",
")"
" load_and_calibrate_and_sample_petri_model,\n",
" load_and_optimize_and_sample_petri_model,\n",
" load_and_calibrate_and_optimize_and_sample_petri_model\n",
")\n",
"import numpy as np"
]
},
{
Expand Down Expand Up @@ -148,6 +151,162 @@
" os.path.join(DEMO_PATH, \"results_petri/calibrated_sample_results.csv\"), index=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## load_and_optimize_and_sample_petri_model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Time taken: (2.19e-01 seconds per model evaluation).\n",
"Performing risk-based optimization under uncertainty (using alpha-superquantile)\n",
"Estimated wait time 1643.2 seconds...\n",
"Optimization completed in time 302.05 seconds.\n",
"Optimal policy:\t0.0\n",
"Post-processing optimal policy...\n",
"Estimated risk at optimal policy [0.7047186017036438]\n",
"Optimal policy: 0.0\n",
"Estimated risk at optimal policy [0.7047186017036438]\n"
]
}
],
"source": [
"num_samples = 100\n",
"timepoints = [0.0, 1.0, 2.0, 3.0, 4.0]\n",
"\n",
"# Run the calibration and sampling\n",
"OBJFUN = lambda x: np.abs(x)\n",
"INTERVENTION = [(0.1, \"beta\")]\n",
"QOI = (\"scenario2dec_nday_average\", \"Infected_sol\", 2)\n",
"ouu_samples, opt_policy = load_and_optimize_and_sample_petri_model(\n",
" ASKENET_PATH,\n",
" num_samples,\n",
" timepoints=timepoints,\n",
" interventions=INTERVENTION,\n",
" qoi=QOI,\n",
" risk_bound=10.,\n",
" objfun=OBJFUN,\n",
" initial_guess=0.02,\n",
" bounds=[[0.],[3.]],\n",
" verbose=True,\n",
")\n",
"\n",
"# Save results\n",
"ouu_samples.to_csv(\n",
" os.path.join(DEMO_PATH, \"results_petri/optimize_sample_results.csv\"), index=False\n",
")\n",
"print(\"Optimal policy:\", opt_policy[\"policy\"])\n",
"print(\"Estimated risk at optimal policy\", opt_policy[\"risk\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## load_and_calibrate_and_optimize_and_sample_petri_model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"iteration 0: loss = 37.5659122467041\n",
"iteration 25: loss = 35.41392183303833\n",
"iteration 50: loss = 33.67425513267517\n",
"iteration 75: loss = 32.595038652420044\n",
"iteration 100: loss = 33.10420513153076\n",
"iteration 125: loss = 32.42216110229492\n",
"iteration 150: loss = 33.292160987854004\n",
"iteration 175: loss = 31.957093477249146\n",
"iteration 200: loss = 32.40791869163513\n",
"iteration 225: loss = 32.1630494594574\n",
"iteration 250: loss = 32.64620661735535\n",
"iteration 275: loss = 32.447582960128784\n",
"iteration 300: loss = 32.42112612724304\n",
"iteration 325: loss = 32.70798373222351\n",
"iteration 350: loss = 32.1295063495636\n",
"iteration 375: loss = 32.78153920173645\n",
"iteration 400: loss = 32.15399241447449\n",
"iteration 425: loss = 32.18069672584534\n",
"iteration 450: loss = 32.34887766838074\n",
"iteration 475: loss = 32.39561104774475\n",
"iteration 500: loss = 32.51458191871643\n",
"iteration 525: loss = 32.285157680511475\n",
"iteration 550: loss = 32.21916651725769\n",
"iteration 575: loss = 32.54395031929016\n",
"iteration 600: loss = 32.487563133239746\n",
"iteration 625: loss = 32.54312562942505\n",
"iteration 650: loss = 31.965022087097168\n",
"iteration 675: loss = 32.316070318222046\n",
"iteration 700: loss = 32.36382842063904\n",
"iteration 725: loss = 32.52105975151062\n",
"iteration 750: loss = 32.83406376838684\n",
"iteration 775: loss = 32.393730878829956\n",
"iteration 800: loss = 32.43019080162048\n",
"iteration 825: loss = 32.3959174156189\n",
"iteration 850: loss = 32.112430572509766\n",
"iteration 875: loss = 32.36790990829468\n",
"iteration 900: loss = 32.66983437538147\n",
"iteration 925: loss = 32.438520669937134\n",
"iteration 950: loss = 32.27924203872681\n",
"iteration 975: loss = 32.38777709007263\n",
"Time taken: (1.62e-01 seconds per model evaluation).\n",
"Performing risk-based optimization under uncertainty (using alpha-superquantile)\n",
"Estimated wait time 1214.8 seconds...\n",
"Optimization completed in time 325.88 seconds.\n",
"Optimal policy:\t0.0\n",
"Post-processing optimal policy...\n",
"Estimated risk at optimal policy [0.7005741119384765]\n",
"Optimal policy after calibration: 0.0\n",
"Estimated risk at optimal policy after calibration [0.7005741119384765]\n"
]
}
],
"source": [
"data_path = os.path.join(DEMO_PATH, \"data.csv\")\n",
"num_samples = 100\n",
"timepoints = [0.0, 1.0, 2.0, 3.0, 4.0]\n",
"\n",
"# Run the calibration and sampling\n",
"OBJFUN = lambda x: np.abs(x)\n",
"INTERVENTION = [(0.1, \"beta\")]\n",
"QOI = (\"scenario2dec_nday_average\", \"Infected_sol\", 2)\n",
"ouu_cal_samples, opt_cal_policy = load_and_calibrate_and_optimize_and_sample_petri_model(\n",
" ASKENET_PATH,\n",
" data_path,\n",
" num_samples,\n",
" timepoints=timepoints,\n",
" interventions=INTERVENTION,\n",
" qoi=QOI,\n",
" risk_bound=10.,\n",
" objfun=OBJFUN,\n",
" initial_guess=0.02,\n",
" bounds=[[0.],[3.]],\n",
" verbose=True,\n",
")\n",
"\n",
"# Save results\n",
"ouu_cal_samples.to_csv(\n",
" os.path.join(DEMO_PATH, \"results_petri/calibrate_optimize_sample_results.csv\"), index=False\n",
")\n",
"print(\"Optimal policy after calibration:\", opt_policy[\"policy\"])\n",
"print(\"Estimated risk at optimal policy after calibration\", opt_policy[\"risk\"])"
]
}
],
"metadata": {
Expand Down

0 comments on commit 27af0a8

Please sign in to comment.