Skip to content

Instantly share code, notes, and snippets.

@yohm
Last active June 13, 2017 07:10
Show Gist options
  • Save yohm/f01ce95973acc8a6632a56efcb87c73c to your computer and use it in GitHub Desktop.
Save yohm/f01ce95973acc8a6632a56efcb87c73c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1+2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os,sys\n",
"sys.path.append( os.environ['OACIS_ROOT'] )\n",
"import oacis"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"sim = oacis.Simulator.find_by_name(\"NS_model\")\n",
"host = oacis.Host.find_by_name(\"localhost\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"rho_values = np.linspace( 0.05, 0.5, 10)\n",
"base_param = { \"l\": 200, \"v\": 5, \"p\": 0.05, \"t_init\": 100, \"t_measure\": 300 }\n",
"\n",
"created_ps_list = []\n",
"for rho in rho_values:\n",
" param = base_param.copy()\n",
" param['rho'] = rho\n",
" ps = sim.find_or_create_parameter_set( param )\n",
" runs = ps.find_or_create_runs_upto(1, submitted_to=host)\n",
" created_ps_list.append(ps)\n",
"\n",
"len(created_ps_list)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-06-13 05:36:38,862 - oacis.oacis_watcher - INFO - start polling\n",
"2017-06-13 05:36:38,927 - oacis.oacis_watcher - INFO - calling callback for ('593f4be5a56dd02dbdaf42e5', '593f4be5a56dd02dbdaf42e7', '593f4be5a56dd02dbdaf42e9', '593f4be5a56dd02dbdaf42eb', '593f4be5a56dd02dbdaf42ed', '593f4be5a56dd02dbdaf42ef', '593f4be5a56dd02dbdaf42f1', '593f4be6a56dd02dbdaf42f3', '593f4be6a56dd02dbdaf42f5', '593f4be6a56dd02dbdaf42f7')\n",
"2017-06-13 05:36:39,004 - oacis.oacis_watcher - INFO - stop polling. (interrupted=False)\n"
]
}
],
"source": [
"# an idiom to wait until all the parameter_sets finish\n",
"w = oacis.OacisWatcher()\n",
"w.watch_all_ps( created_ps_list, lambda pss: None)\n",
"w.loop()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f285c070908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"parameter_sets = sorted( created_ps_list, key= lambda ps: ps.v()['rho'] )\n",
"x = []\n",
"y = []\n",
"for ps in parameter_sets:\n",
" x.append( ps.v()[\"rho\"] )\n",
" y.append( ps.average_result(\"flow\")[0] )\n",
" \n",
"plt.plot(x,y, 'ro')\n",
"plt.xlabel(\"rho\")\n",
"plt.ylabel(\"flow\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Searching an optimum $\\rho$\n",
"\n",
"It seems that there is an optimal $\\rho$ to maximize the traffic flow. Let us search the optimum value iteratively.\n",
"Algorithm for searching:\n",
"\n",
"1. take the PS having the largest \"flow\".\n",
"1. create two ParameterSets at the centers between its neighboring PSs.\n",
"1. go back to 1 until we have enough resolution."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-06-13 05:36:39,756 - oacis.oacis_watcher - INFO - start polling\n",
"2017-06-13 05:36:39,790 - oacis.oacis_watcher - INFO - calling callback for ('593f4be5a56dd02dbdaf42e5', '593f4be5a56dd02dbdaf42e7', '593f4be5a56dd02dbdaf42e9', '593f4be5a56dd02dbdaf42eb', '593f4be5a56dd02dbdaf42ed', '593f4be5a56dd02dbdaf42ef', '593f4be5a56dd02dbdaf42f1', '593f4be6a56dd02dbdaf42f3', '593f4be6a56dd02dbdaf42f5', '593f4be6a56dd02dbdaf42f7', '593f4e62a56dd02dbdaf42f9', '593f4e62a56dd02dbdaf42fb', '593f4e6ca56dd02dbdaf42fd', '593f4e6ca56dd02dbdaf42ff', '593f4e77a56dd02dbdaf4301', '593f4e77a56dd02dbdaf4303', '593f4e81a56dd02dbdaf4305', '593f4e81a56dd02dbdaf4307', '593f6a6fa56dd02dbdaf4309')\n",
"2017-06-13 05:36:40,021 - oacis.oacis_watcher - INFO - stop polling. (interrupted=False)\n"
]
},
{
"data": {
"text/plain": [
"{'l': 200,\n",
" 'p': 0.05,\n",
" 'rho': 0.16250000000000003,\n",
" 't_init': 100,\n",
" 't_measure': 300,\n",
" 'v': 5}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
" \n",
"def find_nearest_neighbors( ps, input_key ):\n",
" ps_list = list( ps.parameter_sets_with_different( input_key ) )\n",
" idx = ps_list.index( ps )\n",
" left_ps = ps_list[idx-1] if idx > 0 else None\n",
" right_ps = ps_list[idx+1] if idx+1 < len(ps_list) else None\n",
" return (left_ps, right_ps)\n",
"\n",
"def find_optimum_ps( sim, input_key, output_key, base_param):\n",
" query = { \"v.%s\"%k:v for k,v in base_param.items() if k != input_key }\n",
" parameter_sets = sim.parameter_sets().where( query ).to_a()\n",
" oacis.OacisWatcher.await_all_ps( parameter_sets )\n",
" sorted_by_output = sorted( parameter_sets, key=lambda ps: ps.average_result(output_key)[0] )\n",
" best_ps = sorted_by_output[-1]\n",
" return best_ps\n",
"\n",
"def create_a_new_ps_in_between( ps1, ps2, input_key ):\n",
" new_param = ps1.v()\n",
" new_param[input_key] = (ps1.v()[input_key] + ps2.v()[input_key]) / 2.0\n",
" new_ps = sim.find_or_create_parameter_set( new_param )\n",
" new_runs = new_ps.find_or_create_runs_upto(1, submitted_to=oacis.Host.find_by_name(\"localhost\") )\n",
" return new_ps\n",
"\n",
"def create_initial_pss(sim, input_key, base_param, domain=(0.05,0.95)):\n",
" param1 = base_param.copy()\n",
" param1[input_key] = domain[0]\n",
" ps1 = sim.find_or_create_parameter_set( param1 )\n",
" ps1.find_or_create_runs_upto(1, submitted_to=oacis.Host.find_by_name(\"localhost\") )\n",
" param2 = base_param.copy()\n",
" param2[input_key] = domain[1]\n",
" ps2 = sim.find_or_create_parameter_set( param2 )\n",
" ps2.find_or_create_runs_upto(1, submitted_to=oacis.Host.find_by_name(\"localhost\") )\n",
" return (ps1,ps2)\n",
"\n",
"def search_for_optimum( sim, input_key, output_key, base_param, resolution):\n",
" create_initial_pss(sim, input_key, base_param)\n",
" best_ps = find_optimum_ps( sim, input_key, output_key, base_param )\n",
" left_ps, right_ps = find_nearest_neighbors( best_ps, input_key )\n",
" new_ps_list = []\n",
" if (left_ps is not None) and abs(left_ps.v()[input_key]-best_ps.v()[input_key]) > resolution:\n",
" new_ps1 = create_a_new_ps_in_between( left_ps, best_ps, input_key )\n",
" new_ps_list.append(new_ps1)\n",
" if (right_ps is not None) and abs(right_ps.v()[input_key]-best_ps.v()[input_key]) > resolution:\n",
" new_ps2 = create_a_new_ps_in_between( right_ps, best_ps, input_key )\n",
" new_ps_list.append(new_ps2)\n",
" if len(new_ps_list) > 0:\n",
" return search_for_optimum( sim, input_key, output_key, base_param, resolution)\n",
" else:\n",
" return best_ps\n",
"\n",
"sim = oacis.Simulator.find_by_name(\"NS_model\")\n",
"base_param = { \"l\": 200, \"v\": 5, \"p\": 0.05, \"t_init\": 100, \"t_measure\": 300 }\n",
"# best_ps = find_optimum_ps( sim, 'rho', 'flow', base_param)\n",
"# print( best_ps.v() )\n",
"# left, right = find_nearest_neighbors( best_ps, 'rho' )\n",
"# print( left.v(), right.v() )\n",
"# create_a_new_ps_in_between( left, best_ps, 'rho' )\n",
"\n",
"w = oacis.OacisWatcher()\n",
"best_ps = None\n",
"def f():\n",
" global best_ps\n",
" best_ps = search_for_optimum( sim, 'rho', 'flow', base_param, 0.005)\n",
"w.async(f)\n",
"w.loop()\n",
"best_ps.v()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f285c070940>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def plot_rho_flow_diagram( best_ps ):\n",
" import matplotlib.pyplot as plt\n",
" parameter_sets = best_ps.parameter_sets_with_different( 'rho' )\n",
" x = []\n",
" y = []\n",
" for ps in parameter_sets:\n",
" x.append( ps.v()[\"rho\"] )\n",
" y.append( ps.average_result(\"flow\")[0] )\n",
" plt.plot(x,y, 'ro')\n",
" plt.xlabel(\"rho\")\n",
" plt.ylabel(\"flow\")\n",
" plt.show()\n",
" \n",
"plot_rho_flow_diagram(best_ps)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-06-13 05:36:41,070 - oacis.oacis_watcher - INFO - start polling\n",
"2017-06-13 05:36:41,212 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd119f', '593f7397a56dd0346ccd11a1', '593f73c7a56dd0346ccd11cd', '593f73f0a56dd0346ccd11df', '593f73f1a56dd0346ccd11e1', '593f741fa56dd0346ccd1219', '593f741fa56dd0346ccd121b', '593f7459a56dd0346ccd1245', '593f7459a56dd0346ccd1247', '593f748ea56dd0346ccd1285', '593f748ea56dd0346ccd1287', '593f74bea56dd0346ccd12ad', '593f74bea56dd0346ccd12af', '593f74e0a56dd0346ccd12d5', '593f74e0a56dd0346ccd12d7', '593f74f6a56dd0346ccd12fd', '593f74f6a56dd0346ccd12ff')\n",
"2017-06-13 05:36:41,401 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11a3', '593f7397a56dd0346ccd11a5', '593f73c8a56dd0346ccd11cf', '593f73f7a56dd0346ccd11e9', '593f73f7a56dd0346ccd11eb', '593f742ca56dd0346ccd1225', '593f742ca56dd0346ccd1227', '593f746ba56dd0346ccd1259', '593f746ba56dd0346ccd125b', '593f748ea56dd0346ccd128d', '593f748ea56dd0346ccd128f', '593f74c5a56dd0346ccd12b5', '593f74c5a56dd0346ccd12b7', '593f74e1a56dd0346ccd12dd', '593f74e1a56dd0346ccd12df', '593f74ffa56dd0346ccd1309', '593f74ffa56dd0346ccd130b')\n",
"2017-06-13 05:36:41,607 - oacis.oacis_watcher - INFO - calling callback for ('593f4be5a56dd02dbdaf42e5', '593f4be5a56dd02dbdaf42e7', '593f4be5a56dd02dbdaf42e9', '593f4be5a56dd02dbdaf42eb', '593f4be5a56dd02dbdaf42ed', '593f4be5a56dd02dbdaf42ef', '593f4be5a56dd02dbdaf42f1', '593f4be6a56dd02dbdaf42f3', '593f4be6a56dd02dbdaf42f5', '593f4be6a56dd02dbdaf42f7', '593f4e62a56dd02dbdaf42f9', '593f4e62a56dd02dbdaf42fb', '593f4e6ca56dd02dbdaf42fd', '593f4e6ca56dd02dbdaf42ff', '593f4e77a56dd02dbdaf4301', '593f4e77a56dd02dbdaf4303', '593f4e81a56dd02dbdaf4305', '593f4e81a56dd02dbdaf4307', '593f6a6fa56dd02dbdaf4309')\n",
"2017-06-13 05:36:41,836 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11a7', '593f7397a56dd0346ccd11a9', '593f73c8a56dd0346ccd11d1', '593f73f7a56dd0346ccd11ed', '593f73f8a56dd0346ccd11ef', '593f7432a56dd0346ccd1229', '593f7432a56dd0346ccd122b', '593f746ca56dd0346ccd125d', '593f746ca56dd0346ccd125f', '593f749fa56dd0346ccd1291', '593f749fa56dd0346ccd1293', '593f74c5a56dd0346ccd12b9', '593f74c5a56dd0346ccd12bb', '593f74e7a56dd0346ccd12e1', '593f74e7a56dd0346ccd12e3', '593f74fea56dd0346ccd1305', '593f74fea56dd0346ccd1307')\n",
"2017-06-13 05:36:42,032 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11ab', '593f7397a56dd0346ccd11ad', '593f73c9a56dd0346ccd11d3', '593f73f8a56dd0346ccd11f1', '593f73f8a56dd0346ccd11f3', '593f7433a56dd0346ccd122d', '593f7433a56dd0346ccd122f', '593f7472a56dd0346ccd1261', '593f7473a56dd0346ccd1263', '593f74a0a56dd0346ccd1295', '593f74a0a56dd0346ccd1297', '593f74cca56dd0346ccd12bd', '593f74cca56dd0346ccd12bf', '593f74e8a56dd0346ccd12e5', '593f74e8a56dd0346ccd12e7', '593f7500a56dd0346ccd130d', '593f7500a56dd0346ccd130f')\n",
"2017-06-13 05:36:42,281 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11af', '593f7397a56dd0346ccd11b1', '593f73d3a56dd0346ccd11d5', '593f7400a56dd0346ccd11fd', '593f7400a56dd0346ccd11ff', '593f7445a56dd0346ccd1235', '593f7446a56dd0346ccd1237', '593f747ba56dd0346ccd1271', '593f747ba56dd0346ccd1273', '593f74b1a56dd0346ccd12a9', '593f74b1a56dd0346ccd12ab', '593f74d9a56dd0346ccd12d1', '593f74d9a56dd0346ccd12d3', '593f74f0a56dd0346ccd12f9', '593f74f1a56dd0346ccd12fb', '593f7517a56dd0346ccd1325', '593f7517a56dd0346ccd1327')\n",
"2017-06-13 05:36:42,473 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11b3', '593f7397a56dd0346ccd11b5', '593f73dea56dd0346ccd11d7', '593f740ba56dd0346ccd1201', '593f740ba56dd0346ccd1203', '593f7451a56dd0346ccd1239', '593f7451a56dd0346ccd123b', '593f747aa56dd0346ccd126d', '593f747aa56dd0346ccd126f', '593f74a1a56dd0346ccd1299', '593f74a1a56dd0346ccd129b', '593f74cca56dd0346ccd12c1', '593f74cca56dd0346ccd12c3', '593f74e9a56dd0346ccd12e9', '593f74e9a56dd0346ccd12eb', '593f7506a56dd0346ccd1311', '593f7506a56dd0346ccd1313')\n",
"2017-06-13 05:36:42,675 - oacis.oacis_watcher - INFO - calling callback for ('593f7397a56dd0346ccd11b7', '593f7397a56dd0346ccd11b9', '593f73dfa56dd0346ccd11d9', '593f740ba56dd0346ccd1205', '593f740ca56dd0346ccd1207', '593f7452a56dd0346ccd123d', '593f7452a56dd0346ccd123f', '593f7479a56dd0346ccd1269', '593f7479a56dd0346ccd126b', '593f74a7a56dd0346ccd129d', '593f74a8a56dd0346ccd129f', '593f74cda56dd0346ccd12c5', '593f74cda56dd0346ccd12c7', '593f74e9a56dd0346ccd12ed', '593f74e9a56dd0346ccd12ef', '593f7507a56dd0346ccd1315', '593f7507a56dd0346ccd1317')\n",
"2017-06-13 05:36:42,873 - oacis.oacis_watcher - INFO - calling callback for ('593f7398a56dd0346ccd11bb', '593f7398a56dd0346ccd11bd', '593f73e5a56dd0346ccd11db', '593f7412a56dd0346ccd120d', '593f7413a56dd0346ccd120f', '593f7458a56dd0346ccd1241', '593f7458a56dd0346ccd1243', '593f7481a56dd0346ccd1275', '593f7481a56dd0346ccd1277', '593f74aea56dd0346ccd12a1', '593f74afa56dd0346ccd12a3', '593f74d3a56dd0346ccd12c9', '593f74d3a56dd0346ccd12cb', '593f74efa56dd0346ccd12f1', '593f74efa56dd0346ccd12f3', '593f7509a56dd0346ccd131d', '593f7509a56dd0346ccd131f')\n",
"2017-06-13 05:36:43,062 - oacis.oacis_watcher - INFO - calling callback for ('593f7398a56dd0346ccd11bf', '593f7398a56dd0346ccd11c1', '593f73e5a56dd0346ccd11dd', '593f7413a56dd0346ccd1211', '593f7413a56dd0346ccd1213', '593f745fa56dd0346ccd1249', '593f745fa56dd0346ccd124b', '593f748ea56dd0346ccd1289', '593f748ea56dd0346ccd128b', '593f74c4a56dd0346ccd12b1', '593f74c4a56dd0346ccd12b3', '593f74e0a56dd0346ccd12d9', '593f74e1a56dd0346ccd12db', '593f74f7a56dd0346ccd1301', '593f74f7a56dd0346ccd1303', '593f7515a56dd0346ccd1321', '593f7515a56dd0346ccd1323')\n",
"2017-06-13 05:36:43,254 - oacis.oacis_watcher - INFO - calling callback for ('593f3beea56dd00c7e8dd55e', '593f3beea56dd00c7e8dd561', '593f3beea56dd00c7e8dd564', '593f3beea56dd00c7e8dd567', '593f3beea56dd00c7e8dd56a', '593f3beea56dd00c7e8dd56d', '593f3beea56dd00c7e8dd570', '593f3befa56dd00c7e8dd573', '593f3befa56dd00c7e8dd576', '593f3befa56dd00c7e8dd579', '593f7398a56dd0346ccd11c3', '593f73f9a56dd0346ccd11f5', '593f73f9a56dd0346ccd11f7', '593f7426a56dd0346ccd1221', '593f7426a56dd0346ccd1223', '593f7460a56dd0346ccd1255', '593f7460a56dd0346ccd1257', '593f748da56dd0346ccd1281', '593f748da56dd0346ccd1283')\n",
"2017-06-13 05:36:43,457 - oacis.oacis_watcher - INFO - calling callback for ('593f3befa56dd00c7e8dd57c', '593f3befa56dd00c7e8dd57f', '593f3befa56dd00c7e8dd582', '593f3befa56dd00c7e8dd585', '593f3befa56dd00c7e8dd588', '593f3befa56dd00c7e8dd58b', '593f3befa56dd00c7e8dd58e', '593f3befa56dd00c7e8dd591', '593f3befa56dd00c7e8dd594', '593f3befa56dd00c7e8dd597', '593f7398a56dd0346ccd11c5', '593f73faa56dd0346ccd11f9', '593f73faa56dd0346ccd11fb', '593f7425a56dd0346ccd121d', '593f7425a56dd0346ccd121f', '593f7460a56dd0346ccd1251', '593f7460a56dd0346ccd1253', '593f748da56dd0346ccd127d', '593f748da56dd0346ccd127f')\n",
"2017-06-13 05:36:43,666 - oacis.oacis_watcher - INFO - calling callback for ('593f3befa56dd00c7e8dd59a', '593f3befa56dd00c7e8dd59d', '593f3befa56dd00c7e8dd5a0', '593f3befa56dd00c7e8dd5a3', '593f3befa56dd00c7e8dd5a6', '593f3befa56dd00c7e8dd5a9', '593f3befa56dd00c7e8dd5ac', '593f3befa56dd00c7e8dd5af', '593f3befa56dd00c7e8dd5b2', '593f3befa56dd00c7e8dd5b5', '593f7398a56dd0346ccd11c7', '593f73f7a56dd0346ccd11e3', '593f73f7a56dd0346ccd11e5', '593f740ca56dd0346ccd1209', '593f740ca56dd0346ccd120b', '593f743fa56dd0346ccd1231', '593f743fa56dd0346ccd1233', '593f7473a56dd0346ccd1265', '593f7473a56dd0346ccd1267')\n",
"2017-06-13 05:36:43,890 - oacis.oacis_watcher - INFO - calling callback for ('593f7398a56dd0346ccd11c9', '593f7398a56dd0346ccd11cb', '593f73f7a56dd0346ccd11e7', '593f7414a56dd0346ccd1215', '593f7414a56dd0346ccd1217', '593f745fa56dd0346ccd124d', '593f745fa56dd0346ccd124f', '593f748ca56dd0346ccd1279', '593f748ca56dd0346ccd127b', '593f74afa56dd0346ccd12a5', '593f74b0a56dd0346ccd12a7', '593f74d3a56dd0346ccd12cd', '593f74d3a56dd0346ccd12cf', '593f74f0a56dd0346ccd12f5', '593f74f0a56dd0346ccd12f7', '593f7508a56dd0346ccd1319', '593f7508a56dd0346ccd131b')\n",
"2017-06-13 05:36:44,073 - oacis.oacis_watcher - INFO - calling callback for ('593f6b17a56dd02dbdaf430b', '593f6b17a56dd02dbdaf430d', '593f6b27a56dd02dbdaf430f', '593f6b6ba56dd02dbdaf4311', '593f6b84a56dd02dbdaf4313', '593f6b84a56dd02dbdaf4315', '593f6ba4a56dd02dbdaf4317', '593f6ba4a56dd02dbdaf4319', '593f6bf6a56dd02dbdaf431b', '593f6bf6a56dd02dbdaf431d', '593f6fada56dd0346ccd1193', '593f6faea56dd0346ccd1195', '593f6feca56dd0346ccd1197', '593f6feca56dd0346ccd1199', '593f703fa56dd0346ccd119b', '593f703fa56dd0346ccd119d')\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-06-13 05:36:44,272 - oacis.oacis_watcher - INFO - stop polling. (interrupted=False)\n"
]
},
{
"data": {
"text/plain": [
"{(0.05, 3): 0.26093750000000004,\n",
" (0.05, 4): 0.19765624999999998,\n",
" (0.05, 5): 0.16250000000000003,\n",
" (0.05, 6): 0.144921875,\n",
" (0.05, 7): 0.12734375000000003,\n",
" (0.15, 3): 0.2328125,\n",
" (0.15, 4): 0.17304687500000002,\n",
" (0.15, 5): 0.14140625,\n",
" (0.15, 6): 0.12382812500000002,\n",
" (0.15, 7): 0.11328125000000001,\n",
" (0.3, 3): 0.225,\n",
" (0.3, 4): 0.14375,\n",
" (0.3, 5): 0.13125,\n",
" (0.3, 6): 0.1484375,\n",
" (0.3, 7): 0.08515625}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from functools import partial\n",
"sim = oacis.Simulator.find_by_name(\"NS_model\")\n",
"p_list = [0.05, 0.15, 0.3]\n",
"v_list = [3,4,5,6,7]\n",
"w = oacis.OacisWatcher()\n",
"best_ps_dict = {}\n",
"\n",
"def best_rho(v, p):\n",
" base_param = { \"l\": 200, \"v\": v, \"p\": p, \"t_init\": 100, \"t_measure\": 300 }\n",
" best_ps = search_for_optimum( sim, 'rho', 'flow', base_param, 0.005)\n",
" best_ps_dict[(p,v)] = best_ps.v()['rho']\n",
"\n",
"for p in p_list:\n",
" for v in v_list:\n",
" f = partial( best_rho, v, p )\n",
" w.async(f)\n",
"w.loop()\n",
"\n",
"best_ps_dict"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nCRJ1EKI5bJYAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2846e4eb00>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# After searching we plot the optimal rho for each v and p.\n",
"plt.figure()\n",
"plt.xlabel('v')\n",
"plt.ylabel('Optimum rho')\n",
"\n",
"for p in p_list:\n",
" opt_rho_list = []\n",
" for v in v_list:\n",
" opt_rho = best_ps_dict[ (p,v) ]\n",
" opt_rho_list.append( opt_rho )\n",
" plt.plot( v_list, opt_rho_list, 'o-', label=\"p=%f\"%p )\n",
"plt.legend(loc='best')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment