{ "cells": [ { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "# Minimization problem, application to a uniformly-loaded simple beam" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "In this example, we will look at a minimization problem linked to the deflection of a uniformly-loaded simple beam. The beam is made of a cylinder of length $L$ with an inner diameter $d$ and thickness $t$.\n", "\n", "
\n", "\n", "\n", "The deflection of this beam is expressed as:\n", "\n", "$$ u = \\frac{5qL^4}{284EI} $$\n", "\n", "where $q$ is the load applied to the beam, E its Young's modulus and I is the area moment of inertia.\n", "\n", "In this minimization problem, we want to minimize the deflection $u$ with the lighest beam as possible using an unconstrained and unbounded optimization.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:51.485Z", "iopub.status.busy": "2021-04-05T16:49:51.478Z", "iopub.status.idle": "2021-04-05T16:49:51.885Z", "shell.execute_reply": "2021-04-05T16:49:51.890Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "# We import here the python modules we need for this example\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy import optimize" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We define three python functions to compute:\n", "\n", "1. the area moment of inertia $I$, as function of the diameter $d$ and thickness $t$ of the cylinder (function I(t,d))\n", "\n", "2. the mid-point deflection $u$ as function of the applied load $q$, the length of the beam $L$, its Young's modulus $E$ and the area moment of inertia $I$ (function mid_point(q,L,E,I)).\n", "\n", "3. the mass of the beam given its diameter $d$, thickness $t$ and density $\\rho$ (function mass(rho,L,d,t))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:54.126Z", "iopub.status.busy": "2021-04-05T16:49:54.121Z", "iopub.status.idle": "2021-04-05T16:49:54.135Z", "shell.execute_reply": "2021-04-05T16:49:54.139Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def I(t,d):\n", " return np.pi*((d+2.0*t)**4.0-d**4.0)/64" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:55.098Z", "iopub.status.busy": "2021-04-05T16:49:55.093Z", "iopub.status.idle": "2021-04-05T16:49:55.108Z", "shell.execute_reply": "2021-04-05T16:49:55.112Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def mid_point(q,L,E,I):\n", " return (5*q*L**4.0)/(384.0*E*I)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:56.085Z", "iopub.status.busy": "2021-04-05T16:49:56.078Z", "iopub.status.idle": "2021-04-05T16:49:56.095Z", "shell.execute_reply": "2021-04-05T16:49:56.101Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def mass(rho,L,d,t):\n", " V_tot = L*rho*np.pi*(d/2.0+t)**2.0\n", " V_in = L*rho*np.pi*(d/2.0)**2.0\n", " return (V_tot-V_in)*1000.0" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We now give values to the parameters of our problem." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:57.822Z", "iopub.status.busy": "2021-04-05T16:49:57.815Z", "iopub.status.idle": "2021-04-05T16:49:57.830Z", "shell.execute_reply": "2021-04-05T16:49:57.835Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "q = 100.0 #N/mm\n", "L = 1000.0 #mm\n", "E = 70000.0 #MPa\n", "d = 50.0 #mm\n", "rho = 2.7e-9" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We can now plot the deflection of the beam $u$ (red curve) and the mass of the beam (blue curve). While the mass of the beam evolves with the square of the thickness $t$, in the range of interest it results in an almost linear response. The deflection of the beam $u$ is linked to the thickness $t$ through the area moment of inertia $I$ and shows a non-linear response." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:49:59.972Z", "iopub.status.busy": "2021-04-05T16:49:59.966Z", "iopub.status.idle": "2021-04-05T16:50:00.144Z", "shell.execute_reply": "2021-04-05T16:50:00.158Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "data": { "image/png": "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gUnAPvwQSpe2GpbkNm9vuOEG0mvXZsV119G2dWt8//wTfvnFbEuWmL8sa9ea7b33zPtKlTJFaBs1MlvDhqbumYiIXDUlY/mc02nuRPXrB8eOmTtSb71lqumro0My9Zz95z/m2N9/mzU0M7Y1a0zNs++/N1uG664zSVmDBmaLiDB10kRE5IooGcvHDh48W3oKoEkTk5hde63duMTDlS8P995rNoDTp00v2YoVZ7etW015jS1bzOrxYLL76683SdkNN5jHiAgzm1NERC5JyVg+NXu2GZifkGAmyo0caeqFenvbjkzynMKFz44fy3DokCmTce7299/wxx9mmzr17LkVKkC9emYcWsZjlSqmV05ERJSM5TfHjsHAgWZgPkB4uKkh9s9a7CI5o2RJiIoyW4aEBNODtmbN2cft202pjd27Ydass+cWKWJWDqhd2xS6q1XLbBrEKCIFkJKxfGTJEujeHXbsMHeMBg6El14yHRsibhcaaorLtm599lhioqmlsm7d2W3TJjh58uwtz3OVKgU1a5rELDwcatQwj6VKaZCjiORbSsbygeRks/LN6NFmwH6lSjB5Mtx2m+3IpMALCjKrANx889ljqalmzNn69SZR++03Uwtt+3YzUWDBArOdq2RJk5hVr262GjXM+LRrrtG9dxHJ85SM5XG//mrWlcwo4PrQQ2bJwsBAq2GJXJqPz9mkKmOSAJjest9/hw0bTO9ZxrZjhxmjtmSJ2c5VqJBZGur666FaNbNdd515LF1avWkikicoGcuj0tLg9ddh2DBISTF3cT74AO66y3ZkItlUpAjUr2+2c508CZs3n50c8McfJmn780/TLZyRtJ0vIMAkZlWrmu3aa88+limjCQQi4jGUjOVB27aZAq6//GL277zTJGIa+yz5UpEiZ8tknCs9HXbtMonan3+axy1bzPOdO81sljVrzHa+woWhcmWTmFWpYrbKlc9uqpcmIrlIyVge4nTC++/DU0/BiRPmF/+xY01iprsxUuB4eZkxY9dck3lWJ5jaaNu3m+Rs2zYzRi1j27XLvP7772a7mJCQs9fO2CpVOrtpHICI5CAlY3nEnj2mav7cuWb/ttvMIP1KlWxGJeKhChc2szDDwy98LSXFlNrYts0kbNu2mXFpGdvhw6Zi8sGDpn7axRQvbv7xVaxotgoVzj5WqABly5oCfyIiWaBkzMM5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daxTp074+/vz+eefW4ws/3M4HHz99deuNSCdTidly5blv//9L0899RQAiYmJhIaGMnnyZDp37mwxWnvUMyZWJSYmAhAcHGw5koIjOjqadu3a0aJFC9uhFCjfffcdDRo04N5776V06dJERETw4Ycf2g6rQGjSpAmxsbH8+eefAPz6668sWbKENm3aWI6s4NmxYwfx8fGZfv4EBQXRqFEj4uLiLEZml5ZDEmvS09Pp378/TZs2pVatWrbDKRCmTZvGmjVrWLlype1QCpzt27czfvx4Bg4cyLPPPsvKlSt54oknKFSoED169LAdXr72zDPPkJSURPXq1fH29iYtLY2XX36ZLl262A6twImPjwe4YA3I0NBQ12sFkZIxsSY6OpoNGzawZMkS26EUCLt37+bJJ58kJiaGwoUL2w6nwElPT6dBgwa88sorAERERLBhwwYmTJigZMzNvvzyS7744gumTJlCzZo1WbduHf3796ds2bJqe/EIuk0pVvTt25fZs2fz888/U758edvhFAirV69m//793HDDDfj4+ODj48PChQsZO3YsPj4+pKWl2Q4xXytTpgzh4eGZjtWoUYNdu3ZZiqjgGDRoEM888wydO3emdu3adOvWjQEDBjBq1CjboRU4YWFhACQkJGQ6npCQ4HqtIFIyJrnK6XTSt29fvv76a3766ScqV65sO6QCo3nz5qxfv55169a5tgYNGtClSxfWrVuHt7e37RDztaZNm15QxuXPP/+kUqVKliIqOE6ePImXV+b/7ry9vUlPT7cUUcFVuXJlwsLCiI2NdR1LSkpi+fLlREZGWozMLt2mlFwVHR3NlClT+PbbbwkICHCNEQgKCsLf399ydPlbQEDABWPzihYtSsmSJTVmLxcMGDCAJk2a8Morr3DfffexYsUKPvjgAz744APboeV7HTp04OWXX6ZixYrUrFmTtWvX8uabb/Lwww/bDi1fOn78OFu3bnXt79ixg3Xr1hEcHEzFihXp378/L730Etdddx2VK1fm+eefp2zZsq4ZlwWSUyQXARfdJk2aZDu0AunWW291Pvnkk7bDKDBmzZrlrFWrltPPz89ZvXp15wcffGA7pAIhKSnJ+eSTTzorVqzoLFy4sLNKlSrO5557zpmcnGw7tHzp559/vujP+R49ejidTqczPT3d+fzzzztDQ0Odfn5+zubNmzs3b95sN2jLVGdMRERExCKNGRMRERGxSMmYiIiIiEVKxkREREQsUjImIiIiYpGSMRERERGLlIyJiIiIWKRkTERERMQiJWMiIiIiFikZE5EsW7BgAQ6Hg6NHj17ynOHDh1OvXr0sX9PhcPDNN99cdWy5KTY2lho1alhZXH3ChAl06NAh1z9XRNxHyZiIACYputw2fPjwLF3nqaeeyrQIcH709NNPM3ToUCuLqz/88MOsWbOGxYsX5/pni4h7KBkTEQD27dvn2t566y0CAwMzHXvqqaeydJ1ixYpRsmRJN0drz5IlS9i2bRudOnWy8vmFChXiwQcfZOzYsVY+X0RynpIxEQEgLCzMtQUFBeFwODIdK1asmOvc1atX06BBA4oUKUKTJk3YvHmz67WL3ab8+OOPqVmzJn5+fpQpU4a+ffteMo4XXniBMmXK8NtvvwFwzTXX8Morr/Dwww8TEBBAxYoV+eCDDzK9Z/fu3dx3330UL16c4OBg7rzzTv766y/X6wsWLODGG2+kaNGiFC9enKZNm7Jz504Afv31V26//XYCAgIIDAykfv36rFq16pLxTZs2jZYtW1K4cOELvvPHH39MxYoVKVasGI8//jhpaWmMHj2asLAwSpcuzcsvv5zpWg6Hg/fff5/27dtTpEgRatSoQVxcHFu3buW2226jaNGiNGnShG3btmV6X4cOHfjuu+84derUJeMUkbxDyZiIXLHnnnuON954g1WrVuHj48PDDz98yXPHjx9PdHQ0jz76KOvXr+e7776jatWqF5zndDrp168fn376KYsXL6ZOnTqu19544w0aNGjA2rVrefzxx+nTp48rAUxJSSEqKoqAgAAWL17ML7/8QrFixWjdujVnzpwhNTWVu+66i1tvvZXffvuNuLg4Hn30URwOBwBdunShfPnyrFy5ktWrV/PMM8/g6+t7ye+zePFiGjRocMHxbdu28eOPPzJnzhymTp3KxIkTadeuHX///TcLFy7ktddeY+jQoSxfvjzT+1588UW6d+/OunXrqF69Og8++CCPPfYYQ4YMYdWqVTidzguS1wYNGpCamnrBtUQkj3KKiJxn0qRJzqCgoAuO//zzz07AOX/+fNex77//3gk4T5065XQ6nc4XXnjBWbduXdfrZcuWdT733HOX/CzAOWPGDOeDDz7orFGjhvPvv//O9HqlSpWcXbt2de2np6c7S5cu7Rw/frzT6XQ6P/vsM+f111/vTE9Pd52TnJzs9Pf3d86dO9d56NAhJ+BcsGDBRT8/ICDAOXny5Es3xnmCgoKcn376aaZjL7zwgrNIkSLOpKQk17GoqCjnNddc40xLS3Mdu/76652jRo3K9N2HDh3q2o+Li3MCzokTJ7qOTZ061Vm4cOEL4ihRosQVxS0inks9YyJyxc7ttSpTpgwA+/fvv+C8/fv3s3fvXpo3b37Z6w0YMIDly5ezaNEiypUrd9nPy7h9mvF5v/76K1u3biUgIIBixYpRrFgxgoODOX36NNu2bSM4OJiHHnqIqKgoOnTowNtvv82+fftc1xs4cCC9e/emRYsWvPrqqxfcEjzfqVOnMt2izHDNNdcQEBDg2g8NDSU8PBwvL69Mx85vp3O/W2hoKAC1a9fOdOz06dMkJSVlep+/vz8nT568bKwikjcoGRORK3bubbyM233p6ekXnOfv75+l67Vs2ZI9e/Ywd+7cf/28jM/M+Lzjx49Tv3591q1bl2n7888/efDBBwGYNGkScXFxNGnShOnTp1OtWjWWLVsGmPFeGzdupF27dvz000+Eh4fz9ddfXzLWkJAQjhw5kqUYLxf3xd6X0ZZZad/Dhw9TqlSpS8YpInmHkjERcZuAgACuueaafy11cccddzBlyhR69+7NtGnTrugzbrjhBrZs2ULp0qWpWrVqpi0oKMh1XkREBEOGDGHp0qXUqlWLKVOmuF6rVq0aAwYMYN68eXTs2JFJkyZd8vMiIiLYtGnTFcWY07Zt28bp06eJiIiwGoeI5AwlYyLiVsOHD+eNN95g7NixbNmyhTVr1vDOO+9ccN7dd9/NZ599Rs+ePZk5c2aWr9+lSxdCQkK48847Wbx4MTt27GDBggU88cQT/P333+zYsYMhQ4YQFxfHzp07mTdvHlu2bKFGjRqcOnWKvn37smDBAnbu3Mkvv/zCypUrqVGjxiU/LyoqiiVLlmSrLXLK4sWLqVKlCtdee63VOEQkZ/jYDkBE8rcePXpw+vRpxowZw1NPPUVISAj33HPPRc+95557SE9Pp1u3bnh5edGxY8d/vX6RIkVYtGgRgwcPpmPHjhw7doxy5crRvHlzAgMDOXXqFH/88QeffPIJhw4dokyZMkRHR/PYY4+RmprKoUOH6N69OwkJCYSEhNCxY0dGjBhxyc/r0qULTz/9NJs3b+b666/PdrtcjalTp/LII49Y+WwRyXkOp9PptB2EiEheMmjQIJKSknj//fdz/bM3btxIs2bN+PPPPzPdhhWRvEu3KUVErtBzzz1HpUqVLjppwd327dvHp59+qkRMJB9Rz5iIiIiIReoZExEREbFIyZiIiIiIRUrGRERERCxSMiYiIiJikZIxEREREYuUjImIiIhYpGRMRERExCIlYyIiIiIWKRkTERERsej/ASyPZ/dcbnQxAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = np.linspace(0.5,10.0,100) # We span a range of thicknesses\n", "#\n", "fig, ax = plt.subplots(constrained_layout=True,figsize=(6,4.5))\n", "ax2=ax.twinx()\n", "ax.plot(t,mid_point(q,L,E,I(t,d)),'r',label='Deflection')\n", "ax.set_ylabel('u (mm)')\n", "ax2.plot(t,mass(rho,L,d,t),'b',label='Mass')\n", "ax2.set_ylabel('Mass (kg)')\n", "ax.set_xlabel('Thickness (mm)')\n", "ax.grid()" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "Next, we define a cost function $\\Phi$ for the minimization problem. We will start with the simplest one:\n", "$$\\Phi = u+M$$\n", "M being the mass of the beam, minimizing this function $\\Phi$ should give us back, _on principle_, the lowest deflection and mass.\n", "\n", "The minimization will be carried out using the Nelder-Mead algorithm in the first part of this notebook." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:02.440Z", "iopub.status.busy": "2021-04-05T16:50:02.435Z", "iopub.status.idle": "2021-04-05T16:50:02.449Z", "shell.execute_reply": "2021-04-05T16:50:02.454Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def cost_function(x,data):\n", " [q,L,E,d,rho] = data\n", " u = mid_point(q,L,E,I(x,d))\n", " m = mass(rho,L,d,x)\n", " return u+m" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T18:30:43.243Z", "iopub.status.busy": "2021-04-05T18:30:43.235Z", "iopub.status.idle": "2021-04-05T18:30:43.255Z", "shell.execute_reply": "2021-04-05T18:30:43.267Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "# We define here some variables we need for the minimization problem\n", "options = {'disp': True, 'maxiter':1000} # display the results\n", "constraints = [] # We do not have constraints thus an empty list\n", "bounds = [] # We do not have bounds thus an empty list\n", "data = [q,L,E,d,rho]\n", "arguments = (data, ) # This list of parameters is needed by our different functions" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T18:30:44.907Z", "iopub.status.busy": "2021-04-05T18:30:44.899Z", "iopub.status.idle": "2021-04-05T18:30:44.935Z", "shell.execute_reply": "2021-04-05T18:30:44.947Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 18.170286\n", " Iterations: 23\n", " Function evaluations: 46\n", "The optimum thickness of the beam is 18.73593750000003\n", "The resulting deflection is 7.2465060773519765 mm\n", "The resulting mass of the beam is 10.923779528176095 kg\n" ] } ], "source": [ "#We choose a thickness of 3 mm as a starting point\n", "x0 = 3.0\n", "res = optimize.minimize(cost_function, x0, method='Nelder-Mead',options=options,args=arguments)\n", "x_opt = res.x[0]\n", "print('The optimum thickness of the beam is {}'.format(x_opt))\n", "print('The resulting deflection is {} mm'.format(mid_point(q,L,E,I(x_opt,d))))\n", "print('The resulting mass of the beam is {} kg'.format(mass(rho,L,d,x_opt)))" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "The Nelder-Mead algorithm gives us a thickness of 18.73 mm as an optimum. While this thickness definitely gives a small deflection of the beam, the resulting mass is rather large (i.e. more than 10 kg).\n", "The reason for this result is linked to the cost function definition which simply translate the sum of the deflection and the mass. For small values of the thickness, the mass is one or two orders of magnitude smaller than the deflection and thus gives a small contribution to the cost function.\n" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "To remedy this we can try to define a new cost function where the deflection and the mass are normalized. We choose a deflection of 700 mm and a mass of 5 kg to normalize our quantities." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:11.111Z", "iopub.status.busy": "2021-04-05T16:50:11.105Z", "iopub.status.idle": "2021-04-05T16:50:11.120Z", "shell.execute_reply": "2021-04-05T16:50:11.125Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def cost_function_normalized(x,data):\n", " [q,L,E,d,rho] = data\n", " max_u = 700.0\n", " max_M = 5.0\n", " u = mid_point(q,L,E,I(x,d))\n", " m = mass(rho,L,d,x)\n", " return u/max_u+m/max_M" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:13.164Z", "iopub.status.busy": "2021-04-05T16:50:13.158Z", "iopub.status.idle": "2021-04-05T16:50:13.178Z", "shell.execute_reply": "2021-04-05T16:50:13.187Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.408901\n", " Iterations: 15\n", " Function evaluations: 30\n", "The optimum thickness of the beam is 2.4004394531249984\n", "The resulting deflection is 136.8594823174212 mm\n", "The resulting mass of the beam is 1.0669383413674534 kg\n" ] } ], "source": [ "#We choose a thickness of 3 mm as a starting point\n", "x0 = 3.0\n", "res = optimize.minimize(cost_function_normalized, x0, method='Nelder-Mead',options=options,args=arguments)\n", "x_opt_normalized = res.x[0]\n", "print('The optimum thickness of the beam is {}'.format(x_opt_normalized))\n", "print('The resulting deflection is {} mm'.format(mid_point(q,L,E,I(x_opt_normalized,d))))\n", "print('The resulting mass of the beam is {} kg'.format(mass(rho,L,d,x_opt_normalized)))" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We now get a thickness of around 2.4 mm with a mass of about 1.06 kg. To understand even further this result we can plot the cost function we just used as function of the thickness of the beam. The following graphs shows the cost functions and their associated optimums. When normalizing the deflection and the mass we obtain a cost function with a clear minimum compared to the original sum. It is worth mentionning that the cost function does not reach a zero value in this particular problem." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:16.822Z", "iopub.status.busy": "2021-04-05T16:50:16.817Z", "iopub.status.idle": "2021-04-05T16:50:17.186Z", "shell.execute_reply": "2021-04-05T16:50:17.191Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "data": { "image/png": "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9fnzzz9ZsGABf/31FzNnzmT9+vUEBgZy8eLFXPVfsGBBu9pFQUREXMNnn33GBx98QGJiotGhiI0dPXqUvn378sILLxgdioiI2JN8vp/WvbTtqShlpCVLoEIFaN4cnnnmxn8rVLhxPA8NHToULy8vwsPDefzxxylXrhxt2rRh3bp1nDx5krfeeguAChUq8N5779GzZ08KFCjAvffey7Rp06z93H///QB06dIFk8lEhQoVgMxTDvv3789TTz3FBx98QKlSpShSpAjjx48nJSWFV199lWLFinHfffcxe/Zs6zUbN27EZDJx+fJl67Ho6GhMJhP//vsvAHPmzKFIkSKsXLmSKlWq4OfnR9euXUlISOCbb76hQoUKFC1alJdeeonUfCj2iYiIcaZPn87LL7/M7t27WbRokdHhiI1du3aNb7/9lh9//NHoUERExF4YcD9tq3vp9HvnTp06GXYvXaxYMdasWUPVqlUNvZdWUcooS5ZA165w4kTG4ydP3jieR3+QLl68yNq1a3nxxRfx9fXNcC4gIIBevXrx/fffY7FYAPjf//5H7dq12bt3L2+88QYjRowgIiICgB07dgAQFhbG6dOn2bVr122/7y+//MKpU6fYvHkzkydP5p133qF9+/YULVqUHTt28MILLzB48GBO/Pf9uIuEhAQ+/fRTFi5cyJo1a9i4cSOdOnVi9erVrF69mm+//ZYvvviCH374IVv9ioiI4/jqq68YOnQocGNw16dPH4MjElsrVKgQAFevXjU4EhERsQsG3E/b8l46/d559uzZht5Lf/nll8yfP9/Qe2kVpYyQmgojRsD//2XNIP3YyJF5MvXwzz//xGKxULVq1Vuer1q1KpcuXeLcuXMANGnShDfeeIMHH3yQ4cOH07VrV6ZMmQJAiRIlAChSpAgBAQHW17dSrFgxPv30U6pUqcLAgQOpUqUKCQkJvPnmmzzwwAOEhITg5eXFli1bspWP2WxmxowZ1K1bl8cee4yuXbuyZcsWwsLCqFatGu3bt6d58+Zs2LAhW/2KiIhjmDNnDoMHDwZgxIgR9O3bV1tMO6GCBQsCkJSUhNlsNjgaERExlEH30854L/3xxx8bfi+topQRfv01c0X3ZhYLHD9+o10esdzqD/AtBAYGZnp9+PDhbH+/6tWr4+b2f79upUqVombNmtbX7u7uFC9enLNnz2arXz8/PypVqpSh3woVKlgHr+nHstuviIjYv++++46BAwdisVgYPnw4kyZNUkHKSaXPlAKIj483MBIRETGcwffTznQvXbFixQz9GnEvraKUEU6ftm27bKhcuTImk+m2fxgOHz5M0aJF71ipzQlPT88Mr00m0y2Ppe+alP6H7uY/8Lf6ZDS7/YqIiHP4/vvv6devHxaLhRdeeIGpU6eqIOXEvLy88PLyAvQIn4iIyzPoflr30nlDRSkjlC5t23bZULx4cVq1asX06dO5fv16hnOxsbHMmzePHj16WAf227dvz9Bm+/btGaYrenp65snCZ+l/kE/f9BdJdHS0zb+PiIg4nh9++IFevXqRlpbGoEGDmDZtmgpSLkDrSomICGDY/bTupfOGilJGePRRuO8+uN0A2mSCsmVvtMsDn3/+OUlJSQQHB7N582aOHz/OmjVraNWqFffeey/vv/++te3WrVuZNGkSf/zxB9OmTWPx4sWMGDHCer5cuXL88ssvxMbGcunSJZvFWLlyZcqWLcu7777Ln3/+yapVq/j4449t1r+IiDimpUuX0rNnT1JTU+nXrx9ffvllhint4rzSHyfQ43siIi7OwPtpW95LV6hQgfXr17v8vbRGcUZwd4epU2/8/3//IKW//uSTG+3ywAMPPMDu3bu5//776d69O5UqVeL555+nefPmREZGUqxYMWvb9O2169aty4QJE5g8eTLBwcHW8++99x7r1q2jbNmy1K1b12Yxenp6smDBAn7//Xdq1arFxIkTmTBhgs36FxERx/PTTz/RvXt3UlJS6N27N2FhYSpIuRDNlBIREcDQ+2lb3kt//PHHREREuPy9tIfRAbiszp3hhx9u7Bpw8yJt99134w9Q5855+u3Lly/PnDlz7trO39+fRYsW3fZ8mzZt6NGjR4abgnfffZd3333X+vpW32fjxo2Zjv37778ZXjdp0oR9+/ZlOHbzc7H9+/enf//+Gc7/93vf7vuLiIhjWbVqFV27diUlJYWePXsyZ84c3PPowxuxTypKiYiIlYH307a6l+7QoQMdOnTIcCw/76X79u1LXFzcbb/37b6/rakoZaTOnaFjxxu7Apw+feOZ10cfzbMZUiIiIo5o7dq1dO7cGbPZTLdu3Zg7d64KUi5Ij++JiEgGup92CipKGc3dHZo1MzoKERERuxQeHk7Hjh1JTk6mc+fOzJs3Dw8PDV9ckWZKiYhIJrqfdnga1clt/XcKoIiISH5at24dHTt2JCkpiY4dO7JgwYJMWxWL61BRSkREHIXupbNOq4OKiIiI3fnll1948sknSUxMpEOHDixatAgvLy+jw7JLFSpUwGQyZfoaOnQoAImJiQwdOpTixYtTsGBBunTpwpkzZzL0ERMTQ7t27fDz86NkyZK8+uqrpKSkGJHObakoJSIi4nxUlBIRERG7smnTJtq3b8/169dp164dixcvVkHqDnbt2sXp06etXxEREQB069YNgFGjRrFixQoWL17Mpk2bOHXqFJ1vWgA2NTWVdu3akZyczLZt2/jmm2+YM2cOY8eONSSf29GaUiIiIs5HRSkRERGxG7/++ivt2rXj+vXrtG7dmh9++AFvb2+jw7JrJUqUICAgwPq1cuVKKlWqxOOPP86VK1cICwtj8uTJPPHEE9SrV4/Zs2ezbds2tm/fDtxYt+vQoUN899131KlThzZt2vDee+8xbdo0kpOTDc7u/2imlIiIiPPRmlIiIiJiF7Zs2UKbNm24du0aQUFBLF26FB8fH6PDcijJycl89913jB49GpPJRFRUFGazmZYtW1rbPPTQQ5QrV47IyEgaNWpEZGQkNWvWpFSpUtY2wcHBDBkyhIMHD1K3bt1bfq+kpCSSkpKsr9O3lTabzZjN5rvGmt4mK20B/Pz8ALhy5UqWr7En2c3X0blavuB6OStf55dXOZvNZiwWC2lpaaSlpdm079ywWCzW/9pTXHnFFvmmpaVhsVgwm82ZdkbO6u+NilIiIiJiuK1bt1oLUq1atWLZsmUqSOXAsmXLuHz5Mv379wcgNjYWLy8vihQpkqFdqVKliI2Ntba5uSCVfj793O2EhoYybty4TMfDw8OtBaSsSH/c8G7++ecfAI4ePcrq1auz3L+9yWq+zsLV8gXXy1n5Oj9b5+zh4UFAQADx8fF2NSM3navNyM1NvsnJyVy/fp3NmzdnWosyISEhS32oKCUiIiKG2rZtG61btyY+Pp6WLVuyfPlyfH19jQ7LIYWFhdGmTRvKlCmT598rJCSE0aNHW1/HxcVRtmxZgoKC8Pf3v+v1ZrOZiIgIWrVqlaVdFa9fv85nn32Gr68vbdu2zVXsRshuvo7O1fIF18tZ+Tq/vMo5MTGR48ePU7BgQbv6AMpisXD16lUKFSqEyWQyOpw8Z4t8ExMT8fX15bHHHsv0s0yfQX03dlGUCg0NZcmSJfz+++/4+vrSuHFjJk6cSJUqVW57zVdffcXcuXM5cOAAAPXq1eODDz6gQYMG1jb9+/fnm2++yXBdcHAwa9asyZtEREREJFsiIyOtBakWLVqoIJULx44dY926dSxZssR6LCAggOTkZC5fvpxhttSZM2cICAiwttm5c2eGvtJ350tvcyve3t63XO/L09MzWzcvWW1ftGhR4MZC5458Q5jd98fRuVq+4Ho5K1/nZ+ucU1NTMZlMuLm54eZmP8tcpz/Clh6bs7NFvm5ubphMplv+jmT1d8Yu3ulNmzYxdOhQtm/fTkREBGazmaCgIK5du3bbazZu3EjPnj3ZsGEDkZGR1k/mTp48maFd69atM+xIs2DBgrxOx6FER0djMpn4999/jQ5FRERczPbt2wkODubq1as0b96cn376KVuPfUlGs2fPpmTJkrRr1856rF69enh6erJ+/XrrsSNHjhATE0NgYCAAgYGB7N+/n7Nnz1rbRERE4O/vT7Vq1fIvgbtIX+hcu++JiIi90P107tnFTKn/zlyaM2cOJUuWJCoqiscee+yW18ybNy/D66+//poff/yR9evX07dvX+txb2/vO37K56oOHTrExIkT2bx5MwCtWrWiefPmvPnmm1SoUMHY4ERExOlt376doKAgrl69SrNmzVixYoUKUrmQlpbG7Nmz6devHx4e/ze8K1y4MIMGDWL06NEUK1YMf39/hg8fTmBgII0aNQIgKCiIatWq0adPHyZNmkRsbCxjxoxh6NChdrXzYcGCBQHXW+tDRETsj+6nbccuilL/deXKFQCKFSuW5WsSEhIwm82Zrtm4cSMlS5akaNGiPPHEE0yYMIHixYvfso/s7CLz3x0DHGml/iVLltCzZ0/at2/PqFGjGDFiBK+88gqLFy+mevXqrFmzhiZNmty1H0fK+U7utGPAzVxtxw1XyxdcL2fl6/zsNecdO3bQtm1brl69yuOPP87SpUvx8vLKdZx5na+9vY83W7duHTExMQwcODDTuSlTpuDm5kaXLl1ISkoiODiY6dOnW8+7u7uzcuVKhgwZQmBgIAUKFKBfv36MHz8+P1O4q/SZUipKiYiIkZYsWUKPHj3o0KEDo0eP5qWXXuK1115j0aJFVK9enfDw8CzdT8sNdleUSktLY+TIkTRp0oQaNWpk+brXX3+dMmXKZNjyuHXr1nTu3JmKFSvy999/8+abb9KmTRsiIyNvWXzIzi4yt9oxwGKx3HGXmrzi5+eX5YXJkpOTeeGFF3jiiSeYPXs2+/fvB25M3e/SpQutWrViyJAhbNmyJcvf39EHh3faMeBWXG3HDVfLF1wvZ+Xr/Owp5yNHjjBu3DgSEhKoUaMGQ4YMYdOmTTb9HnmVb1Z3kTFCUFCQ9cOi//Lx8WHatGlMmzbttteXL1/e7ne0Sy9KXb9+nZSUlAwzwkRExLFZLBbD/p3N7v304MGDCQ4OZsmSJURHRwM3ZkoNGDCARo0a8eKLL/Lbb7/lYcTOxe7+NR86dCgHDhzIVlHkww8/ZOHChWzcuDHDiu9PP/209f9r1qxJrVq1qFSpEhs3bqRFixaZ+snOLjL/3TEgvSB13333ZSddm4iLi6NAgQJZahsVFcWFCxfo378//v7+1usKFixIsWLF6NGjByEhIaSkpNx1ppqz7E5wpx0DbuZqO264Wr7gejkrX+dnbznv3LmTvn37kpCQwGOPPcby5cuz/O9XVuR1vlndRUbyRvrjewDXrl2jcOHCBkYjIiK2lJCQkOHv+fwUHx+f5fHI/v37OX/+PH369Ml0zsPDg27duvHGG29w8eLFbD355crsqig1bNgwVq5cyebNm7Nc3Pnoo4/48MMPWbduHbVq1bpj2/vvv5977rmHv/7665ZFqezsIvPfHQOMfHwtO7sWpBeP3N3dM1yX/v/pr7OyAr+z7E5wpx0DbsXVdtxwtXzB9XJWvs7PHnLevn07bdu2JS4ujscff5xVq1bZtCB1s7zK1+j30NV5e3vj4eFBSkoKV69eVVFKRETyXfqs5NtNykg/frvZy5KZXRSlLBYLw4cPZ+nSpWzcuJGKFStm6bpJkybx/vvvs3btWurXr3/X9idOnODChQuULl06tyHfkp+fH3FxcfleoMnOwrC1atWiePHizJs3j+7du2c4l5qayg8//ECNGjVuu+6WiIhIdt28qHleF6TEeZlMJgoVKsSlS5ccfukAERHJyM/Pz7DdVXU/bSy7KEoNHTqU+fPns3z5cgoVKmRdl6lw4cL4+voC0LdvX+69915CQ0MBmDhxImPHjmX+/PlUqFDBek3BggUpWLAg8fHxjBs3ji5duhAQEMDff//Na6+9RuXKlQkODs6TPEwmEwUKFLDrWUNeXl5Mnz6dZ555hu7du9OsWTMANmzYwKJFi9i/fz/h4eHGBikiIk4jMjKS4OBg6y57K1euVEFKciy9KGXUjYuIiOSN9Htpe6f7aduzi+rJjBkzuHLlCs2aNaN06dLWr++//97aJiYmhtOnT2e4Jjk5ma5du2a45qOPPgJuPJ62b98+nnzySR588EEGDRpEvXr1+PXXX+1qe2MjdO/enb179+Ll5cXEiRMBGD9+PKVLl+bgwYM8+uijBkcoIiLOQAUpsbX09UY0U0pERIyi+2nbsouZUll53nLjxo0ZXv/77793bO/r68vatWtzEZVzq1mzJt999x3R0dHUrVuXDRs2UKFCBaPDEhERJ7Ft2zZat27N1atXad68OStWrFBBSnItfQc+FaVERMRIup+2HbsoSolx6tSpo0XYRETEprZu3Urr1q2Jj49XQUpsKr0opcf3RETEHuh+Ovfs4vE9ERERcQ6//vorwcHBxMfH88QTT+iRPbEpPb4nIiLiXFSUEhEREZvYvHkzbdq04dq1a7Rs2ZIVK1Zka0cbkbvR43siIiLORUUpERERybVNmzZZC1KtWrXip59+UkFKbE5FKREREeeiopSIiIjkyoYNG2jbti0JCQkEBQWxfPlyfH19jQ5LnFD643taU0pERMQ5qCglIiIiObZ+/XratWtHQkICrVu3VkFK8pRmSomIiDgXFaVyKS0tzegQJJf0MxQRyZnw8HDat2/P9evXadu2LUuXLsXHx8fosMSJqSglIuI8dB/m+GzxM/SwQRwuycvLCzc3N06dOkWJEiXw8PAgOTmZxMRE3Nxco9aXlpbm0DlbLBaSk5M5d+4cbm5ueHl5GR2SiIjDWLNmDU899RRJSUl06NCBxYsX4+3tbXRY4uTSi1J6fE9ExHH9917ay8sLk8lkdFgOf3+bXbnJ15b30ipK5ZCbmxsVK1bk9OnTnDp1CovFwvXr1/H19bWLP1D5wVly9vPzo1y5ci7xF4+IiC2sXr2aTp06kZycTMeOHVm0aJEK+5Iv0teU0kwpERHH9d97aXvhLPe3WWWLfG1xL62iVC54eXlRrlw5UlJSSEpKYtOmTTz22GN4enoaHVq+MJvNbN682aFzdnd3x8PDwyX+0hERsYUVK1bQtWtXkpOT6dSpEwsXLlRBSvKNHt8TEXEON99Lp6amGh0O4Bz3t9mR23xtdS+tolQumUwm6w8wJSUFHx8fl/gFhhu/hK6Ws4iIK1u6dCk9evTAbDbTtWtX5s+fr7//JV+pKCUi4jzS76XtZSzhave39pKvnlcSERGRu/rhhx/o3r07ZrOZp59+mgULFrjEgE3sS/rje1pTSkRExDmoKCUiIiJ3tHDhQp5++mlSUlLo3bs33377LR4emmwt+U8zpURERJyLilIiIiJyW/PmzaNXr16kpqbSr18/5syZo4KUGCa9KHXt2jVtJS4iIuIEVJQSERGRW5ozZw59+vQhLS2NQYMGMWvWLNzd3Y0OS1xYelEKbhSmRERExLGpKCUiIiKZfPXVVwwYMACLxcLgwYP58ssvc7Xdr4gt+Pj4WH8P9QifiIiI49PoUkRERDKYPn06zz//PADDhw9nxowZKkiJXTCZTFpXSkRExIlohCkiIiJWn3zyCUOHDgVg9OjRTJ06FZPJZHBUIv8nvSilHfhEREQcn4pSIiIiAsBHH33EqFGjAHj99df56KOPVJASu1OwYEFAM6VEREScgYpSIiIiwoQJE3j11VcBGDNmDKGhoSpIiV3S43siIiLOQ3s6i4iIuDCLxcI777zDe++9B8B7773HmDFjDI5K5PZUlBIREXEeKkqJiIi4KIvFQkhICBMnTgRg0qRJ1tlSIvZKa0qJiIg4DxWlREREXJDFYuHll19mypQpwI0FzkeMGGFwVCJ3pzWlREREnIeKUiIiIi4mLS2NYcOGMWPGDABmzJjBCy+8YHBUIlmjx/dERESch4pSIiIiLiQ1NZXnn3+eWbNmYTKZ+Prrrxk4cKDRYYlkmR7fExERcR4qSomIiLiIlJQU+vXrx/z583Fzc2Pu3Ln06tXL6LBEskWP74mIiDgPFaVERERcQHJyMs888ww//vgjHh4ezJ8/n27duhkdlki26fE9ERER56GilIiIiJNLTEykV69erFixAi8vLxYvXsyTTz5pdFgiOaKilIiIiPNwMzoAERERyTtJSUl06dKFFStW4OPjw/Lly1WQckInT56kd+/eFC9eHF9fX2rWrMnu3but5y0WC2PHjqV06dL4+vrSsmVL/vzzzwx9XLx4kV69euHv70+RIkUYNGiQXa7bpDWlREREnIddFKVCQ0N55JFHKFSoECVLluSpp57iyJEjd71u8eLFPPTQQ/j4+FCzZk1Wr16d4XxWBmAiIiLO6urVq4wfP56IiAj8/PxYtWoVrVu3NjossbFLly7RpEkTPD09+fnnnzl06BAff/wxRYsWtbaZNGkSn376KTNnzmTHjh0UKFCA4OBgEhMTrW169erFwYMHiYiIYOXKlWzevJnnn3/eiJTuSGtKiYiIOA+7KEpt2rSJoUOHsn37diIiIjCbzQQFBXHt2rXbXrNt2zZ69uzJoEGD2Lt3L0899RRPPfUUBw4csLbJygBMRETEGV25coV27dpx8OBBChUqRHh4OE888YTRYUkemDhxImXLlmX27Nk0aNCAihUrEhQURKVKlYAbH9J98sknjBkzho4dO1KrVi3mzp3LqVOnWLZsGQCHDx9mzZo1fP311zRs2JCmTZvy2WefsXDhQk6dOmVgdpnp8T0RERHnYRdrSq1ZsybD6zlz5lCyZEmioqJ47LHHbnnN1KlTad26Na+++ioA7733HhEREXz++efMnDkz0wAMYO7cuZQqVYply5bx9NNP521SIiIiBrlw4QLBwcFERUVRsGBB1q5dS2BgoNFhSR756aefCA4Oplu3bmzatIl7772XF198keeeew6Ao0ePEhsbS8uWLa3XFC5cmIYNGxIZGcnTTz9NZGQkRYoUoX79+tY2LVu2xM3NjR07dtCpU6dM3zcpKYmkpCTr67i4OADMZjNms/mucae3yUrbm/n4+AA3Ht/L7rVGymm+jsrV8gXXy1n5Oj9Xy1n55k3/d2MXRan/unLlCgDFihW7bZvIyEhGjx6d4VhwcLD1E7+sDMBERESczZkzZ2jZsiUHDhzgnnvu4a233spQaBDn888//zBjxgxGjx7Nm2++ya5du3jppZfw8vKiX79+xMbGAlCqVKkM15UqVcp6LjY2lpIlS2Y47+HhQbFixaxt/is0NJRx48ZlOh4eHo6fn1+W44+IiMhyW8A6c+vSpUuZlm5wBNnN19G5Wr7gejkrX+fnajkrX9tISEjIUju7K0qlpaUxcuRImjRpQo0aNW7bLjY29q6Dq/Rjt2vzX7n5xM/VqqrgejkrX+fnajkrX+dz4sQJgoOD+fPPPyldujQrVqzgxIkTTp3zzezlE7/8lpaWRv369fnggw8AqFu3LgcOHGDmzJn069cvz75vSEhIhg8I4+LiKFu2LEFBQfj7+9/1erPZTEREBK1atcLT0zPL3zc2NpYXX3yRxMRE2rRpg8lkylH8+S2n+ToqV8sXXC9n5ev8XC1n5Wtb6fWUu7G7otTQoUM5cOAAW7ZsyffvbYtP/Fytqgqul7PydX6ulrPydQ5nzpxh7NixnDlzhhIlSjB27FhOnDgBOG/Ot2P0J375rXTp0lSrVi3DsapVq/Ljjz8CEBAQANz4HSldurS1zZkzZ6hTp461zdmzZzP0kZKSwsWLF63X/5e3tzfe3t6Zjnt6emZrcJvd9ukz6S0WC2azmQIFCmT5WnuQ3XwdnavlC66Xs/J1fq6Ws/K1Xb9ZYVdFqWHDhll3e7nvvvvu2DYgIIAzZ85kOHbmzBnrwCkrA7D/ys0nfq5WVQXXy1n5Oj9Xy1n5Oo8jR44wdOhQzpw5Q6VKlVizZg3ly5d36pxvxV4+8ctvTZo0ybRr8R9//EH58uUBqFixIgEBAaxfv946BoqLi2PHjh0MGTIEgMDAQC5fvkxUVBT16tUD4JdffiEtLY2GDRvmXzJZ4Ofnh8lkwmKxcPXqVYcrSomIiMj/sYuilMViYfjw4SxdupSNGzdSsWLFu14TGBjI+vXrGTlypPVYRESEdSHXrAzA/ssWn/i5WlUVXC9n5ev8XC1n5evY9u/fT6tWrThz5gxVq1Zl3bp1lClTJkMbZ8v5boz+xC+/jRo1isaNG/PBBx/QvXt3du7cyZdffsmXX34JgMlkYuTIkUyYMIEHHniAihUr8vbbb1OmTBmeeuop4MbMqtatW/Pcc88xc+ZMzGYzw4YN4+mnn870+2Q0k8lEwYIFuXr1KlevXr3tTC4RERGxf3ZRlBo6dCjz589n+fLlFCpUyLrmU+HChfH19QWgb9++3HvvvYSGhgIwYsQIHn/8cT7++GPatWvHwoUL2b17d7YGYCIiIo5s9+7dBAcHc/HiRWrXrk1ERAQlSpQwOizJZ4888ghLly4lJCSE8ePHU7FiRT755BN69eplbfPaa69x7do1nn/+eS5fvkzTpk1Zs2aNdSc7gHnz5jFs2DBatGiBm5sbXbp04dNPPzUipbsqVKiQtSglIiIijssuilIzZswAoFmzZhmOz549m/79+wMQExODm5ub9Vzjxo2ZP38+Y8aM4c033+SBBx5g2bJlGRZHz8oATERExBFt2bKFtm3bcvXqVRo0aMCaNWsoWrSo0WGJQdq3b0/79u1ve95kMjF+/HjGjx9/2zbFihVj/vz5eRGezRUqVAiA+Ph4gyMRERGR3LCLopTFYrlrm40bN2Y61q1bN7p163bba7IyABMREXE069ato2PHjiQkJPDYY4+xcuVK6026iCsoWLAggGZKiYiIODi3uzcRERERe7FixQrat29PQkICwcHB/PzzzypIictJ/51XUUpERMSxqSglIiLiIBYtWkTnzp1JSkriqaeeYvny5fj5+Rkdlki+0+N7IiIizkFFKREREQcwa9YsevbsSUpKCs888wyLFi265Y6xIq5Aj++JiIg4BxWlRERE7Nynn37KoEGDSEtL4/nnn2fu3Ll4enoaHZaIYfT4noiIiHNQUUpERMSOffDBB4wYMQKAl19+mZkzZ+Lu7m5wVCLGUlFKRETEOagoJSIiYocsFgshISG89dZbALz77rv873//w2QyGRyZiPG0ppSIiIhz8DA6ABEREckoLS2N4cOHM336dAA++ugjXn75ZYOjErEfWlNKRETEOagoJSIiYkdSUlIYOHAg3377LSaTiRkzZjB48GCjwxKxK3p8T0RExDmoKCUiImInkpKS6NmzJ0uXLsXd3Z25c+fyzDPPGB2WiN3R43siIiLOQUUpERERO5CQkECnTp0IDw/Hy8uLRYsW0bFjR6PDErFLenxPRETEOagoJSIiYrArV67Qvn17tmzZgp+fH8uXL6dly5ZGhyVit/T4noiIiHNQUUpERMRA586do3Xr1uzZs4fChQuzevVqGjdubHRYInZNj++JiIg4BxWlREREDHLixAlatWrF77//TokSJQgPD6dOnTpGhyVi9zRTSkRExDmoKCUiImKAv/76i5YtW3Ls2DHKli1LREQEVapUMTosEYdw85pSFosFk8lkcEQiIiKSE25GByAiIuJqDhw4wKOPPsqxY8d44IEH2LJliwpSItmQPlMqLS2N69evGxyNiIiI5JSKUiIiIvlox44dPPbYY8TGxlKrVi1+/fVXypUrZ3RYIg6lQIEC1v/XulIiIiKOS0UpERGRfLJ+/XpatGjBpUuXCAwMZOPGjZQqVcrosEQcjpubm7UwpXWlREREHJeKUiIiIvlg2bJltG3blmvXrtGyZUvCw8MpWrSo0WGJOCwtdi4iIuL4VJQSERHJY3PnzqVr164kJyfTuXNnVq5caV2oWURyJr0opcf3REREHJeKUiIiInno008/pV+/fqSmptK/f3++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h7N161YqVapkcGQiIuIM9AifiIhI/lFRymClS5cG4Nq1a1y9etXgaETs2w8//EDdunXZuXMnRYoUYenSpXz66ae33DVTREQkJ7p164anpyfR0dEcOHDA6HBEREScmopSBitQoIB1y+HTp08bHI2Ifbp+/Tovvvgi3bp148qVKwQGBhIdHc1TTz1ldGgiIuJkihcvTtu2bQHNlhIREclrKkrZAa0rJXJ7hw8fpmHDhsyYMQOAN954g02bNlG+fHmDIxMRsQ+hoaE88sgjFCpUiJIlS/LUU09x5MiRDG0SExMZOnQoxYsXp2DBgnTp0oUzZ85kaBMTE0O7du3w8/OjZMmSvPrqq6SkpORnKnYj/RG++fPnk5aWZnA0IiIizktFKTugopRIZhaLhbCwMOrXr8/+/fspWbIka9asITQ0FE9PT6PDExGxG5s2bWLo0KFs376diIgIzGYzQUFBXLt2zdpm1KhRrFixgsWLF7Np0yZOnTpF586dredTU1Np164dycnJbNu2jW+++YY5c+YwduxYI1IyXPv27fH39ycmJoZff/3V6HBERESclopSdkBFKZGMrly5wjPPPMOzzz5LQkICrVq14rfffiM4ONjo0ERE7M6aNWvo378/1atXp3bt2syZM4eYmBiioqKAG3+nhoWFMXnyZJ544gnq1avH7Nmz2bZtG9u3bwcgPDycQ4cO8d1331GnTh3atGnDe++9x7Rp00hOTjYyPUP4+vpad3SdNm2awdGIiIg4Lw+jA5D/W+xcRSkR2LFjB8888wz//PMP7u7uvP/++7z66qu4uamGLiKSFVeuXAGgWLFiAERFRWE2m2nZsqW1zUMPPUS5cuWIjIykUaNGREZGUrNmTUqVKmVtExwczJAhQzh48CB169bN9H2SkpJISkqyvo6LiwPAbDZjNpvvGmd6m6y0NcKLL75IWFgYP/74I0eOHOH+++/PVX/2nq+tuVq+4Ho5K1/n52o5K9+86f9uVJSyA5opJQJpaWlMmjSJt99+m5SUFMqXL8+CBQsIDAw0OjQREYeRlpbGyJEjadKkCTVq1AAgNjYWLy8vihQpkqFtqVKliI2Ntba5uSCVfj793K2EhoYybty4TMfDw8Px8/PLcswRERFZbpvf6taty969e3n55Zd57rnnbNKnPeebF1wtX3C9nJWv83O1nJWvbSQkJGSpnYpS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DAAvvvgi77//fqbBsrPkmx2ulrPydX6ulnNe55s+g1rkbjw9Pfnhhx+oX78+f/75Jz179mTp0qVGhyUiImJ37KIodc899+Du7s6ZM2cyHD9z5gwBAQF3vPbatWssXLiQ8ePH3/X73H///dxzzz389ddftyxKeXt74+3tnem4p6dnlge32Wl7Ow8//DB79+5l//79dO/ePVd95Qdb5OxIHDXfuLg4Xn31Vb788ksAKlasyKxZs2jWrNkdr3PUfHPD1XJWvs7P1XLOq3xd6T2U3CtRogTLli2jSZMmrFmzhjFjxvDoo48aHZaIiIhdsYuFzr28vKhXrx7r16+3HktLS2P9+vUEBgbe8drFixeTlJRE79697/p9Tpw4wYULFyhdunSuY85LderUAbTYudjOmjVrqFGjhrUgNWzYMPbt23fXgpSIiIjkXN26dZk9ezYAH3/8scs9SisiInI3dlGUAhg9ejRfffUV33zzDYcPH2bIkCFcu3aNAQMGANC3b98MC6GnCwsL46mnnsq0eHl8fDyvvvoq27dv599//2X9+vV07NiRypUrExwcnC855VT6DnzR0dHGBiIO79KlSwwYMIA2bdpw/PhxKlasyIYNG/jss88oWLCg0eGJiIg4vR49evDWW28BMH36dBYuXGhwRCIiIvbDLh7fgxv/YJ87d46xY8cSGxtLnTp1WLNmjXWh75iYGNzcMtbQjhw5wpYtW6yLNd/M3d2dffv28c0333D58mXKlClDUFAQ77333i0f0bMntWrVwmQycfLkSc6dO0eJEiWMDkkc0IoVKxg8eDCnT5/GZDLx0ksv3XLtKBEREclb7733HufOnePLL79kwIAB+Pv707FjR6PDEhERMZzdFKXgxiNFw4YNu+W5jRs3ZjpWpUoVLBbLLdv7+vqydu1aW4aXbwoVKkTlypX5888/2bt3L0FBQUaHJA7k3LlzjBgxggULFgDw4IMPEhYWRtOmTQ2OTERExDWZTCY+/fRT/vjjDzZu3Ej37t356aef7H72voiISF6zm8f3JCM9wifZZbFYWLBgAdWqVWPBggW4ubnxyiuvEB0drYKUiIiIwdzc3Bg+fDidO3cmOTmZTp06sXnzZqPDEhERMZSKUnYqvSilxc4lK06cOMGTTz7JM888w/nz56lZsyY7duzgf//7H76+vkaHJyIiItxYXmLu3Lm0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UfWeB09PTxEZGalW1tjvAV1qLN6MjAyNr+njx49LbdSNt6nXha41FnN5ebkYM2aM6NGjhzA1NRWenp5i/vz59ZIkfRljlS1btghLS0tRWFjYYBudaYyb83eooqJCvPjii6Jr167CyspKPPPMMyInJ6deOw8e05zXPrUdQ8mdDC1vEsIwcyfmTfqTNwlheLkT8ybmTR01b5L9/xMTERERERERERFpDe8pRUREREREREREWsdJKSIiIiIiIiIi0jpOShERERERERERkdZxUoqIiIiIiIiIiLSOk1JERERERERERKR1nJQiIiIiIiIiIiKt46QUERERERERERFpHSeliIiIiIiIiIhI6zgpRUREREREREREWsdJKSLSqri4OMhkMhQWFmqs89Zbb2HIkCHNblMmkyE6Ovov902bYmNj4evrC4VCofVzf/bZZxg/frzWz0tEREQtw7ypFvMmIv3FSSkiajMymazR5a233mpWO6+++ipiY2Pbt7M69tprr2H16tUwNjbW+rnnzJmDpKQknDp1SuvnJiIiolrMm5qPeROR/uKkFBG1mZycHGnZsGEDbG1t1cpeffXVZrVjbW2N7t27t3Nvdef06dNIT0/HpEmTdHJ+MzMzTJ8+HRs3btTJ+YmIiIh5U3MxbyLSb5yUIqI24+zsLC12dnaQyWRqZdbW1lLdixcvIigoCFZWVhgxYgRSUlKkfQ1dhr59+3YMGDAA5ubmcHFxQUREhMZ+REZGwsXFBVeuXAEAeHl54Z133sGcOXNgY2MDDw8PbN26Ve2YrKwsTJkyBfb29ujWrRvCwsLw+++/S/vj4uIwdOhQdOnSBfb29nj44YeRmZkJAPj111/x+OOPw8bGBra2tggMDMSFCxc09u+rr77Ck08+CQsLi3oxb9++HR4eHrC2tsaLL74IhUKB999/H87OznB0dMS//vUvtbZkMhm2bNmCp59+GlZWVvD19UV8fDzS0tLw2GOPoUuXLhgxYgTS09PVjhs/fjwOHjyIiooKjf0kIiKi9sO8iXkTEXFSioh05I033sBHH32ECxcuwMTEBHPmzNFY99NPP8WSJUuwYMECXL16FQcPHoS3t3e9ekIILF26FLt27cKpU6cwePBgad9HH32EoKAgXLp0CS+++CIWL14sJXRyuRwhISGwsbHBqVOncObMGVhbW+Opp55CdXU1ampqMHHiRIwcORJXrlxBfHw8FixYAJlMBgCYMWMG3NzccP78eVy8eBGvv/46TE1NNcZz6tQpBAUF1StPT0/HTz/9hCNHjmDv3r3Ytm0bQkNDkZ2djRMnTuC9997D6tWrkZCQoHbcunXrMHPmTFy+fBn9+/fH9OnTsXDhQqxatQoXLlyAEKJeMhoUFISampp6bREREVHHw7yJeROR3hJERO1gx44dws7Orl758ePHBQBx7NgxqezQoUMCgKioqBBCCBEZGSn8/f2l/a6uruKNN97QeC4AYv/+/WL69OnC19dXZGdnq+339PQUzz33nLStVCqFo6Oj+PTTT4UQQuzevVv069dPKJVKqU5VVZWwtLQUR48eFffu3RMARFxcXIPnt7GxETt37tT8ZNRhZ2cndu3apVYWGRkprKysRHFxsVQWEhIivLy8hEKhkMr69esnoqKi1GJfvXq1tB0fHy8AiG3btklle/fuFRYWFvX60bVr1xb1m4iIiNoH8ybNmDcR6TdeKUVEOvHgf+NcXFwAAPn5+fXq5efn486dOxg1alSj7S1btgwJCQk4efIkevbs2ej5VJfHq87366+/Ii0tDTY2NrC2toa1tTW6deuGyspKpKeno1u3bnjhhRcQEhKC8ePH45NPPkFOTo7U3vLlyzFv3jyMHj0a7777br1LvuuqqKhQuwRdxcvLCzY2NtK2k5MT/Pz8YGRkpFZW93l6MDYnJycAwKBBg9TKKisrUVxcrHacpaUlysvLG+0rERER6R7zJuZNRPqKk1JEpBMPXqatupxbqVTWq2dpadms9p588kn88ccfOHr0aJPnU51Tdb7S0lIEBgbi8uXLasvNmzcxffp0AMCOHTsQHx+PESNGYN++ffDx8cG5c+cA1N7XIDk5GaGhofjll1/g5+eH77//XmNfHRwcUFBQ0Kw+Ntbvho5TPZfNeX7v37+PHj16aOwnERERdQzMm5g3EekrTkoRUYdmY2MDLy+vJr/qeMKECdizZw/mzZuHr776qkXneOihh5CamgpHR0d4e3urLXZ2dlK9gIAArFq1CmfPnsXAgQOxZ88eaZ+Pjw+WLVuGn3/+GeHh4dixY4fG8wUEBOD69est6mNbS09PR2VlJQICAnTaDyIiImo7zJvaB/MmovbDSSki6vDeeustfPTRR9i4cSNSU1ORlJSETZs21av3zDPPYPfu3Zg9eza++eabZrc/Y8YMODg4ICwsDKdOnUJGRgbi4uLw0ksvITs7GxkZGVi1ahXi4+ORmZmJn3/+GampqfD19UVFRQUiIiIQFxeHzMxMnDlzBufPn4evr6/G84WEhOD06dOtei7ayqlTp9C7d2/06dNHp/0gIiKitsW8qe0xbyJqPya67gARUVNmzZqFyspKfPzxx3j11Vfh4OCAyZMnN1h38uTJUCqVeP7552FkZITw8PAm27eyssLJkyexcuVKhIeHo6SkBD179sSoUaNga2uLiooK3LhxA1988QXu3bsHFxcXLFmyBAsXLkRNTQ3u3buHmTNnIi8vDw4ODggPD8fbb7+t8XwzZszAa6+9hpSUFPTr16/Vz8tfsXfvXsyfP18n5yYiIqL2w7yp7TFvImo/MiGE0HUniIgMzYoVK1BcXIwtW7Zo/dzJycl44okncPPmTbXL7ImIiIg6IuZNRPqLH98jItKBN954A56eng3epLS95eTkYNeuXUysiIiIqFNg3kSkv3ilFBERERERERERaR2vlCIiIiIiIiIiIq3jpBQREREREREREWkdJ6WIiIiIiIiIiEjrOClFRERERERERERax0kpIiIiIiIiIiLSOk5KERERERERERGR1nFSioiIiIiIiIiItI6TUkREREREREREpHWclCIiIiIiIiIiIq37f56KFUMpm3+dAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = np.linspace(0.5,20.0,100)\n", "fig,axs = plt.subplots(1,2,figsize=(12,4.5))\n", "axs[0].scatter(x_opt_normalized,cost_function_normalized(x_opt_normalized,data),c='r',label='Optimum')\n", "axs[0].plot(t,cost_function_normalized(t,data),'k',label=r'$\\Phi$')\n", "axs[0].set_xlabel('Thickness (mm)')\n", "axs[0].set_ylabel(r'Cost function $\\Phi$ (-)')\n", "axs[0].legend()\n", "axs[0].grid()\n", "axs[0].set_title(r'$\\Phi = u/u_{max} +M/M_{max} $')\n", "\n", "axs[1].scatter(x_opt,cost_function(x_opt,data),c='r',label='Optimum')\n", "axs[1].plot(t,cost_function(t,data),'k',label=r'$\\Phi$')\n", "axs[1].set_xlabel('Thickness (mm)')\n", "axs[1].set_ylabel(r'Cost function $\\Phi$ (-)')\n", "axs[1].legend()\n", "axs[1].grid()\n", "axs[1].set_title(r'$\\Phi = u +M $')\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "In the next figure we plot the optimum obtained with the normalized cost function on the evolution of the deflection $u$ and mass of the beam $M$ as a function of the thickness $t$ of the beam. The _optimum_ value we obtain is a point where the deflection is not necessarily minimum but beyond that point the increase in mass becomes more critical than the gain in rigidity." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:20.684Z", "iopub.status.busy": "2021-04-05T16:50:20.678Z", "iopub.status.idle": "2021-04-05T16:50:20.799Z", "shell.execute_reply": "2021-04-05T16:50:20.814Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "data": { "image/png": "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UhKhoaHExMTg5+dndTlyDrWN61LbuC61jetyRttkZGSQkJBAWFjYZY89d5aXTp06Od6/aNEiy263s9ntdrslnyxyCYmJiQQEBHDixAm37LIvyNQ2rktt47rUNq7LFdvm+++/p1evXkycOJFbb72VDz/8kBkzZrB9+3ZLBu+qZ1FERETEhTz44IP8+++/DBs2jPj4eOrWrWvpLC8KiyIiIiIuxpVmedENeuKSfHx8eO211y46rYBYS23jutQ2rktt47rUNpenexZFREREJEfqWRQRERGRHCksioiIiEiOFBZFREREJEcKiyIiIiKSI4VFcSmjRo2iYcOG+Pn5Ua5cOTp16sSOHTusLksu4u2338ZmszFgwACrSxHgwIEDPPLII5QpU4aiRYtSq1Yt1q9fb3VZhV56ejqvvvoqVatWpWjRotxwww28/vrraGyp8y1fvpyOHTtSvnx5bDYbc+bMyfa63W5n2LBhhISEULRoUVq2bMmuXbusKdbFKCyKS1m2bBkRERGsXr2ayMhIUlNTad26NadOnbK6NDnHunXrmDhxIrVr17a6FAGOHTtG06ZN8fb25vfffycmJob33nuPUqVKWV1aoTd69GjGjx/PJ598wp9//sno0aMZM2YMH3/8sdWlFTqnTp2iTp06jBs37qKvjxkzhrFjxzJhwgTWrFlD8eLFadOmDWfOnHFypa5HU+eIS/v3338pV64cy5Yt44477rC6HAFOnjxJvXr1+PTTT3njjTeoW7cuH374odVlFWovvfQSf/zxBytWrLC6FDlPhw4dCAoKYtKkSY7nunTpQtGiRfnmm28srKxws9lszJ4927H2st1up3z58jz33HM8//zzAJw4cYKgoCCmTJlCt27dLKzWeupZFJd24sQJAEqXLm1xJZIpIiKC9u3b07JlS6tLkf/8/PPPNGjQgAceeIBy5coRFhbG559/bnVZAjRp0oRFixaxc+dOADZv3szKlStp27atxZXJufbs2UN8fHy2P9cCAgJo1KgRUVFRFlbmGrTcn7isjIwMBgwYQNOmTalZs6bV5Qjw3XffsWHDBtatW2d1KXKOv//+m/HjxzNo0CBefvll1q1bx7PPPkuRIkXo1auX1eUVai+99BKJiYlUr14dT09P0tPTefPNN+nevbvVpck54uPjAS5YezkoKMjxWmGmsCguKyIigq1bt7Jy5UqrSxFg37599O/fn8jISHx9fa0uR86RkZFBgwYNeOuttwAICwtj69atTJgwQWHRYjNmzODbb79l2rRp3HLLLWzatIkBAwZQvnx5tY24DV2GFpfUr18/5s6dy5IlS6hYsaLV5QgQHR3NoUOHqFevHl5eXnh5ebFs2TLGjh2Ll5cX6enpVpdYaIWEhBAaGprtuRo1ahAbG2tRRZJp8ODBvPTSS3Tr1o1atWrRo0cPBg4cyKhRo6wuTc4RHBwMQEJCQrbnExISHK8VZgqL4lLsdjv9+vVj9uzZLF68mKpVq1pdkvynRYsWbNmyhU2bNjm2Bg0a0L17dzZt2oSnp6fVJRZaTZs2vWCKqZ07d1K5cmWLKpJMp0+fxsMj+1+1np6eZGRkWFSRXEzVqlUJDg5m0aJFjucSExNZs2YN4eHhFlbmGnQZWlxKREQE06ZN46effsLPz89xr0hAQABFixa1uLrCzc/P74J7R4sXL06ZMmV0T6nFBg4cSJMmTXjrrbfo2rUra9eu5bPPPuOzzz6zurRCr2PHjrz55ptUqlSJW265hY0bN/L+++/z2GOPWV1aoXPy5El2797t2N+zZw+bNm2idOnSVKpUiQEDBvDGG29w0003UbVqVV599VXKly/vGDFdqNlFXAhw0W3y5MlWlyYXceedd9r79+9vdRlit9t/+eUXe82aNe0+Pj726tWr2z/77DOrSxK73Z6YmGjv37+/vVKlSnZfX1/79ddfb3/llVfsKSkpVpdW6CxZsuSif7/06tXLbrfb7RkZGfZXX33VHhQUZPfx8bG3aNHCvmPHDmuLdhGaZ1FEREREcqR7FkVEREQkRwqLIiIiIpIjhUURERERyZHCooiIiIjkSGFRRERERHKksCgiIiIiOVJYFBEREZEcKSyKiIiISI4UFkXEMkuXLsVms3H8+PEcjxk+fDh169a94nPabDbmzJlzzbU506JFi6hRowbp6elO/+wJEybQsWNHp3+uiLgPhUURyRc2m+2S2/Dhw6/oPM8//zyLFi3K32It9sILLzB06FA8PT2d/tmPPfYYGzZsYMWKFU7/bBFxDwqLIpIv4uLiHNuHH36Iv79/tueef/75KzpPiRIlKFOmTD5Xa52VK1fy119/0aVLF0s+v0iRIjz88MOMHTvWks8XEdensCgi+SI4ONixBQQEYLPZsj1XokQJx7HR0dE0aNCAYsWK0aRJE3bs2OF47WKXob/88ktuueUWfHx8CAkJoV+/fjnW8dprrxESEsL//vc/AKpUqcJbb73FY489hp+fH5UqVeKzzz7L9p59+/bRtWtXSpYsSenSpbn33nvZu3ev4/WlS5dy6623Urx4cUqWLEnTpk35559/ANi8eTPNmjXDz88Pf39/6tevz/r163Os77vvvqNVq1b4+vpe8J2//PJLKlWqRIkSJXj66adJT09nzJgxBAcHU65cOd58881s57LZbEycOJEOHTpQrFgxatSoQVRUFLt37+auu+6iePHiNGnShL/++ivb+zp27MjPP/9McnJyjnWKSOGlsCgilnvllVd47733WL9+PV5eXjz22GM5Hjt+/HgiIiJ48skn2bJlCz///DM33njjBcfZ7XaeeeYZpk6dyooVK6hdu7bjtffee48GDRqwceNGnn76afr27esIqKmpqbRp0wY/Pz9WrFjBH3/8QYkSJbj77rs5e/YsaWlpdOrUiTvvvJP//e9/REVF8eSTT2Kz2QDo3r07FStWZN26dURHR/PSSy/h7e2d4/dZsWIFDRo0uOD5v/76i99//5158+Yxffp0Jk2aRPv27dm/fz/Lli1j9OjRDB06lDVr1mR73+uvv07Pnj3ZtGkT1atX5+GHH+app55iyJAhrF+/HrvdfkG4btCgAWlpaRecS0QEALuISD6bPHmyPSAg4ILnlyxZYgfsCxcudDz366+/2gF7cnKy3W6321977TV7nTp1HK+XL1/e/sorr+T4WYB95syZ9ocfftheo0YN+/79+7O9XrlyZfsjjzzi2M/IyLCXK1fOPn78eLvdbrd//fXX9mrVqtkzMjIcx6SkpNiLFi1qnz9/vv3IkSN2wL506dKLfr6fn599ypQpOf/HOE9AQIB96tSp2Z577bXX7MWKFbMnJiY6nmvTpo29SpUq9vT0dMdz1apVs48aNSrbdx86dKhjPyoqyg7YJ02a5Hhu+vTpdl9f3wvqKFWq1FXVLSKFh3oWRcRy5/b6hYSEAHDo0KELjjt06BAHDx6kRYsWlzzfwIEDWbNmDcuXL6dChQqX/LzMy+OZn7d582Z2796Nn58fJUqUoESJEpQuXZozZ87w119/Ubp0aR599FHatGlDx44d+eijj4iLi3Ocb9CgQTz++OO0bNmSt99++4JLvudLTk7Odgk6U5UqVfDz83PsBwUFERoaioeHR7bnzv/vdO53CwoKAqBWrVrZnjtz5gyJiYnZ3le0aFFOnz59yVpFpHBSWBQRy517mTbzcm5GRsYFxxUtWvSKzteqVSsOHDjA/PnzL/t5mZ+Z+XknT56kfv36bNq0Kdu2c+dOHn74YQAmT55MVFQUTZo04fvvv+fmm29m9erVgLnfcNu2bbRv357FixcTGhrK7Nmzc6w1MDCQY8eOXVGNl6r7Yu/L/G95Jf99jx49StmyZXOsU0QKL4VFEXEbfn5+VKlS5bJT6dxzzz1MmzaNxx9/nO++++6qPqNevXrs2rWLcuXKceONN2bbAgICHMeFhYUxZMgQVq1aRc2aNZk2bZrjtZtvvpmBAweyYMECOnfuzOTJk3P8vLCwMGJiYq6qxrz2119/cebMGcLCwiytQ0Rck8KiiLiV4cOH89577zF27Fh27drFhg0b+Pjjjy847r777uPrr7+md+/ezJo164rP3717dwIDA7n33ntZsWIFe/bsYenSpTz77LPs37+fPXv2MGTIEKKiovjnn39YsGABu3btokaNGiQnJ9OvXz+WLl3KP//8wx9//MG6deuoUaNGjp/Xpk0bVq5cmav/FnllxYoVXH/99dxwww2W1iEirsnL6gJERK5Gr169OHPmDB988AHPP/88gYGB3H///Rc99v777ycjI4MePXrg4eFB586dL3v+YsWKsXz5cl588UU6d+5MUlISFSpUoEWLFvj7+5OcnMz27dv56quvOHLkCCEhIURERPDUU0+RlpbGkSNH6NmzJwkJCQQGBtK5c2dGjBiR4+d1796dF154gR07dlCtWrVc/3e5FtOnT+eJJ56w5LNFxPXZ7Ha73eoiREQKs8GDB5OYmMjEiROd/tnbtm2jefPm7Ny5M9tldhGRTLoMLSJisVdeeYXKlStfdFBPfouLi2Pq1KkKiiKSI/UsioiIiEiO1LMoIiIiIjlSWBQRERGRHCksioiIiEiOFBZFREREJEcKiyIiIiKSI4VFEREREcmRwqKIiIiI5EhhUURERERypLAoIiIiIjn6fzh4JD4hmb0+AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = np.linspace(0.5,10.0,100)\n", "#\n", "fig, ax = plt.subplots(constrained_layout=True)\n", "ax2=ax.twinx()\n", "ax.plot(t,mid_point(q,L,E,I(t,d)),'r')\n", "ax.scatter(x_opt_normalized,mid_point(q,L,E,I(x_opt_normalized,d)),c='k',label='Optimum')\n", "ax.set_ylabel('u (mm)')\n", "ax.set_xlabel('Thickness (mm)')\n", "ax2.plot(t,mass(rho,L,d,t),'b',label='Mass')\n", "ax2.scatter(x_opt_normalized,mass(rho,L,d,x_opt_normalized),c='k')\n", "ax2.set_ylabel('Mass (kg)')\n", "ax.grid()" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "In the next cell we can evaluate the effect of changing the starting point of the optimization problem. Considering the minimization problem at hand we do not have problems of local minima but changing the starting point can affect the convergence of the algorithm. For various starting points we extract the optimum value, the number of iterations _niter_ as well as the number of function evaluations _nfev_." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:22.654Z", "iopub.status.busy": "2021-04-05T16:50:22.647Z", "iopub.status.idle": "2021-04-05T16:50:22.669Z", "shell.execute_reply": "2021-04-05T16:50:22.674Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "optimum: 2.400488 nit: 18 nfev: 36\n", "optimum: 2.400488 nit: 14 nfev: 28\n", "optimum: 2.400439 nit: 15 nfev: 30\n", "optimum: 2.400452 nit: 18 nfev: 36\n", "optimum: 2.400439 nit: 18 nfev: 36\n" ] } ], "source": [ "x0s = [1.0,2.0,3.0,5.0,6.0]\n", "niter,nfev = [], []\n", "for x0 in x0s:\n", " res = optimize.minimize(cost_function_normalized, x0, method='Nelder-Mead', options={'disp': False},args=arguments)\n", " x_opt_tmp = res.x[0]\n", " print('optimum: {:0.6f} nit: {:2d} nfev: {:2d}'.format(x_opt_tmp,res.nit,res.nfev))\n", " niter.append(res.nit)\n", " nfev.append(res.nfev)" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "A first observation we can make is that the optimum value does not change significantly in the range of starting points we are looking at. The variations are of the order of 1$e^{-5}$ which is quite negligible in this case. On the other hand, the number of iterations and the number of function evaluations is changing and fewer iterations are needed when the starting point is close to the optimum. This is a usual observation in many local optimization algorithms, the closer we are from the solution, the faster we will reach it." ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "To conclude this notebook, we will evaluate the effect of the algorithm used to minimize the normalized cost function. To this end, we make a loop over three different optimization algorithms, the Nelder-Mead, the conjugate gradient method (CG) and the Broyden, Fletcher, Goldfarb, and Shanno (BFGS)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-05T16:50:28.205Z", "iopub.status.busy": "2021-04-05T16:50:28.196Z", "iopub.status.idle": "2021-04-05T16:50:28.222Z", "shell.execute_reply": "2021-04-05T16:50:28.230Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "algorithm: Nelder-Mead optimum: 2.400439 niter: 15 nfev: 30\n", "algorithm: CG optimum: 2.400416 niter: 3 nfev: 38\n", "algorithm: BFGS optimum: 2.400446 niter: 4 nfev: 12\n" ] } ], "source": [ "optimizer = ['Nelder-Mead','CG','BFGS']\n", "for algorithm in optimizer:\n", " res = optimize.minimize(cost_function_normalized, 3.0, method=algorithm, options={'disp': False},args=arguments)\n", " x_opt_tmp = res.x[0]\n", " print('algorithm: {:11s} optimum: {:0.6f} niter: {:2d} nfev: {:2d}'.format(algorithm,x_opt_tmp,res.nit,res.nfev))" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "Once again the optimum value shows only small variations but we see large differences in the number of iterations _niter_ and the number of function evaluations _nfev_. The Nelder-Mead algorithm has the highest number of iterations _niter_ compared to the two other algorithms employed here. This high number is a direct result of its formulation. Both the CG and BFGS algorithms employ the first derivative of the cost function, its gradient, which accelerates significantly the convergence speed.\n", "\n", "Since we have not supplied a closed form expression for the gradient of the cost function, a numerical differentiation is used to its values. This numerical approach is responsible for the higher number of function evaluations required by the CG and BFGS algorithms.\n", "\n", "This highlights an important aspect of numerical optimization, changing the optimization algorithm (as long as we use a local optimizer) might not have a large impact on the optimum value. The impact of the algorithm will be on the convergence speed, _how fast will we reach an optimum?_ and the numerical cost _how many function evaluation do we need?_" ] } ], "metadata": { "kernel_info": { "name": "python3" }, "kernelspec": { "argv": [ "/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "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.12.4" }, "nteract": { "version": "0.28.0" } }, "nbformat": 4, "nbformat_minor": 0 }