{ "cells": [ { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "# Bounded and constrained minimization problem, application to an energy absorber system" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "This notebook aims at solving an optimization problem linked to the optimization of an energy absorber. The details about this bounded and constrained problem are given in the pdf Lecture_22_energy_absorption_problem.\n", "\n", "In this problem we want to minimize the mass of our energy absorber made of a foam-filled aluminium tube. This optimization problem contains bounds linked to the dimension of the tube as well as limits on the properties of the aluminium and the foam used as filling material. The performances of the absorber, its maximum force and the absorbed energy, are enforced through a system of constraints." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:39.301Z", "iopub.status.busy": "2021-04-12T11:33:39.297Z", "iopub.status.idle": "2021-04-12T11:33:39.306Z", "shell.execute_reply": "2021-04-12T11:33:39.309Z" }, "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 the plateau stress of the foam $\\sigma_f$ throught the function _get_foam_properties_, the stroke efficiency is defined in the function _get_SE_, the absorbed energy and the maximum force associated to the component are defined in the functions _get_E_ and _get_Fmax_ respectively." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:40.191Z", "iopub.status.busy": "2021-04-12T11:33:40.186Z", "iopub.status.idle": "2021-04-12T11:33:40.199Z", "shell.execute_reply": "2021-04-12T11:33:40.202Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def get_foam_properties(rhof):\n", " n = 2.2\n", " Cpow = 61.0\n", " return Cpow*(rhof)**n " ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:41.241Z", "iopub.status.busy": "2021-04-12T11:33:41.238Z", "iopub.status.idle": "2021-04-12T11:33:41.245Z", "shell.execute_reply": "2021-04-12T11:33:41.250Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def get_SE(Favg,x):\n", " [b,h,L,sigma0,rhof] = x\n", " sigmaf = get_foam_properties(rhof) \n", " rhof0 = 2.79\n", " epsD = 1.0-1.5*(rhof/rhof0)\n", " SEF = 0.76*(1.0-1.7*(rhof/rhof0)**0.8)\n", " A = (b-h)*h\n", " AF = (b-2.0*h)**2.0\n", " F0avg = 13.06*sigma0*(b-h)**(1.0/3.0)*h**(5.0/3.0)\n", " return ((F0avg+5.5*np.sqrt(sigmaf*sigma0)*A)*SEF+(sigmaf*AF)*epsD)/Favg" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:42.125Z", "iopub.status.busy": "2021-04-12T11:33:42.122Z", "iopub.status.idle": "2021-04-12T11:33:42.132Z", "shell.execute_reply": "2021-04-12T11:33:42.136Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def get_E(x):\n", " [b,h,L,sigma0,rhof] = x\n", " sigmaf = get_foam_properties(rhof)\n", " A = (b-h)*h\n", " AF = (b-2.0*h)**2.0\n", " F0avg = 13.06*sigma0*(b-h)**(1.0/3.0)*h**(5.0/3.0)\n", " Favg = (F0avg+sigmaf*AF+5.5*np.sqrt(sigma0*sigmaf)*A)\n", " D = get_SE(Favg,x)*L\n", " return Favg/1000.0*D/1000.0" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:43.584Z", "iopub.status.busy": "2021-04-12T11:33:43.580Z", "iopub.status.idle": "2021-04-12T11:33:43.591Z", "shell.execute_reply": "2021-04-12T11:33:43.597Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def get_Fmax(x):\n", " [b,h,L,sigma0,rhof] = x\n", " sigmaf = get_foam_properties(rhof)\n", " A = (b-h)*h\n", " AF = (b-2.0*h)**2.0\n", " AE0 = 0.48\n", " AEF = 0.85 \n", " F0avg = 13.06*sigma0*(b-h)**(1.0/3.0)*h**(5.0/3.0)\n", " Fmax = F0avg/AE0+(sigmaf*AF)/AEF+2.0*np.sqrt(sigma0*sigmaf)*A\n", " return Fmax/1000.0" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We define the mass of the component, our objective function, as _Mass_" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:33:45.101Z", "iopub.status.busy": "2021-04-12T11:33:45.099Z", "iopub.status.idle": "2021-04-12T11:33:45.107Z", "shell.execute_reply": "2021-04-12T11:33:45.109Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "def Mass(x):\n", " [b,h,L,sigma0,rhof] = x\n", " rho0 = 0.00000279\n", " A = (b-h)*h\n", " AF = (b-2.0*h)**2.0 \n", " return (4.0*rho0*A+(rhof*1e-6)*AF)*L" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "The variables of our optimization problem are:\n", "\n", "1 the width of the component $b$\n", "\n", "2 the thickness of the aluminium tube $h$\n", "\n", "3 the length of the component $L$\n", "\n", "4 the strength of the aluminium alloy $\\sigma_0$\n", "\n", "5 the density of the aluminium foam $\\rho_f$" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We start by defining the bounds of these variables through a list in which we append the different minimum and maximum allowable values." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:53:13.790Z", "iopub.status.busy": "2021-04-12T11:53:13.785Z", "iopub.status.idle": "2021-04-12T11:53:13.798Z", "shell.execute_reply": "2021-04-12T11:53:13.802Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "bounds = [] # Define bounds\n", "bounds.append((50.0,100.0)) #b\n", "bounds.append((1.0,3.0)) #h\n", "bounds.append((0.0,400.0)) #L\n", "#\n", "bounds.append((100.0,300.0)) #sigma0\n", "bounds.append((0.1,0.5)) #rhof" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "We impose next the constraints on the performances of the components, the maximum allowable maximum force $F_{max}$, the minimum absorbed energy $E$,as well as the global stability limit $L/b$" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:53:14.944Z", "iopub.status.busy": "2021-04-12T11:53:14.941Z", "iopub.status.idle": "2021-04-12T11:53:14.952Z", "shell.execute_reply": "2021-04-12T11:53:14.955Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "constraints = [] # Define constraints\n", "constraints.append({'type': 'ineq', 'fun': lambda x: 70.0-get_Fmax(x)}) #Fmax <= 70 kN\n", "constraints.append({'type': 'ineq', 'fun': lambda x: get_E(x)-7.0}) #E >= 7 kJ\n", "constraints.append({'type': 'ineq', 'fun': lambda x: 3.0-x[2]/x[0]}) #L/b <= 3.0" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "Since we do not know if this problem is sensitive to local minima we define three starting points based on the bounds corresponding to:\n", "\n", "1 The minimum allowable parameters\n", "\n", "2 The average allowable parameters \n", "\n", "3 The maximum allowable parameters\n", "\n", "We store these starting points in a list to ease the comparison." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:58:50.202Z", "iopub.status.busy": "2021-04-12T11:58:50.186Z", "iopub.status.idle": "2021-04-12T11:58:50.211Z", "shell.execute_reply": "2021-04-12T11:58:50.222Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "x0s = []\n", "x0s.append([50.0,1.0,100.0,100.0,0.1])\n", "x0s.append([75.0,2.0,250.0,200.0,0.3])\n", "x0s.append([100.0,3.0,400.0,300.0,0.5])" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "Next, we run three local optimizations and collect the resulting optimums." ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T13:33:07.862Z", "iopub.status.busy": "2021-04-12T13:33:07.854Z", "iopub.status.idle": "2021-04-12T13:33:07.906Z", "shell.execute_reply": "2021-04-12T13:33:07.912Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [ "x = []\n", "for x0 in x0s:\n", " res = optimize.minimize(Mass, x0, method='SLSQP',bounds=bounds,options={'disp': False, 'maxiter':1000},constraints=constraints)\n", " x.append(res.x)" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "From the three runs we can check if the optimizer violated or not our constraints. The cell below prints out the constraint functions for the three starting points. The local minimizer is able to fulfill the constraints equations and our components are therefore within the limit we specified." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T12:05:39.013Z", "iopub.status.busy": "2021-04-12T12:05:39.006Z", "iopub.status.idle": "2021-04-12T12:05:39.024Z", "shell.execute_reply": "2021-04-12T12:05:39.029Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resulting constraints equations for the starting points corresponding to:\n", " MIN AVG MAX\n", " Fmax = 70.0 70.0 70.0\n", " E = 7.0 7.0 7.0\n", " L/b = 3.0 3.0 3.0\n" ] } ], "source": [ "print('Resulting constraints equations for the starting points corresponding to:')\n", "print(' MIN AVG MAX')\n", "print(' Fmax = {:.1f} {:.1f} {:.1f}'.format(get_Fmax(x[0]),get_Fmax(x[1]),get_Fmax(x[2])))\n", "print(' E = {:.1f} {:.1f} {:.1f}'.format(get_E(x[0]), get_E(x[1]), get_E(x[2])))\n", "print(' L/b = {:.1f} {:.1f} {:.1f}'.format(x[0][2]/x[0][0], x[1][2]/x[1][0], x[2][2]/x[2][0]))" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "Since our optimization are successful we can now look at the results we obtained. The next cell prints the resulting objective functions (i.e. the mass of the component) as well as the resulting variables (dimensions and material properties).\n", "\n", "Depending upon the starting point we obtain three different solutions which suggest that this problem is sensitive to local minima. The variation in mass is though rather small and probably negligible compared to the general accuracy of the analytical solution we employed." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T12:08:01.993Z", "iopub.status.busy": "2021-04-12T12:08:01.986Z", "iopub.status.idle": "2021-04-12T12:08:02.006Z", "shell.execute_reply": "2021-04-12T12:08:02.011Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Mass = 0.389 0.393 0.497\n", "################################\n", " b = 58.70 61.55 83.93\n", " h = 1.00 1.00 1.43\n", " L = 176.10 184.65 251.80\n", "sigma0 = 165.44 267.32 300.00\n", " rhof = 0.49 0.41 0.10\n" ] } ], "source": [ "print(' Mass = {:.3f} {:.3f} {:.3f}'.format(Mass(x[0]), Mass(x[1]), Mass(x[2])))\n", "print('################################')\n", "vars = [' b',' h',' L','sigma0',' rhof']\n", "for var, i in zip(vars,range(0,5)):\n", " print('{} = {:.2f} {:.2f} {:.2f}'.format(var,x[0][i],x[1][i],x[2][i]))" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "In the next cell we try to investigate the reason for the local minima of our problem. We start by plotting the mass of the component for different values of the thickness $h$, the width $b$ and three different values of the foam's density $\\rho_f$. The thickness and the width are varied at the same time within the bounds of our problem. The abscissa yields 0 when the minimum thickness and width are used while it yields 1 for the maximum values.\n", "\n", "When looking at the resulting masses, we observe that the objective function is smooth and do not possess local mimina which should on principle give us a problem rather insensitive to the starting point." ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T13:08:39.308Z", "iopub.status.busy": "2021-04-12T13:08:39.289Z", "iopub.status.idle": "2021-04-12T13:08:39.400Z", "shell.execute_reply": "2021-04-12T13:08:39.412Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEKCAYAAAAMzhLIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABGIUlEQVR4nO3dZ3RU1deA8ecQSqihFwnSQaWFjtKbdBDpIlVBEVSw/XkVBVFUQAUUpDfpCNKLIBDpSIAAoSNSQgstIQESUs774UxMjBBCyORO2b+1ZiUzc+fOzhVnz2n7KK01QgghxMOksToAIYQQjk0ShRBCiERJohBCCJEoSRRCCCESJYlCCCFEoiRRCCGESJTdEoVSylMp9adS6qBS6ohS6vMHHJNBKbVIKXVaKbVHKVXEXvEIIYRIHnu2KCKABlrrCoAP0FQpVSPBMa8Bt7TWJYAxwEg7xiOEECIZ7JYotBFmu5vOdku4uq8NMNv2+xKgoVJK2SsmIYQQjy+tPU+ulPIA9gElgAla6z0JDikIXADQWkcppUKAXMD1BOfpC/QF8PT0rPz000/bM2ynERMTQ5o0MswEci3ik2sRx12uxa3IW1yPuE4a0pDPMx9Z0mb5zzEnT568rrXOk5zz2zVRaK2jAR+lVHZgmVKqrNY6IBnnmQJMAShdurQ+ceJEygbqpHx9falXr57VYTgEuRZx5FrEcfVrcT7kPL1W9OLk3ydpVaoVU1tNJV+WfA88Vil1LrnvY9dEEUtrHayU2gI0BeIniotAISBQKZUW8AJupEZMQgjhrLTWzD00l7fXvU20jmZqq6m8VvE17NVzb89ZT3lsLQmUUhmBxsDxBIetBHrYfm8PbNZSpVAIIR7q2p1rtFvcju7Lu1MuXzkOvnmQ1yu9brckAfZtURQAZtvGKdIAi7XWq5VSwwE/rfVKYDowRyl1GrgJdLZjPEII4dRWnlhJn1V9CA4PZlSjUbz3/Ht4pPGw+/vaLVForQ8BFR/w+Gfxfg8HOjzpe0VGRhIYGEh4ePiTnsqpeHl5cezYsVR/X09PT7y9vUmXLl2qv7cQ7igkPISBvw1klv8sKuSrwMZuGymfr3yqvX+qjFHYW2BgIFmzZqVIkSJ2bX45mtDQULJmzZqq76m15saNGwQGBlK0aNFUfW8h3NHmvzfTa0UvAm8H8kntT/is7mek90ifqjG4xLyx8PBwcuXK5VZJwipKKXLlyuV2rTchUtvdyLu8s+4dGv7cEM+0nuzovYMvG3yZ6kkCXKRFAUiSSEVyrYWwr10XdtFjeQ9O3TzFu9Xf5auGX5EpXSbL4nGZRCGEEM4uIiqCob5DGb1zNIWyFWJz983UL1rf6rBco+vJ0Zw9e5ayZcs+1muOHz+Oj48PFStW5K+//kr2e2uteeeddyhRogTly5dn//79Dzzuk08+oVChQmTJ8t8VnEKI1Lfv0j4qT6nMyB0j6e3Tm0P9DjlEkgBJFClOa01MTMxjv2758uW0b9+eAwcOULx48WS//7p16zh16hSnTp1iypQp9OvX74HHtWrVij///DPZ7yOESBn3o+8zdMtQqk+rzq3wW6x9ZS1TW08lW4ZsVof2D0kUKeDs2bOULl2a7t27U7ZsWS5cuEB0dDR9+vShTJkyvPjii9y7dw8Af39/atSoQfny5Wnbti23bt1i7dq1jB07lokTJ1K//pN9g1ixYgXdu3dHKUWNGjUIDg7m8uXL/zmuRo0aFChQ4IneSwjxZA5eOUj1adUZvnU4r5R7hYB+ATQr2czqsP7D9cYoBg4Ef/+UPaePD4wdm+ghp06dYvbs2dSoUYOzZ89y6tQpFixYwNSpU+nYsSNLly7l1VdfpXv37vz444/UrVuXzz77jM8//5yxY8fy5ptvkiVLFj744IP/nLtTp048qL5Vv379eOONN/712MWLFylUqNA/9729vbl48aIkBSEcSGR0JCN3jGT4H8PJmTEnyzstp80zbawO66FcL1FYpHDhwtSoEbfdRtGiRfHx8QGgcuXKnD17lpCQEIKDg6lbty4APXr0oEOHR683XLRo0QMfDw0NffLAhRCpKiAogJ7Le7Lv8j46l+3M+GbjyZUpl9VhJcr1EsUjvvnbS+bMmf91P0OGDP/87uHh8U/XU3I8TouiYMGCXLhw4Z/7gYGBFCxYMNnvLYRIGVExUYzeMZphfwzDK4MXSzosod1z7awOK0lcL1E4MC8vL3LkyMG2bduoXbs2c+bM+ad1kZjHaVG0bt2a8ePH07lzZ/bs2YOXl5d0OwlhsYCgAHqt6IXfJT86lunI+GbjyZM5WVtDWEIGs1PZ7Nmz+fDDDylfvjz+/v589tlnj37RY2jevDnFihWjRIkS9OnTh59++umf52K7wgA++ugjvL29uXv3Lt7e3gwbNixF4xBCmFbEV9u+ovKUypwNPsvi9otZ1H6RUyUJAOVsVb0ftHHRsWPHePbZZy2KyDpW1HqK5WjX3NU3qHkcci3iWHktDl89TK8Vvdh3eR8dnuvAhOYTLE0QSql9WusqyXmtdD0JIUQKioyO5Jvt3/DF1i/I7pmdxe0X06HMExfJtpQkCiGESCH+V/zptaIX/lf86Vy2Mz82+5HcmXJbHdYTk0QhhBBPKCIqghHbRvD19q/JlTEXv3b8lbbPtrU6rBQjiUIIIZ7A3ot76b2yNwFBAXSv0J0xTcaQM2NOq8NKUZIohBAiGe5F3mOo71C+2/UdBbIUYHWX1bQo1cLqsOxCEoUQQjymbee28drK1zh18xR9K/VlVONReHl6WR2W3cg6Cjtw9DLjd+/epUWLFjzzzDOUKVOGwYMH//PcrFmzyJMnDz4+Pvj4+DBt2rRkxyKEqwmNCKX/mv7UmVWHqJgoNnXfxORWk106SYC0KFLck5YZHzJkyBO9f/wy43v27KFfv37s2bPnP8d98MEH1K9fn/v379OwYUPWrVtHs2amamWnTp0YP378E8UhhKtZf3o9b6x+gwshFxhYfSBfNviSzOkzP/qFLkBaFCnA2cqMZ8qU6Z/3SZ8+PZUqVSIwMPCJ3lcIV3Xj7g16LO9Bs3nNyJwuMzt672BM0zFukyTABVsUFlUZd9oy48HBwaxatYp33333n8eWLl3K1q1bKVWqFGPGjPnX+YRwF1prfjn6C2+ve5ub924ypPYQhtQZQoa0GR79YhfjconCKs5YZjwqKoouXbrwzjvvUKxYMcDsfNelSxcyZMjA5MmT6dGjB5s3b36i9xHC2Vy8fZH+a/uz4sQKqjxVhY3dNlI+X3mrw7KMyyUKi6qMO2WZ8b59+1KyZEkGDhz4z2O5csXVxX/99df56KOPkh23EM4mRscwZd8U/vf7/4iMjmR049EMrDGQtGlc7qPysbj3X5/KHKnM+JAhQwgJCfnPrKbLly//c/zKlSsdqvCfEPZ04voJ+qzqw7bz22hYtCGTW06meM7k71/vSiRRpLLZs2fz5ptvcvfuXYoVK8bMmTNT9PzNmzdn7dq1lChRgkyZMv3r/D4+Pvj7+xMYGMiIESN45plnqFSpEgADBgzg9ddf54cffmDlypWkTZuWnDlzMmvWrBSNTwhHcz/6PqN3jGb41uFkTpeZGa1n0NOnJ0opq0NzHFpru9yAQsAW4ChwBHj3AcfUA0IAf9vts0edt1SpUjqho0eP/ucxd3D79m3L3tvRrvmWLVusDsFhyLWI86hrsfvCbl3up3KaYeiOv3TUl0Mvp05gFgD8dDI/z+3ZoogC3tda71dKZQX2KaU2aq2PJjhum9a6pR3jEEKIfwmNCOWTzZ8w/s/xPJX1KVZ0XkHr0q2tDsth2S1RaK0vA5dtv4cqpY4BBTEtDCGEsMTqk6t5a81bBN4OpH/V/oxoOIJsGbJZHZZDS5UFd0qpIkBF4L9LhOF5pdRBpdQ6pVSZ1IhHCOF+LodepsMvHWi1oBVenl7s6L2DH5v/KEkiCey+FapSKgvwBzBCa/1rgueyATFa6zClVHNgnNa65APO0RfoC5AnT57Kixcv/tfzXl5elChRwl5/gsOKjo7Gw8PDkvc+ffo0ISEhlrz3g4SFhZElSxarw3AIci3ihIWFkSlzJlZfXs2UM1O4H3Of7oW706lQJ9KlSWd1eKmqfv36yd4K1a6JQimVDlgN/Ka1/j4Jx58Fqmitrz/sGNkzO47smR1H9omOI9cizsw1M5l2dRo7L+ykfpH6TG45mZK5/vNd1C045J7Zyswtmw4ce1iSUErlB65qrbVSqhqmK+yGvWISQriHe5H3GLFtBCP3jcTL04tZbWbRvUJ3mfKaTPYco6gJdAMaKKX8bbfmSqk3lVJv2o5pDwQopQ4CPwCdtb37wlKBo5cZB6hXrx6lS5f+p5x4UFBQst9TCEey8a+NlJtYjhHbRtAgbwOODzhOD58ekiSegD1nPW0HEv0vo7UeD7hUPWvtJGXGAebNm0eVKslqiQrhcILuBPHeb+8x7/A8SuYsye/dfsfjvAe5M+W2OjSnJ2XGU4CzlRkXwpXE6Bim7ptK6fGlWXxkMZ/V+YxD/Q7RsFhDq0NzGS5XwmPg+oH4X/FP0XP65PdhbNOxiR7jjGXGe/XqhYeHB+3atWPIkCHSNBdOJyAogDdXv8mOCzuoW7guE1tM5Nk8jjPJwlW4XKKwirOVGZ83bx4FCxYkNDSUdu3aMWfOHLp3757s8wmRmu7cv8MXW7/gu13f4ZXBi5ltZtKjgoxD2IvLJYpHffO3F2crMx77WNasWXnllVf4888/JVEIp7D65GoGrB3AuZBz9PLpxajGo2Qcws5cLlE4MkcpMx4VFUVwcDC5c+cmMjKS1atX06hRo+T9UUKkkvMh53l3/bssP76cMnnKsLXnVmoXrm11WG5BEkUqc4Qy4xERETRp0oTIyEiio6Np1KgRffr0SdE4hEgpkdGRjN09lmF/DAPgm4bfMOj5QaT3SG9tYG7E7iU8UpqszI4jK7PjyGrkOK50Lbad28Zba98iICiA1qVb80PTHyicvXCSX+9K1+JJOeTKbCGESK6gO0F8tPEjZh+cTWGvwlIG3GKSKIQQDiM6Jpqp+6fy8aaPCbsfxv/V+j8+qf0JmdNnfvSLhd24TKLQWsvUuFTibN2Vwjn4XfKj35p++F3yo16RevzU/CdZE+EgXGJltqenJzdu3JAPsFSgtebGjRt4enpaHYpwETfv3aTf6n5Um1qNCyEXmPfyPDZ33yxJwoG4RIvC29ubwMBArl27ZnUoqSo8PNySD2xPT0+8vb1T/X2Fa4nRMczyn8X/fv8fN+/d5O1qbzO8/nC8PL2sDk0k4BKJIl26dBQtWtTqMFKdr68vFStWtDoMIR7b/sv76b+2P7sDd1OzUE0mNJ9AhfwVrA5LPIRLJAohhHO4de8WQzYPYaLfRPJkziP7RDgJSRRCCLuL0THMPDCTwZsG/9PN9Hn9z8numd3q0EQSSKIQQtjV3ot76b+2P3sv7ZVuJicliUIIYRfX7lzjk82fMG3/NPJlycectnPoWq6rdDNZICTkyV4viUIIkaKiYqKY5DeJT7d8Stj9MAbVGMTQekPJliGb1aG5nbAw+OEH+PbbJzuPJAohRIr54+wfvLP+HQ5dPUSjYo34oekPsh7CAnfvwsSJ8M03cP06tGgBa9Yk/3wuseBOCGGtwNuBdFnahXqz6xEcHsySDkvY8OoGSRKpLDzctCCKF4cPPoCKFWHXLli9+snOKy0KIUSyhUeF8/2u7xmxbQQxOoahdYfyUc2PyJQuk9WhuZWICJgxA0aMgIsXoW5dWLQI6tRJmfNLohBCPDatNStOrOD9De9z5tYZXn72Zb578TuKZC9idWhuJTISZs2CL7+E8+fhhRfg55+hfn1IyTkDkiiEEI/l6LWjDFw/kI1nNlImTxl+7/Y7DYs1tDostxIZaRLCl1/C2bNQvTpMnQqNG6dsgogliUIIkSS37t1imO8wJuydQNYMWRnXdBz9qvQjnUc6q0NzG1FRMGeOSRBnzkCVKjBhAjRrZp8EEUsShRAiUVExUUzdN5VPt3zKrfBbvFH5DYbXH07uTLmtDs1tREXB3LkmQfz1F1SuDKtWmdlMqbEsRRKFEOKhNp3ZxMDfBhIQFEC9IvUY22SsrKpORVFRMG8efPGFSRCVKsGKFdCqVeokiFiSKIQQ//HXzb/4YOMHLD++nCLZi7C041LaPtNWVlWnkoQtiIoVrUkQsSRRCCH+cTviNl9u/ZJxe8aRLk06RjQYwXvPv4dnWtmoKjVERpoxiBEjzBhEpUqwciW0bGlNgohlt0ShlCoE/AzkAzQwRWs9LsExChgHNAfuAj211vvtFZMQ4sGiY6KZcWAGQ7YMIehOED19evJVg68okLWA1aG5hchImD0bvvoK/v7bjEFY2YJIyJ4tiijgfa31fqVUVmCfUmqj1vpovGOaASVtt+rARNtPIUQq2fz3Zgb9NohDVw9Rs1BN1ryyhipPVbE6LLcQEWHWQXz9NZw7B1Wrwo8/QvPmjpEgYtktUWitLwOXbb+HKqWOAQWB+ImiDfCzNptd71ZKZVdKFbC9VghhRydvnOSjjR+x4sQKCnsVZnH7xbR/rr2MQ6SC8HCYPt3UYgoMNOsgJk6Epk0dK0HEUuYz2s5volQRYCtQVmt9O97jq4FvtNbbbfc3Af/TWvsleH1foC9Anjx5Ki9evNjuMTuDsLAwsmTJYnUYDkGuRZxHXYvbkbeZc24Oyy4tI32a9HR9uisdvDuQPk36VIwydTjav4vw8DSsXv0UCxcW4saNDJQtG0KPHmepXPmW3RNE/fr192mtk9dU1Frb9QZkAfYBLz/gudVArXj3NwFVEjtfqVKltDC2bNlidQgOQ65FnIddi4ioCD1211idc2ROrYYp/fqK1/Xl0MupG1wqc5R/F7dvaz1qlNZ582oNWterp/XmzVrHxKReDICfTubnuF1nPSml0gFLgXla618fcMhFoFC8+962x4QQKURrzcoTK/lw44ecunmKRsUa8W3jb2U9RCoIDobx42HMGLh505TY+PRTqF3b6sgejz1nPSlgOnBMa/39Qw5bCQxQSi3EDGKHaBmfECLF7Lu0j/c3vM8f5/7gmdzPsOaVNTQr0UzGIezs+nUYN86U/L5920xvHTLEjEU4I3u2KGoC3YDDSil/22MfA08DaK0nAWsxU2NPY6bH9rJjPEK4jQshF/h488fMPTSXPJnyMKH5BPpU6iN1mezs8mX4/nszMH33LrRrBx9/bBbMOTN7znraDiT6tcXWb9bfXjEI4W5uR9xm6pmp/LrjV7TWDK45mMG1BuPl6WV1aC7t3DkYNcrMZIqMhC5dTIJ47jmrI0sZsjJbCBcQGR3J1P1TGeY7jGt3r9G1XFdGNBhB4eyFrQ7NpZ04Yaa4zp1rprX27An/+5/ZYc6VSKIQwolprVl+fDmDNw3m5I2T1C1cly65uvBGqzesDs2l+fubVdRLloCnJ/TrBx9+CIUKPfKlTkn2zBbCSe0O3E2dWXV4efHLeCgPVnZeyZYeWyidtbTVobmsHTtMae+KFeG332DwYLNx0A8/uG6SAGlRCOF0Tt04xcebP2bJ0SXky5yPyS0n07tib9Kmkf+d7UFrkxS+/hq2boXcuU3RvrfeguzZrY4udci/LCGcRNCdIL744wsm7ZtEBo8MfF7vc957/j2ypHeclceuJDoali41YxAHDoC3N4wdC336QKZMVkeXuiRRCOHgwu6H8f2u7xm9czT3Iu/xeqXXGVZvGPmz5Lc6NJcUEWH2ox41Ck6fhlKlYMYM6NoV0rtelZMkkUQhhIOKjI5k+oHpDPMdxtU7V3n52Zf5qsFXlM4tYxD2cPs2TJli1kFcvmxKff/yC7RtCx4eVkdnLUkUQjgYrTVLji7hk82fcOrmKWo9XYtlnZbxfKHnrQ7NJQUFmVXUP/1kSm40aGBaFA0bOmYlVys8MlEopfJiVlk/BdwDAjDFpWLsHJsQbmfz35sZ/Ptg9l7aS5k8ZVjVZRUtSraQkht2cOYMfPstzJxpupteftmsgaha1erIHM9DE4VSqj4wGMgJHACCAE/gJaC4UmoJ8J2OVzZcCJE8By4fYPCmwWz4awOFshViRusZdK/QHY80bt7nYQcHDsDIkaZbKW1a6NbNrIEoLT16D5VYi6I50EdrfT7hE0qptEBLoDGmOqwQIhlO3zzNp1s+ZWHAQnJmzMm3jb+lf7X+skd1CtMaNm0yA9QbN0LWrPD++zBwIDz1lNXROb6HJgqt9YeJPBcFLLdHQEK4g0uhl/jijy+YdmAa6T3S80ntT/jghQ/I7pnd6tBcSnS0YuFCGD0a9u+H/PnNdNc33nCfNRApISljFO894OEQYJ/W2j/FIxLChd28d5OR20fy458/EhkTyRuV32BInSEy1TWF3bljprR+9VU1rlwx3UpTp5pupgwZrI7O+SRl1lMV222V7X5L4BDwplLqF631KHsFJ4SrCLsfxrjd4xi9czS3I27TtXxXPq/3OcVyFLM6NJdy9arZKOinn8xGQWXL3mfSpIy0agVppGBRsiUlUXgDlbTWYQBKqaHAGqAOZotTSRRCPER4VDiT/SYzYtsIrt29RuvSrfmy/peUy1fO6tBcyokTZv3D7Nlw/z60aQMffACRkQeoV6+e1eE5vaQkirxARLz7kUA+rfU9pVTEQ14jhFuLiolitv9shm8dzvmQ8zQo2oARDUZQw7uG1aG5DK1h+3YzxXXlStOl1KMHvPde3AwmX19LQ3QZSUkU84A9SqkVtvutgPlKqczAUbtFJoQTitExLApYxFDfoZy6eYpqBasxvfV0GhVrZHVoLiMqCn791SSIvXshVy747DPo3x/y5rU6Otf0yEShtf5CKbUOs+gO4E2ttZ/t9652i0wIJ6K1ZsWJFXy65VMCggIol7ccKzqvoFWpVrJYLoWEhpod5MaONTvKlSgBEyaYzYLcrUhfakvKrKfXtNbTAb94j32jtR5s18iEcAJaazb8tYEhW4bgd8mPkjlLMv/l+XQq24k0SkZPU0JgoNnvYcoUCAmBmjVNsmjVSmowJcmhQ+biPYGkdD21U0qFa63nASilJmBWaAvh1nzP+jJk8xB2XNhBYa/CzGg9g24Vusm+ECnEzw/GjIHFiyEmBtq3N+MP1atbHZkTuHPHXLjJk2HPnieeE5ykRAGsVErFAE2BYK31a0/0rkI4sZ0XdvLplk/Z/Pdmnsr6FBOaT+C1iq+RIa1M0H9S0dGwapWZwbRtm1lB/c478PbbUKSI1dE5AX9/s2Bk7lxTDvfZZ03zq1s3M5iTTInVesoZ7+7rmJXYO4DPlVI5tdY3k/2uQjihPy/+yWdbPuO3v34jb+a8jGkyhjcqv0HGdBmtDs3phYaa4nzjxplifYULm2Tx2muQLZvV0Tm40FBYuNAkiL17zSbeHTqYHZZq1UqREriJtSj2ARpQ8X62sN00ICuFhFvYd2kfQ32HsubUGnJlzMWoRqN4q+pbZE6f2erQnN65c/DjjzBtmhl/eP55U7DvpZdMwT7xEFqbvrmpU2HBAggLg7JlTaZ99VXImfPR53gMidV6Kpqi7ySEkzlw+QDD/hjGyhMryeGZgxENRvB2tbfJmiGr1aE5Na1h1y7TI7J0qfnC2769KdBXQ5aZJO7WLZg/3ySIgwfNdK+OHU3xqurV7baBRmJdT7W01tsTeT4b8LTWOsAukQlhEf8r/nz+x+csP76c7J7ZGV5vOO/WeJdsGaQP5Encv29Ke48bZ3pIsmc3q6cHDIBChayOzoFpDVu3mmbXkiUQHg6VKsHEidClC3h52T2ExBp37ZRSo4D1mG6oa5jZTiWA+kBh4H27RyhEKvG/4s/wP4az7PgyvDJ4MazuMN6t8a5UdH1CQUFm8s3EiWaL0dKlTS2m7t0hs/TePdyVK6YmyfTpcOqUSQi9e5uBm0qVUjWUxLqeBtkGtNsBHYACmB3ujgGTE2ttCOFM4rcgsmXIxtC6QxlYY6AkiCfk729aDwsWmB3kmjQxn3lNmkiBvoeKioJ168yFWr3aTAOrXRuGDDH9cxatLEx0uMg2s2mq7fZYlFIzMJVmg7TWZR/wfD1gBfC37aFftdbDH/d9hEiu/Zf3M/yP4aw4sQKvDF4MrTuUd6u/S46MOawOzWlFRcGKFWaB3Nat5nOtVy8zxfXZZ62OzoGdOmXqos+ebZpd+fKZnZV693aIrffsOa9gFjAe+DmRY7ZprVvaMQYh/sPvkh+f//E5q0+uJrtnduliSgHXr5su9J9+ggsXzJqH774zSSKH5N0Hu3PHjDlMn24WjaRJAy1amK6l5s0hXTqrI/yH3RKF1nqrUqqIvc4vxOPadWEXX2z9gnWn15EzY06+rP8lA6oNwMvT/oOBrsrf30xvnT/fjLE2aGBaE1Je4yG0NiulZ8wwax9CQ6FkSfj6azNo46D7siqttf1ObhLF6kS6npYCgcAl4AOt9ZGHnKcv0BcgT548lRcvXmyniJ1LWFgYWbJksToMh5DYtTgYfJA55+awL3gfXum86ODdgbZPtSVTWtesJGfvfxdRUYrt23OzbFlBDh3KjqdnNI0bX6Vt24sULXrHbu+bHI7y/0j6mzfJt2ED+devJ/O5c0R7ehJUrx5XmjYlpHx5u01rja9+/fr7tNZVkvVirXWiN8xAdlbb70OAXzEbGSXltUWAgIc8lw3IYvu9OXAqKecsVaqUFsaWLVusDsFhJLwWMTExesPpDbr2jNqaYeh8o/Ppb3d8q8MiwqwJMBXZ69/FlStaDx+u9VNPaQ1aFyum9XffaX3zpl3eLkVY+v9IRITWS5dq3bKl1h4e5qK98ILW06Zpfft2qocD+OkkfMY+6JaUrqdPtda/KKVqAY2A0cBE4IlKc2mtb8f7fa1S6ielVG6t9fUnOa9wb1pr1pxaw4htI9gduJuCWQsyruk4+lTqI6U2kkFr2L3blPNevBgiI82spcmToVkz6V56IH9/U49k3jy4cQMKFDALRnr1coiB6eRISqKItv1sAUzRWq9RSn35pG+slMoPXNVaa6VUNSANcONJzyvcU4yOYcnRJXy59UsOXj1IkexFmNRiEj19ekqxvmS4e9d0oU+YAPv3m3pL/fqZzYFKlbI6Ogd07ZoZqJk1yySK9OnNfqy9ekHjxk5fjyQp0V9USk0GGgMjlVIZMB/qiVJKLQDqAbmVUoHAUCAdgNZ6EtAe6KeUisKsz+hsax4JkWSR0ZHMPzyfz/w+4/zd85TOVZpZbWbxSrlXSOfhOLNGnMXp02Zh3MyZplpE2bIwaRJ07QoO0NXvWCIjYe1akxxWrzZzg6tUgfHjoXPnJ6rW6miSkig6YsqLf6u1DlZKFQA+fNSLtNZdHvH8eMz0WSEeW3hUODMPzGTUzlGcDT5L8czFWdhuIe2fa49HGukPeRzR0ebzbsIE+O038+X35ZdN66F27VQZZ3UeWpsWw+zZpgVx7ZpZ8/Duu2bD7nLlrI7QLpKSKAoAa7TWEbaZSuVJfG2EEHZzO+I2k/wm8f2u77l65yo1vGvwY7MfyXwxM/XL1rc6PKdy9aqZwj95Mpw/b2ZmDhtmqlM76CxN61y5YsYcZs+Gw4dN11Lr1mYf1iZNnL5r6VGS8tctBaoopUoAUzCrqedjZioJkSqu3bnGuD3jmLB3AsHhwTQu1piPa39M3cJ1UUrhe8nX6hCdgtZmbdfEiaZya2SkWfvw/ffmc8+B1nhZ7949s8z8559NUysmxlRo/ekn6NQpxUt5O7KkJIoYrXWUUupl4Eet9Y9KqQP2DkwIgPMh5/l257dM2z+N8Khw2j7blsE1B1O1YFWrQ3MqISEwZ44ZbzhyxFRu7d8f3nzTaSfi2EdMDGzfbpLDL7+YXeIKFYLBg80ucc88Y3WElkhKoohUSnUBugOtbI/J9w5hV0eCjjBq5yjmH54PQLfy3fio5kc8k9s9/0dNrn37THKYP9/MZKpa1SwK7tTJsvpyjunkSZNJ586Fs2fNyH379iY51Kvn9lUMk5IoegFvAiO01n8rpYoCc+wblnBXO87vYOSOkaw6uYpM6TIxoOoA3nv+PQp5yYYFSXXvngfTppmxBz8/kxC6dDHTWytXtjo6B3L9OixaZBLEnj0mGTRqBF98AW3bSg30eB6ZKLTWR4F34t3/Gxhpz6CEe4nRMaw5uYaRO0ay48IOcmXMxdC6Q3m72tvkyuQ6Uwzt7dAhkxxmzXqeu3ehTBkzU/PVV1NlbxvncO+emco6Z44p5x0VZWYqjR4Nr7wio/gP8chEoZQqCXwNPIfZuAgArbXsmS2eSERUBPMPz2f0ztEcu36Mwl6F+aHpD/Su2Fv2o06iu3fNl+IpU8wK6gwZoE6d6wwdmp8XXpCprYAZd9i61SSHJUvMuEOBAmbv1W7doHx5qyN0eEnpepqJWSw3BrOzXS+SsOBOiIcJCQ9h8r7JjNszjkuhl6iQrwJz286lY5mOskguiQ4eNNsmz51rBqqfeQbGjDGfe4cPH6dmzfxWh2i9w4cpNnmyuSiBgXHjDq++asYdpP5IkiUlUWTUWm9SSimt9TlgmFJqH/CZnWMTLibwdiBjd49lyr4phN4PpUHRBsxsM5PGxRqj5KvvI4WFmdbD1KmmSz1DBvO598YbUKuWtB4AsyBk/nxzO3wYbw8PU5Rq9Ggz/1dG8JMlKYkiQimVBjillBoAXARkMb9IsoNXDvLdru9YELAArTUdy3Tkgxc+oFKB1N331xlpbWotTZ1qPvtCQ+G552DsWPNF2Y2m8j/cjRumS2nePLNIBOCFF2D8eHZ5e1OzTRtr43MBSUkU7wKZMAPaXwANgB72DEo4P601G/7awHe7vmPjmY1kTpeZAVUH8G6NdymSvYjV4Tm84GDzuTdtmqkYkTEjdOwIffvC889L64E7d2DVKpM91683KweffRa+/NIMShctCkCkr6+1cbqIpMx62mv7NQwzPiHEQ8UOUH+/+3sCggIokKUAXzf8mjcqvyF7UT+C1mbMdfp0s9YrPBwqVjQ1mF55xSySc2uRkbBhAyxYAMuXm2RRsKCps9S1K1SoIBnUTh6aKJRSKxN7oda6dcqHI5zVjbs3mOQ3ifF7x3Ml7Arl8pZjVptZdCnXhfQe6a0Oz6FdvmwWAk+fDqdOmZLePXuamkuV3L13LibGdCctWGCy582bpr/t1VdN9qxVy+0Xw6WGxFoUzwMXgAXAHkBStfiPE9dPMHb3WGYfnM29qHs0Kd6E2S/NlgHqR4itUD19uvkZHW0qtQ4ZYgao3XrMVWuzUnDBAjN6f+mSWfzWpo1ZOfjii6Yon0g1iSWK/Jg9KLoArwBrgAX6IftaC/ehtWbT35sYs3sMa0+tJYNHBl4t/yqDagyiTN4yVofn0I4dM3s9/Pyzqd6aP7/Z/Kx3bzffEEhrCAgwuyUtXAhnzphk0KyZSQ4tW8pKaQs9NFForaOB9cB622ZFXQBfpdTntr0khJsJjwpn3qF5jN0zloCgAPJmzsuwusPoV7UfeTPntTo8h3X7ttlGdMYM2LXLVKRu2dIkh2bNXL5CdeJOnjSJYdEiOHrUdCM1bAiffGI2xXD7gRnHkOg/UVuCaIFJEkWAH4Bl9g9LOJLLoZeZ6DeRSX6TuHb3GuXzlWdG6xl0KdcFz7Sejz6BG4pdDDxzppm5efeumZQzahR07272unFbf/9tMueiRXDAVoi6dm1Tb6RDB8grXzocTWKD2T8DZYG1wOda64BUi0o4BL9LfozbM45FAYuIiomiRakWDKoxiPpF6sv4w0OcPWv2tpk923weZstmxl1794Zq1dx4Us6FC2YwetEi+PNP81i1amYjjA4dwNvb2vhEohJrUbwK3MGso3gn3geDArTWOpudYxMWiIyO5NdjvzJuzzh2Be4ia/qs9KvSj7erv02JnCWsDs8h3bljNgGaNQu2bDHJoGFDM6X/pZfceGD64kXTnFq8GHbuNI9VqgQjR5rkYFvrIBxfYmMUMufMjVy7c40p+6Yw0W8iF0MvUjxHccY2GUuvir3IlkG+EyQU27U0e7b5LAwLg+LFTYXqbt2gcGGrI7TIpUsmay5ebDYAAlN0b8QIkxxKlrQ2PpEs7jyMJoD9l/fz458/suDwAiKiI2hUrBGTWk6iecnmpFHyXSGh06dNEdKffzbdTFmzmk2AevRw43pLFy+a5PDLL7Bjh5nBVK6cyZodOsgWei5AEoUbuh99nyVHlzD+z/HsCtxF5nSZea3iawyoNoBn8zxrdXgOJzjYfAbOnm0+B5Uy+9t8+aXZ38Ytu5YCA01TaskSc1HAJIfPPzfJwU23DHVVkijcyMXbF5m8bzJT9k3h6p2rlMxZkrFNxtLTpydenrKzTXyRkfDbb6blsHIlRESYWUvffGOqRbjl2Ou5c3Eth927zWPly5uWQ/v2khxcmCQKF6e15o9zfzBh7wSWHVtGjI6hWclmvF3tbV4s/qJ0L8UTuyB4zhwztf/aNcid2xTi697dbCPqdl1Lp0+b5LB0Key1lX2rWNGMObRv7+arBN2HJAoXdTviNnMOzuEnv584eu0oOTxzMKjGIPpV7UexHLI5YXxnz5pKrXPmwIkTZp+H1q3NoHSTJm5WLUJrs/Dt119Ncjh40DxetappTrVrByVk9pu7kUThYg5fPcxEv4nMOTSHsPthVC5QmRmtZ9CpbCcypXPHzvQHu3nTdK/PnRu3hUGdOvD++6aL3a0WBGttFr4tXWoSxPHjpun0wgtmncPLL7vxNC4BkihcQkRUBL8e+5Wf/H5i+/ntZPDIQKeynehftT9Vn6oqi+NswsNh9WrTelizJm4LgxEjzLiDW30WRkebeiLLlpnkcPas2Rq0bl14+20zSl+ggNVRCgdht0ShlJoBtASCtNZlH/C8AsYBzYG7QE+t9X57xeOKLt+7zODfBzPjwAyu3b1G8RzFGd14NL18epErUy6rw3MI0dHg62uSw9Klpu5S/vwwYIBZMV2xohuNO9y/b1YELltm9nO4etX0qzVqBJ9+avrbcue2OkrhgOzZopgFjAd+fsjzzYCStlt1YKLtp0hEVEwUq0+uZpLfJDb8tYE0Kg2tS7fmzSpv0qhYIxmcxvSk7NtnNj9buNDs95A1q+lB6doVGjQwX57dQliY2QFu2TLTjAoJgSxZTDXCdu3Mz2yyoFIkzm6JQmu9VSlVJJFD2gA/a601sFsplV0pVUBrfdleMTmz8yHnmb5/OtMOTONS6CW8s3nTo3APvnj5C7yzueNczf86ftxsYTB/vpmskz49tGhh9rdp0cJsJ+oO0gUHm1K1y5bBxo1mbm+uXCYxtG1rWhCeUsxRJJ2VYxQFMRsjxQq0PfafRKGU6gv0BciTJw++brIPbrSOZveN3ay6vIo/b5pCatVyVuOtMm9RI1cN7t25x+n9pznNaYsjtU5QUAY2b87Lxo0VOXMGlNJUrBjMBx9cpU6d62TNGgXAnj0WB2pnnpcukXvHDnJv384LAQEQE0N4vnxcb9mSa7VqcbtcOXRsMyp2DYQbCAsLc5vPC3tyisFsrfUUYApA6dKldb169awNyM7OBZ9j+oHpTD8wnUuhl8ifJT8f1/6Y1yu9TpHsRf45ztfXF1e/Fg9y9aqZsbRwYVw5oWeeuc2YMdCxo+Kpp3IALr4/d2z/2ooV5nb4sHm8QgXOdutGkYED8axQAW+lcOf2prv+P5LSrEwUF4FC8e572x5zS5HRkaw8sZKp+6ey4a8NADQt0ZQJzSfQomQL0nmkszhCa928aSbnLFoEmzebonzlypkyGp07w4UL+13/AyEiwgxGr1xpbhcvmo1+6tSBMWPMVqFFi3LW15ciPj5WRytciJWJYiUwQCm1EDOIHeKO4xMnb5xk+v7pzDo4i6A7QXhn8+bTOp/Su2JvCmd3p/ma/xUSYr4sL1oEGzZAVJSp0PrxxyY5lIm36+qFCw8/j1O7cQPWrTMXYv16MzidObNZCdimjRl8ySUz3IR92XN67AKgHpBbKRUIDAXSAWitJ2E2RGoOnMZMj+1lr1gczZ37d1hydAnTD0xn2/ltpE2TlpalWtKnUh+aFG+CRxp3mZLzX6GhZq3DokXm8/H+fXj6aRg0yFRprVTJDaaznjoV12rYvt00n/LnN6PybdqYaVsyGC1SkT1nPXV5xPMa6G+v93c0Wmv2XtrL9P3TWRCwgND7oZTMWZKRjUbSvUJ38mfJb3WIlgkLM8nhl19g7VqzMK5gQXjrLZMcqld38eQQFWU29lm1ytxOnDCPly8P//d/0KqVKaGRRqY+C2s4xWC2Mwu6E8TcQ3OZcWAGR64dIWPajHQo04HXKr5G7adru+2q6bAwM61/8eK45JA/P/TpAx07muoRLv25eOuWKU+7apVpOt26BenSQb160L+/SQ5FilgdpRCAJAq7iIyOZP3p9cz0n8mqk6uIiomiesHqTGoxic5lO7ttSe/YbqUlS/6dHF57zdRXqlXLhRfCaQ0nT5oLsHq1KTAVHW1WQrduDS1bwosvyuI34ZAkUaSgI0FHmOU/izmH5nD1zlXyZs7Lu9XfpZdPL8rkLfPoE7ig4GDzpXnJEvMFOiICnnrKtBzat4eaNV04OUREmP1S16wxyeGvv8zj5cvD//5nBqKrV3fhCyBchSSKJ3Tj7g0WBixk1sFZ+F3y+2dgupdPL5qVaOaW01qvXzeTdJYuhd9/N8X3vL2hXz+zONilu5UuXTLNpTVrzKroO3fMwHODBvDeeyY5uFX1QeEKJFEkQ2R0JOtOr2P2wdmsOrGKyJhIfPL7MLbJWF4p9wp5MuexOsRUd+mSqTO3dCn88YfpVSlSBN55x3QruexYbFSUWfa9dq25+fubxwsVMhtatGhhkoRb7pcqXIUkiiTSWnPgygF+Pvgz8w/P59rda+TNnJcB1QbQvUJ3fPL7WB1iqjtzJq5K9a5dphu+dGn46CPTreSylVmDgkw/2tq15uetW6b7qGZNs7lP8+ZQtqyL/vHCHUmieITA24HMOzSPOYfmcOTaEdJ7pKd16dZ0L9+dpiWaulXXktamUsSyZeYWu/mZjw98/rnpVnr2WRf8fIyOhj//NLOT1q0zpTO0hnz5zLqG5s2hcWM32+1IuBNJFA8QGhHKr8d+Zc6hOWz+ezMazfPezzOxxUQ6lelEjowuXkconuhoU0MuNjmYwntmnOG770wx0qJFrY7SDq5cMa2F9evNsvCbN03fWfXqMHy4Kc9dsaKL9qcJ8W+SKGwioyPZ8NcG5h6ey4rjK7gXdY9iOYrxWd3PeLX8q5TI6T77BIeHm3pKy5ebQemgIDPFv2FDM1mndWszrdWl3L9v+s/Wrze32LGGfPnMmoZmzUx5bimXIdyQWycKrTW7Ancx79A8Fh9dzPW718mVMRe9fHrRrUI3qhes7jYL4m7eNF3uK1aY3pU7d8xmP82bw0svmZ8uN8X/zBnTavjtN5MZQ0MhbVoz1vD116aeUoUK0moQbs8tE8WRoCPMPzyf+QHzORt8Fs+0nrQp3Yau5brSpEQT0nuktzrEVHHmTFxJoa1bTTdTgQJmsk6bNlC/PmTIYHWUKSg01OyLGpscTtv28Shc2NRRatrUzFByuYwoxJNxm0RxLvgcCwMWMj9gPoeuHiKNSkOjYo0YVncYbZ9tS7YMrv/hEBNjxmRXrTLJISDAPF6mjOlSatMGqlRxoS/Q0dGwf78ZY9iwwdRTiooyU1Xr1zdzd198EUqVcsEReCFSjksniqthV/nl6C8sCFjAzgs7AahesDpjm4ylU9lOblGI784ds+5r1SqzBuzqVTOTs3Zts4VBq1amdLfLOHvW/MEbN5rVfrdumcd9fOD990130gsvuFhTSQj7crlEcfPeTZYdW8bCIwvZ/PdmYnQMZfOWZUSDEXQu25liOYpZHaLdnT8fV1Jo82ZTSSJbNjMeGzsumzOn1VGmkOBg2LKFkrNnQ9++pkQ3mDohrVubxNCwIeTNa2mYQjgzl0gUIeEhrDixgkVHFrHhrw1ExURRPEdxPq71MZ3Ldnb5OkvR0WZxcGxJoUOHzOPFi5uyGa1amYJ76V1h6CUiwszX/f1302rYuxdiYsgfWyajf3+zpsElF3QIYQ2nTRShEaGsPrmaRUcWse70Ou5H3+dpr6cZVGMQncp0olKBSi49Y+nWLdi8OS/Tp5tZSjdumC6lWrVg9GhTjLR0aRf4rIyJMSv7fv8dNm0yo+737pk/tlo1+OQTaNyY7eHh1G3c2OpohXBJTpcoQqNCeXnRy6w7vY7wqHAKZi3IW1XeomOZjlT3rk4a5Sojsf8Wuyo6tqTQzp0QHf0cuXKZrqQWLUwvSw5nXwuotek+2rTJ9Jtt2WKyIMBzz8Hrr5v1DHXrgldcuXbt62tNvEK4AadLFJfvXWZ34G76VOpDh+c6UPPpmi6bHG7fNp+X69aZ5HDxonm8YkWz8Vn+/Pt5881Kzl+l+vx5kxA2bza3wEDzeKFCpt+sYUPTrfTUU9bGKYSbcrpEUShTIc6+d9Ylk4PWZsrq+vUmOWzbZmZzZs1qZnE2a2am+hcsaI739b3tnEniyhWzniE2McTu05A7t5m2GpsYSpRwgb4zIZyf0yWKjB4ZXSpJBAeb7vfYyhGxrYZy5cz2Bc2amdmcTj0Qfe2aqT0emxyOHTOPZ8tmtv4cMMAkiHLlXGgRhxCuw+kShbOLjjbFR2MXB+/ebR7z8jKTdZo2/XerwSldu2YGnX19zS12ZV/mzGYBR8+epsVQsaLs7iaEE5BEkQoCA81Mzt9+Mz9v3jQ9KpUqmbGGpk1NUdK0zvpfI7bFENtqiE0MmTKZukmvvGJaDJUrm+qCQgin4qwfTQ7tzh3zmblxo6kccfSoeTx/fjM2++KLpvWQx1k3wrt0ybQYYpNDbFdS5swmMXTpYhJDlSqSGIRwAZIoUkBsSaHYyhE7dph9oj09TU9L794mOTjlpmdam7IY27aZpLB1a1wxvaxZzcKNHj3MdFVpMQjhkiRRJIPWpvLq77+b2+bNpjsJTFXqgQNNi6FWLciY0dJQH19MjGkCbdsWd4udrpojB9SpY5Z716lj6ic5bX+ZECKp5P/yJLp61SSETZtMcjh3zjxeqJCputq4sZOWFLp/3zSHtm2D7dvNLTbrFShgEkKdOqZpVKaMzEoSwg1JoniIkBDT0xKbHGLHZ7NnN93vH35okkPJkk7WnRQSYnZy277d9JHt2WNKYoApt/3SSyYp1K4NxYo52R8nhLAHuyYKpVRTYBzgAUzTWn+T4PmewGjAtnqA8VrrafaM6WHu3DGfm7ELhP38TC9MxoymC6lrV1M5wqlmdGptmj47dsTdDh82j3t4mD+mb1+TFGrVMtt+CiFEAnZLFEopD2AC0BgIBPYqpVZqrY8mOHSR1nqAveJ4mPBw88V6yxZz27PHDECnTQs1aphacw0awPPPO9HWBZGRZq/nnTvjEsOlS+a5LFnMH9OunZmZVL26eUwIIR7Bni2KasBprfUZAKXUQqANkDBRpIrwcJMMfH1NYti921SsTpPGTNYZNMgkhpo1nefzM11IiNmRaOdOc9u7N64b6emnzUykmjXNrVw5J2oKCSEciT0TRUHgQrz7gUD1BxzXTilVBzgJDNJaX3jAMY/t7l2TDGKn+sdPDD4+cVUjatX6VxFSxxUVZQZKdu3651Yzdppq2rRx3Ug1a5qaH069tFsI4UiU1to+J1aqPdBUa/267X43oHr8bialVC4gTGsdoZR6A+iktW7wgHP1BfoC5MmTp/LixYv/835373oQEJCNgwezc+hQdo4fz0pUVBrSpNGUKBGGj08wPj7BlCsXQpYsUXb5m1NSups3yXb0KNmOHTM/jx/HIzwcgPs5cnD7uee4VqIE4ZUqEVq6NDFO0z9mH2FhYWRxlqagncm1iCPXIk79+vX3aa2rJOe19kwUzwPDtNZNbPf/D0Br/fVDjvcAbmqtE/1+X7p0aX3ixAmuXTMTd7ZtM2vADhwwg89p05oFwXXqxPW8OHyLITzcjC3s3m36x3bvNovcwPxBPj5mfKFGDXMrWhSUwtfXl3r16lkXtwORaxFHrkUcuRZxlFLJThT27HraC5RUShXFzGrqDLwS/wClVAGt9WXb3dbAsUed9OpVT559Fo4fN/czZIgbfK5d23yeOvQXiJgYszHPn3+apLBnj9nBLTLSPO/tbQaaBwwwf1ilSk64ak8I4Urslii01lFKqQHAb5jpsTO01keUUsMBP631SuAdpVRrIAq4CfR81HlDQ9NSsyZ0724SQ9WqDj4r6fJlkxRib3v3mrUMYDJa1aqmnnj16uYmm/MIIRyMXddRaK3XAmsTPPZZvN//D/i/xzlniRJhrFmTMvGluFu3zAKMvXvjbrEbTHh4mJlHnTubvZ6rV4dnnpGZSEIIhycrs5Pr9m0zMOLnF5ccYndqA7Nku25d02KoVs2MM2TKZFm4QgiRXJIokiI01CSFffvMzc8PTp40K5zBFHyqWhVef92MpFeubAroCSGEC5BEkVBwsJmBtH9/XGKInxQKFjSJ4JVXTHKoXNkJKwEKIUTSuXeiCAoyLYX9+83twIF/dx95e5tE0LWr+Vm5stRDEkK4HfdIFFrD33+blsKBA3G32DpIYCqlVqpkdhmqXNmsdJaWghBCuGCiCA83G+/4+5v1Cf7+5nb7tnnew8PMNmrQwCSD2Fv27NbFLIQQDsx5E4XWZjehgwf/fTt+3OxNCmYP5woVTNdRxYpm5lHZsrKATQghHoPTJYoM166ZjSEOHYJr1+Ke8PY2SeGll8zPChWgRAnZkU0IIZ6Q0yWK9MHBZmVzq1ZQvrxJCOXLQ86cVocmhBAuyekSRWjJkmZxmxBCiFQh/TJCCCESJYlCCCFEoiRRCCGESJQkCiGEEImSRCGEECJRkiiEEEIkShKFEEKIREmiEEIIkShJFEIIIRIliUIIIUSiJFEIIYRIlCQKIYQQiZJEIYQQIlGSKIQQQiRKEoUQQohESaIQQgiRKEkUQgghEiWJQgghRKLsmiiUUk2VUieUUqeVUoMf8HwGpdQi2/N7lFJF7BmPEEKIx2e3RKGU8gAmAM2A54AuSqnnEhz2GnBLa10CGAOMtFc8QgghkseeLYpqwGmt9Rmt9X1gIdAmwTFtgNm235cADZVSyo4xCSGEeExp7XjugsCFePcDgeoPO0ZrHaWUCgFyAdfjH6SU6gv0td2NUEoF2CVi55ObBNfKjcm1iCPXIo5cizilk/tCeyaKFKO1ngJMAVBK+Wmtq1gckkOQaxFHrkUcuRZx5FrEUUr5Jfe19ux6uggUinff2/bYA49RSqUFvIAbdoxJCCHEY7JnotgLlFRKFVVKpQc6AysTHLMS6GH7vT2wWWut7RiTEEKIx2S3rifbmMMA4DfAA5ihtT6ilBoO+GmtVwLTgTlKqdPATUwyeZQp9orZCcm1iCPXIo5cizhyLeIk+1oo+QIvhBAiMbIyWwghRKIkUQghhEiUwyYKKf8RJwnX4j2l1FGl1CGl1CalVGEr4kwNj7oW8Y5rp5TSSimXnRqZlGuhlOpo+7dxRCk1P7VjTC1J+H/kaaXUFqXUAdv/J82tiNPelFIzlFJBD1trpowfbNfpkFKqUpJOrLV2uBtm8PsvoBiQHjgIPJfgmLeASbbfOwOLrI7bwmtRH8hk+72fO18L23FZga3AbqCK1XFb+O+iJHAAyGG7n9fquC28FlOAfrbfnwPOWh23na5FHaASEPCQ55sD6wAF1AD2JOW8jtqikPIfcR55LbTWW7TWd213d2PWrLiipPy7APgCUzcsPDWDS2VJuRZ9gAla61sAWuugVI4xtSTlWmggm+13L+BSKsaXarTWWzEzSB+mDfCzNnYD2ZVSBR51XkdNFA8q/1HwYcdoraOA2PIfriYp1yK+1zDfGFzRI6+FrSldSGu9JjUDs0BS/l2UAkoppXYopXYrpZqmWnSpKynXYhjwqlIqEFgLvJ06oTmcx/08AZykhIdIGqXUq0AVoK7VsVhBKZUG+B7oaXEojiItpvupHqaVuVUpVU5rHWxlUBbpAszSWn+nlHoes36rrNY6xurAnIGjtiik/EecpFwLlFKNgE+A1lrriFSKLbU96lpkBcoCvkqps5g+2JUuOqCdlH8XgcBKrXWk1vpv4CQmcbiapFyL14DFAFrrXYAnpmCgu0nS50lCjpoopPxHnEdeC6VURWAyJkm4aj80POJaaK1DtNa5tdZFtNZFMOM1rbXWyS6G5sCS8v/IckxrAqVUbkxX1JlUjDG1JOVanAcaAiilnsUkimupGqVjWAl0t81+qgGEaK0vP+pFDtn1pO1X/sPpJPFajAayAL/YxvPPa61bWxa0nSTxWriFJF6L34AXlVJHgWjgQ621y7W6k3gt3gemKqUGYQa2e7riF0ul1ALMl4PctvGYoUA6AK31JMz4THPgNHAX6JWk87rgtRJCCJGCHLXrSQghhIOQRCGEECJRkiiEEEIkShKFEEKIREmiEEIIkShJFCLV2Kq5fhfv/gdKqWGpHINv7AI8pdRapVT2JzxfPaXU6hQJ7t/nfUoptSS5762UOmtbO/E477lEKVXsAY+XU0rNepxzCdciiUKkpgjg5cf9AItlW4GfYrTWzR2xnIVSKq3W+pLWun0qvmcZwENr/Z8FeVrrw4C3Uurp1IpHOBZJFCI1RWHKPQ9K+IRSqohSanO8PTWetj0+Syk1SSm1Bxhluz/RVuTujO1b9Qyl1LH433ptx/jZ9mH4/EHBxH7rVkq9qZTyt93+VkptsT3/olJql1Jqv1LqF6VUFtvjTZVSx5VS+4GXH3Lu3bYP39j7vkqpKkqparZzHlBK7VRKlbY931MptVIptRnYZLseAfGuzTZbHPuVUi/Ee6tsSqk1yuzFMEmZelcJY3lVKfWn7e+brJTyeEDIXYEVD/pbbFbhootaxaNJohCpbQLQVSnlleDxH4HZWuvywDzgh3jPeQMvaK3fs93PATyPSTgrgTFAGaCcUsrHdswnWusqQHmgrlKq/MMC0lpP0lr7AFUx9ZG+t7V6hgCNtNaVAD/gPaWUJzAVaAVUBvI/5LSLgI4AypRxLmArJXIcqK21rgh8BnwV7zWVgPZa64RFHYOAxrY4OiW4NtUwlVCfA4qTIHHZylV0Amra/sZoTFJIqCaw7yF/C5i/v3YizwsXJolCpCqt9W3gZ+CdBE89D8TuwDYHqBXvuV+01tHx7q+ylV84DFzVWh+2VQE9AhSxHdPR9o3/ACaJPJeE8MZhaoatwhQUfA7YoZTyx9QVKww8A/yttT5li2HuQ861GFODDEzCiB1v8MKUWgkgLsHF2qi1ftBeAukw5ScOA78k+Fv+tO3DEA0s4N/XDUx9o8rAXtvf0RCzwU9CBUi89lEQ8FQizwsX5pC1noTLGwvsB2Ym8fg7Ce7HVseNifd77P20SqmiwAdAVa31LVuXlGdib6CU6olJBANiH8J8cHdJcJxPUgLWWl9USt2wtWQ6AW/anvoC2KK1bqvM9r2+8V6W8O+MNQi4ClTAfLmLvyFTwho8Ce8rTEvt/x4R8j1s10gp1RZTIwjgdVtLyNN2jHBD0qIQqc72rXkxpvRzrJ3E9YF3BbY9wVtkw3zohiil8gHNEjtYKVUZk1hejbc/wW6gplKqhO2YzEqpUpiuoyJKqeK247r854RxFgEfAV5a60O2x7yIK+vcM4l/jxdw2RZbN0zhu1jVlKmamgaTkLYneO0moL1SKq/t78ipHryn+jGgBIDWepnW2sd2i628Wwp44D7MwvVJohBW+Y5/7wfwNtBLKXUI82H4bnJPrLU+iOlyOo7pztrxiJcMAHICW2wDvtO01tcwH+QLbDHtAp7RWocDfYE1tq6txMq6L8Ekv8XxHhsFfK2UOkDSW/Q/AT2UUgcxXV/xWx57gfGYD/q/gWXxX6i1PooZa9lg+zs2YrqZElqDrST5Q9S3HSPckFSPFUKglMoIbMEMekcneC4D8AdQy7btsHAzkiiEEAAopZoAx7TW5xM8XhIoqLX2tSQwYTlJFEIIIRIlYxRCCCESJYlCCCFEoiRRCCGESJQkCiGEEImSRCGEECJR/w/oVzkgDMP/4wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "bs = np.linspace(50.0,100.0,100)\n", "hs = np.linspace(1.0,3.0,100)\n", "xplot = np.linspace(0.0,1.0,100)\n", "Ls = 400.0\n", "#\n", "M = []\n", "for b,h in zip(bs,hs):\n", " M.append(Mass([b,h,Ls,100.0,0.1]))\n", "plt.plot(xplot,M,'r',label='rhof = 0.1')\n", "M = []\n", "for b,h in zip(bs,hs):\n", " M.append(Mass([b,h,Ls,100.0,0.25]))\n", "plt.plot(xplot,M,'b',label='rhof = 0.25')\n", "M = []\n", "for b,h in zip(bs,hs):\n", " M.append(Mass([b,h,Ls,100.0,0.5]))\n", "plt.plot(xplot,M,'g',label='rhof = 0.5')\n", "plt.xlabel('Normalized variable (-)')\n", "plt.ylabel('Mass (kg)')\n", "plt.xlim([0.0,1.0])\n", "plt.ylim([0.0,3.0])\n", "plt.legend()\n", "plt.grid()\n" ] }, { "cell_type": "markdown", "metadata": { "nteract": { "transient": { "deleting": false } } }, "source": [ "If we now plot the maximum force and energy absorbed for the same components as in the previous cell, we see that these quantities are also smooth functions. The local minima problem appears because of the constraints which complexify the problem at hand.\n", "\n", "Even if constraints and bounds are common in optimization they can lead to the local minima we faced in this example. In our case the variation of mass in between the components is rather and could be neglected otherwise we will have to relax or tighten the constraints until we no longer have local minima. An alternative will be to employ a global optimizer." ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T13:15:07.853Z", "iopub.status.busy": "2021-04-12T13:15:07.848Z", "iopub.status.idle": "2021-04-12T13:15:08.012Z", "shell.execute_reply": "2021-04-12T13:15:08.020Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": true }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "bs = np.linspace(50.0,100.0,100)\n", "hs = np.linspace(1.0,3.0,100)\n", "xplot = np.linspace(0.0,1.0,100)\n", "Ls = 400.0\n", "#\n", "fig,axs = plt.subplots(1,2)\n", "F = []\n", "E = []\n", "for b,h in zip(bs,hs):\n", " F.append(get_Fmax([b,h,Ls,100.0,0.1]))\n", " E.append(get_E([b,h,Ls,100.0,0.1])) \n", "axs[0].plot(xplot,F,'r',label='rhof = 0.1')\n", "axs[1].plot(xplot,E,'r')\n", "F = []\n", "E = []\n", "for b,h in zip(bs,hs):\n", " F.append(get_Fmax([b,h,Ls,100.0,0.25]))\n", " E.append(get_E([b,h,Ls,100.0,0.25])) \n", "axs[0].plot(xplot,F,'b',label='rhof = 0.25')\n", "axs[1].plot(xplot,E,'b')\n", "F = []\n", "E = []\n", "for b,h in zip(bs,hs):\n", " F.append(get_Fmax([b,h,Ls,100.0,0.5]))\n", " E.append(get_E([b,h,Ls,100.0,0.5])) \n", "axs[0].plot(xplot,F,'g',label='rhof = 0.5')\n", "axs[1].plot(xplot,E,'g')\n", "axs[0].plot([0.0,1.0],[70.0,70.0],'k',label='Constraints')\n", "axs[1].plot([0.0,1.0],[7.0,7.0],'k')\n", "axs[0].set_xlabel('Normalized variable (-)')\n", "axs[1].set_xlabel('Normalized variable (-)')\n", "axs[1].set_ylabel('Energy (kJ)')\n", "axs[0].set_ylabel('Maximum force (kN)')\n", "#plt.xlim([0.0,1.0])\n", "#plt.ylim([0.0,3.0])\n", "plt.tight_layout()\n", "axs[0].legend()\n", "axs[0].grid()\n", "axs[1].grid()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2021-04-12T11:31:24.145Z", "iopub.status.busy": "2021-04-12T11:31:24.141Z", "iopub.status.idle": "2021-04-12T11:31:24.154Z", "shell.execute_reply": "2021-04-12T11:31:24.157Z" }, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.63871349867133 121.92401976137018\n", "6.931409602679768\n", "68.01512445334018\n", "0.41192525354589\n" ] } ], "source": [ "print(get_E([63.63,1.09,190.89,255.86,0.37]))\n", "print(get_Fmax([63.63,1.09,190.89,255.86,0.37]))\n", "print(Mass([63.63,1.09,190.89,255.86,0.37]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": false, "source_hidden": false }, "nteract": { "transient": { "deleting": false } } }, "outputs": [], "source": [] } ], "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.9.2" }, "nteract": { "version": "0.28.0" } }, "nbformat": 4, "nbformat_minor": 0 }