Skip to content

Instantly share code, notes, and snippets.

@duartenina
Created January 17, 2016 20:24
Show Gist options
  • Save duartenina/5fe807f23490c2e73402 to your computer and use it in GitHub Desktop.
Save duartenina/5fe807f23490c2e73402 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 107,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n_max = 10**1\n",
"cost_0 = 100"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def cost_from_level(level, cost_0, previous = None):\n",
" if level == 0:\n",
" return cost_0\n",
" if previous:\n",
" return previous + 0.1 * cost_0 * level\n",
" return cost_from_level(level-1, cost_0) + 0.1 * cost_0 * level\n",
" \n",
"def cost_stable(level, cost_0):\n",
" return cost_0 * (1 + 0.05 * level*(level-1))"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ni8EAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x6f1cc50>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.42108547152e-14\n"
]
}
],
"source": [
"levels = np.linspace(1, n_max, n_max, dtype = 'i')\n",
"c1 = [cost_from_level(0, cost_0, 0)]\n",
"for i in range(1, n_max):\n",
" c1.append(cost_from_level(i, cost_0, c1[-1]))\n",
"c2 = [cost_stable(i, cost_0) for i in levels]\n",
"diff = [c2[i-1] - c1[i-1] for i in levels]\n",
"\n",
"plt.figure(figsize=(16,6))\n",
"\n",
"plt.plot(levels, c1, \"b-\")\n",
"plt.plot(levels, c2, \"r*\")\n",
"plt.plot(levels, diff, \"r-\")\n",
"\n",
"plt.show()\n",
"\n",
"print(max(diff))"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def cum_cost_stable(level_to, level_from, cost_0):\n",
" n = level_from\n",
" m = level_to\n",
" return cost_0 * (m - n + 1 + 1/60 * (m*(m+1)*(m+2) - n*n*n + n))"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7752ac8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.2737367544323206e-13\n"
]
}
],
"source": [
"levels = np.linspace(1, n_max, n_max, dtype = 'i')\n",
"cc1 = [cost_0]\n",
"for i in range(1, n_max):\n",
" cc1.append(cc1[-1] + c1[i])\n",
"\n",
"cc2 = [cum_cost_stable(i, 0, cost_0) for i in range(n_max)]\n",
"diff = [i - j for (i,j) in zip(cc1,cc2)]\n",
"\n",
"plt.figure(figsize=(16,6))\n",
"\n",
"plt.plot(levels, cc1, \"b-\")\n",
"plt.plot(levels, cc2, \"r*\")\n",
"plt.plot(levels, diff, \"r-\")\n",
"\n",
"plt.show()\n",
"\n",
"print(max(diff))"
]
},
{
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment