Skip to content

Instantly share code, notes, and snippets.

@GerardBCN
Created December 20, 2018 13:59
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save GerardBCN/252e852c46b607c00435b830431191ad to your computer and use it in GitHub Desktop.
Save GerardBCN/252e852c46b607c00435b830431191ad to your computer and use it in GitHub Desktop.
Policy iterator for RL applied to gridworld
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/gerard/miniconda3/lib/python3.5/site-packages/IPython/core/magics/pylab.py:161: UserWarning: pylab import has clobbered these variables: ['random', 'gamma']\n",
"`%matplotlib` prevents importing * from pylab and numpy\n",
" \"\\n`%matplotlib` prevents importing * from pylab and numpy\"\n"
]
}
],
"source": [
"import numpy as np\n",
"from tqdm import tqdm\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set_style(\"darkgrid\")\n",
"%pylab inline\n",
"import random"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Policy iteration"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parameters"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"gamma = 1 # discounting rate\n",
"rewardSize = -1\n",
"gridSize = 4\n",
"terminationStates = [[0,0], [gridSize-1, gridSize-1]]\n",
"actions = [[-1, 0], [1, 0], [0, 1], [0, -1]]\n",
"numIterations = 1000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Utilities"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def actionRewardFunction(initialPosition, action):\n",
" \n",
" if initialPosition in terminationStates:\n",
" return initialPosition, 0\n",
" \n",
" reward = rewardSize\n",
" finalPosition = np.array(initialPosition) + np.array(action)\n",
" if -1 in finalPosition or 4 in finalPosition: \n",
" finalPosition = initialPosition\n",
" \n",
" return finalPosition, reward"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Initialization"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"valueMap = np.zeros((gridSize, gridSize))\n",
"states = [[i, j] for i in range(gridSize) for j in range(gridSize)]"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 0., 0., 0.],\n",
" [0., 0., 0., 0.],\n",
" [0., 0., 0., 0.],\n",
" [0., 0., 0., 0.]])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# values of the value function at step 0\n",
"valueMap"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Policy evaluation"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1\n",
"[[ 0. -1. -1. -1.]\n",
" [-1. -1. -1. -1.]\n",
" [-1. -1. -1. -1.]\n",
" [-1. -1. -1. 0.]]\n",
"\n",
"Iteration 2\n",
"[[ 0. -1.75 -2. -2. ]\n",
" [-1.75 -2. -2. -2. ]\n",
" [-2. -2. -2. -1.75]\n",
" [-2. -2. -1.75 0. ]]\n",
"\n",
"Iteration 3\n",
"[[ 0. -2.4375 -2.9375 -3. ]\n",
" [-2.4375 -2.875 -3. -2.9375]\n",
" [-2.9375 -3. -2.875 -2.4375]\n",
" [-3. -2.9375 -2.4375 0. ]]\n",
"\n",
"Iteration 10\n",
"[[ 0. -6.13796997 -8.35235596 -8.96731567]\n",
" [-6.13796997 -7.73739624 -8.42782593 -8.35235596]\n",
" [-8.35235596 -8.42782593 -7.73739624 -6.13796997]\n",
" [-8.96731567 -8.35235596 -6.13796997 0. ]]\n",
"\n",
"Iteration 100\n",
"[[ 0. -13.94260509 -19.91495107 -21.90482522]\n",
" [-13.94260509 -17.92507693 -19.91551999 -19.91495107]\n",
" [-19.91495107 -19.91551999 -17.92507693 -13.94260509]\n",
" [-21.90482522 -19.91495107 -13.94260509 0. ]]\n",
"\n",
"Iteration 1000\n",
"[[ 0. -14. -20. -22.]\n",
" [-14. -18. -20. -20.]\n",
" [-20. -20. -18. -14.]\n",
" [-22. -20. -14. 0.]]\n",
"\n"
]
}
],
"source": [
"deltas = []\n",
"for it in range(numIterations):\n",
" copyValueMap = np.copy(valueMap)\n",
" deltaState = []\n",
" for state in states:\n",
" weightedRewards = 0\n",
" for action in actions:\n",
" finalPosition, reward = actionRewardFunction(state, action)\n",
" weightedRewards += (1/len(actions))*(reward+(gamma*valueMap[finalPosition[0], finalPosition[1]]))\n",
" deltaState.append(np.abs(copyValueMap[state[0], state[1]]-weightedRewards))\n",
" copyValueMap[state[0], state[1]] = weightedRewards\n",
" deltas.append(deltaState)\n",
" valueMap = copyValueMap\n",
" if it in [0,1,2,9, 99, numIterations-1]:\n",
" print(\"Iteration {}\".format(it+1))\n",
" print(valueMap)\n",
" print(\"\")\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f50bc077780>,\n",
" <matplotlib.lines.Line2D at 0x7f50bc077a90>,\n",
" <matplotlib.lines.Line2D at 0x7f50bc077cc0>,\n",
" <matplotlib.lines.Line2D at 0x7f50bc077ef0>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3ac160>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3ac390>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3ac5c0>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3ac7f0>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3aca20>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3acc50>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3ace80>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3af0f0>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3af320>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3af550>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3af780>,\n",
" <matplotlib.lines.Line2D at 0x7f50af3af9b0>]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f50bf119c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 10))\n",
"plt.plot(deltas)"
]
}
],
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment