Moved Chapter 2 as part of reorg
This commit is contained in:
BIN
animations/02_no_info.gif
Normal file
BIN
animations/02_no_info.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
BIN
animations/02_simulate.gif
Normal file
BIN
animations/02_simulate.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 184 KiB |
420
animations/discrete_bayes_animations.ipynb
Normal file
420
animations/discrete_bayes_animations.ipynb
Normal file
@@ -0,0 +1,420 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:8ca39e02795ea489851809c56e3e92eaf9d7fe6e5fb1b83cde4ac7605fcdccb0"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Discrete Bayes Animations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style(directory='..')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"html": [
|
||||
"<style>\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
|
||||
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
|
||||
"\n",
|
||||
" div.cell{\n",
|
||||
" width: 850px;\n",
|
||||
" margin-left: 0% !important;\n",
|
||||
" margin-right: auto;\n",
|
||||
" }\n",
|
||||
" div.text_cell code {\n",
|
||||
" background: transparent;\n",
|
||||
" color: #000000;\n",
|
||||
" font-weight: 600;\n",
|
||||
" font-size: 11pt;\n",
|
||||
" font-style: bold;\n",
|
||||
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
|
||||
" }\n",
|
||||
" h1 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
"\t}\n",
|
||||
"\t\n",
|
||||
" div.input_area {\n",
|
||||
" background: #F6F6F9;\n",
|
||||
" border: 1px solid #586e75;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .text_cell_render h1 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 30pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: wrap;\n",
|
||||
" } \n",
|
||||
" h2 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h2 {\n",
|
||||
" font-weight: 200;\n",
|
||||
" font-size: 20pt;\n",
|
||||
" font-style: italic;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#c76c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" } \n",
|
||||
" h3 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h3 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 18pt;\n",
|
||||
" line-height: 100%;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 2em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h4 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h4 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" color:#d77c0c;\n",
|
||||
" margin-bottom: 0.5em;\n",
|
||||
" margin-top: 0.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" h5 {\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" }\n",
|
||||
" .text_cell_render h5 {\n",
|
||||
" font-weight: 300;\n",
|
||||
" font-style: normal;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" font-size: 16pt;\n",
|
||||
" margin-bottom: 0em;\n",
|
||||
" margin-top: 1.5em;\n",
|
||||
" display: block;\n",
|
||||
" white-space: nowrap;\n",
|
||||
" }\n",
|
||||
" div.text_cell_render{\n",
|
||||
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
|
||||
" line-height: 135%;\n",
|
||||
" font-size: 125%;\n",
|
||||
" width:750px;\n",
|
||||
" margin-left:auto;\n",
|
||||
" margin-right:auto;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_text.output_pyout {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 50000px;\n",
|
||||
" }\n",
|
||||
" div.output_subarea.output_stream.output_stdout.output_text {\n",
|
||||
" overflow-x: auto;\n",
|
||||
" overflow-y: scroll;\n",
|
||||
" max-height: 50000px;\n",
|
||||
" }\n",
|
||||
" code{\n",
|
||||
" font-size: 70%;\n",
|
||||
" }\n",
|
||||
" .rendered_html code{\n",
|
||||
" background-color: transparent;\n",
|
||||
" }\n",
|
||||
" ul{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li li{\n",
|
||||
" padding-left: 0.2em; \n",
|
||||
" margin-bottom: 0.2em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" ol{\n",
|
||||
" margin: 2em;\n",
|
||||
" }\n",
|
||||
" ol li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.5em; \n",
|
||||
" }\n",
|
||||
" ul li{\n",
|
||||
" padding-left: 0.5em; \n",
|
||||
" margin-bottom: 0.5em; \n",
|
||||
" margin-top: 0.2em; \n",
|
||||
" }\n",
|
||||
" a:link{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:visited{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:hover{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color: #1d3b84;\n",
|
||||
" }\n",
|
||||
" a:focus{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" a:active{\n",
|
||||
" font-weight: bold;\n",
|
||||
" color:#447adb;\n",
|
||||
" }\n",
|
||||
" .rendered_html :link {\n",
|
||||
" text-decoration: underline; \n",
|
||||
" }\n",
|
||||
" .rendered_html :hover {\n",
|
||||
" text-decoration: none; \n",
|
||||
" }\n",
|
||||
" .rendered_html :visited {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :focus {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .rendered_html :active {\n",
|
||||
" text-decoration: none;\n",
|
||||
" }\n",
|
||||
" .warning{\n",
|
||||
" color: rgb( 240, 20, 20 )\n",
|
||||
" } \n",
|
||||
" hr {\n",
|
||||
" color: #f3f3f3;\n",
|
||||
" background-color: #f3f3f3;\n",
|
||||
" height: 1px;\n",
|
||||
" }\n",
|
||||
" blockquote{\n",
|
||||
" display:block;\n",
|
||||
" background: #fcfcfc;\n",
|
||||
" border-left: 5px solid #c76c0c;\n",
|
||||
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
|
||||
" width:680px;\n",
|
||||
" padding: 10px 10px 10px 10px;\n",
|
||||
" text-align:justify;\n",
|
||||
" text-justify:inter-word;\n",
|
||||
" }\n",
|
||||
" blockquote p {\n",
|
||||
" margin-bottom: 0;\n",
|
||||
" line-height: 125%;\n",
|
||||
" font-size: 100%;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<script>\n",
|
||||
" MathJax.Hub.Config({\n",
|
||||
" TeX: {\n",
|
||||
" extensions: [\"AMSmath.js\"]\n",
|
||||
" },\n",
|
||||
" tex2jax: {\n",
|
||||
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
|
||||
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
|
||||
" },\n",
|
||||
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
|
||||
" \"HTML-CSS\": {\n",
|
||||
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
|
||||
" }\n",
|
||||
" });\n",
|
||||
"</script>\n"
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7eff87e216d8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This notebook creates the animations for the Discrete Bayesian filters chapter. It is not really intended to be a readable part of the book, but of course you are free to look at the source code, and even modify it. However, if you are interested in running your own animations, I'll point you to the examples subdirectory of the book, which contains a number of python scripts that you can run and modify from an IDE or the command line. This module saves the animations to GIF files, which is quite slow and not very interactive. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from matplotlib import animation\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"%matplotlib inline\n",
|
||||
"\n",
|
||||
"def barplot(pos, ylim=(0,1)):\n",
|
||||
" \"\"\" implement plotting of bar plots in a way that plays nicely with the\n",
|
||||
" animations.\"\"\"\n",
|
||||
" \n",
|
||||
" plt.cla()\n",
|
||||
" ax = plt.gca()\n",
|
||||
" x = np.arange(len(pos))\n",
|
||||
" ax.bar(x, pos)\n",
|
||||
" if ylim:\n",
|
||||
" plt.ylim(ylim)\n",
|
||||
" plt.xticks(x+0.4, x)\n",
|
||||
" plt.grid()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"# the predict algorithm of the discrete bayesian filter\n",
|
||||
"def predict(pos, move, p_correct, p_under, p_over):\n",
|
||||
" n = len(pos)\n",
|
||||
" result = np.array(pos, dtype=float)\n",
|
||||
" for i in range(n):\n",
|
||||
" result[i] = \\\n",
|
||||
" pos[(i-move) % n] * p_correct + \\\n",
|
||||
" pos[(i-move-1) % n] * p_over + \\\n",
|
||||
" pos[(i-move+1) % n] * p_under \n",
|
||||
" return result\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def normalize(p):\n",
|
||||
" s = sum(p)\n",
|
||||
" for i in range (len(p)):\n",
|
||||
" p[i] = p[i] / s\n",
|
||||
" \n",
|
||||
"# the update algorithm of the discrete bayesian filter\n",
|
||||
"def update(pos, measure, p_hit, p_miss):\n",
|
||||
" q = np.array(pos, dtype=float)\n",
|
||||
" for i in range(len(hallway)):\n",
|
||||
" if hallway[i] == measure:\n",
|
||||
" q[i] = pos[i] * p_hit\n",
|
||||
" else:\n",
|
||||
" q[i] = pos[i] * p_miss\n",
|
||||
" normalize(q)\n",
|
||||
" return q"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pos = [1.0,0,0,0,0,0,0,0,0,0]\n",
|
||||
"def bar_animate(nframe):\n",
|
||||
" global pos\n",
|
||||
" barplot(pos)\n",
|
||||
" pos = predict(pos, 1, .8, .1, .1)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"fig = plt.figure(figsize=(6.5, 2.5))\n",
|
||||
"anim = animation.FuncAnimation(fig, bar_animate,\n",
|
||||
" frames=100, interval=75)\n",
|
||||
"anim.save('02_no_info.gif', writer='imagemagick')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAbgAAACsCAYAAAAJ+rmKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADWBJREFUeJzt3X3MnXddx/H3Zy0TCuNMWBzS3aQolW1RZDyUBeRBrdJN\n3ZQYZwWNaGBGixijDvgD/zCR8AeRkOEy5rYMhdUwQEscHcFNBMFJYQ+MtaYdNLYFJk87hIeZ1n39\n41xrDnfb+5z77rl7nf58v5Km18Mv5/rk7n3O5/yu6zqnqSokSWrNGX0HkCRpNVhwkqQmWXCSpCZZ\ncJKkJllwkqQmWXCSpCZNLLgkNyR5MMnnlhjzjiR7k9yT5KLZRpQkafmmmcHdCGw50c4klwLPqKqN\nwGuBa2aUTZKkFZtYcFX1ceCbSwy5DLipG3sncHaSc2cTT5KklVk7g8dYDxwYWz8InAc8+OiG4XDo\n16VIklbNYDDI4m2zuslk8QNbaJKkXs2i4A4BC2Pr53XbJEnqzSxOUe4AtgHbk1wMPFRVD55o8GAw\nmMEhJUn/3w2HwyX3Tyy4JDcDLwXOSXIA+HPgMQBVdW1V3Zrk0iT7gO8Arz7p1JIknaSciv8uZ/wm\nE2dwkqRZGJ/BreZNJpIkzRULTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQk\nC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1KSJBZdkS5I9\nSfYmueo4+89JsjPJ3UnuS/Lbq5JUkqRlWLLgkqwBrga2ABcCW5NcsGjYNuCuqno28DLgbUnWrkJW\nSZKmNmkGtwnYV1X7q+owsB24fNGYLwNP7JafCHy9qo7MNqYkScszaaa1Hjgwtn4QeMGiMdcBtyf5\nEnAW8GuziydJ0spMmsHVFI/xJuDuqnoq8GzgnUnOOulkkiSdhEkFdwhYGFtfYDSLG/dC4H0AVfUA\n8EXgmbMKKEnSSkwquF3AxiQbkpwJXAHsWDRmD7AZIMm5jMrtC7MOKknScix5Da6qjiTZBtwGrAGu\nr6rdSa7s9l8L/CVwY5J7GBXmn1XVN1Y5tyRJS0rVNJfZTs5wODx6kMFgsOrHkyS1bzgcHl0eDAZZ\nvN9vMpEkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1\nyYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNWliwSXZkmRPkr1JrjrBmJcl\nuSvJfUn+ZeYpJUlaprVL7UyyBrga2AwcAj6dZEdV7R4bczbwTuDlVXUwyTmrGViSpGlMmsFtAvZV\n1f6qOgxsBy5fNOY3gPdX1UGAqvra7GNKkrQ8kwpuPXBgbP1gt23cRuBJSe5IsivJb84yoCRJK7Hk\nKUqgpniMxwDPAX4WWAd8Ksm/V9Xekw0nSdJKTSq4Q8DC2PoCo1ncuAPA16rqe8D3kvwr8JOABSdJ\n6s2kU5S7gI1JNiQ5E7gC2LFozD8CP5VkTZJ1wAuA+2cfVZKk6S05g6uqI0m2AbcBa4Drq2p3kiu7\n/ddW1Z4kO4F7gUeA66rKgpMk9SpV01xmOznD4fDoQQaDwaofT5LUvuFweHR5MBhk8X6/yUSS1CQL\nTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S\n1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1KSJBZdkS5I9SfYmuWqJcc9PciTJK2YbUZKk\n5Vuy4JKsAa4GtgAXAluTXHCCcW8FdgJZhZySJC3LpBncJmBfVe2vqsPAduDy44x7HXAL8NUZ55Mk\naUUmFdx64MDY+sFu21FJ1jMqvWu6TTWzdJIkrdCkgpumrN4OvKGqitHpSU9RSpJ6t3bC/kPAwtj6\nAqNZ3LjnAtuTAJwDXJLkcFXtmFlKSZKWaVLB7QI2JtkAfAm4Atg6PqCqfuTR5SQ3Ah+y3CRJfVuy\n4KrqSJJtwG3AGuD6qtqd5Mpu/7WnIKMkScuW0aWz1TUcDo8eZDAYrPrxJEntGw6HR5cHg8Ex93/4\nTSaSpCZZcJKkJllwkqQmWXCSpCZZcJKkJllwkqQmWXCSpCZZcJKkJllwkqQmWXCSpCZZcJKkJllw\nkqQmWXCSpCZZcJKkJllwkqQmWXCSpCZZcJKkJllwkqQmWXCSpCZNVXBJtiTZk2RvkquOs/+VSe5J\ncm+Sf0vyrNlHlSRpehMLLska4GpgC3AhsDXJBYuGfQF4SVU9C/gL4F2zDipJ0nJMM4PbBOyrqv1V\ndRjYDlw+PqCqPlVVw271TuC82caUJGl5pim49cCBsfWD3bYT+V3g1pMJJUnSyVo7xZia9sGS/DTw\nO8CLVpxIkqQZmKbgDgELY+sLjGZx36e7seQ6YEtVfXM28SRJWplpTlHuAjYm2ZDkTOAKYMf4gCRP\nAz4AvKqq9s0+piRJyzNxBldVR5JsA24D1gDXV9XuJFd2+68F3gz8IHBNEoDDVbVp9WJLkrS0VE19\niW3FhsPh0YMMBoNVP54kqX3D4fDo8mAwyOL9fpOJJKlJFpwkqUkWnCSpSRacJKlJFpwkqUkWnCSp\nSRacJKlJFpwkqUnTfBflTO3c+fCpPuRRGzbA+ec/9oT79+x5mP37T1mcY0zKJ0mnUt+viXByr4un\nvOAuuaS/F/APf/hhzj//xPv375/vfKfDL5sZJ5vmCTvvGfvOB2achUn5+n5NhMmvi0s55QWnlTsd\nftnMONk0T9h5z9h3PjDjLJxMeZwOvAYnSWqSBSdJapIFJ0lqkgUnSWqSBSdJapIFJ0lqkgUnSWqS\nBSdJatLEgkuyJcmeJHuTXHWCMe/o9t+T5KLZx5QkaXmWLLgka4CrgS3AhcDWJBcsGnMp8Iyq2gi8\nFrhmlbJKkjS1STO4TcC+qtpfVYeB7cDli8ZcBtwEUFV3AmcnOXfmSSVJWoZU1Yl3Jr8KvLyqXtOt\nvwp4QVW9bmzMh4C3VNUnu/WPAldV1WceHTMcDk98EEmSTtJgMMjibZNmcNMW0+IHttAkSb2aVHCH\ngIWx9QXg4IQx53XbJEnqzaT/LmcXsDHJBuBLwBXA1kVjdgDbgO1JLgYeqqoHxwccb+ooSdJqWrLg\nqupIkm3AbcAa4Pqq2p3kym7/tVV1a5JLk+wDvgO8etVTS5I0wZI3mUiSdLo6Lb7JZJoPm/cpyQ1J\nHkzyub6zHE+ShSR3JPl8kvuS/GHfmRZL8tgkdya5O8n9Sd7Sd6bjSbImyV3d3cNzJ8n+JPd2Gf+j\n7zzHk+TsJLck2d39W1/cd6ZxSZ7Z/fwe/TOct+dMkjd2z+fPJXlvkh/oO9NiSV7f5bsvyet7yTDv\nM7juw+b/CWxmdPPKp4GtVbW712BjkrwY+Dbw7qr6ib7zLJbkKcBTquruJE8APgP88jz9DAGSrKuq\n7yZZC3wC+JOq+kTfucYl+WPgucBZVXVZ33kWS/JF4LlV9Y2+s5xIkpuAj1XVDd2/9eOrath3ruNJ\ncgaj151NVXWg7zwA3T0RtwMXVNX/JPl74NaquqnXYGOS/DhwM/B84DCwE/i9qnrgVOY4HWZw03zY\nvFdV9XHgm33nOJGq+kpV3d0tfxvYDTy131THqqrvdotnMrrmO1cv0knOAy4F/oZjPxozT+Y2W5IB\n8OKqugFG1/nntdw6m4EH5qXcOt9iVBrrujcI65i/O9fPB+6sqoer6n+BjwGvONUhToeCWw+M/3Id\n7LZpBbp3fxcBd/ab5FhJzkhyN/AgcEdV3d93pkX+CvhT4JG+gyyhgI8m2ZXkNX2HOY6nA19NcmOS\nzya5Lsm6vkMt4deB9/YdYlw3O38b8F+M7m5/qKo+2m+qY9wHvDjJk7p/319g9BGyU+p0KLj5Pod6\nGulOT94CvL6byc2Vqnqkqp7N6InwkiQv6znSUUl+EfjvqrqLOZ4hAS+qqouAS4A/6E6fz5O1wHOA\nv66q5zC68/oN/UY6viRnAr8EvK/vLOOS/CjwR8AGRmdinpDklb2GWqSq9gBvBT4CfBi4ix7eGJ4O\nBTfNh801QZLHAO8H/q6q/qHvPEvpTln9E/C8vrOMeSFwWXeN62bgZ5K8u+dMx6iqL3d/fxX4IKNT\n/PPkIHCwqj7drd/CqPDm0SXAZ7qf5Tx5HvDJqvp6VR0BPsDo93OuVNUNVfW8qnop8BCjeylOqdOh\n4I5+2Lx7R3UFow+Xa0pJAlwP3F9Vb+87z/EkOSfJ2d3y44CfY/Suby5U1ZuqaqGqns7otNXtVfVb\nfecal2RdkrO65ccDPw/M1Z29VfUV4ECSH+s2bQY+32OkpWxl9GZm3uwBLk7yuO65vRmYt9P5JPmh\n7u+nAb9CD6d6J32TSe9O9GHznmN9nyQ3Ay8FnpzkAPDmqrqx51jjXgS8Crg3yaOl8caq2tljpsV+\nGLipu2vtDOBvq+qfe860lHk8dX4u8MHRax5rgfdU1Uf6jXRcrwPe071hfYA5/HKI7g3CZmDurmNW\n1T3d2YNdjE77fRZ4V7+pjuuWJE9mdEPM71fVt051gLn/mIAkSStxOpyilCRp2Sw4SVKTLDhJUpMs\nOElSkyw4SVKTLDhJUpMsOElSk/4Po5u82b9IDysAAAAASUVORK5CYII=\n",
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7eff87e21780>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 4
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<img src=\"./animations/no_info.gif\">"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pos = np.array([.1]*10)\n",
|
||||
"hallway = np.array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0])\n",
|
||||
"\n",
|
||||
"def bar_animate(nframe):\n",
|
||||
" global pos\n",
|
||||
" if nframe == 0:\n",
|
||||
" return\n",
|
||||
"\n",
|
||||
" barplot(pos, ylim=(0,1.0))\n",
|
||||
" if nframe % 2 == 0:\n",
|
||||
" pos = predict(pos, 1, .8, .1, .1)\n",
|
||||
" else:\n",
|
||||
" x = (nframe/2) % len(hallway)\n",
|
||||
" z = hallway[x]\n",
|
||||
" pos = update(pos, z, .6, .2)\n",
|
||||
" \n",
|
||||
"\n",
|
||||
"fig = plt.figure(figsize=(6.5, 2.5))\n",
|
||||
"anim = animation.FuncAnimation(fig, bar_animate,\n",
|
||||
" frames=60, interval=75)\n",
|
||||
"anim.save('02_simulate.gif', writer='imagemagick')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAbgAAACsCAYAAAAJ+rmKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADXJJREFUeJzt3X2QXXddx/H3pwm1BMpW6FgkXSYokZRRbHlIOyAPSpSk\naquMY41UxypYR4M4jlrgD/zDGRn+YGSYYifUtlMUGocCGsYmZRBEEKwN9IHSrJMUdkwCVJ66DA91\nEvn6xz2Nl+1m7+7mbs7Nr+/XTCb3nPPL3s/sZvdzf79zzt1UFZIkteaMvgNIkrQaLDhJUpMsOElS\nkyw4SVKTLDhJUpMsOElSk0YWXJIbkzyY5LOLjHl7kgNJ7kly0XgjSpK0fEuZwd0EbD3RwSSXAs+s\nqo3A7wLXjSmbJEkrNrLgqurjwDcWGXIZcHM39g7gnCTnjSeeJEkrs3YMH2M9cGho+zBwPvDgIzvm\n5uZ8uxRJ0qqZmprK/H3jushk/ge20CRJvRpHwR0Bpoe2z+/2SZLUm3EsUe4GdgC7klwCPFRVD55o\n8NTU1BieUpL0WDc3N7fo8ZEFl+QW4KXAuUkOAX8OPA6gqnZW1W1JLk1yEPg2cNVJp5Yk6STlVPy6\nnOGLTJzBSZLGYXgGt5oXmUiSNFEsOElSkyw4SVKTLDhJUpMsOElSkyw4SVKTLDhJUpMsOElSkyw4\nSVKTLDhJUpMsOElSkyw4SVKTLDhJUpMsOElSkyw4SVKTLDhJUpMsOElSkyw4SVKTLDhJUpNGFlyS\nrUlmkhxIcs0Cx89NsjfJ3UnuS/Jbq5JUkqRlWLTgkqwBrgW2As8Gtie5YN6wHcBdVXUh8DLgrUnW\nrkJWSZKWbNQMbjNwsKpmq+oosAu4fN6YLwFP6h4/CfhaVR0bb0xJkpZn1ExrPXBoaPswcPG8MdcD\nH0nyReBs4FfHF0+SpJUZNYOrJXyMNwJ3V9XTgAuBdyQ5+6STSZJ0EkYV3BFgemh7msEsbtgLgfcC\nVNUDwBeAZ40roCRJKzGq4PYBG5NsSHImcAWwe96YGWALQJLzGJTb58cdVJKk5Vj0HFxVHUuyA7gd\nWAPcUFX7k1zdHd8J/CVwU5J7GBTmn1XV11c5tyRJi0rVUk6znZy5ubnjTzI1NbXqzydJat/c3Nzx\nx1NTU5l/3HcykSQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1\nyYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1yYKTJDXJgpMkNcmCkyQ1aWTBJdmaZCbJgSTX\nnGDMy5LcleS+JP8y9pSSJC3T2sUOJlkDXAtsAY4AdybZXVX7h8acA7wDeEVVHU5y7moGliRpKUbN\n4DYDB6tqtqqOAruAy+eN+XXgfVV1GKCqvjr+mJIkLc+oglsPHBraPtztG7YReHKSjybZl+Q3xhlQ\nkqSVWHSJEqglfIzHAc8FXg6sAz6V5N+r6sDJhpMkaaVGFdwRYHpoe5rBLG7YIeCrVfVd4LtJ/hX4\nScCCkyT1ZtQS5T5gY5INSc4ErgB2zxvzj8BPJVmTZB1wMXD/+KNKkrR0i87gqupYkh3A7cAa4Iaq\n2p/k6u74zqqaSbIXuBf4HnB9VVlwkqRepWopp9lOztzc3PEnmZqaWvXnkyS1b25u7vjjqampzD/u\nO5lIkppkwUmSmmTBSZKaZMFJkppkwUmSmjTqRm9J0mPUzMzDzM72m2HDBti06awV/VsLTpK0oNlZ\n2LZtZeUyLnv2PMymTSv7ty5RSpKaZMFJkppkwUmSmmTBSZKaZMFJkppkwUmSmmTBSZKaZMFJkppk\nwUmSmmTBSZKaZMFJkppkwUmSmjSy4JJsTTKT5ECSaxYZ94Ikx5K8crwRJUlavkULLska4FpgK/Bs\nYHuSC04w7i3AXiCrkFOSpGUZNYPbDBysqtmqOgrsAi5fYNxrgVuBr4w5nyRJKzKq4NYDh4a2D3f7\njkuynkHpXdftqrGlkyRphUYV3FLK6m3A66uqGCxPukQpSerdqN/ofQSYHtqeZjCLG/Y8YFcSgHOB\nbUmOVtXusaWUJGmZRhXcPmBjkg3AF4ErgO3DA6rqRx55nOQm4IOWmySpb4sWXFUdS7IDuB1YA9xQ\nVfuTXN0d33kKMkqStGyjZnBU1R5gz7x9CxZbVV01plySJJ0U38lEktQkC06S1CQLTpLUJAtOktQk\nC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtOktQkC06S1CQLTpLUJAtO\nktQkC06S1CQLTpLUJAtOktSkJRVckq1JZpIcSHLNAsdfleSeJPcm+bckzxl/VEmSlm5kwSVZA1wL\nbAWeDWxPcsG8YZ8HXlJVzwH+AnjnuINKkrQcS5nBbQYOVtVsVR0FdgGXDw+oqk9V1Vy3eQdw/nhj\nSpK0PEspuPXAoaHtw92+E/kd4LaTCSVJ0slau4QxtdQPluSngd8GXrTiRJIkjcFSCu4IMD20Pc1g\nFvd9ugtLrge2VtU3xhNPkqSVWcoS5T5gY5INSc4ErgB2Dw9I8nTg/cCVVXVw/DElSVqekTO4qjqW\nZAdwO7AGuKGq9ie5uju+E3gT8IPAdUkAjlbV5tWLLUmnv5mZh5md7e/5N2yATZvO6i/AKlvKEiVV\ntQfYM2/fzqHHrwZePd5oktS22VnYtq2/gtmz52E2bert6Ved72QiSWqSBSdJapIFJ0lqkgUnSWqS\nBSdJatKSrqIcp717Hz7VT3lc65fESpL+3ykvOC+JlSSdCi5RSpKaZMFJkppkwUmSmmTBSZKaZMFJ\nkpp0yq+inGS+s7cktcOCG+I7e0tSO1yilCQ1yYKTJDXJJUpJTer7nDp4Xr1vFpykJvV9Th08r943\nlyglSU0aWXBJtiaZSXIgyTUnGPP27vg9SS4af0xJkpZn0SXKJGuAa4EtwBHgziS7q2r/0JhLgWdW\n1cYkFwPXAZesYubHLM8pSNLSjToHtxk4WFWzAEl2AZcD+4fGXAbcDFBVdyQ5J8l5VfXgKuR9TPOc\ngiaFL7Z0OkhVnfhg8ivAK6rqNd32lcDFVfXaoTEfBN5cVZ/stj8MXFNVn35kzNzc3ImfRJKkkzQ1\nNZX5+0adg1tqMc3/wBaaJKlXowruCDA9tD0NHB4x5vxunyRJvRl1Dm4fsDHJBuCLwBXA9nljdgM7\ngF1JLgEemn/+baGpoyRJq2nRgquqY0l2ALcDa4Abqmp/kqu74zur6rYklyY5CHwbuGrVU0uSNMKi\nF5lIknS6Oi3eyWQpN5v3KcmNSR5M8tm+sywkyXSSjyb5XJL7kvxh35nmS3JWkjuS3J3k/iRv7jvT\nQpKsSXJXd/XwxEkym+TeLuN/9J1nId2tRLcm2d99rSfqvtkkz+o+f4/8mZu075kkb+i+nz+b5D1J\nfqDvTPMleV2X774kr+slw6TP4Lqbzf+ToZvNge3DN5v3LcmLgW8B76qqn+g7z3xJngo8taruTvJE\n4NPAL03S5xAgybqq+k6StcAngD+pqk/0nWtYkj8GngecXVWX9Z1nviRfAJ5XVV/vO8uJJLkZ+FhV\n3dh9rZ9QVXN951pIkjMY/NzZXFWH+s4D0F0T8RHggqr6nyR/D9xWVTf3GmxIkh8HbgFeABwF9gK/\nV1UPnMocp8MM7vjN5lV1FHjkZvOJUVUfB77Rd44TqaovV9Xd3eNvMbhR/2n9pnq0qvpO9/BMBud8\nJ+qHdJLzgUuBv+HRt8ZMkonNlmQKeHFV3QiD8/yTWm6dLcADk1JunW8yKI113QuEdUzeleubgDuq\n6uGq+l/gY8ArT3WI06Hg1gPD/7kOd/u0At2rv4uAO/pN8mhJzkhyN/Ag8NGqur/vTPP8FfCnwPf6\nDrKIAj6cZF+S1/QdZgHPAL6S5KYkn0lyfZJ1fYdaxK8B7+k7xLBudv5W4L8YXN3+UFV9uN9Uj3If\n8OIkT+6+vj/P4BayU+p0KLjJXkM9jXTLk7cCr+tmchOlqr5XVRcy+EZ4SZKX9RzpuCS/APx3Vd3F\nBM+QgBdV1UXANuAPuuXzSbIWeC7w11X1XAZXXr++30gLS3Im8IvAe/vOMizJjwJ/BGxgsBLzxCSv\n6jXUPFU1A7wF+BCwB7iLHl4Yng4Ft5SbzTVCkscB7wP+rqr+oe88i+mWrP4JeH7fWYa8ELisO8d1\nC/AzSd7Vc6ZHqaovdX9/BfgAgyX+SXIYOFxVd3bbtzIovEm0Dfh097mcJM8HPllVX6uqY8D7Gfz/\nnChVdWNVPb+qXgo8xOBailPqdCi44zebd6+ormBwc7mWKEmAG4D7q+ptfedZSJJzk5zTPX488LMM\nXvVNhKp6Y1VNV9UzGCxbfaSqfrPvXMOSrEtydvf4CcDPARN1ZW9VfRk4lOTHul1bgM/1GGkx2xm8\nmJk0M8AlSR7ffW9vASZtOZ8kP9T9/XTgl+lhqXfif6P3iW427znW90lyC/BS4ClJDgFvqqqbeo41\n7EXAlcC9SR4pjTdU1d4eM833w8DN3VVrZwB/W1X/3HOmxUzi0vl5wAcGP/NYC7y7qj7Ub6QFvRZ4\nd/eC9QEm8M0huhcIW4CJO49ZVfd0qwf7GCz7fQZ4Z7+pFnRrkqcwuCDm96vqm6c6wMTfJiBJ0kqc\nDkuUkiQtmwUnSWqSBSdJapIFJ0lqkgUnSWqSBSdJapIFJ0lq0v8ByVyjNXG2/lYAAAAASUVORK5C\nYII=\n",
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7eff66cffac8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
" <img src=\"simulate.gif\">"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user