{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Artificial Neural Network Test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "### TOC\n", "\n", "\n", "* [Docs](#docs)\n", "* [Predefined Functions and Tests](#general)\n", "* [Minimization](#minimization)\n", " 1. [without Jacobian](#withoutJac)\n", " 2. [Analytical Jacobian](#usingJac)\n", "* [Summary](#summary)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "### Docs - Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The problem to solve is the differential equation $$\\frac{d}{dt}y(t)= - y(t).$$ Using the network, this is $$y_i= 1+t_i v_k f(t_i w_k+u_k).$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The procedures are\n", "\n", "**Deal with the function first.**\n", " \n", "1. The cost is $$I=\\sum_i\\left( \\frac{dy_i}{dt}+y_i \\right)^2.$$ Our purpose is to minimize this cost.\n", " \n", "2. To calculate the differential of y, we can write down the explicit expression for it. $$\\frac{dy}{dt} = v_k f(t w_k+u_k) + t v_k f(tw_k+u_k) (1-f(tw_k+u_k))w_k,$$ where the function f is defined as a trigf().\n", "\n", "3. So the cost becomse $$I = \\sum_i \\left( v_k f(t w_k+u_k) + t v_k f(tw_k+u_k) (1-f(tw_k+u_k)) w_k + y \\right)^2.$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "### General Functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import Modules used in this notebook" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The snakeviz extension is already loaded. To reload it, use:\n", " %reload_ext snakeviz\n" ] } ], "source": [ "# This line configures matplotlib to show figures embedded in the notebook, \n", "# instead of opening a new window for each figure. More about that later. \n", "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", "%matplotlib inline\n", "%load_ext snakeviz\n", "\n", "import numpy as np\n", "from scipy.optimize import minimize\n", "from scipy.special import expit\n", "import matplotlib.pyplot as plt\n", "\n", "from matplotlib.lines import Line2D\n", "\n", "import timeit\n", "\n", "import pandas as pd\n", "\n", "import plotly.plotly as py\n", "from plotly.graph_objs import *\n", "import plotly.tools as tls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the general part of cost function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For an first order ODE, $$ L \\equiv \\frac{d}{dt}y + f(t) =0 ,$$ in which $y(t)$ is the function to be solved.\n", "The cost is defined as $$I = \\sum_{i} I_i^2 = I_i * I_i,$$ where \n", "$$ I_{i} = \\left( \\frac{d}{dt}y + f(t) \\right) $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the following function" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def trigf(x):\n", " #return 1/(1+np.exp(-x)) # It's not bad to define this function here for people could use other functions other than expit(x).\n", " return expit(x)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [], "source": [ "## Very important notes\n", "## fOft(x,ti) should be specified, here ti is a scalar value not a list. and it should return a value.\n", "## Here I use t as the variables list and ti as the variable.\n", "\n", "\n", "\n", "def costODE(x,t,initialCondition,fOfArg): # x is a list of the order v,w,u. x will be splited to three equal parts.\n", " # initialCondition can only be constants.\n", "\n", " t = np.array(t)\n", " \n", " costODETotal = np.sum( costODETList(x,t,initialCondition,fOfArg) )\n", " \n", " return costODETotal\n", " \n", "\n", "def costODETList(x,t,initialCondition,fOfArg): ## This is the function WITHOUT the square!!! \n", " \n", " v,w,u = np.split(x,3)[:3]\n", " \n", " t = np.array(t)\n", " \n", " costList = np.asarray([])\n", " \n", " for temp in t:\n", " tempElement = costODETi(x,temp,initialCondition,fOfArg)\n", " costList = np.append(costList, tempElement)\n", " \n", " return np.array(costList)\n", "\n", " \n", "\n", "def costODETi(x,ti,initialCondition,fOfArg): # function for each t. here t is a single value \n", " # fOfArg is the function f(t) in the example\n", "\n", " v,w,u = np.split(x,3)[:3]\n", " \n", " args = np.array([x,ti,initialCondition])\n", " \n", " fvec = np.array(trigf(ti*w + u) ) # This is a vector!!!\n", " ft = fOfArg(args) ## fOft should be specified in a problem!!!!!!!!!!!! And it takes a whole array of all the arguments\n", " # For a given t, this calculates the value of y(t), given the parameters, v, w, u. Notice this initialCondition.\n", " \n", " return ( np.sum (v*fvec + ti * v* fvec * ( 1 - fvec ) * w ) + ft ) ** 2\n", " \n", "\n", " \n", "## The funNNi(x,ti,initialCondition) takes a time ti and exports the function value with input x.\n", "\n", " \n", "def funNNi(x,ti,initialCondition): # for a single time stamp t\n", " \n", " v,w,u = np.split(x,3)[:3]\n", " \n", " return initialCondition + np.sum(ti * v * trigf( ti*w +u ) )\n", "\n", "## funNNList(x,t,initialCondition) takes a list of time and exports the function values of these times.\n", "\n", "def funNNList(x,t,initialCondition):\n", " \n", " t = np.array(t)\n", " \n", " tempList = np.asarray([])\n", " \n", " for ti in t:\n", " tempElement = funNNi(x,ti,initialCondition)\n", " tempList = np.append(tempList,tempElement)\n", " \n", " return np.array(tempList)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An example of the fOfArgs(args) which corresponds to the equation $$\\frac{d}{dt}y + y(t)=0 .$$" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def yOft(args):\n", " \n", " return funNNi(args[0],args[1],args[2]) # As in our definition, args[0] is x, args[1] is ti, args[2] is initialCondition\n" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "455.812570558\n", "43.5568746139\n" ] } ], "source": [ "### This is a test based on the comparison between this notebook and the other one called Basics.ipynb.\n", "\n", "testx = np.ones(30)\n", "testt = np.linspace(0,1,2)\n", "\n", "print costODE(testx,testt,1,yOft) ## This is not right, should be 455.812570558\n", "print costODETi(np.ones(9),1,1,yOft) ## This should be 43.556874613889988" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "### Minimizatioin | [toc](#toc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example $$\\frac{d}{dt}y +y=0$$" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def funY(t):\n", "\n", " return np.exp(-t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "#### Without Jac" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "tlin = np.linspace(0,5,11)\n", "initGuess = np.zeros(30)\n", "# initGuess = np.random.rand(1,30)+2\n", "\n", "costODEF = lambda x: costODE(x,tlin,1,yOft)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.75075912476\n", " status: 2\n", " success: False\n", " njev: 15\n", " nfev: 492\n", " fun: 0.1920503865598962\n", " x: array([-0.14291016, -0.14291016, -0.14291016, -0.14291016, -0.14291016,\n", " -0.14291016, -0.14291016, -0.14291016, -0.14291016, -0.14291016,\n", " -0.3767748 , -0.3767748 , -0.3767748 , -0.3767748 , -0.3767748 ,\n", " -0.3767748 , -0.3767748 , -0.3767748 , -0.3767748 , -0.3767748 ,\n", " -0.00415728, -0.00415728, -0.00415728, -0.00415728, -0.00415728,\n", " -0.00415728, -0.00415728, -0.00415728, -0.00415728, -0.00415728])\n", " message: 'Desired error not necessarily achieved due to precision loss.'\n", " jac: array([-0.03935309, -0.03935309, -0.03935309, -0.03935309, -0.03935309,\n", " -0.03935308, -0.03935308, -0.03935309, -0.03935309, -0.03935309,\n", " -0.013696 , -0.013696 , -0.01369601, -0.013696 , -0.01369601,\n", " -0.013696 , -0.013696 , -0.013696 , -0.013696 , -0.013696 ,\n", " 0.01049041, 0.01049041, 0.01049041, 0.01049041, 0.01049041,\n", " 0.01049041, 0.01049041, 0.01049041, 0.01049041, 0.01049041])\n" ] } ], "source": [ "# %%snakeviz\n", "startCG = timeit.default_timer()\n", "costODEFResultCG = minimize(costODEF,initGuess,method=\"CG\")\n", "stopCG = timeit.default_timer()\n", "\n", "print stopCG - startCG\n", "\n", "print costODEFResultCG" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.81118392944\n", " status: 0\n", " success: True\n", " njev: 51\n", " nfev: 1649\n", " fun: 2.5774431624374406e-05\n", " x: array([-0.48540402, -0.48455081, -0.48705338, -0.26501179, -0.35788204,\n", " -0.34565228, -0.21748088, -0.18660911, -0.6594982 , -0.27068346,\n", " -1.2048972 , -1.19990967, -1.21438905, -0.48933447, -0.31391794,\n", " -0.31977515, -0.38418466, -0.40543151, -0.52481992, 0.01588255,\n", " -1.25067626, -1.24966621, -1.25259283, -0.92609278, -0.89419533,\n", " -0.89597664, -0.91608505, -0.92190289, -0.88950163, -0.7106579 ])\n", " message: 'Optimization terminated successfully.'\n", " jac: array([ 3.94333608e-05, 4.04668297e-05, 3.75074985e-05,\n", " 2.27300134e-04, 1.83917041e-05, 3.09371953e-05,\n", " 1.37970724e-04, 1.62817417e-04, 2.48804897e-04,\n", " -2.32962982e-03, -1.01557895e-04, -1.02731517e-04,\n", " -9.93060075e-05, 1.37743003e-04, 8.00560364e-04,\n", " 7.43729275e-04, 2.97237345e-04, 2.16706698e-04,\n", " 2.19471341e-04, 3.18754385e-03, -1.07516480e-05,\n", " -1.14018064e-05, -9.52650726e-06, -4.68119949e-05,\n", " 1.95385976e-05, 1.45992992e-05, -1.52366731e-05,\n", " -1.84541357e-05, -1.30783258e-04, 4.02199468e-04,\n", " 0.00000000e+00])\n", " nit: 51\n" ] } ], "source": [ "# %%snakeviz\n", "startSLSQP = timeit.default_timer()\n", "costODEFResultSLSQP = minimize(costODEF,initGuess,method=\"SLSQP\")\n", "stopSLSQP = timeit.default_timer()\n", "\n", "print stopSLSQP - startSLSQP\n", "\n", "print costODEFResultSLSQP" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10.4770479202\n", " status: 0\n", " success: True\n", " nfev: 119\n", " fun: 1.6905137501642895e-07\n", " x: array([-2.0603106 , -2.0603106 , -2.06419974, -2.11583824, -2.0634141 ,\n", " -2.06405499, -2.06078037, -2.06384378, -2.0830549 , -2.08666077,\n", " -0.45891181, -0.45891181, -0.20174149, -0.04508755, -0.63243257,\n", " -0.64959747, -0.51989713, -0.21305195, -0.98190186, -1.07819291,\n", " -3.00675577, -3.00675577, -2.99724866, -2.89726978, -3.00055964,\n", " -2.99920211, -3.00596847, -2.99805874, -2.96010668, -2.9544031 ])\n", " message: 'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " jac: array([ -1.02126515e-05, -1.02126515e-05, -1.87774584e-05,\n", " -2.77189401e-05, -6.42969453e-06, -6.13260136e-06,\n", " -8.71123541e-06, -1.83276307e-05, -2.24984889e-06,\n", " -1.55853109e-06, 5.41300468e-05, 5.41300468e-05,\n", " 7.99575741e-05, 9.91664506e-05, 3.74608826e-05,\n", " 3.60326294e-05, 4.78763702e-05, 7.90094451e-05,\n", " 1.68361325e-05, 1.37648216e-05, 2.07773905e-05,\n", " 2.07773905e-05, 3.75926323e-05, 5.58314251e-05,\n", " 1.32191342e-05, 1.26251075e-05, 1.77820218e-05,\n", " 3.67225784e-05, 4.90846728e-06, 3.54729548e-06])\n", " nit: 93\n" ] } ], "source": [ "# %%snakeviz\n", "startLBFGSB = timeit.default_timer()\n", "# costODEFResult = minimize(costODEF,initGuess,method=\"Nelder-Mead\")\n", "# minimize(costTotalF,initGuess,method=\"TNC\")\n", "costODEFResultLBFGSB = minimize(costODEF,initGuess,method=\"L-BFGS-B\")\n", "stopLBFGSB = timeit.default_timer()\n", "\n", "print stopLBFGSB - startLBFGSB\n", "\n", "print costODEFResultLBFGSB" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "17.0160830021\n", " status: 1\n", " nfev: 6001\n", " success: False\n", " fun: 0.00031884090490975285\n", " x: array([ 0.1330613 , 1.05982273, 0.18777729, -0.60789078, -0.96393469,\n", " -0.65270373, -1.55257864, 0.8002259 , -0.12414033, -0.21230861,\n", " -0.88629202, 0.47527367, 0.21401419, 0.2130512 , -1.5236408 ,\n", " 1.35208616, -0.48922234, -0.85850735, 0.72135512, -1.03407686,\n", " 2.29041152, 0.91184671, -0.56987761, 0.16597395, -0.43267372,\n", " 2.1772668 , -0.1318482 , -0.80817762, 0.44533168, -0.28545885])\n", " message: 'Maximum number of function evaluations has been exceeded.'\n", " nit: 5029\n" ] } ], "source": [ "# %%snakeviz\n", "startNM = timeit.default_timer()\n", "costODEFResultNM = minimize(costODEF,initGuess,method=\"Nelder-Mead\")\n", "stopNM = timeit.default_timer()\n", "\n", "print stopNM - startNM\n", "\n", "print costODEFResultNM" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "26.2406368256\n", " status: 3\n", " success: False\n", " nfev: 300\n", " fun: 0.0014134200168788226\n", " x: array([-0.20190472, -0.20190472, -0.18808703, -0.19295435, -0.19572038,\n", " -0.04796784, -0.19396957, -0.21892287, -0.21447547, -0.17392687,\n", " -1.67899527, -1.67899527, -0.42007525, -0.91695886, -1.19221734,\n", " 0.22111673, -0.25818086, -0.88921753, -0.46715631, -0.19627801,\n", " 0.20087304, 0.20087304, 0.65713399, -0.05456812, 0.22742078,\n", " 0.15573394, 0.0956364 , -0.20943573, 0.24956391, 0.13324245])\n", " message: 'Max. number of function evaluations reach'\n", " jac: array([ 0.00101461, 0.00101461, -0.00061286, 0.00456347, 0.00292545,\n", " -0.0167402 , -0.00407698, 0.00421885, 0.00257763, -0.00631483,\n", " 0.00024155, 0.00024155, 0.00862044, -0.00134179, -0.00182214,\n", " 0.00145435, 0.00664002, -0.00121416, 0.00651105, 0.00539998,\n", " 0.00070286, 0.00070286, 0.0010624 , -0.00067795, -0.00029385,\n", " 0.00021479, 0.00098624, -0.00069649, 0.00027266, 0.00097921])\n", " nit: 31\n" ] } ], "source": [ "# %%snakeviz\n", "startTNC = timeit.default_timer()\n", "# costODEFResult = minimize(costODEF,initGuess,method=\"Nelder-Mead\")\n", "costODEFResultTNC = minimize(costODEF,initGuess,method=\"TNC\")\n", "stopTNC = timeit.default_timer()\n", "\n", "print stopTNC - startTNC\n", "\n", "print costODEFResultTNC" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [], "source": [ "### This method is extremely slow\n", "# %%snakeviz\n", "# startPowell = timeit.default_timer()\n", "# costODEFResultPowell = minimize(costODEF,initGuess,method=\"Powell\")\n", "# stopPowell = timeit.default_timer()\n", "\n", "# print stopPowell - startPowell\n", "\n", "# print costODEFResultPowell" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# for L-BFGS-B method\n", "\n", "# print \"Success is\", costODEFResult.get('success'), \"\\n\", \"# of function evaluations\", costODEFResult.get('nfev'), \"\\n\",\\\n", "# \"value of minimized function\", costODEFResult.get('fun'), \"\\n\",\"# of iter\", costODEFResult.get('nit')\n", "#\n", "# print \"x is\\n\", costODEFResult.get('x')" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 1.00000000e+00 6.77014463e-01 4.19924637e-01 2.25297162e-01\n", " 8.78206321e-02 8.04407022e-04 -4.32511996e-02 -5.20970637e-02\n", " -3.32556540e-02 6.34133845e-03 6.05864590e-02]\n", "[ 1. 0.60517646 0.36711424 0.22343151 0.13558498 0.08159165\n", " 0.04879234 0.02940344 0.01824505 0.01166132 0.00700062]\n", "[ 1. 0.60641483 0.3678138 0.22314944 0.13534572 0.08203464\n", " 0.04970017 0.03013128 0.0183094 0.01115312 0.00676784]\n", "[ 1. 0.60129567 0.36281266 0.22220159 0.13660322 0.08295539\n", " 0.04904241 0.02817986 0.01636935 0.01048205 0.00741821]\n" ] } ], "source": [ "print funNNList(np.array( costODEFResultCG.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEFResultSLSQP.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEFResultLBFGSB.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEFResultNM.get('x') ),tlin,1)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tlinplt = np.linspace(0,5,20)\n", "tlinplt2 = np.linspace(0,40,50)\n", "plt.figure(figsize=(20,12.35))\n", "plt.plot(tlinplt,funY(tlinplt),'g-', label = \"pltAnalytical\")\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultCG.get('x') ),tlinplt,1),'c^',label = \"pltODEFResultCG\")\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultSLSQP.get('x') ),tlinplt,1),'r+',label=\"pltODEFResultSLSQP\")\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultLBFGSB.get('x') ),tlinplt,1),'bo',label=\"pltODEFResultLBFGSB\")\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultNM.get('x') ),tlinplt,1),'m1',label=\"pltODEFResultNM\")\n", "# plt.yscale('log')\n", "# plt.legend()\n", "# plt.show()\n", "\n", "\n", "##############\n", "# plot using plot.ly\n", "\n", "# figMethodTest = plt.gcf()\n", "\n", "# Send figure object to Plotly, show result in notebook\n", "# py.iplot_mpl(figMethodTest,filename=\"ANN-test-figMethodTest\")\n", "py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethodTest\")" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Let's not worry about that.\n", "\n", "# plt.figure(figsize=(20,12.35))\n", "# plt.plot(tlinplt2,funY(tlinplt2),'g-', label = \"pltAnalytical\")\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEFResultSLSQP.get('x') ),tlinplt2,1),'r+',label=\"pltODEFResultSLSQP\")\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEFResultLBFGSB.get('x') ),tlinplt2,1),'bo',label=\"pltODEFResultLBFGSB\")\n", "\n", "# plt.yscale('log')\n", "# plt.legent()\n", "# plt.show()\n", "\n", "# py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethodTest2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "#### Using Jac" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def mhelper(v,w,u,t): ## This function should output a result ## t is a number in this function not array!!\n", " v = np.array(v)\n", " w = np.array(w)\n", " u = np.array(u)\n", " \n", " return np.sum( v*trigf( t*w + u ) + t* v* trigf(t*w + u) * ( 1 - trigf( t*w +u) ) * w ) + ( 1 + np.sum( t * v * trigf( t*w +u ) ) ) \n", " # Checked # Pass\n", " \n", "def vhelper(v,w,u,t):\n", " v = np.array(v)\n", " w = np.array(w)\n", " u = np.array(u)\n", " \n", " return trigf(t*w+u) + t*trigf(t*w+u)*( 1-trigf(t*w+u) )*w + t*trigf(t*w+u)\n", "\n", "def whelper(v,w,u,t):\n", " v = np.array(v)\n", " w = np.array(w)\n", " u = np.array(u)\n", " \n", " return v*t*trigf(t*w+u)*( 1- trigf(t*w+u) ) + t*v*( trigf(t*w+u)*(1-trigf(t*w+u))*t* (1-trigf(t*w+u)) )*w - t*v*trigf(t*w+u)*trigf(t*w+u)*(1-trigf(t*w+u))*t*w + t*v*trigf(t*w+u)*(1-trigf(t*w+u)) + t*v*trigf(t*w+u)*(1-trigf(t*w+u))*t \n", "\n", "def uhelper(v,w,u,t):\n", " v = np.array(v)\n", " w = np.array(w)\n", " u = np.array(u)\n", " \n", " return v*trigf(t*w+u)*( 1 - trigf(t*w+u)) + t* v * trigf(t*w+u) * (1-trigf(t*w+u))*(1-trigf(t*w+u))*w - t*v*trigf(t*w+u)*trigf(t*w+u)*(1-trigf(t*w+u))*w + t*v*trigf(t*w+u)*(1-trigf(t*w+u))\n" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def costJac(v,w,u,t):\n", " v = np.array(v)\n", " w = np.array(w)\n", " u = np.array(u)\n", " \n", " vout = 0\n", " wout = 0\n", " uout = 0\n", " \n", " for temp in t:\n", " vout = vout + 2*mhelper(v,w,u,temp)*vhelper(v,w,u,temp)\n", " wout = wout + 2*mhelper(v,w,u,temp)*whelper(v,w,u,temp)\n", " uout = uout + 2*mhelper(v,w,u,temp)*uhelper(v,w,u,temp)\n", " \n", " out = np.hstack((vout,wout,uout))\n", " \n", " return np.array(out)\n" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [ "costODEJacF = lambda x: costJac(np.split(x,3)[0],np.split(x,3)[1],np.split(x,3)[2],tlin)\n", "initGuessJ = np.zeros(30)\n", "# initGuessJ = np.random.rand(1,30)+2" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "28.8225519657\n", " status: 0\n", " success: True\n", " njev: 4178\n", " nfev: 548\n", " fun: 0.09398293779213696\n", " x: array([-31.20588236, -31.20588236, -31.20588236, -31.20588236,\n", " -31.20588236, -31.20588236, -31.20588236, -31.20588236,\n", " -31.20588236, -31.20588236, -0.28889755, -0.28889755,\n", " -0.28889755, -0.28889755, -0.28889755, -0.28889755,\n", " -0.28889755, -0.28889755, -0.28889755, -0.28889755,\n", " -5.9568862 , -5.9568862 , -5.9568862 , -5.9568862 ,\n", " -5.9568862 , -5.9568862 , -5.9568862 , -5.9568862 ,\n", " -5.9568862 , -5.9568862 ])\n", " message: 'Optimization terminated successfully.'\n", " nhev: 0\n", " jac: array([ 7.71837928e-06, 7.71837928e-06, 7.71837928e-06,\n", " 7.71837928e-06, 7.71837928e-06, 7.71837928e-06,\n", " 7.71837928e-06, 7.71837928e-06, 7.71837928e-06,\n", " 7.71837928e-06, -6.89322453e-04, -6.89322453e-04,\n", " -6.89322453e-04, -6.89322453e-04, -6.89322453e-04,\n", " -6.89322453e-04, -6.89322453e-04, -6.89322453e-04,\n", " -6.89322453e-04, -6.89322453e-04, -2.09622450e-04,\n", " -2.09622450e-04, -2.09622450e-04, -2.09622450e-04,\n", " -2.09622450e-04, -2.09622450e-04, -2.09622450e-04,\n", " -2.09622450e-04, -2.09622450e-04, -2.09622450e-04])\n" ] } ], "source": [ "# %%snakeviz\n", "startJacNCG = timeit.default_timer()\n", "costODEResultJacNCG = minimize(costODEF,initGuessJ,method=\"Newton-CG\",jac=costODEJacF)\n", "stopJacNCG = timeit.default_timer()\n", "\n", "print stopJacNCG - startJacNCG\n", "print costODEResultJacNCG" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A test of the results" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Success is True \n", "# of function evaluations 548 \n", "value of minimized function 0.0939829377921 \n", "# of iter None\n", "x is\n", "[-31.20588236 -31.20588236 -31.20588236 -31.20588236 -31.20588236\n", " -31.20588236 -31.20588236 -31.20588236 -31.20588236 -31.20588236\n", " -0.28889755 -0.28889755 -0.28889755 -0.28889755 -0.28889755\n", " -0.28889755 -0.28889755 -0.28889755 -0.28889755 -0.28889755\n", " -5.9568862 -5.9568862 -5.9568862 -5.9568862 -5.9568862\n", " -5.9568862 -5.9568862 -5.9568862 -5.9568862 -5.9568862 ]\n" ] } ], "source": [ "# for NCG method\n", "\n", "print \"Success is\", costODEResultJacNCG.get('success'), \"\\n\", \"# of function evaluations\", costODEResultJacNCG.get('nfev'), \"\\n\",\\\n", "\"value of minimized function\", costODEResultJacNCG.get('fun'), \"\\n\",\"# of iter\", costODEResultJacNCG.get('nit')\n", "\n", "print \"x is\\n\", costODEResultJacNCG.get('x')" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.170196056366\n", " status: 2\n", " success: False\n", " njev: 15\n", " nfev: 27\n", " fun: 0.1920504147526792\n", " x: array([-0.1429102 , -0.1429102 , -0.1429102 , -0.1429102 , -0.1429102 ,\n", " -0.1429102 , -0.1429102 , -0.1429102 , -0.1429102 , -0.1429102 ,\n", " -0.37677492, -0.37677492, -0.37677492, -0.37677492, -0.37677492,\n", " -0.37677492, -0.37677492, -0.37677492, -0.37677492, -0.37677492,\n", " -0.00415729, -0.00415729, -0.00415729, -0.00415729, -0.00415729,\n", " -0.00415729, -0.00415729, -0.00415729, -0.00415729, -0.00415729])\n", " message: 'Desired error not necessarily achieved due to precision loss.'\n", " jac: array([-0.03935216, -0.03935216, -0.03935216, -0.03935216, -0.03935216,\n", " -0.03935216, -0.03935216, -0.03935216, -0.03935216, -0.03935216,\n", " -0.01369694, -0.01369694, -0.01369694, -0.01369694, -0.01369694,\n", " -0.01369694, -0.01369694, -0.01369694, -0.01369694, -0.01369694,\n", " 0.01049026, 0.01049026, 0.01049026, 0.01049026, 0.01049026,\n", " 0.01049026, 0.01049026, 0.01049026, 0.01049026, 0.01049026])\n" ] } ], "source": [ "# %%snakeviz\n", "startJacCG = timeit.default_timer()\n", "costODEResultJacCG = minimize(costODEF,initGuessJ,method=\"CG\",jac=costODEJacF)\n", "stopJacCG = timeit.default_timer()\n", "\n", "print stopJacCG - startJacCG\n", "print costODEResultJacCG" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.570199966431\n", " status: 0\n", " success: True\n", " njev: 51\n", " nfev: 66\n", " fun: 1.080248266970841e-05\n", " x: array([-1.14137679, -0.94627375, -0.87087044, -1.01525169, -1.09187733,\n", " -1.18014787, -1.19580593, -1.23912592, -1.31330351, -1.36371235,\n", " -0.36628767, -0.16915114, 0.02718512, -0.21314756, -0.28643278,\n", " -0.44737585, -0.48474124, -0.60405077, -0.89880536, -1.23277504,\n", " -2.35587854, -2.53950768, -2.6062629 , -2.47658718, -2.40362568,\n", " -2.31855785, -2.30356691, -2.26261292, -2.19727012, -2.16279234])\n", " message: 'Optimization terminated successfully.'\n", " jac: array([ -1.54062257e-04, -1.88647024e-04, -2.26829058e-04,\n", " -1.86997132e-04, -1.75526822e-04, -1.28483659e-04,\n", " -1.16205693e-04, -7.76984490e-05, -6.92506587e-06,\n", " 1.96097088e-05, 4.29105762e-04, 2.62610025e-04,\n", " 2.46523021e-04, 3.12471903e-04, 3.82432081e-04,\n", " 4.48266944e-04, 4.47819412e-04, 4.12766626e-04,\n", " 2.12299593e-04, 1.48749876e-05, 1.71845514e-04,\n", " 1.68939160e-04, 1.83470792e-04, 1.80527154e-04,\n", " 1.84416789e-04, 1.50520621e-04, 1.38893181e-04,\n", " 9.81518456e-05, 9.11415478e-06, -3.17775200e-05,\n", " 0.00000000e+00])\n", " nit: 51\n" ] } ], "source": [ "# %%snakeviz\n", "startJacSLSQP = timeit.default_timer()\n", "costODEResultJacSLSQP = minimize(costODEF,initGuessJ,method=\"SLSQP\",jac=costODEJacF)\n", "stopJacSLSQP = timeit.default_timer()\n", "\n", "print stopJacSLSQP - startJacSLSQP\n", "print costODEResultJacSLSQP" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.17962908745\n", " status: 0\n", " success: True\n", " nfev: 466\n", " fun: 0.093712249132977959\n", " x: array([-247.62057116, -247.62057116, -247.62057116, -247.62057116,\n", " -247.62057116, -247.62057116, -247.62057116, -247.62057116,\n", " -247.62057116, -247.62057116, -0.28867261, -0.28867261,\n", " -0.28867261, -0.28867261, -0.28867261, -0.28867261,\n", " -0.28867261, -0.28867261, -0.28867261, -0.28867261,\n", " -8.02983967, -8.02983967, -8.02983967, -8.02983967,\n", " -8.02983967, -8.02983967, -8.02983967, -8.02983967,\n", " -8.02983967, -8.02983967])\n", " message: 'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL'\n", " jac: array([ 2.15718599e-08, 2.15718599e-08, 2.15718599e-08,\n", " 2.15718599e-08, 2.15718599e-08, 2.15718599e-08,\n", " 2.15718599e-08, 2.15718599e-08, 2.15718599e-08,\n", " 2.15718599e-08, -5.22190220e-06, -5.22190220e-06,\n", " -5.22190220e-06, -5.22190220e-06, -5.22190220e-06,\n", " -5.22190220e-06, -5.22190220e-06, -5.22190220e-06,\n", " -5.22190220e-06, -5.22190220e-06, -1.44369234e-06,\n", " -1.44369234e-06, -1.44369234e-06, -1.44369234e-06,\n", " -1.44369234e-06, -1.44369234e-06, -1.44369234e-06,\n", " -1.44369234e-06, -1.44369234e-06, -1.44369234e-06])\n", " nit: 358\n" ] } ], "source": [ "# %%snakeviz\n", "startJacLBFGSB = timeit.default_timer()\n", "costODEResultJacLBFGSB = minimize(costODEF,initGuessJ,method=\"L-BFGS-B\",jac=costODEJacF)\n", "stopJacLBFGSB = timeit.default_timer()\n", "\n", "print stopJacLBFGSB - startJacLBFGSB\n", "print costODEResultJacLBFGSB" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [], "source": [ "initGuessJ2 = np.zeros(30)\n", "tlin2 = np.linspace(0,5,100)\n", "costODEJacF2 = lambda x: costJac(np.split(x,3)[0],np.split(x,3)[1],np.split(x,3)[2],tlin2)\n", "costODEF2 = lambda x: costODE(x,tlin2,1,yOft)\n", "\n", "initGuessJ3 = np.zeros(30)\n", "tlin3 = np.linspace(0,5,5)\n", "costODEJacF3 = lambda x: costJac(np.split(x,3)[0],np.split(x,3)[1],np.split(x,3)[2],tlin3)\n", "costODEF3 = lambda x: costODE(x,tlin3,1,yOft)\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "132.125494957\n", " status: 0\n", " success: True\n", " nfev: 1644\n", " fun: 0.59402660993173084\n", " x: array([ -6.09970583e+03, -6.09970583e+03, -6.09970583e+03,\n", " -6.09970583e+03, -6.09970583e+03, -6.09970583e+03,\n", " -6.09970583e+03, -6.09970583e+03, -6.09970583e+03,\n", " -6.09970583e+03, -2.83950110e-01, -2.83950110e-01,\n", " -2.83950110e-01, -2.83950110e-01, -2.83950110e-01,\n", " -2.83950110e-01, -2.83950110e-01, -2.83950110e-01,\n", " -2.83950110e-01, -2.83950110e-01, -1.12626969e+01,\n", " -1.12626969e+01, -1.12626969e+01, -1.12626969e+01,\n", " -1.12626969e+01, -1.12626969e+01, -1.12626969e+01,\n", " -1.12626969e+01, -1.12626969e+01, -1.12626969e+01])\n", " message: 'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL'\n", " jac: array([ 1.37439344e-09, 1.37439344e-09, 1.37439344e-09,\n", " 1.37439344e-09, 1.37439344e-09, 1.37439344e-09,\n", " 1.37439344e-09, 1.37439344e-09, 1.37439344e-09,\n", " 1.37439344e-09, 2.09065112e-06, 2.09065112e-06,\n", " 2.09065112e-06, 2.09065112e-06, 2.09065112e-06,\n", " 2.09065112e-06, 2.09065112e-06, 2.09065112e-06,\n", " 2.09065112e-06, 2.09065112e-06, -7.43602645e-06,\n", " -7.43602645e-06, -7.43602645e-06, -7.43602645e-06,\n", " -7.43602645e-06, -7.43602645e-06, -7.43602645e-06,\n", " -7.43602645e-06, -7.43602645e-06, -7.43602645e-06])\n", " nit: 1230\n" ] } ], "source": [ "# %%snakeviz\n", "startJacLBFGSB2 = timeit.default_timer()\n", "costODEResultJacLBFGSB2 = minimize(costODEF2,initGuessJ2,method=\"L-BFGS-B\",jac=costODEJacF2)\n", "stopJacLBFGSB2 = timeit.default_timer()\n", "\n", "print stopJacLBFGSB2 - startJacLBFGSB2\n", "print costODEResultJacLBFGSB2" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.09725189209\n", " status: 0\n", " success: True\n", " nfev: 481\n", " fun: 0.063449481315827297\n", " x: array([ -4.01464350e+02, -4.01464350e+02, -4.01464350e+02,\n", " -4.01464350e+02, -4.01464350e+02, -4.01464350e+02,\n", " -4.01464350e+02, -4.01464350e+02, -4.01464350e+02,\n", " -4.01464350e+02, -2.95997459e-01, -2.95997459e-01,\n", " -2.95997459e-01, -2.95997459e-01, -2.95997459e-01,\n", " -2.95997459e-01, -2.95997459e-01, -2.95997459e-01,\n", " -2.95997459e-01, -2.95997459e-01, -8.46635757e+00,\n", " -8.46635757e+00, -8.46635757e+00, -8.46635757e+00,\n", " -8.46635757e+00, -8.46635757e+00, -8.46635757e+00,\n", " -8.46635757e+00, -8.46635757e+00, -8.46635757e+00])\n", " message: 'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL'\n", " jac: array([ 6.19175223e-09, 6.19175223e-09, 6.19175223e-09,\n", " 6.19175223e-09, 6.19175223e-09, 6.19175223e-09,\n", " 6.19175223e-09, 6.19175223e-09, 6.19175223e-09,\n", " 6.19175223e-09, 7.76604365e-06, 7.76604365e-06,\n", " 7.76604365e-06, 7.76604365e-06, 7.76604365e-06,\n", " 7.76604365e-06, 7.76604365e-06, 7.76604365e-06,\n", " 7.76604365e-06, 7.76604365e-06, -6.81405371e-07,\n", " -6.81405371e-07, -6.81405371e-07, -6.81405371e-07,\n", " -6.81405371e-07, -6.81405371e-07, -6.81405371e-07,\n", " -6.81405371e-07, -6.81405371e-07, -6.81405371e-07])\n", " nit: 361\n" ] } ], "source": [ "# %%snakeviz\n", "startJacLBFGSB3 = timeit.default_timer()\n", "costODEResultJacLBFGSB3 = minimize(costODEF3,initGuessJ3,method=\"L-BFGS-B\",jac=costODEJacF3)\n", "stopJacLBFGSB3 = timeit.default_timer()\n", "\n", "print stopJacLBFGSB3 - startJacLBFGSB3\n", "print costODEResultJacLBFGSB3" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.7097029686\n", " status: 0\n", " success: True\n", " njev: 50\n", " nfev: 85\n", " fun: 0.00015456941229943612\n", " x: array([-0.32264221, -0.48107001, -0.04941097, -0.22179986, -0.32500703,\n", " -0.26811866, -0.16689592, -0.29099586, -0.28023271, 0.35581623,\n", " -2.13215359, -0.19907189, -0.44445211, -0.83605933, -1.57465365,\n", " -1.0165954 , -0.20845835, -0.09278176, 0.4425471 , 0.73163168,\n", " -0.79214907, -0.0083873 , 0.07852109, 0.05472123, -0.24917395,\n", " 0.00498926, 0.07293642, -0.08552639, -0.41189544, -0.94173643])\n", " message: 'Optimization terminated successfully.'\n", " jac: array([ 5.86155143e-04, 1.76026318e-03, 1.06070592e-03,\n", " -5.63759577e-06, -5.99931515e-05, -1.15979657e-04,\n", " 1.82416397e-03, 2.02892373e-03, 3.55605356e-03,\n", " 4.43492803e-03, 3.06517195e-04, -1.50612327e-03,\n", " -1.77555087e-04, -2.62277898e-04, 2.54115876e-05,\n", " -7.49442817e-05, -5.24330569e-04, -1.06579689e-03,\n", " -1.14473878e-03, 2.05294059e-03, 1.11972625e-04,\n", " -5.47604421e-04, -4.80618135e-05, 1.17612504e-05,\n", " 2.03893304e-04, 5.73858019e-05, -1.93123627e-04,\n", " -3.48156620e-04, -3.48580405e-04, 3.28262764e-04,\n", " 0.00000000e+00])\n", " nit: 50\n" ] } ], "source": [ "# %%snakeviz\n", "startJacSLSQP2 = timeit.default_timer()\n", "costODEResultJacSLSQP2 = minimize(costODEF2,initGuessJ2,method=\"SLSQP\",jac=costODEJacF2)\n", "stopJacSLSQP2 = timeit.default_timer()\n", "\n", "print stopJacSLSQP2 - startJacSLSQP2\n", "print costODEResultJacSLSQP2" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.312636137009\n", " status: 0\n", " success: True\n", " njev: 67\n", " nfev: 87\n", " fun: 1.9284071715143801e-06\n", " x: array([-2.6109115 , -2.57599424, -2.58878461, -2.57940213, -2.59059415,\n", " -2.59852687, -2.59236843, -2.61274745, -2.6048374 , -2.6027068 ,\n", " -0.06868534, -0.13921381, -0.41686679, -0.17524607, -0.47645344,\n", " -0.69273789, -0.53162242, -0.94586645, -0.81984537, -0.7802183 ,\n", " -3.23122383, -3.25291901, -3.2255435 , -3.24481987, -3.2221723 ,\n", " -3.20718217, -3.21886615, -3.17908483, -3.19486312, -3.19905495])\n", " message: 'Optimization terminated successfully.'\n", " jac: array([ -1.59890302e-05, -8.27722239e-06, -3.19991413e-06,\n", " -6.09584424e-06, -3.56792170e-06, -4.10967168e-06,\n", " -3.88109099e-06, -2.08827414e-06, -3.41089909e-06,\n", " -3.70672787e-06, 3.73531400e-04, 1.90783426e-04,\n", " -1.43706761e-05, 1.31844527e-04, -1.55772645e-05,\n", " 7.43164027e-06, -1.21567161e-05, 3.33575815e-05,\n", " 2.26259113e-05, 1.82858906e-05, 4.08845422e-05,\n", " 2.10158782e-05, 7.96822283e-06, 1.54458386e-05,\n", " 9.04685408e-06, 1.10836184e-05, 1.00058323e-05,\n", " 6.43663495e-06, 9.61254995e-06, 1.02814845e-05,\n", " 0.00000000e+00])\n", " nit: 67\n" ] } ], "source": [ "# %%snakeviz\n", "startJacSLSQP3 = timeit.default_timer()\n", "costODEResultJacSLSQP3 = minimize(costODEF3,initGuessJ3,method=\"SLSQP\",jac=costODEJacF3)\n", "stopJacSLSQP3 = timeit.default_timer()\n", "\n", "print stopJacSLSQP3 - startJacSLSQP3\n", "print costODEResultJacSLSQP3" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.67713308334\n", " status: 3\n", " success: False\n", " nfev: 300\n", " fun: 0.094505048071264891\n", " x: array([-11.81688438, -11.81688438, -11.81688438, -11.81688438,\n", " -11.81688438, -11.81688438, -11.81688438, -11.81688438,\n", " -11.81688438, -11.81688438, -0.28973009, -0.28973009,\n", " -0.28973009, -0.28973009, -0.28973009, -0.28973009,\n", " -0.28973009, -0.28973009, -0.28973009, -0.28973009,\n", " -4.98217919, -4.98217919, -4.98217919, -4.98217919,\n", " -4.98217919, -4.98217919, -4.98217919, -4.98217919,\n", " -4.98217919, -4.98217919])\n", " message: 'Max. number of function evaluations reach'\n", " jac: array([ 0.00017029, 0.00017029, 0.00017029, 0.00017029, 0.00017029,\n", " 0.00017029, 0.00017029, 0.00017029, 0.00017029, 0.00017029,\n", " -0.00833811, -0.00833811, -0.00833811, -0.00833811, -0.00833811,\n", " -0.00833811, -0.00833811, -0.00833811, -0.00833811, -0.00833811,\n", " -0.00192607, -0.00192607, -0.00192607, -0.00192607, -0.00192607,\n", " -0.00192607, -0.00192607, -0.00192607, -0.00192607, -0.00192607])\n", " nit: 45\n" ] } ], "source": [ "# %%snakeviz\n", "startJacTNC = timeit.default_timer()\n", "costODEResultJacTNC = minimize(costODEF,initGuessJ,method=\"TNC\",jac=costODEJacF)\n", "stopJacTNC = timeit.default_timer()\n", "\n", "print stopJacTNC - startJacTNC\n", "print costODEResultJacTNC" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 1. 0.65129459 0.39620997 0.21592623 0.09497576 0.02068675\n", " -0.01728562 -0.02735341 -0.01632698 0.0103076 0.04815641]\n", "[ 1.00000000e+00 6.77014395e-01 4.19924537e-01 2.25297061e-01\n", " 8.78205562e-02 8.04374164e-04 -4.32511778e-02 -5.20969821e-02\n", " -3.32555132e-02 6.34153378e-03 6.05867015e-02]\n", "[ 1. 0.65115314 0.39605582 0.21581625 0.09492528 0.02068895\n", " -0.0172476 -0.02729931 -0.01627537 0.01034129 0.04816063]\n", "[ 1. 0.65145693 0.39644341 0.21621956 0.09535513 0.02119023\n", " -0.01662211 -0.02650305 -0.01527453 0.01156584 0.049614 ]\n", "[ 1. 0.60653179 0.36822681 0.22338883 0.13506892 0.08135047\n", " 0.04901432 0.02985158 0.01859964 0.01178781 0.00707764]\n", "[ 1. 0.66014948 0.41026134 0.23247518 0.1120824 0.03700482\n", " -0.00264396 -0.01492713 -0.00639414 0.01765989 0.05297687]\n", "[ 1. 0.95094837 0.90416658 0.85959181 0.81715416 0.7767782\n", " 0.73838451 0.70189113 0.66721476 0.63427191 0.60297981 0.57325721\n", " 0.545025 0.51820668 0.49272871 0.46852076 0.44551587 0.42365048\n", " 0.40286447 0.38310107 0.36430683 0.3464314 0.3294275 0.31325068\n", " 0.29785919 0.28321379 0.26927762 0.25601598 0.24339622 0.23138756\n", " 0.21996095 0.20908894 0.19874555 0.18890615 0.17954737 0.170647\n", " 0.16218387 0.15413781 0.14648958 0.13922076 0.13231374 0.12575165\n", " 0.11951832 0.11359823 0.1079765 0.10263881 0.09757143 0.09276117\n", " 0.08819535 0.08386178 0.07974878 0.07584511 0.07214001 0.06862315\n", " 0.06528464 0.062115 0.05910517 0.05624652 0.05353076 0.05095005\n", " 0.04849688 0.04616413 0.04394506 0.04183326 0.03982267 0.03790759\n", " 0.03608264 0.03434275 0.03268317 0.03109947 0.02958749 0.02814338\n", " 0.02676356 0.02544471 0.02418378 0.02297796 0.02182468 0.02072161\n", " 0.01966663 0.01865783 0.01769351 0.01677216 0.01589244 0.0150532\n", " 0.01425344 0.01349233 0.01276918 0.01208341 0.01143462 0.0108225\n", " 0.01024684 0.00970757 0.00920469 0.0087383 0.00830858 0.00791579\n", " 0.00756025 0.00724236 0.00696257 0.00672135]\n" ] } ], "source": [ "print funNNList(np.array( costODEResultJacNCG.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacCG.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacLBFGSB.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacTNC.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacSLSQP.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacLBFGSB2.get('x') ),tlin,1)\n", "print funNNList(np.array( costODEResultJacSLSQP2.get('x') ),tlin2,1)" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n", "eYepD+cfVvSSaFPnl+Rr4T8WmjokIER3xtxp6piOMVo3YZ2pOwZ2NJuoA4AVCIYAAACAekqISjB7\n", "HjkcDm26Z1OtWR2LRi0ydamrVK/ufdWMLykv0dCV1fshFTuL1faZ6tlL55zn1PfFvqYuKS/R2NVj\n", "TV3mKtPDGx42tdPl1LMfP2vq8opyvbX/LVO7Kly1ZrRUuCtqLZNrblwVLuUU5Ji6pLxEH/zzA1MX\n", "lBZo8aeLTX363Gn96t1fmfpE0QkNWTHE1DmFOeq5pKepz5SeqRX8lFeU1wqK/H38dVX7q0zdvnV7\n", "PXHDE6bu0q6Ldk3bZerwNuF6ffzrpg7yC1JCVMK/9qQBoAkRDAEAAACNyMvhpf4R/U3dyqeV3rzz\n", "TVO39m2tjBkZ1bVPa5167JSp/X38tfbutab28fLRrPhZtR6jX+d+5rLL7VKRs8jUTpdTGw5uMHVJ\n", "eYmeeL862CgqK9INL91g6rOlZ9Xp2er9mArLCjVg+YBa42vOmDnnPKfZm2eburS8VIu2L6r1+G/u\n", "r36+hWWFenLLk6Y+U3JGt79xu6lPFZ/S1X++2tSnS05rxCsjavW//PPlpnY4HLU2a27t21qjuo8y\n", "dfvW7fXSuJdMHd4mXIdmVu/x0ymwk96d9K6pg1sH648j/mjqIL8gJcUmmdrfx7/W/6eXw0sBvgEC\n", "gJaK4+oBAAAAGG63WyXlJWrt21pS5Yydg3kH1aNDD0mVQU9aZppGXFkZ1pSUl+h/9/6vplw7RVLl\n", "jKcFHy0wJ2MVlBZodups/XXsX8345buWm5OynC6nPjrykZlVU+GuUN65PDZQBoAGUJe8hWAIAAAA\n", "AADAA9Ulb2EpGQAAAAAAgE0RDAEAAAAAANgUwRAAAAAAAIBNEQwBAAAAAADYFMEQAAAAAACATREM\n", "AQAAAAAA2BTBEAAAAAAAgE0RDAEAAAAAANgUwRAAAAAAAIBNEQwBAAAAAADYFMEQAAAAAACATREM\n", "AQAAAAAA2BTBEAAAAAAAgE0RDAEAAAAAANgUwRAAAAAAAIBNEQwBAAAAAADYFMEQAAAAAACATREM\n", "AQAAAAAA2BTBEAAAAAAAgE0RDAEAAAAAANgUwRAAAAAAAIBNEQwBAAAAAADYFMEQAAAAAACATREM\n", "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\n", "AAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.plot(tlinplt,funY(tlinplt),'g-')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacNCG.get('x') ),tlinplt,1),'c^')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacCG.get('x') ),tlinplt,1),'g:')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacSLSQP.get('x') ),tlinplt,1),'ro')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacLBFGSB.get('x') ),tlinplt,1),'bo')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacTNC.get('x') ),tlinplt,1),'m+')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacLBFGSB2.get('x') ),tlinplt,1),'b*')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacSLSQP2.get('x') ),tlinplt,1),'r*')\n", "# plt.yscale('log')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n", "X1peONGzU89LAAAAAElFTkSuQmCC\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.plot(tlinplt,funY(tlinplt),'g-')\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultLBFGSB.get('x') ),tlinplt,1),'b:')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacLBFGSB.get('x') ),tlinplt,1),'bo')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacLBFGSB2.get('x') ),tlinplt,1),'b*')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacLBFGSB3.get('x') ),tlinplt,1),'b^')\n", "plt.plot(tlinplt,funNNList(np.array( costODEFResultSLSQP.get('x') ),tlinplt,1),'r:')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacSLSQP.get('x') ),tlinplt,1),'ro')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacSLSQP2.get('x') ),tlinplt,1),'r*')\n", "plt.plot(tlinplt,funNNList(np.array( costODEResultJacSLSQP3.get('x') ),tlinplt,1),'r^')\n", "# plt.yscale('log')\n", "plt.show()\n", "\n", "# plt.figure(figsize=(20,12.36))\n", "# plt.plot(tlinplt2,funY(tlinplt2),'g-')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEFResultLBFGSB.get('x') ),tlinplt2,1),'b:')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacLBFGSB.get('x') ),tlinplt2,1),'bo')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacLBFGSB2.get('x') ),tlinplt2,1),'b*')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacLBFGSB3.get('x') ),tlinplt2,1),'b^')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEFResultSLSQP.get('x') ),tlinplt2,1),'r:')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacSLSQP.get('x') ),tlinplt2,1),'ro')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacSLSQP2.get('x') ),tlinplt2,1),'r*')\n", "# plt.plot(tlinplt2,funNNList(np.array( costODEResultJacSLSQP3.get('x') ),tlinplt2,1),'r^')\n", "# plt.yscale('log')\n", "# plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "-----\n", "## [Summary](#summary) | [toc](#toc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "To tests the time increase as dimension increases.\n", "\n", "1. Compare the numerical Jac and analytical Jac trends." ] }, { "cell_type": "code", "execution_count": 132, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 30. 117. 204. 291. 378. 465. 552. 639. 726. 813. 900.]\n" ] } ], "source": [ "tlin4 = np.linspace(0,5,11)\n", "\n", "costODEJacF4 = lambda x: costJac(np.split(x,3)[0],np.split(x,3)[1],np.split(x,3)[2],tlin4)\n", "costODEF4 = lambda x: costODE(x,tlin4,1,yOft)\n", "\n", "dim = np.linspace(10,300,11)*3\n", "print dim" ] }, { "cell_type": "code", "execution_count": 133, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.623954057693 1.08024826697e-05 True\n", "1.16640520096 1.35058753539e-06 True\n", "4.1815290451 1.58370900842e-07 True\n", "8.39232397079 4.94832263067e-07 True\n", "16.0506448746 6.67396785998e-06 True\n", "40.4828448296 4.17348311169e-06 True\n", "61.232724905 3.5066461297e-05 True\n", "106.302225113 4.61129888585e-05 True\n", "242.989250183 2.25098747509e-05 False\n", "362.700165987 0.000110150535298 False\n", "527.457528114 4.38909088929e-05 True\n", "[ 0.62395406 1.1664052 4.18152905 8.39232397 16.05064487\n", " 40.48284483 61.23272491 106.30222511 242.98925018 362.70016599\n", " 527.45752811]\n" ] } ], "source": [ "# Play with the \n", "\n", "# %%snakeviz\n", "resultdim = np.asarray([])\n", "vwuDimTest = np.linspace(10,300,11)*3\n", " \n", "for dimele in vwuDimTest:\n", " \n", " initGuessJ4 = np.zeros(dimele)\n", " \n", " startJacSLSQP4 = timeit.default_timer()\n", " costODEResultJacSLSQP4 = minimize(costODEF4,initGuessJ4,method=\"SLSQP\",jac=costODEJacF4)\n", " stopJacSLSQP4 = timeit.default_timer()\n", " \n", " resultdim = np.append(resultdim, stopJacSLSQP4 - startJacSLSQP4)\n", " \n", " print stopJacSLSQP4 - startJacSLSQP4, costODEResultJacSLSQP4.get(\"fun\"), costODEResultJacSLSQP4.get(\"success\")\n", " \n", "print resultdim\n" ] }, { "cell_type": "code", "execution_count": 146, "metadata": { "collapsed": false }, "outputs": [], "source": [ "np.savetxt('./assets/dataTest_ResultDim.txt', resultdim, delimiter = ',')" ] }, { "cell_type": "code", "execution_count": 148, "metadata": { "collapsed": false }, "outputs": [], "source": [ "resultdim = np.genfromtxt('./assets/dataTest_ResultDim.txt', delimiter = ',')" ] }, { "cell_type": "code", "execution_count": 156, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.ylabel('Time needed')\n", "plt.xlabel('Dimension of total uvw array')\n", "plt.plot(vwuDimTest,resultdim,\"b4-\",label=\"ANN-test-figMethod-TimeTest-InitGuess\")\n", "py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethod-TimeTest-InitGuess\")\n", "\n", "# tls.embed(\"https://plot.ly/~emptymalei/73/\")" ] }, { "cell_type": "code", "execution_count": 157, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 157, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.ylabel('Time needed')\n", "plt.xlabel('Dimension of total uvw array')\n", "plt.plot(vwuDimTest,resultdim,\"b4-\",label=\"ANN-test-figMethod-TimeTest-InitGuess\")\n", "plt.yscale('log')\n", "py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethod-TimeTest-InitGuess-log\")\n" ] }, { "cell_type": "code", "execution_count": 118, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 10., 20., 30., 40., 50., 60., 70., 80., 90.,\n", " 100., 110., 120.])" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linspace(10,120,12)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.401245117188 2.9421126197e-05 True\n", "0.720057964325 2.17825387004e-05 True\n", "1.42888689041 7.82736267945e-05 True\n", "1.29306983948 3.79683866651e-05 True\n", "2.04963111877 0.000174305034917 True\n", "2.81797814369 9.11683414227e-05 True\n", "3.6012969017 1.69136614353e-05 True\n", "4.36051607132 2.2770805775e-05 True\n", "5.8360748291 5.92628131519e-06 True\n", "5.01994013786 0.000154569412299 True\n", "5.30923199654 0.000284399212198 True\n", "9.28647613525 7.91642545381e-05 True\n", "[ 0.40124512 0.72005796 1.42888689 1.29306984 2.04963112 2.81797814\n", " 3.6012969 4.36051607 5.83607483 5.01994014 5.309232 9.28647614]\n" ] } ], "source": [ "# %%snakeviz\n", "resultdim2 = np.asarray([])\n", "\n", "initGuessJ5 = np.zeros(30)\n", "\n", "timeseg = np.linspace(10,120,12)\n", "\n", "for dim5 in timeseg:\n", " \n", " tlin5 = np.linspace(0,5,dim5)\n", " \n", " costODEJacF5 = lambda x: costJac(np.split(x,3)[0],np.split(x,3)[1],np.split(x,3)[2],tlin5)\n", " costODEF5 = lambda x: costODE(x,tlin5,1,yOft)\n", "\n", " startJacSLSQP5 = timeit.default_timer()\n", " costODEResultJacSLSQP5 = minimize(costODEF5,initGuessJ5,method=\"SLSQP\",jac=costODEJacF5)\n", " stopJacSLSQP5 = timeit.default_timer()\n", " \n", " resultdim2 = np.append(resultdim2, stopJacSLSQP5 - startJacSLSQP5)\n", " \n", " print stopJacSLSQP5 - startJacSLSQP5, costODEResultJacSLSQP5.get(\"fun\"), costODEResultJacSLSQP5.get(\"success\")\n", " \n", "print resultdim2\n" ] }, { "cell_type": "code", "execution_count": 162, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# np.savetxt('./assets/dataTest_ResultDim2.txt', resultdim2, delimiter = ',')" ] }, { "cell_type": "code", "execution_count": 163, "metadata": { "collapsed": false }, "outputs": [], "source": [ "resultdim2 = np.genfromtxt('./assets/dataTest_ResultDim2.txt', delimiter = ',')" ] }, { "cell_type": "code", "execution_count": 164, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 164, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.ylabel('Time needed')\n", "plt.xlabel('Dimension of time array')\n", "plt.plot(timeseg,resultdim2,\"b4-\",label=\"ANN-test-figMethod-TimeTest-TimeSeg\")\n", "\n", "py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethod-TimeTest-TimeSeg\")\n", "\n", "# tls.embed(\"https://plot.ly/~emptymalei/\")" ] }, { "cell_type": "code", "execution_count": 165, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.figure(figsize=(20,12.36))\n", "plt.ylabel('Time needed')\n", "plt.xlabel('Dimension of time array')\n", "plt.plot(timeseg,resultdim2,\"b4-\",label=\"ANN-test-figMethod-TimeTest-TimeSeg\")\n", "plt.yscale('log')\n", "\n", "py.iplot_mpl(plt.gcf(),filename=\"ANN-test-figMethod-TimeTest-TimeSeg-log\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**To summarize, **\n", "\n", "1. CG is extremely fast, however, it's not so accurate.\n", "2. SLSQP is also very fast, and it is very accurate\n", "3. L-BFGS-B gives us the best result and it's not slow.\n", "\n", "| Method | Time | Function | nfev/njev | nit |\n", "|:--------:|:----------------------------------:|:-------------------------------------------------:|:---------------------------------------:|:-----------------:|\n", "| CG | 2.95948886871(Jac: 0.341506004333) | 0.1920503701634634(Jac: 0.19205041475267956) | nfev: 492,njev: 15 (nfev: 27,njev: 15) | |\n", "| SLSQP | 10.7389249802(Jac:0.955240011215) | 2.5774431624374406e-05(Jac:1.080248266970841e-05) | nfev: 1649,njev: 51 (nfev: 66,njev: 51) | nit: 51(nit: 51) |\n", "| L-BFGS-B | 18.576128006(Jac:8.60380482674) | 1.6905137501642895e-07(Jac:0.093712249132977959) | nfev: 119(nfev: 466) | nit: 93(nit: 358) |\n", "| N-M | 30.9348311424 | 0.00031884090490975285 | nfev: 6001 | |\n", "| NCG | (Jac:37.292183876) | (0.09397294690879396) | (njev: 3149,nfev: 526) | |\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Smaller vwu dimensions, less time? True for SLSQP Jac. \n", "* Seems that by solving an equation, we are solving a equation **in a particular region** with a specific initial condition. **Be careful with extrapolation.**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here in this section I def some function used to plot the data.\n", "\n", "The plot function outputs a plot with inputs of a list of ts and ys." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "startTemp = timeit.default_timer()\n", "testArraySplit = np.zeros(30)\n", "np.split(testArraySplit,3)[0]\n", "np.split(testArraySplit,3)[1]\n", "np.split(testArraySplit,3)[2]\n", "stopTemp = timeit.default_timer()\n", "print stopTemp - startTemp" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print tlin2\n", "print tlin" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x1 = np.zeros(30)\n", "v1, w1, u1 = np.split(x1,3)[:3]\n", "print v1, w1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }