{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Numeric Optimization of cost functions of 1 parameter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# do the usual imports\n", "import numpy as np\n", "import scipy.signal\n", "import scipy.integrate\n", "import scipy.optimize\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def hill_descent_1D( fn, p0 ):\n", " ''' Find the parameter that minimizes the function fn\n", " where fn is a function of just one parameter.\n", " p0 is the initial guess for the parameter.\n", " The approach taken to find the minimal value of fn is \n", " a hill-descending approach.\n", " Returns the best parameter value and its cost (as a tuple)'''\n", " # The current value of the parameter\n", " currP = p0\n", " # How much we will adjust the parameter by to take a setp\n", " delP = 0.05*p0\n", " # how much we will adjust the size of our next parameter step\n", " accel = 1.2\n", " # how close the costs need to be before we stop taking steps.\n", " tol = 1e-4\n", " # candidate step sizes (small and big, negative and positive)\n", " candidates = np.array([-accel,-1/accel,1/accel,accel])\n", " while True:\n", " currCost = fn(currP) # evaluate the cost at the current parameter value\n", " # then evaluate at 2 steps to the \"left\" and 2 steps to the \"right\"\n", " costs = np.array(list(map(fn,currP+candidates*delP)))\n", " # find the minium cost and the index of which step took us too it\n", " mCost = costs.min()\n", " mIdx = np.argmin(costs)\n", " if currCost < mCost:\n", " # no step made the cost any smaller. we should take a smaller step and try again\n", " delP = delP/accel\n", " else:\n", " # update the parameter to the best step taken\n", " currP = currP + candidates[mIdx]*delP\n", " # and adjust the step size\n", " delP = delP*candidates[mIdx]\n", " if np.abs(currCost-mCost) < tol:\n", " # if the last step and this step have costs within the tolerance,\n", " # then it is time to stop looping.\n", " return (currP, mCost)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best t=3.041324494170096, best f=0.0017077138184142878\n", "The function was evaluated 70 times\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# hill-climbing on quadratic function.\n", "# This quadratic function has been harnessed to debug\n", "# It is passed a parameter for each of the dependent (vals_c) and independent variables (vals_t)\n", "# If those parameters are lists, then add the values of the current indep var (t)\n", "# and the dep var (the result of the function).\n", "# We use this to track the function calls.\n", "# If vals_t and vals_c are None, then we ignore them.\n", "def ftest( t, vals_t = None, vals_c = None ):\n", " if vals_t is not None:\n", " vals_t.append( t)\n", " if vals_c is not None:\n", " vals_c.append( (t-3)**2 )\n", " return (t-3)**2\n", "\n", "vals_t = []\n", "vals_c = []\n", "f = lambda t: ftest(t, vals_t, vals_c)\n", "(bt,bc) = hill_descent_1D( f, 5 )\n", "print( f\"best t={bt}, best f={bc}\")\n", "print( f\"The function was evaluated {len(vals_t)} times\")\n", " \n", "#print(vals_t, vals_c) \n", "plt.subplot( 2, 1, 1)\n", "plt.plot( vals_t, vals_c, '*');\n", "plt.xlabel( 't')\n", "plt.ylabel( 'f')\n", "plt.subplot( 2, 1, 2 )\n", "plt.plot( vals_t );\n", "plt.xlabel( 'Array Index')\n", "plt.ylabel( 't');\n", "plt.tight_layout();" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best t=3.009724730540047, best f=0.009746910915615192\n", "The function was evaluated 110 times\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Does the hill climbing algorithm work for abs value function?\n", "# result: sort of. it does take more steps, presumably because the values don't flatten out at the bottom.\n", "def ftest2( t, vals_t = None, vals_c = None ):\n", " if vals_t is not None:\n", " vals_t.append( t)\n", " if vals_c is not None:\n", " vals_c.append( np.abs(t-3) )\n", " return np.abs(t-3)\n", "vals_t = []\n", "vals_c = []\n", "f = lambda t: ftest2(t, vals_t, vals_c)\n", "(bt,bc) = hill_descent_1D( f, 5 )\n", "print( f\"best t={bt}, best f={bc}\")\n", "print( f\"The function was evaluated {len(vals_t)} times\")\n", " \n", "#print(vals_t, vals_c) \n", "plt.subplot( 2, 1, 1)\n", "plt.plot( vals_t, vals_c, '*');\n", "plt.xlabel( 't')\n", "plt.ylabel( 'f')\n", "plt.subplot( 2, 1, 2 )\n", "plt.plot( vals_t );\n", "plt.xlabel( 'Array Index')\n", "plt.ylabel( 't');\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Van der Pol Oscillator\n", "\n", "Define the model function for the van der Pol oscillator. It is defines as\n", "\n", "\\begin{align*}\n", "\\frac{dy_1}{dt} &= y_2\\\\\n", "\\frac{dy_2}{dt} &= \\mu (1-y_1^2)y_2 - y_1.\\\\\n", "\\end{align*}\n", "\n", "We will assume the unit of time is $h$." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def vdp( t, y, mu ):\n", " y1 = y[0]\n", " y2 = y[1]\n", " dydt = np.zeros((2,))\n", " dydt[0] = y2\n", " dydt[1] = mu*(1-y1**2)*y2 - y1\n", " return dydt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run the model\n", "\n", "Use $\\mu$=0.1. Run it for 500 h at a tight tolerance. Then run it again for 100 h and plot the result." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mu = .1;\n", "mf = lambda t,y : vdp(t,y,mu)\n", "sol1 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,200), y0=(.1,.1), rtol=1e-8, atol=1e-8 )\n", "sol2 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,50), y0=sol1.y[:,-1], \n", " t_eval=np.arange(0,50,.01) )\n", "plt.plot( sol2.t, sol2.y.T );" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### define get_period\n", "Stephanie copied her code from HW2." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def get_period(t,x):\n", " \"\"\" Approximate the period of a 1-D x, given the time-steps t.\n", " Returns a tuple with the period and the standard deviation of the period over time.\n", " if the value of the standard deviation is not smaller than 0.1, then\n", " it means the period estimate is dodgy and you shouldn't use it. Instead,\n", " plot your simulation and figure out why it isn't periodic - maybe it just\n", " hasn't reached the limit cycle yet.\"\"\"\n", " idxs = scipy.signal.find_peaks(x)\n", " idxs = idxs[0]\n", " times = t[idxs]\n", " period = np.mean(np.diff(times));\n", " sdperiod = np.sqrt(np.var(np.diff(times)));\n", " return (period,sdperiod)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Replot the van der Pol oscillation with the period" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot( sol2.t, sol2.y.T );\n", "(period,sdperiod) = get_period( sol2.t, sol2.y[0,:])\n", "plt.title( 'Period = %f' % period );" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define the van der Pol error function\n", "\n", "It should take the parameter $\\mu$ as input and return the squared difference between the simulated period and 10 h. \n", "\n", "To find the simulated period, first run the model for 200 hours and ignore the result. The simulate for another 50 h and call get_period." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "# this is the van-dep tpol function augmented for debugging - we can\n", "# add to vals_t and vals_c if they are lists (which is what we assume they \n", "# are if they are not None).\n", "def vdp_error( mu, vals_t = None, vals_c = None ):\n", " mf = lambda t,y : vdp(t,y,mu)\n", " sol1 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,200), y0=(.1,.1) )\n", " sol2 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,50), y0=sol1.y[:,-1], t_eval=np.arange(0,50,.01) )\n", " (period,period_sd) = get_period( sol2.t, sol2.y[0,:] )\n", " if vals_t is not None:\n", " vals_t.append( mu )\n", " if vals_c is not None:\n", " vals_c.append( (period-10)**2 )\n", " return (period-10)**2\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the cost function landscape\n", "\n", "Plot the cost over 100 values of $\\mu$ ranging from 0.01 to 5.\n", "\n", "Then plot the result from the Hill descent method beginning at $\\mu=0.2$." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mus = np.linspace( 0.01, 5, 100 )\n", "errors = np.zeros( mus.shape )\n", "for i in range(mus.size):\n", " errors[i] = vdp_error( mus[i] )\n", "\n", "plt.plot( mus, errors );\n", "\n", "vals_t = []\n", "vals_c = []\n", "f = lambda t: vdp_error(t, vals_t, vals_c)\n", "\n", "# starting from 0.2 gets stuck\n", "(mu,cost) = hill_descent_1D( f, p0=1 )\n", "plt.plot( vals_t, vals_c,'*')\n", "plt.plot( mu, cost, 'r*')" ] }, { "cell_type": "code", "execution_count": 225, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "110\n" ] } ], "source": [ "print( len(vals_t))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do built-in local methods do any better? Not really." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# mus = np.linspace( 0.01, 5, 100 )\n", "# errors = np.zeros( mus.shape )\n", "# for i in range(mus.size):\n", "# errors[i] = vdp_error( mus[i] )\n", "\n", "# plt.plot( mus, errors );\n", "\n", "mu_vals = []\n", "cost_vals = []\n", "fn = lambda mu:vdp_error( mu, mu_vals, cost_vals )\n", "# try with x0=0.1 and x0=1 and Nelder-Mead (a simplex method)\n", "# Powell from 0.2 works well (a gradient method)\n", "# SLSQP from 0.2 took so long I made tea.\n", "res = scipy.optimize.minimize( fn, method='Nelder-Mead', x0=1 )\n", "plt.plot( mu_vals, cost_vals,'*')\n", "plt.plot( res.x, vdp_error(res.x), 'r*')\n", "\n", "plt.figure()\n", "plt.plot(mu_vals, cost_vals,'*');" ] }, { "cell_type": "code", "execution_count": 222, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "51\n" ] } ], "source": [ "print(len(mu_vals))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What if we have multiple parameters?\n", "\n", "Let's code up the Goodwin Oscillator" ] }, { "cell_type": "code", "execution_count": 205, "metadata": {}, "outputs": [], "source": [ "def goodwin_oscillator( t, statevars, params ):\n", " X = statevars[0];\n", " Y = statevars[1];\n", " Z = statevars[2];\n", " alpha_1 = params[0]\n", " K = params[1]\n", " n = params[2]\n", " gamma_1 = params[3]\n", " alpha_2 = params[4]\n", " gamma_2 = params[5]\n", " alpha_3 = params[6]\n", " gamma_3 = params[7]\n", " \n", " dydt = np.zeros( (3,) )\n", " dydt[0] = alpha_1*K**n/(K**n+Z**n) - gamma_1*X\n", " dydt[1] = alpha_2*X - gamma_2*Y;\n", " dydt[2] = alpha_3*Y - gamma_3*Z;\n", "\n", " return dydt\n", "\n", "def goodwin_circadian_error( params ):\n", " mf = lambda t,y : goodwin_oscillator(t,y, params)\n", "\n", " sol1 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,500), y0=(.1,.1,.1) )\n", " sol2 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,100), y0=sol1.y[:,-1], \n", " t_eval=np.arange(0,100,.01) )\n", " (period,sdper) = get_period( sol2.t, sol2.y[0,:] )\n", " return (period-24)**2\n" ] }, { "cell_type": "code", "execution_count": 212, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.156544444444447\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha_1 = 1\n", "K = 0.61\n", "n = 11\n", "gamma_1 = 0.15\n", "alpha_2 = 1\n", "gamma_2 = 0.15\n", "alpha_3 = 1\n", "gamma_3 = 0.25\n", "\n", "params = (alpha_1,K,n,gamma_1,alpha_2,gamma_2,alpha_3,gamma_3)\n", "\n", "mf = lambda t,y : goodwin_oscillator(t,y, params)\n", "\n", "sol1 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,200), y0=(.1,.1,.1), \n", " t_eval=np.arange(0,200,.1) )\n", "sol2 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,100), y0=sol1.y[:,-1], \n", " t_eval=np.arange(0,100,.1) )\n", "\n", "plt.plot( sol2.t, sol2.y.T )\n", "(period,sdperiod) = get_period( sol2.t, sol2.y[0,:])\n", "plt.title( 'Period = %f' % period );\n", "\n", "err = goodwin_circadian_error( params )\n", "print( err )" ] }, { "cell_type": "code", "execution_count": 209, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " final_simplex: (array([[ 1.0441589 , 0.61506829, 11.60855387, 0.14786071, 0.98794809,\n", " 0.1496552 , 1.01877043, 0.22496593],\n", " [ 1.04415183, 0.61506785, 11.60852354, 0.14786095, 0.98796358,\n", " 0.14965528, 1.01877013, 0.22496526],\n", " [ 1.04415252, 0.61506776, 11.60852725, 0.14786094, 0.98796316,\n", " 0.14965523, 1.01877009, 0.22496521],\n", " [ 1.04414654, 0.61506735, 11.60849929, 0.14786122, 0.98797646,\n", " 0.14965529, 1.01876942, 0.22496456],\n", " [ 1.04415606, 0.61506797, 11.60853764, 0.14786084, 0.98795485,\n", " 0.14965522, 1.01877037, 0.22496558],\n", " [ 1.04415979, 0.61506824, 11.60855888, 0.14786063, 0.98794604,\n", " 0.14965523, 1.01877073, 0.22496615],\n", " [ 1.04415343, 0.61506782, 11.60852881, 0.1478609 , 0.98796064,\n", " 0.14965524, 1.01877017, 0.22496535],\n", " [ 1.04415803, 0.61506797, 11.60855085, 0.14786073, 0.98794976,\n", " 0.14965522, 1.01877068, 0.22496587],\n", " [ 1.04415086, 0.61506761, 11.6085207 , 0.14786105, 0.98796623,\n", " 0.14965523, 1.01876984, 0.22496507]]), array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 1.11111111e-05, 1.11111111e-05, 1.11111111e-05, 1.11111111e-05,\n", " 1.11111111e-05]))\n", " fun: 0.0\n", " message: 'Optimization terminated successfully.'\n", " nfev: 256\n", " nit: 102\n", " status: 0\n", " success: True\n", " x: array([ 1.0441589 , 0.61506829, 11.60855387, 0.14786071, 0.98794809,\n", " 0.1496552 , 1.01877043, 0.22496593])\n" ] } ], "source": [ "# Run a built-in optimizer and print the results\n", "res = scipy.optimize.minimize( goodwin_circadian_error, method='Nelder-Mead', x0=params )\n", "print(res)" ] }, { "cell_type": "code", "execution_count": 214, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Use the results from the optimization to run the model\n", "print( goodwin_circadian_error( res.x ))\n", "\n", "mf = lambda t,y : goodwin_oscillator(t,y, res.x)\n", "\n", "sol1 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,200), y0=(.1,.1,.1), \n", " t_eval=np.arange(0,200,.1) )\n", "sol2 = scipy.integrate.solve_ivp( fun=mf, t_span=(0,100), y0=sol1.y[:,-1], \n", " t_eval=np.arange(0,100,.1) )\n", "\n", "plt.plot( sol2.t, sol2.y.T )\n", "(period,sdperiod) = get_period( sol2.t, sol2.y[0,:])\n", "plt.title( 'Period = %f' % period );\n", "\n" ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }