{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DiscreteDP Example: Water Management" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Daisuke Oyama**\n", "\n", "*Faculty of Economics, University of Tokyo*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From Miranda and Fackler, Applied Computational Economics and Finance, 2002,\n", "Section 7.6.5" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import itertools\n", "import numpy as np\n", "from scipy import sparse\n", "import matplotlib.pyplot as plt\n", "from quantecon.markov import DiscreteDP" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "maxcap = 30\n", "n = maxcap + 1 # Number of states\n", "m = n # Number of actions\n", "\n", "a1, b1 = 14, 0.8\n", "a2, b2 = 10, 0.4\n", "F = lambda x: a1 * x**b1 # Benefit from irrigation\n", "U = lambda c: a2 * c**b2 # Benefit from recreational consumption c = s - x\n", "\n", "probs = [0.1, 0.2, 0.4, 0.2, 0.1]\n", "supp_size = len(probs)\n", "\n", "beta = 0.9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Product formulation" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Reward array\n", "R = np.empty((n, m))\n", "for s, x in itertools.product(range(n), range(m)):\n", " R[s, x] = F(x) + U(s-x) if x <= s else -np.inf" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Transition probability array\n", "Q = np.zeros((n, m, n))\n", "for s, x in itertools.product(range(n), range(m)):\n", " if x <= s:\n", " for j in range(supp_size):\n", " Q[s, x, np.minimum(s-x+j, n-1)] += probs[j]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Create a DiscreteDP\n", "ddp = DiscreteDP(R, Q, beta)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solve the dynamic optimization problem (by policy iteration)\n", "res = ddp.solve()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of iterations\n", "res.num_iter" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4,\n", " 4, 4, 4, 5, 5, 5, 5, 5])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Optimal policy\n", "res.sigma" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 338.41645251, 361.98791375, 377.4257383 , 391.4257383 ,\n", " 405.2360958 , 417.9622843 , 429.86115765, 441.17106277,\n", " 452.06672421, 462.66012607, 473.03554185, 483.40234488,\n", " 493.51237732, 503.35334776, 512.93797732, 522.31628408,\n", " 531.65601391, 540.88902181, 549.98545145, 558.93954761,\n", " 567.74582688, 576.47074514, 585.14046164, 593.69786291,\n", " 602.15675175, 610.510884 , 618.80539659, 627.0562497 ,\n", " 635.2098027 , 643.28164235, 651.27787278])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Optimal value function\n", "res.v" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Simulate the controlled Markov chain for num_rep times\n", "# and compute the average\n", "init = 0\n", "nyrs = 50\n", "ts_length = nyrs + 1\n", "num_rep = 10**4\n", "ave_path = np.zeros(ts_length)\n", "for i in range(num_rep):\n", " path = res.mc.simulate(ts_length, init=init)\n", " ave_path = (i/(i+1)) * ave_path + (1/(i+1)) * path" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 2.0011, 3.69 , 4.873 , 5.9352, 6.9338,\n", " 7.815 , 8.5886, 9.2374, 9.7102, 10.119 , 10.4787,\n", " 10.7603, 10.9802, 11.1675, 11.3492, 11.5069, 11.6288,\n", " 11.7293, 11.814 , 11.8893, 11.9602, 12.0263, 12.0765,\n", " 12.1334, 12.1872, 12.2247, 12.2737, 12.3002, 12.3108,\n", " 12.331 , 12.3481, 12.3692, 12.3836, 12.3946, 12.4119,\n", " 12.4095, 12.4043, 12.4295, 12.4419, 12.4541, 12.4582,\n", " 12.4641, 12.4722, 12.4687, 12.4572, 12.4401, 12.4338,\n", " 12.4385, 12.4362, 12.4379])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ave_path" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Stationary distribution of the Markov chain\n", "stationary_dist = res.mc.stationary_distributions[0]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.00000000e+00, 0.00000000e+00, 1.15115026e-07,\n", " 1.03603524e-06, 8.05805183e-06, 5.98598136e-05,\n", " 4.44344001e-04, 3.29804550e-03, 2.44792103e-02,\n", " 6.08112470e-02, 1.20881706e-01, 1.39769288e-01,\n", " 1.50250205e-01, 1.50250201e-01, 1.39769301e-01,\n", " 1.20881695e-01, 6.08112091e-02, 2.44793930e-02,\n", " 3.29774206e-03, 4.43926815e-04, 5.70763048e-05,\n", " 6.34181165e-06, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stationary_dist" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nl568LydOHsnRew/3w03MzMzMcEJtOeav3sydTy3h988s5eVVm6kSnLDfSD78+v04/eCxDB9Ul3WI\nZmZmZkXHCXWFa2xp475nl/OrGQuZPm8tEhy3zx5ccuI+nHHIWEb6BkIzMzOzHjmhrlDPL93IbTMW\ncudTS9jY2MrEPQby2dMP4LyjxjN2WP+swzMzs91o0hX39Dh9/pVnFSiSXdNT/MUeu1UGJ9QVZEtz\nK7/7x1JueWIh/1i8gbqaKs48ZCzvnDaB4/cdQZWfNmhmZma205xQV4B/LtvILU8s5K6nltDQ1MqU\n0YP58jlTeeuR46gf6LpoMzMzs95wQl2mWtvauWf2Mm54bD5PLVxPXU0VZx26JxcdN5Fpew/3EwnN\nzMzMdhMn1GWmsaWNO2Yt5uqHXmbR2q3sO2oQ/3XWQZx31Hj30mFmZmbWB5xQl4mNjS38YvoCrntk\nPqs3NXHEhHq+eNZU/u2gMa6NNjMzM+tDTqhLXGNLGz97cB7XPjKPhsZWXjdlJB895UiO33cPl3WY\nmZmZFYAT6hL2wAsr+Mrdz7Nw7RbOOHgsl586mUPHD8s6LDMzM7OK4oS6BC1et4Wv/u55/vz8CvYb\nNYhbPngcJ0wemXVYZmZmZhXJCXUJaWpt49qHX+FHD8xBiM+fcSAfOGkf6mqqsg7NzMzMrGI5oS4R\nL6/axEd/8SQvrmjgzEPG8l9nT2Vc/YCswzIzMzOreE6oS8C9s5fx2Tv+Qb/aaq5/3zGceuDorEMy\nMzMzs5QT6iLW0tbOlX94gZ8/8gpHTqznJ+86ij2HuVXazMzMrJg4oS5Syzc08rFbnmTmgnW874RJ\nfOFNB7lW2szMzKwI9VlCLek64GxgZUQcko7bA7gNmATMB86PiHV9FUOpevzlNfz7rU+ypbmNH154\nJG8+fK+sQzIzMzOzbvRlk+cNwBmdxl0B/CUipgB/Sd9bjttnLuLdP3+CYQNq+e3lJzqZNjMzMyty\nfZZQR8RDwNpOo88FbkyHbwTe0lfrLzURwff+/BKf+99nOGG/Edx1+YlMGTMk67DMzMzMbAcKXUM9\nJiKWpcPLgTHdzSjpUuBSgIkTJxYgtOy0tLXzhd/M5o5Zi3n70eP5xtsOpbba9dJmZmZmpSCzrC0i\nAogepl8dEdMiYtqoUaMKGFlhNTS28P4bZnDHrMV84g1T+NbbD3MybWZmZlZCCt1CvULSnhGxTNKe\n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\nTEkn1I/OXUN7wMlTRmYdipmZmZlVqJJOqB+es4oh/Wo4YkJ91qGYmZmZWYWqyTqAXRURPPTSKk6Y\nPIKa6pL+v8DMzOw1Jl1xT4/T5195VoEiKS897VfvU9tVJZuJvrxqM0s3NLp+2szMzMwyVbIJ9UMv\npY8bd//TZmZmZpahkk2oH5m7mkkjBjJhj4FZh2JmZmZmFawkE+r29mDm/LUcv68f5mJmZmZm2SrJ\nhHrOyk1sbGxl2qQ9sg7FzMzMzCpcSSbUM+avBWDa3sMzjsTMzMzMKl1JJtSzFqxj5OB+7D3C9dNm\nZmZmlq2STKhnzF/LtL2HIynrUMzMzMyswpVcQr18QyOL121l2iSXe5iZmZlZ9kouoZ65IK2f9g2J\nZmZmZlYESi+hnr+O/rVVHLzX0KxDMTMzMzMrwYR6wVqOnDCc2uqSC93MzMzMylBJZaWbmlp5fulG\n10+bmZmZWdEoqYT66YXraQ/XT5uZmZlZ8SiphHrmgrVIcOTE+qxDMTMzMzMDSi2hnr+OA8cOZWj/\n2qxDMTMzMzMDSiihbm1r56mF6zjG9dNmZmZmVkRKJqF+YXkDm5vbOHpvJ9RmZmZmVjxKJqGeOT95\noMsxviHRzMzMzIpIySTUMxasY69h/dmrfkDWoZiZmZmZbVMyCfXM+WvdXZ6ZmZmZFZ2arAPIR3Nr\nOxs3NvmBLmZmZmZWdEqihXpLcysA0/Z2C7WZmZmZFZeSSKg3N7cxpF8NB4wdknUoZmZmZmbbKYmE\nektTG0fuPZzqKmUdipmZmZnZdjKpoZZ0BvADoBq4NiKu7Gn+xtY2jnH/02Zmu2RHx1xJSqe/CdgC\nvC8insxnWdt5k664p8fp8688q0CRWHf8HdnOKngLtaRq4MfAmcBU4EJJU3e03NG+IdHMbKflecw9\nE5iS/lwK/HQnljUzq3hZlHwcC8yNiHkR0Qz8Cji3pwUEHDGhvhCxmZmVm3yOuecCN0ViOlAvac88\nlzUzq3hZlHyMAxblvF8MHNfTAv1rqxlYVxI9/JmZFZt8jrldzTMuz2Uth0sFKktP37e/68pStFmq\npEtJLj0CNEl6Nst4MjASWJ11EAXmbS5/lba9AAdkHUAhdDpmb5L0Yh6LlfLvwy7Frm/unnl2w2dt\nF38RxZXPfDsde77zZbHvS0wpxw75x7/3zn5wFgn1EmBCzvvx6bjtRMTVwNUAkmZGxLTChFccvM2V\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot sigma, v, ave_path, stationary_dist\n", "hspace = 0.3\n", "fig, axes = plt.subplots(2, 2, figsize=(12, 8+hspace))\n", "fig.subplots_adjust(hspace=hspace)\n", "\n", "axes[0, 0].plot(res.sigma, '*')\n", "axes[0, 0].set_xlim(-1, 31)\n", "axes[0, 0].set_ylim(-0.5, 5.5)\n", "axes[0, 0].set_xlabel('Water Level')\n", "axes[0, 0].set_ylabel('Irrigation')\n", "axes[0, 0].set_title('Optimal Irrigation Policy')\n", "\n", "axes[0, 1].plot(res.v)\n", "axes[0, 1].set_xlim(0, 30)\n", "y_lb, y_ub = 300, 700\n", "axes[0, 1].set_ylim(y_lb, y_ub)\n", "axes[0, 1].set_yticks(np.linspace(y_lb, y_ub, 5, endpoint=True))\n", "axes[0, 1].set_xlabel('Water Level')\n", "axes[0, 1].set_ylabel('Value')\n", "axes[0, 1].set_title('Optimal Value Function')\n", "\n", "axes[1, 0].plot(ave_path)\n", "axes[1, 0].set_xlim(0, nyrs)\n", "y_lb, y_ub = 0, 15\n", "axes[1, 0].set_ylim(y_lb, y_ub)\n", "axes[1, 0].set_yticks(np.linspace(y_lb, y_ub, 4, endpoint=True))\n", "axes[1, 0].set_xlabel('Year')\n", "axes[1, 0].set_ylabel('Water Level')\n", "axes[1, 0].set_title('Average Optimal State Path')\n", "\n", "axes[1, 1].bar(range(n), stationary_dist, align='center')\n", "axes[1, 1].set_xlim(-1, n)\n", "y_lb, y_ub = 0, 0.15\n", "axes[1, 1].set_ylim(y_lb, y_ub+0.01)\n", "axes[1, 1].set_yticks(np.linspace(y_lb, y_ub, 4, endpoint=True))\n", "axes[1, 1].set_xlabel('Water Level')\n", "axes[1, 1].set_ylabel('Probability')\n", "axes[1, 1].set_title('Stationary Distribution')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## State-action pairs formulation" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Arrays of state and action indices\n", "S = np.arange(n)\n", "X = np.arange(m)\n", "S_left = S.reshape(n, 1) - X.reshape(1, n)\n", "s_indices, a_indices = np.where(S_left >= 0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Reward vector\n", "S_left = S_left[s_indices, a_indices]\n", "R = F(X[a_indices]) + U(S_left)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Transition probability array\n", "L = len(S_left)\n", "Q = sparse.lil_matrix((L, n))\n", "for i, s_left in enumerate(S_left):\n", " for j in range(supp_size):\n", " Q[i, np.minimum(s_left+j, n-1)] += probs[j]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Create a DiscreteDP\n", "ddp = DiscreteDP(R, Q, beta, s_indices, a_indices)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solve the dynamic optimization problem (by policy iteration)\n", "res = ddp.solve()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of iterations\n", "res.num_iter" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Simulate the controlled Markov chain for num_rep times\n", "# and compute the average\n", "init = 0\n", "nyrs = 50\n", "ts_length = nyrs + 1\n", "num_rep = 10**4\n", "ave_path = np.zeros(ts_length)\n", "for i in range(num_rep):\n", " path = res.mc.simulate(ts_length, init=init)\n", " ave_path = (i/(i+1)) * ave_path + (1/(i+1)) * path" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Stationary distribution of the Markov chain\n", "stationary_dist = res.mc.stationary_distributions[0]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot sigma, v, ave_path, stationary_dist\n", "hspace = 0.3\n", "fig, axes = plt.subplots(2, 2, figsize=(12, 8+hspace))\n", "fig.subplots_adjust(hspace=hspace)\n", "\n", "axes[0, 0].plot(res.sigma, '*')\n", "axes[0, 0].set_xlim(-1, 31)\n", "axes[0, 0].set_ylim(-0.5, 5.5)\n", "axes[0, 0].set_xlabel('Water Level')\n", "axes[0, 0].set_ylabel('Irrigation')\n", "axes[0, 0].set_title('Optimal Irrigation Policy')\n", "\n", "axes[0, 1].plot(res.v)\n", "axes[0, 1].set_xlim(0, 30)\n", "y_lb, y_ub = 300, 700\n", "axes[0, 1].set_ylim(y_lb, y_ub)\n", "axes[0, 1].set_yticks(np.linspace(y_lb, y_ub, 5, endpoint=True))\n", "axes[0, 1].set_xlabel('Water Level')\n", "axes[0, 1].set_ylabel('Value')\n", "axes[0, 1].set_title('Optimal Value Function')\n", "\n", "axes[1, 0].plot(ave_path)\n", "axes[1, 0].set_xlim(0, nyrs)\n", "y_lb, y_ub = 0, 15\n", "axes[1, 0].set_ylim(y_lb, y_ub)\n", "axes[1, 0].set_yticks(np.linspace(y_lb, y_ub, 4, endpoint=True))\n", "axes[1, 0].set_xlabel('Year')\n", "axes[1, 0].set_ylabel('Water Level')\n", "axes[1, 0].set_title('Average Optimal State Path')\n", "\n", "axes[1, 1].bar(range(n), stationary_dist, align='center')\n", "axes[1, 1].set_xlim(-1, n)\n", "y_lb, y_ub = 0, 0.15\n", "axes[1, 1].set_ylim(y_lb, y_ub+0.01)\n", "axes[1, 1].set_yticks(np.linspace(y_lb, y_ub, 4, endpoint=True))\n", "axes[1, 1].set_xlabel('Water Level')\n", "axes[1, 1].set_ylabel('Probability')\n", "axes[1, 1].set_title('Stationary Distribution')\n", "\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.1" } }, "nbformat": 4, "nbformat_minor": 1 }