{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Foundations of Computational Economics #9\n",
"\n",
"by Fedor Iskhakov, ANU\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"## Algorithms and complexity\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"\n",
"\n",
"[https://youtu.be/pBbpEBVheOQ](https://youtu.be/pBbpEBVheOQ)\n",
"\n",
"Description: Timing of Python code. Runtime order of growth. Complexity classes. P vs NP."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Two ways to evaluate the polynomial\n",
"\n",
"$$\n",
"y = a_1 + a_2 x + a_3 x^2 + \\dots + a_k x^k\n",
"$$\n",
"\n",
"Algorithm 1: compute each term, then add together\n",
"\n",
"Algorithm 2: try to avoid computing powers"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"def calc_polynomial(qs=[0,], x=0.0, algorithm='fast'):\n",
" '''Evaluates the polynomial given by coefficients qs at given x.\n",
" First coefficient qs[0] is a constant, last coefficient is for highest power.\n",
" '''\n",
" if algorithm is not 'fast':\n",
" # slower algorithm\n",
" res=0.0\n",
" for k in range(len(qs)):\n",
" xpw = x**k\n",
" res += qs[k] * xpw\n",
" else:\n",
" # faster algorithm\n",
" res,xpw = qs[0], x # init result and power of x\n",
" for i in range(1,len(qs)): # start with second coefficient\n",
" res += xpw * qs[i]\n",
" xpw *= x\n",
" return res"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Timing function evaluation\n",
"\n",
"Several ways to measure run time in python\n",
"\n",
"- **time** module \n",
"- **timeit** module (for small snippets) \n",
"- profiles (**profile** and **cProfile**, for large codes) \n",
"\n",
"\n",
"In Jupyter Notebooks we can use a **magic function** timeit"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"@timeit "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"@@timeit \n",
"all lines of code in the cell\n",
"to be timed together"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"[Documentation on @timeit](https://ipython.readthedocs.io/en/stable/interactive/magics.html?highlight=timeit#magic-timeit)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"48.3 µs ± 6.72 µs per loop (mean ± std. dev. of 100 runs, 100 loops each)\n"
]
}
],
"source": [
"%%timeit -n100 -r100 qs = [1,]*100\n",
"calc_polynomial(qs,15,'slow')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15.6 µs ± 2.33 µs per loop (mean ± std. dev. of 100 runs, 100 loops each)\n"
]
}
],
"source": [
"%%timeit -n100 -r100 qs = [1,]*100\n",
"calc_polynomial(qs,15,'fast')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Algorithms\n",
"\n",
"**Sequence of commands** for computer to run\n",
"\n",
"1. How much time does it take to run? \n",
"1. How much memory does it need? \n",
"1. What other resources may be limiting? (storage, communication, etc) \n",
"\n",
"\n",
"**Smart algorithm is a lot more important that fast computer**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Computational speed and algorithm development\n",
"\n",
"[Professor Martin Grötschel Konrad-Zuse-Zentrum für Informationstechnik\n",
"Berlin, expert in optimization](http://robertvienneau.blogspot.com/2011/01/increase-in-feasibility-of-economic.html)\n",
"\n",
"> “a benchmark production planning model solved using linear\n",
"programming would have taken 82 years to solve in 1988, using the\n",
"computers and the linear programming algorithms of the day. Fifteen\n",
"years later – in 2003 – this same model could be solved in roughly 1\n",
"minute, an improvement by a factor of roughly 43 million. Of this, a\n",
"factor of roughly 1,000 was due to increased processor speed, whereas\n",
"a factor of roughly 43,000 was due to improvements in algorithms!”"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Writing algorithm_examples.py\n"
]
}
],
"source": [
"%%writefile 'algorithm_examples.py'\n",
"\n",
"# Example code to be discussed in the following videos\n",
"\n",
"import time\n",
"\n",
"def parity (n,verbose=False):\n",
" '''Returns 1 if passed integer number is odd\n",
" '''\n",
" if not isinstance(n, int): raise TypeError('Only integers in parity()')\n",
" if verbose: print('n = ', format(n, \"b\")) # print binary form of the number\n",
" return n & 1 # bitwise and operation returns the value of last bit\n",
"\n",
"def maximum_from_list (vars):\n",
" '''Returns the maximum from a list of values\n",
" '''\n",
" m=float('-inf') # init with the worst value\n",
" for v in vars:\n",
" if v > m: m = v\n",
" return m\n",
"\n",
"def binary_search(grid=[0,1],val=0,delay=0):\n",
" '''Returns the index of val on the sorted grid\n",
" Optional delay introduces a delay (in microsecond)\n",
" '''\n",
" i1,i2 = 0,len(grid)-1\n",
" if val==grid[i1]: return i1\n",
" if val==grid[i2]: return i2\n",
" j=(i1+i2)//2\n",
" while grid[j]!=val:\n",
" if val>grid[j]:\n",
" i1=j\n",
" else:\n",
" i2=j\n",
" j=(i1+i2)//2 # divide in half\n",
" time.sleep(delay*1e-6) # micro-sec to seconds\n",
" return j\n",
"\n",
"def compositions(N,m):\n",
" '''Iterable on compositions of N with m parts\n",
" Returns the generator (to be used in for loops)\n",
" '''\n",
" cmp=[0,]*m\n",
" cmp[m-1]=N # initial composition is all to the last\n",
" yield cmp\n",
" while cmp[0]!=N:\n",
" i=m-1\n",
" while cmp[i]==0: i-=1 # find lowest non-zero digit\n",
" cmp[i-1] = cmp[i-1]+1 # increment next digit\n",
" cmp[m-1] = cmp[i]-1 # the rest to the lowest\n",
" if i!=m-1: cmp[i] = 0 # maintain cost sum\n",
" yield cmp"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Parity of a number\n",
"\n",
"Check whether an integer is odd or even.\n",
"\n",
"Algorithm: check the last bit in the binary representation of a number"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k=10 (4 bits)\n",
"169 ns ± 25.1 ns per loop (mean ± std. dev. of 500 runs, 5000 loops each)\n",
"k=101 (7 bits)\n",
"171 ns ± 29.8 ns per loop (mean ± std. dev. of 500 runs, 5000 loops each)\n",
"k=1002 (10 bits)\n",
"170 ns ± 19.8 ns per loop (mean ± std. dev. of 500 runs, 5000 loops each)\n",
"k=10003 (14 bits)\n",
"173 ns ± 20.3 ns per loop (mean ± std. dev. of 500 runs, 5000 loops each)\n",
"k=100004 (17 bits)\n",
"172 ns ± 22.3 ns per loop (mean ± std. dev. of 500 runs, 5000 loops each)\n"
]
}
],
"source": [
"# import all example code\n",
"from algorithm_examples import *\n",
"\n",
"for k in [10**(i+1)+i for i in range(5)]:\n",
" print('k=%d (%d bits)' % (k,k.bit_length()))\n",
" tt = %timeit -n5000 -r500 -o parity(k)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"hide-output": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"172 ns ± 17 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"170 ns ± 21.8 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"171 ns ± 16.6 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"173 ns ± 16.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"176 ns ± 22.5 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"167 ns ± 12.4 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"166 ns ± 14.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"160 ns ± 10.3 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"168 ns ± 17.6 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"168 ns ± 18.5 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"164 ns ± 14.6 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"162 ns ± 12.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"161 ns ± 16.7 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"159 ns ± 22.5 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"164 ns ± 22.8 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"154 ns ± 14.1 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"189 ns ± 36.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"158 ns ± 10.7 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"173 ns ± 33.4 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"170 ns ± 27.4 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"160 ns ± 16.1 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"163 ns ± 18.1 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"159 ns ± 14.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"160 ns ± 16.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"157 ns ± 14.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"161 ns ± 14.4 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"166 ns ± 15.3 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"166 ns ± 14.5 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"177 ns ± 28 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"169 ns ± 15.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"163 ns ± 13.3 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"165 ns ± 17.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"170 ns ± 16.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"162 ns ± 12.3 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"164 ns ± 16.4 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"166 ns ± 13 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"166 ns ± 11.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"163 ns ± 21.3 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"173 ns ± 21 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"165 ns ± 12.5 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"184 ns ± 27.2 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"175 ns ± 22.7 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"163 ns ± 11.1 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"161 ns ± 13.7 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"171 ns ± 17.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"168 ns ± 15 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"161 ns ± 13 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"164 ns ± 19.8 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"164 ns ± 13.7 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n",
"173 ns ± 37.9 ns per loop (mean ± std. dev. of 100 runs, 5000 loops each)\n"
]
},
{
"data": {
"image/png": "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iIhIABpEKCIicUMDfkWkLVAALSIi0ggF9ZIo1NYjpxQOEREREZEA1APdCvQNTkRERKT9UgAtIiLSBqmzRiR2lMIhIiIiIhKAeqBFJCrUWyYisoveE9s2BdAiIglKH+AiIs2jFA4RERERkQAUQIuIiIiIBKAAWkREREQkAAXQIiIiIiIBKIAWEREREQlAAbSIiIiISAAKoEVEREREAlAALSIiIiISgBZSERFpBi1CIiKSuBRAi4iIiEggid6JoABaJEYS/c1HRESkrVIALSISR/TFSkQk/imAFpGEpWBVRESaQwG0iEgrU6AuItK+aBo7EREREZEAFECLiIiIiASgAFpEREREJADlQItIu6J8YxERaW0KoEVE2gl9eRARiQ6lcIiIiIiIBKAAWkREREQkAAXQIiIiIiIBKAdaREREWoTy8CVRqAdaRERERCQABdAiIiIiIgG0WgqHmT0CnAisd84Nb+S4A4APgTOcc8+1VnlEEoUuoYqIiLSu1uyBfhQ4rrEDzCwZ+D3wWiuWQ0RERESkxbRaAO2cmwV838RhVwDPA+tbqxwiIiIiIi0pZjnQZlYInAzcH6syiIiIiIgEFctp7O4ArnfO1ZhZowea2UXARQB9+vSJQtFEEpPyp0VERJoWywC6CHjKD54LgElmVu2ce6n+gc65B4EHAYqKilxUSykiMafAXkRE4knMAmjnXP+6bTN7FHglXPAsIiIiIhJPWnMauyeBw4ACMysGbgRSAZxzynsWERERkTap1QJo59xZAY49v7XKISIiIiLSkrQSoYiIiIhIAAqgRUREREQCUAAtIiIiIhKAAmgRERERkQAUQIuIiIiIBKAAWkREREQkAAXQIiIiIiIBKIAWEREREQlAAbSIiIiISACtthKhiLScpy8eH+siiIiIiE890CIiIiIiASiAFhEREREJQAG0iIiIiEgACqBFRERERAJQAC0iIiIiEoBm4RARERGRuBSvs1CpB1pEREREJAAF0CIiIiIiASiAFhEREREJQAG0iIiIiEgACqBFRERERAJQAC0iIiIiEoACaBERERGRABRAi4iIiIgEoABaRERERCQABdAiIiIiIgEogBYRERERCUABtIiIiIhIAAqgRUREREQCUAAtIiIiIhKAAmgRERERkQAUQIuIiIiIBKAAWkREREQkAAXQIiIiIiIBKIAWEREREQnA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\n",
"text/plain": [
"