{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"# Estimation models with scaling laws and linear regression\n",
"\n",
"*Written by Marc Budinger (INSA Toulouse) and Scott Delbecq (ISAE-SUPAERO), Toulouse, France*\n",
"\n",
"The estimation models calculate the component characteristics requested for their selection without requiring a detailed design. Scaling laws are particularly suitable for this purpose. This notebook illustrates the approach with roller bearings used as thrust bearing in the linear Electro-mechanical Actuator. \n",
"\n",
"*Roller bearing in face to face configuration (SKF) :*\n",
"\n",
"\n",
"\n",
"Validation of the obtained scaling laws is realized thanks linear regression on catalog data. \n",
"\n",
"The [following article](https://hal.archives-ouvertes.fr/hal-00712986/document) give more details and other models for electromechanical actuators: \n",
">*Budinger, M., Liscouët, J., Hospital, F., & Maré, J. C. (2012). Estimation models for the preliminary design of electromechanical actuators. Proceedings of the Institution of Mechanical Engineers, Part G: Journal of Aerospace Engineering, 226(3), 243-259.* \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scaling laws\n",
"\n",
"#### Assumptions and notation\n",
"The scaling laws use two key modelling assumptions:\n",
"1. All material properties are assumed to be identical to those of the component used for reference: $E^* = \\rho^* = ... = 1$\n",
"2. The ratio of all the lengths of the considered component to all the lengths of the reference component is constant (geometric similarity): $D^* = T^*= ... = d^*$\n",
"\n",
"For mechanical components, the mechanical stresses in the materials must be kept below elastic, fatigue, or contact pressure (Hertz) limits. Taking the same stress limit for a full product range yields: $ F^* = d^{*2}$\n",
"\n",
"*Notation*: The x* scaling ratio of a given parameter is calculated as $x^*=\\frac{x}{x_{ref}}$ where $x_{ref}$ is the parameter taken as the reference and $x$ the parameter under study.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Axial maximal force estimation\n",
"Propose a scaling law which links the Maximal axial force. Estimate the maximal force for a bearing of 90 mm external diameter knowing the following reference component: \n",
"$D_{ref} = 140 mm$ \n",
"$F_{axial,ref} = 475 kN$ "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The estimated axial force is: 196.30 kN\n",
"The estimation model is: F_axial_max = 2.42e-02.D^2\n"
]
}
],
"source": [
"D_ref = 140 # [mm] Reference diameter\n",
"F_axial_ref = 475 # [kN] Reference max axial force\n",
"\n",
"print(\"The estimated axial force is: %.2f kN\" % (F_axial_ref * (90 / D_ref) ** 2))\n",
"print(\"The estimation model is: F_axial_max = %.2e.D^2\" % (F_axial_ref * (1 / D_ref) ** 2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Validation with linear regression\n",
"\n",
"We will validate the scaling laws obtained with regressions on catalog data. \n",
"\n",
"#### Cleaning data\n",
"\n",
"The first step is to import catalog data stored in a .csv file. We use for that functions from [Panda](https://pandas.pydata.org/index.html) package (with here an [introduction to panda](https://jakevdp.github.io/PythonDataScienceHandbook/03.00-introduction-to-pandas.html)). "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
d_
\n",
"
D
\n",
"
T
\n",
"
C
\n",
"
Co
\n",
"
Y0
\n",
"
Fa axial static
\n",
"
Pu
\n",
"
Wnom
\n",
"
Wmax
\n",
"
Mass
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
25
\n",
"
62
\n",
"
36.5
\n",
"
64.4
\n",
"
80
\n",
"
0.8
\n",
"
100
\n",
"
8.65
\n",
"
6000
\n",
"
11000
\n",
"
0.55
\n",
"
\n",
"
\n",
"
1
\n",
"
30
\n",
"
72
\n",
"
41.5
\n",
"
80.9
\n",
"
100
\n",
"
0.8
\n",
"
125
\n",
"
11.40
\n",
"
5300
\n",
"
9500
\n",
"
0.85
\n",
"
\n",
"
\n",
"
2
\n",
"
35
\n",
"
80
\n",
"
45.5
\n",
"
105.0
\n",
"
134
\n",
"
0.8
\n",
"
168
\n",
"
15.60
\n",
"
4500
\n",
"
8500
\n",
"
1.10
\n",
"
\n",
"
\n",
"
3
\n",
"
40
\n",
"
90
\n",
"
50.5
\n",
"
146.0
\n",
"
163
\n",
"
0.8
\n",
"
204
\n",
"
19.00
\n",
"
4500
\n",
"
7500
\n",
"
1.50
\n",
"
\n",
"
\n",
"
4
\n",
"
45
\n",
"
100
\n",
"
54.5
\n",
"
180.0
\n",
"
204
\n",
"
0.8
\n",
"
255
\n",
"
24.50
\n",
"
4000
\n",
"
6700
\n",
"
2.00
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" d_ D T C Co Y0 Fa axial static Pu Wnom Wmax Mass\n",
"0 25 62 36.5 64.4 80 0.8 100 8.65 6000 11000 0.55\n",
"1 30 72 41.5 80.9 100 0.8 125 11.40 5300 9500 0.85\n",
"2 35 80 45.5 105.0 134 0.8 168 15.60 4500 8500 1.10\n",
"3 40 90 50.5 146.0 163 0.8 204 19.00 4500 7500 1.50\n",
"4 45 100 54.5 180.0 204 0.8 255 24.50 4000 6700 2.00"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Panda package Importation\n",
"import os.path as pth\n",
"import pandas as pd\n",
"\n",
"# Read the .csv file with bearing data\n",
"file_path = \"https://raw.githubusercontent.com/SizingLab/sizing_course/main/laboratories/Lab-vega/assets/data/bearings.csv\"\n",
"df = pd.read_csv(file_path, sep=\";\")\n",
"# Print the head (first lines of the file)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we display these data in a scatter plot, we see that some components are not optimized in terms of axial effort."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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9957D/fu3cPIkSORn5+Pzp07Y8+ePbC1tdUus379eowdOxbdunWDhYUFBgwYgCVLlhhjl4iIiMjEGDXsAMCrr76KV199tdr5MpkM8fHxiI+Pr3YZV1dXbNiwwRDlERERUT1n9MdFEBERERkSww4RERGZNYYdIiIiMmsMO0RERGTWGHaIiIjIrDHsEBERkVlj2CEiIiKzxrBDREREZo1hh4iIiMwaww4RERGZNYYdIiIiMmsMO0RERGTWGHaIiIjIrDHsEBERkVlj2CEiIiKzxrBDREREZo1hh4iIiMwaww4RERGZNSuxK5SWluLEiRO4fv06iouL8cQTTyA4OBi+vr6GqI+IiIioVvQOO7/88gs+++wzbN++HUqlEs7OzrCzs0NeXh5KS0vRsmVLjBw5EqNHj0ajRo0MWTMREZFBZWYCKSmAvz/g7W3saqi29DqN1adPH7z55pto0aIF9u3bh7t37+L27dvIzMxEcXExUlJSMH36dBw4cABPP/00EhMTDV03ERGRQSQkAD4+QFiY5ntCgrErotrS68hOr169sHnzZsjl8irnt2zZEi1btkR0dDQuXryIrKwsSYskIiKqC5mZwMiRgFqtea1WA6NGAZGRPMJTn+kVdkaNGqX3BgMDAxEYGFjjgoiIiIwlJeVB0KmgUgGpqQw79RmvxiIiIvoff3/A4qG/jJaWgJ+fceohaeg9QNnX1xcymeyRy8hkMqSlpdW6KCIiImPw9gZWrdKculKpNEFn5Uoe1anv9A47EyZMqHbetWvXsHLlSpSWlkpRExERkdHExGjG6KSmao7oMOjUf3qHnXfeeafStLy8PMyZMwfLly9HSEgI5s+fL2lxRERExuDtzZBjTkTfVBAA7t+/j0WLFmHhwoXw8fHBli1b8Morr0hdGxEREVGtiQo7KpUKX375JeLi4mBra4slS5Zg8ODBjx3LQ0RERGQseoed77//HtOnT0d+fj4++OADjBkzBtbW1oasjYiIiKjW9A47AwcOhJ2dHQYNGoTr169j6tSpVS63aNEiyYojIiIiqi29w85LL7302EvLeTqLiIiITI3eYefQoUMGLIOIiIjIMETfQfn8+fPVztu6dWttaiEiIiKSnOiwExkZifT09ErTN2/ejKioKEmKIiIiIpKK6LDzj3/8A+Hh4cjOztZO++677zB06FCsXbtWytqIiIiIak30TQXj4uKQl5eH8PBwHDlyBHv27ME//vEP/Oc//8GAAQMMUSMRERFRjdXoDspLly5FVFQUQkNDcfPmTXz77bfo27ev1LURERER1ZpeYWfbtm2VpvXv3x8///wzBg0aBJlMpl2mT58+0lZIREREVAt6hZ1+/fpVO++rr77CV199BUBznx2VSiVJYURERERS0CvsqNVqQ9dBREREZBCir8YiIiIiqk/0CjsbN27Ue4M3btzAL7/8UuOCiIiIiKSkV9hZvnw5WrdujQULFuDSpUuV5hcUFGDXrl1466238Oyzz+L27duSF0pERERUE3qN2Tl8+DC2bduGpUuXYtq0aXBwcICHhwdsbW1x584dZGdno0mTJhg2bBjOnz8PDw8PQ9dNREREpBe977PTp08f9OnTB3/99ReOHj2K69ev4/79+2jSpAmCg4MRHBwMCwsOASIiIiLTIvqmgk2aNHnkpehEREREpoSHYoiIiMisMewQERGRWTNq2Jk9ezZkMpnOV0BAgHZ+SUkJYmNj4ebmBkdHRwwYMAA5OTk628jIyECvXr1gb28Pd3d3TJkyBeXl5XW9K0RERGSiavQgUCm1adMG+/fv1762snpQ0sSJE7Fz505s2rQJzs7OGDt2LPr376+9j49KpUKvXr3g6emJY8eOISsrC0OHDoVcLsfHH39c5/tCREREpqfGYaesrAzp6el46qmndAKK6AKsrODp6VlpekFBARISErBhwwaEhYUBANasWYPWrVvj+PHjCA0Nxb59+3Dx4kXs378fHh4eaN++PebMmYP3338fs2fPhrW1dZXvWVpaitLSUu3rwsJCAIBSqYRSqdS79oplxaxDVWMvpcV+Soe9lBb7KR32Uv99F51SiouLMW7cOKxbtw4AcPXqVbRs2RLjxo3Dk08+ialTp4raXkpKCry8vGBrawuFQoG5c+eiefPmSE5OhlKpRHh4uHbZgIAANG/eHElJSQgNDUVSUhKCgoJ07usTGRmJMWPG4MKFCwgODq7yPefOnYu4uLhK0/ft2wd7e3tR9QNAYmKi6HWoauyltNhP6bCX0mI/pdOQe1lcXKzXcqLDzrRp03D27FkcOnQIPXr00E4PDw/H7NmzRYWdkJAQrF27Fq1atUJWVhbi4uLw4osv4vz588jOzoa1tTVcXFx01vHw8EB2djYAIDs7u9INDCteVyxT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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# import plot functions from the mtplotlib package\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# plot\n",
"g, ax = plt.subplots(1, 1, sharex=True)\n",
"ax.plot(df[\"D\"], df[\"Fa axial static\"], \".b\")\n",
"ax.set_ylabel(\"Axial maximal static force (kN)\")\n",
"ax.set_xlabel(\"External diameter (mm)\")\n",
"ax.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is interesting to clean this data in order to keep only the components representative of the problem considered. For this purpose, Pareto filtering is used where only dominant components are kept. A componant dominate another if the first is not inferior to the second in all selected objectives. Here the objective is small diameter and high maximum static force.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
d_
\n",
"
D
\n",
"
T
\n",
"
C
\n",
"
Co
\n",
"
Y0
\n",
"
Fa axial static
\n",
"
Pu
\n",
"
Wnom
\n",
"
Wmax
\n",
"
Mass
\n",
"
Dominated
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
25
\n",
"
62
\n",
"
36.5
\n",
"
64.4
\n",
"
80
\n",
"
0.8
\n",
"
100
\n",
"
8.65
\n",
"
6000
\n",
"
11000
\n",
"
0.55
\n",
"
False
\n",
"
\n",
"
\n",
"
1
\n",
"
30
\n",
"
72
\n",
"
41.5
\n",
"
80.9
\n",
"
100
\n",
"
0.8
\n",
"
125
\n",
"
11.40
\n",
"
5300
\n",
"
9500
\n",
"
0.85
\n",
"
False
\n",
"
\n",
"
\n",
"
2
\n",
"
35
\n",
"
80
\n",
"
45.5
\n",
"
105.0
\n",
"
134
\n",
"
0.8
\n",
"
168
\n",
"
15.60
\n",
"
4500
\n",
"
8500
\n",
"
1.10
\n",
"
False
\n",
"
\n",
"
\n",
"
3
\n",
"
40
\n",
"
90
\n",
"
50.5
\n",
"
146.0
\n",
"
163
\n",
"
0.8
\n",
"
204
\n",
"
19.00
\n",
"
4500
\n",
"
7500
\n",
"
1.50
\n",
"
False
\n",
"
\n",
"
\n",
"
4
\n",
"
45
\n",
"
100
\n",
"
54.5
\n",
"
180.0
\n",
"
204
\n",
"
0.8
\n",
"
255
\n",
"
24.50
\n",
"
4000
\n",
"
6700
\n",
"
2.00
\n",
"
False
\n",
"
\n",
"
\n",
"
5
\n",
"
50
\n",
"
90
\n",
"
43.5
\n",
"
130.0
\n",
"
183
\n",
"
1.6
\n",
"
114
\n",
"
20.80
\n",
"
4500
\n",
"
7500
\n",
"
1.10
\n",
"
True
\n",
"
\n",
"
\n",
"
6
\n",
"
50
\n",
"
110
\n",
"
58.5
\n",
"
208.0
\n",
"
240
\n",
"
0.8
\n",
"
300
\n",
"
28.50
\n",
"
3600
\n",
"
6000
\n",
"
2.60
\n",
"
False
\n",
"
\n",
"
\n",
"
7
\n",
"
55
\n",
"
90
\n",
"
54.0
\n",
"
180.0
\n",
"
270
\n",
"
2.2
\n",
"
123
\n",
"
30.50
\n",
"
4500
\n",
"
7000
\n",
"
1.35
\n",
"
True
\n",
"
\n",
"
\n",
"
8
\n",
"
55
\n",
"
120
\n",
"
63.0
\n",
"
209.0
\n",
"
275
\n",
"
0.8
\n",
"
344
\n",
"
33.50
\n",
"
3000
\n",
"
5600
\n",
"
3.30
\n",
"
False
\n",
"
\n",
"
\n",
"
9
\n",
"
60
\n",
"
95
\n",
"
46.0
\n",
"
163.0
\n",
"
245
\n",
"
1.6
\n",
"
153
\n",
"
27.00
\n",
"
4300
\n",
"
6700
\n",
"
1.90
\n",
"
True
\n",
"
\n",
"
\n",
"
10
\n",
"
60
\n",
"
130
\n",
"
67.0
\n",
"
246.0
\n",
"
335
\n",
"
0.8
\n",
"
419
\n",
"
40.50
\n",
"
2800
\n",
"
5300
\n",
"
4.10
\n",
"
False
\n",
"
\n",
"
\n",
"
11
\n",
"
65
\n",
"
120
\n",
"
49.5
\n",
"
228.0
\n",
"
270
\n",
"
1.6
\n",
"
169
\n",
"
32.50
\n",
"
3600
\n",
"
5600
\n",
"
1.20
\n",
"
True
\n",
"
\n",
"
\n",
"
12
\n",
"
65
\n",
"
140
\n",
"
72.0
\n",
"
281.0
\n",
"
380
\n",
"
0.8
\n",
"
475
\n",
"
47.50
\n",
"
2600
\n",
"
4800
\n",
"
5.05
\n",
"
False
\n",
"
\n",
"
\n",
"
13
\n",
"
70
\n",
"
110
\n",
"
50.0
\n",
"
172.0
\n",
"
305
\n",
"
1.6
\n",
"
191
\n",
"
34.50
\n",
"
3400
\n",
"
5600
\n",
"
1.80
\n",
"
True
\n",
"
\n",
"
\n",
"
14
\n",
"
70
\n",
"
110
\n",
"
62.0
\n",
"
220.0
\n",
"
400
\n",
"
2.5
\n",
"
160
\n",
"
45.50
\n",
"
3400
\n",
"
5600
\n",
"
2.40
\n",
"
True
\n",
"
\n",
"
\n",
"
15
\n",
"
70
\n",
"
150
\n",
"
76.0
\n",
"
319.0
\n",
"
440
\n",
"
0.8
\n",
"
550
\n",
"
54.00
\n",
"
2400
\n",
"
4500
\n",
"
6.15
\n",
"
False
\n",
"
\n",
"
\n",
"
16
\n",
"
75
\n",
"
115
\n",
"
62.0
\n",
"
233.0
\n",
"
455
\n",
"
2.2
\n",
"
207
\n",
"
52.00
\n",
"
3200
\n",
"
5300
\n",
"
2.40
\n",
"
True
\n",
"
\n",
"
\n",
"
17
\n",
"
75
\n",
"
125
\n",
"
74.0
\n",
"
303.0
\n",
"
530
\n",
"
1.6
\n",
"
331
\n",
"
63.00
\n",
"
3000
\n",
"
5000
\n",
"
3.80
\n",
"
True
\n",
"
\n",
"
\n",
"
18
\n",
"
75
\n",
"
130
\n",
"
54.5
\n",
"
238.0
\n",
"
355
\n",
"
1.6
\n",
"
222
\n",
"
41.50
\n",
"
3000
\n",
"
5000
\n",
"
2.85
\n",
"
True
\n",
"
\n",
"
\n",
"
19
\n",
"
75
\n",
"
130
\n",
"
66.5
\n",
"
275.0
\n",
"
425
\n",
"
1.6
\n",
"
266
\n",
"
49.00
\n",
"
3000
\n",
"
5000
\n",
"
3.40
\n",
"
True
\n",
"
\n",
"
\n",
"
20
\n",
"
80
\n",
"
125
\n",
"
58.0
\n",
"
233.0
\n",
"
430
\n",
"
1.6
\n",
"
269
\n",
"
49.00
\n",
"
3000
\n",
"
5000
\n",
"
2.65
\n",
"
True
\n",
"
\n",
"
\n",
"
21
\n",
"
80
\n",
"
140
\n",
"
70.5
\n",
"
319.0
\n",
"
490
\n",
"
1.6
\n",
"
306
\n",
"
57.00
\n",
"
2800
\n",
"
4500
\n",
"
4.25
\n",
"
True
\n",
"
\n",
"
\n",
"
22
\n",
"
80
\n",
"
170
\n",
"
85.0
\n",
"
380.0
\n",
"
530
\n",
"
0.8
\n",
"
663
\n",
"
64.00
\n",
"
2200
\n",
"
4000
\n",
"
8.75
\n",
"
False
\n",
"
\n",
"
\n",
"
23
\n",
"
85
\n",
"
130
\n",
"
58.0
\n",
"
238.0
\n",
"
450
\n",
"
1.6
\n",
"
281
\n",
"
51.00
\n",
"
2800
\n",
"
4800
\n",
"
2.80
\n",
"
True
\n",
"
\n",
"
\n",
"
24
\n",
"
85
\n",
"
130
\n",
"
72.0
\n",
"
308.0
\n",
"
620
\n",
"
2.2
\n",
"
282
\n",
"
69.50
\n",
"
2800
\n",
"
4800
\n",
"
3.55
\n",
"
True
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" d_ D T C Co Y0 Fa axial static Pu Wnom Wmax Mass \\\n",
"0 25 62 36.5 64.4 80 0.8 100 8.65 6000 11000 0.55 \n",
"1 30 72 41.5 80.9 100 0.8 125 11.40 5300 9500 0.85 \n",
"2 35 80 45.5 105.0 134 0.8 168 15.60 4500 8500 1.10 \n",
"3 40 90 50.5 146.0 163 0.8 204 19.00 4500 7500 1.50 \n",
"4 45 100 54.5 180.0 204 0.8 255 24.50 4000 6700 2.00 \n",
"5 50 90 43.5 130.0 183 1.6 114 20.80 4500 7500 1.10 \n",
"6 50 110 58.5 208.0 240 0.8 300 28.50 3600 6000 2.60 \n",
"7 55 90 54.0 180.0 270 2.2 123 30.50 4500 7000 1.35 \n",
"8 55 120 63.0 209.0 275 0.8 344 33.50 3000 5600 3.30 \n",
"9 60 95 46.0 163.0 245 1.6 153 27.00 4300 6700 1.90 \n",
"10 60 130 67.0 246.0 335 0.8 419 40.50 2800 5300 4.10 \n",
"11 65 120 49.5 228.0 270 1.6 169 32.50 3600 5600 1.20 \n",
"12 65 140 72.0 281.0 380 0.8 475 47.50 2600 4800 5.05 \n",
"13 70 110 50.0 172.0 305 1.6 191 34.50 3400 5600 1.80 \n",
"14 70 110 62.0 220.0 400 2.5 160 45.50 3400 5600 2.40 \n",
"15 70 150 76.0 319.0 440 0.8 550 54.00 2400 4500 6.15 \n",
"16 75 115 62.0 233.0 455 2.2 207 52.00 3200 5300 2.40 \n",
"17 75 125 74.0 303.0 530 1.6 331 63.00 3000 5000 3.80 \n",
"18 75 130 54.5 238.0 355 1.6 222 41.50 3000 5000 2.85 \n",
"19 75 130 66.5 275.0 425 1.6 266 49.00 3000 5000 3.40 \n",
"20 80 125 58.0 233.0 430 1.6 269 49.00 3000 5000 2.65 \n",
"21 80 140 70.5 319.0 490 1.6 306 57.00 2800 4500 4.25 \n",
"22 80 170 85.0 380.0 530 0.8 663 64.00 2200 4000 8.75 \n",
"23 85 130 58.0 238.0 450 1.6 281 51.00 2800 4800 2.80 \n",
"24 85 130 72.0 308.0 620 2.2 282 69.50 2800 4800 3.55 \n",
"\n",
" Dominated \n",
"0 False \n",
"1 False \n",
"2 False \n",
"3 False \n",
"4 False \n",
"5 True \n",
"6 False \n",
"7 True \n",
"8 False \n",
"9 True \n",
"10 False \n",
"11 True \n",
"12 False \n",
"13 True \n",
"14 True \n",
"15 False \n",
"16 True \n",
"17 True \n",
"18 True \n",
"19 True \n",
"20 True \n",
"21 True \n",
"22 False \n",
"23 True \n",
"24 True "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This function tests if a component is dominated\n",
"# return 0 if non dominated, the number of domination other else\n",
"# inputs :\n",
"# x_,y_ : the component's characteristics to test\n",
"# X_,Y_ : the data set characteristics\n",
"def dominated(x_, y_, X_, Y_):\n",
" compteur = 0\n",
" for x, y in zip(X_, Y_):\n",
" # x>x_ for small diameter and y>y_ for high force\n",
" if (x < x_) and (y > y_):\n",
" compteur += 1\n",
" return compteur\n",
"\n",
"\n",
"# We create here a new row which will give the information of component dominated or not\n",
"df[\"Dominated\"] = False\n",
"for i in range(len(df[\"D\"])):\n",
" if (\n",
" dominated(\n",
" df.loc[i, \"D\"],\n",
" df.loc[i, \"Fa axial static\"],\n",
" df[\"D\"].values,\n",
" df[\"Fa axial static\"].values,\n",
" )\n",
" > 0\n",
" ):\n",
" df.loc[i, \"Dominated\"] = True\n",
"# Print the new table\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Pareto front component are now ploted in red. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AM7OzsjLywMA9OjRA6+99pqobW3atAmnTp1CcnJypXk5OTmwsbGBq6ur3nSlUomcnBzdMn8POhXzK+ZVZ8GCBVXeAHHfvn1wcHAQtQ8AkJCQIHodqhp7KS32UzrspbTYT+k05F5W9USHqogOOy1btkRGRgZ8fX3RunVrfPvtt+jSpQu2b99eKZg8zO+//47XX38dCQkJsLOzE1tGrcycORNTp07VvS4oKEDz5s0REREBZ2dng7ejVquRkJCAvn378uq0WmIvpcV+Soe9lBb7KR32EgZfGCU67IwdOxZnzpxBz549MWPGDAwcOBCffPIJ1Go1li5davB2UlJScOPGDTz55JO6aRqNBkeOHMEnn3yCvXv3orS0FPn5+XohKjc3F56engAAT09PnDx5Um+7FVdrVSxTFVtbW9ja2laarlAoavSBqel6VBl7KS32UzrspbTYT+k05F4aut+iw86UKVN0P4eHh+PSpUtISUlBQEBApaupHqZPnz44e/as3rSxY8eidevWeOutt9C8eXMoFAocOHAAw4YNAwBcvnwZmZmZupsXqlQqvP/++7hx4wY8PDwAlA/nOTs7IygoSOyuERERkQUSHXa+/PJLvPjii7qRET8/P/j5+aG0tBRffvklRo8ebdB2GjVqhHbt2ulNc3R0hLu7u256dHQ0pk6dCjc3Nzg7O2PixIlQqVQIDQ0FAERERCAoKAijRo3C4sWLkZOTg1mzZiE2NrbKkRsiIiJqeERfej527Fjcvn270vQ7d+5g7NixkhRVYdmyZXj22WcxbNgwPPXUU/D09MSWLVt08+VyOXbs2AG5XA6VSoWXX34Zo0ePxrx58yStg4iIiOovyZ56npWVpfe8rJo4dOiQ3ms7OzusXLkSK1eurHYdPz8/7Nq1q1bvS0RERJbL4LATHByse+p5nz59YG19f1WNRoOMjAz069fPKEUSERER1ZTBYWfIkCEAgNOnTyMyMhJOTk66eRVPPa84kZiIiIjIXBgcdt59910AQIsWLTB8+HCeAExERET1gugTlHv37o2bN2/qXp88eRKTJ0/G2rVrJS2MiIiISAqiw85LL72EgwcPAih/JEN4eDhOnjyJt99+m1dBERERkdkRHXbOnTuHLl26AAC+/fZbtG/fHsePH8eGDRuwfv16qesjIiIiqhXRYUetVuvO19m/fz8GDRoEoPyJ5NnZ2dJWR0RERFRLosNO27ZtsXr1aiQmJiIhIUF3ufn169fh7u4ueYFEREREtSE67CxatAhr1qxBr169MGLECDzxxBMAgG3btukObxERERGZC9F3UO7Vqxf+/PNPFBQUoHHjxrrpMTExcHBwkLQ4IiIiotoSHXaA8mdS/T3oAOX33yEiIiIyN6IPYxERERHVJww7REREZNEYdoiIiMiiMewQERGRRTPoBOXly5cbvMFJkybVuBgiIiIiqRkUdpYtW2bQxmQyGcMOERERmRWDwk5GRoax6yAiIiIyCp6zQ0RERBatRjcVzMrKwrZt25CZmYnS0lK9eUuXLpWkMCIiIiIpiA47Bw4cwKBBg9CyZUtcunQJ7dq1w9WrVyEIAp588klj1EhERERUY6IPY82cORNvvPEGzp49Czs7O3z33Xf4/fff0bNnTzz//PPGqJGIiIioxkSHnYsXL2L06NEAAGtra9y7dw9OTk6YN28eFi1aJHmBRERERLUhOuw4OjrqztPx8vJCenq6bt6ff/4pXWVERGYgOzkLBT9kIjs5y9SlEFENiQ47oaGhOHr0KADgmWeewbRp0/D+++9j3LhxCA0NlbxAIiJTSRwTh2bdAzBq3SQ06x6AxDFxpi6JiGpA9AnKS5cuRWFhIQBg7ty5KCwsxDfffIPAwEBeiUVEFiM7OQvd4mMghxYAIIcWqvjxyI6NhFeIj4mrIyIxRIedli1b6n52dHTE6tWrJS2IiMgc5CSmwut/QaeCNTTIPZbGsENUz9ToPjsVCgsLodXq/zJwdnauVUFERObAMywQGljpRnYAoAxyKLsHmLAqIqoJ0efsZGRkYMCAAXB0dISLiwsaN26Mxo0bw9XVFY0bNzZGjUREdc4rxAfHo9aiDHIA5UEnKWoNR3WI6iHRIzsvv/wyBEHAF198AaVSCZlMZoy6iIhMLmx9NDJjeuNw3A70jH4WYd38TV0SEdWA6LBz5swZpKSkoFWrVsaoh4jIrHiF+MD5pi9HdIjqMdGHsUJCQvD7778boxYiogYhKws4eLD8OxEZn+iRnc8//xyvvvoq/vjjD7Rr1w4KhUJvfocOHSQrjojI0sTFATExgFYLWFkBa9cC0dGmrorIsokOOzdv3kR6ejrGjh2rmyaTySAIAmQyGTQajaQFEhFZiqys+0EHKP8+fjwQGQn48CgZkdGIDjvjxo1DcHAwvv76a56gTEQkQmrq/aBTQaMB0tIYdoiMSXTYuXbtGrZt24aAAN5rgohIjMDA8kNXfw88cjnAX6dExiX6BOXevXvjzJkzxqiFiMii+fiUn6MjL791D+RyYM0ajuoQGZvokZ2BAwdiypQpOHv2LNq3b1/pBOVBgwZJVhwRkaWJji4/RyctrXxEh0GHyPhEh51XX30VADBv3rxK83iCMhHRo/n4MOQQ1SXRYefBZ2ERERERmTPR5+wQERER1ScGjewsX74cMTExsLOzw/Llyx+67KRJkyQpjIiIiEgKBoWdZcuWYeTIkbCzs8OyZcuqXU4mkzHsEBERkVkxKOxkZGRU+TMRERGRuRN9zk5xcXG187Kzs2tVDBEREZHURIedJ598EqdPn640/bvvvuNDQImIiMjsiA47vXr1QmhoKBYtWgQAuHv3LsaMGYNRo0bhX//6l+QFEhGR5cjKAs6ebYKsLFNXQg2J6PvsfPrppxgwYAD+8Y9/YMeOHcjOzoaTkxNOnjyJdu3aGaNGIiKyAHFxQEyMNbTa7nj3XQFr15bfUZrI2Gp0n53+/ftj6NChOHbsGDIzM7Fo0SIGHSIiqlZWFhATA2i1MgDl38ePB0d4qE6IDjvp6elQqVTYsWMH9u7dizfffBODBg3Cm2++CbVaLWpbq1atQocOHeDs7AxnZ2eoVCrs3r1bN7+4uBixsbFwd3eHk5MThg0bhtzcXL1tZGZmYsCAAXBwcICHhwemT5+OsrIysbtFRERGlJqq/7R3ANBoyp8RRmRsosNOx44d4e/vjzNnzqBv37547733cPDgQWzZsgVdunQRtS0fHx8sXLgQKSkp+Pnnn9G7d28MHjwY58+fBwBMmTIF27dvx+bNm3H48GFcv34dQ4cO1a2v0WgwYMAAlJaW4vjx44iPj8f69evxzjvviN0tIjKB7OQs/LL0ILKT+b/3li4wELB64C+OXF7+MFQioxNE+vLLL6ucXlBQIIwbN07s5ipp3Lix8Pnnnwv5+fmCQqEQNm/erJt38eJFAYCQlJQkCIIg7Nq1S7CyshJycnJ0y6xatUpwdnYWSkpKDH7P27dvCwCE27dvi6q1tLRU2Lp1q1BaWipqPaqMvZRWfejnkajPhTJYCQIglMFKOBL1ualLqlJ96GV98fnngiCXawWg/Pvn5vlPXm/ws2n432/RJyiPGjWqyumNGjVCXFxcjUOXRqPB5s2bcffuXahUKqSkpECtViM8PFy3TOvWreHr64ukpCSEhoYiKSkJ7du3h1Kp1C0TGRmJ1157DefPn0dwcHCV71VSUoKSkhLd64KCAgCAWq0WdSiuYlmxh++oMvZSWubez+zkLHSLj4Ec5cc15NBCFT8emTG94RViXo8DN/de1iejRwNPPVWGb75JwYsvdkKLFtZgW2uOn03D91102Klw4cIFZGZmorS0VDdNJpNh4MCBorZz9uxZqFQqFBcXw8nJCd9//z2CgoJw+vRp2NjYwNXVVW95pVKJnJwcAEBOTo5e0KmYXzGvOgsWLMDcuXMrTd+3bx8cHBxE1Q8ACQkJotehqrGX0jLXfhb8kIlR0D+BwxoaHI7bAeebviaq6uHMtZf1Ufv2wIUL+3DhgqkrsQwN+bNZVFRk0HKiw85vv/2G5557DmfPnoVMJoMgCADKgw5QPkIjRqtWrXD69Gncvn0b//3vfxEVFYXDhw+LLUuUmTNnYurUqbrXBQUFaN68OSIiIuDs7GzwdtRqNRISEtC3b18oFApjlNpgsJfSMvd+ZjfNgmbdZN3IDgCUQY6e0c+a5ciOOfeyvmE/pcNe3j8y8yiiw87rr78Of39/HDhwAP7+/jh58iT++usvTJs2DUuWLBFdqI2NDQL+d4Zap06dkJycjI8//hgvvvgiSktLkZ+frze6k5ubC09PTwCAp6cnTp48qbe9iqu1Kpapiq2tLWxtbStNVygUNfrA1HQ9qoy9lJa59tO3mz8So9ZCFT8e1tCgDHIkRa1BWDd/U5dWLXPtZX3FfkqnIffS0P0WfTVWUlIS5s2bhyZNmsDKygpWVlbo0aMHFixYIMkTz7VaLUpKStCpUycoFAocOHBAN+/y5cvIzMyESqUCAKhUKpw9exY3btzQLZOQkABnZ2cEBQXVuhYiMp6w9dG4efIqTi87iJsnryJsPe8uR0TGIXpkR6PRoFGjRgCAJk2a4Pr162jVqhX8/Pxw+fJlUduaOXMm+vfvD19fX9y5cwcbN27EoUOHsHfvXri4uCA6OhpTp06Fm5sbnJ2dMXHiRKhUKoSGhgIAIiIiEBQUhFGjRmHx4sXIycnBrFmzEBsbW+XIDRGZF68QH7M7bEVElkd02GnXrh3OnDkDf39/dO3aFYsXL4aNjQ3Wrl2Lli1bitrWjRs3MHr0aGRnZ8PFxQUdOnTA3r170bdvXwDAsmXLYGVlhWHDhqGkpASRkZH49NNPdevL5XLs2LEDr732GlQqFRwdHREVFYV58+aJ3S0iIiKyUKLDzqxZs3D37l0AwLx58/Dss88iLCwM7u7u+Oabb0Rt61GXqtvZ2WHlypVYuXJltcv4+flh165dot6XiIiIGg7RYScyMlL3c0BAAC5duoS8vDw0btxYd0UWERHVrays8kcyBAYCPjwySKSnRg8CfZCbmxuDDhGRicTFAX5+QO/e5d9rcX9XIoskemSnuLgYK1aswMGDB3Hjxg1oH3iy26lTpyQrjoiIHi4rC3jlFeB/tzyDVlv+dPHISI7wEFUQHXaio6Oxb98+/N///R+6dOnCER0iIhM6fvx+0Kmg1QJJScDzz5umJiJzIzrs7NixA7t27UL37t2NUQ8RERGRpESfs9OsWTPdfXaIiMi0unUDHhxgl8mA/917lYhQg7Dz4Ycf4q233sK1a9eMUQ8REYng4wN89hlg9b/f5lZW5a95vg7RfaIPY3Xu3BnFxcVo2bIlHBwcKj2XIi8vT7LiiIjo0aKjy09ITksDAgIYdIgeJDrsjBgxAn/88Qc++OADKJVKnqBMRCSSMe6J4+PDkENUHdFh5/jx40hKSsITTzxhjHqIiCxaXFz5peFabfkhp7Vry0dmiMh4RJ+z07p1a9y7d88YtRARWbSsrPtBByj/Pn58+XQptn3woDTbIrI0osPOwoULMW3aNBw6dAh//fUXCgoK9L6IiKhqqan3g04Fjab8XJva4B2UiR5O9GGsfv36AQD69OmjN10QBMhkMmg0GmkqIyKyMIGB5Yeu/h545PLyk4prqrrRIt5Bmeg+0WHn4MGDxqiDiMji+fiUn6Mzfnz5iI5cDqxZU7tQ8rDRIoYdonKiw07Pnj2NUQcRUYMg9WXixhgtIrI0kjz1nIiIDOfjA/TqJc3IS8VokVxe/lqK0SIiSyN6ZIeIzF92chYKfshEdtMs+HbzN3U5ZGS8qSDRw3Fkh8jCJI6JQ7PuARi1bhKadQ9A4hhemtMQSDlaRGRpGHaILEh2cha6xcdAjvITOOTQQhU/HtnJvPkKETVcDDtEFiQnMVUXdCpYQ4PcY7W8kQsRUT1m0Dk7wcHBBj8D69SpU7UqiIhqzjMsEBpY6QWeMsih7M5Lc4io4TIo7AwZMsTIZRCRFLxCfJAYtRaq+PGwhgZlkCMpag3CQngiBxE1XAaFnXfffdfYdRCRRMLWRyMzpjcOx+1Az+hnEcarsYiogeOl50QWyCvEB843feHFER0iIvFhR6PRYNmyZfj222+RmZmJ0tJSvfl5eXmSFUdERERUW6Kvxpo7dy6WLl2KF198Ebdv38bUqVMxdOhQWFlZYc6cOUYokYiIiKjmRIedDRs24LPPPsO0adNgbW2NESNG4PPPP8c777yDn376yRg1EhEREdWY6LCTk5OD9u3bAwCcnJxw+/ZtAMCzzz6LnTt3SlsdERERUS2JDjs+Pj7Izs4GADz22GPYt28fACA5ORm2trbSVkdERERUS6LDznPPPYcDBw4AACZOnIjZs2cjMDAQo0ePxrhx4yQvkIiIiKg2RF+NtXDhQt3PL774Inx9fZGUlITAwEAMHDhQ0uKIiIiIaqvW99lRqVRQqVRS1EJEREQkOYPCzrZt29C/f38oFAps27btocsOGjRIksKIiIiIpGDws7FycnLg4eHx0OdkyWQyaDQaqWojIiIiqjWDwo5Wq63yZyIiIiJzJ/pqrIcpKiqScnNEREREtSY67PTp0wd//PFHpeknTpxAx44dpaiJiIhEysoCDh4s/05E+kSHHTs7O3To0AHffPMNgPLDWnPmzEFYWBieeeYZyQskIqKHi4sD/PyA3r3Lv8fFmboiIvMi+tLznTt3YuXKlRg3bhx++OEHXL16FdeuXcOOHTsQERFhjBqJiKgaWVlATAxQcTqlVguMHw9ERgI+Pqatjchc1Og+O7GxscjKysKiRYtgbW2NQ4cOoVu3blLXRkREj5Caej/oVNBogLQ0hh2iCqIPY926dQvDhg3DqlWrsGbNGrzwwguIiIjAp59+aoz6iIjoIQIDAasHfpPL5UBAgGnqITJHosNOu3btkJubi19++QWvvPIKvvrqK8TFxWH27NkYMGCAMWokIqJq+PgAa9eWBxyg/PuaNRzVIfo70WHn1VdfxZEjR+Dv76+b9uKLL+LMmTMoLS2VtDgiInq06Gjg6tXyq7GuXi1/TUT3iT5nZ/bs2VVO9/HxwdKlS2tdEBERiefjw9EcourU+qaCd+7cwdq1a9GlSxfeZ4eIiIjMTo3DzpEjRxAVFQUvLy8sWbIEvXv3xk8//SRlbUREovDGekRUFVGHsXJycrB+/XrExcWhoKAAL7zwAkpKSrB161YEBQUZq0YiokeKi7t/vxkrq/KTdnnuChEBIkZ2Bg4ciFatWuHXX3/FRx99hOvXr2PFihXGrI3I7GQnZ+GXpQeRncyhA3NS3Y31OMJDRICIsLN7925ER0dj7ty5GDBgAOQV1zkSNRCJY+Lg0cUPwdN6w6OLHxLH8J785uJhN9YjIjI47Bw9ehR37txBp06d0LVrV3zyySf4888/a/XmCxYsQEhICBo1agQPDw8MGTIEly9f1lumuLgYsbGxcHd3h5OTE4YNG4bc3Fy9ZTIzMzFgwAA4ODjAw8MD06dPR1lZWa1qI/q77OQsdIuPgRzlf1Hl0EIVP54jPGaCN9YjoocxOOyEhobis88+Q3Z2NsaPH49NmzbB29sbWq0WCQkJuHPnjug3P3z4MGJjY/HTTz8hISEBarUaERERuHv3rm6ZKVOmYPv27di8eTMOHz6M69evY+jQobr5Go0GAwYMQGlpKY4fP474+HisX78e77zzjuh6iKqTk5iqCzoVrKFB7jEOHZgD3liPiB5G9H12HB0dMW7cOIwbNw6XL19GXFwcFi5ciBkzZqBv377Ytm2bwdvas2eP3uv169fDw8MDKSkpeOqpp3D79m3ExcVh48aN6N27NwBg3bp1aNOmDX766SeEhoZi3759uHDhAvbv3w+lUomOHTti/vz5eOuttzBnzhzY2NhUet+SkhKUlJToXhcUFAAA1Go11Gq1wfVXLCtmHaqauffSPbQFNLDSCzxlkMOti59Z1mzu/TSG0aPLn/qdni7DY48J8PEBpNj9hthLY2I/pcNeGr7vMkEQhNq+mUajwfbt2/HFF1+ICjsPSktLQ2BgIM6ePYt27drhxx9/RJ8+fXDr1i24urrqlvPz88PkyZMxZcoUvPPOO9i2bRtOnz6tm5+RkYGWLVvi1KlTCA4OrvQ+c+bMwdy5cytN37hxIxwcHGpcP1m2wo9P4cWD78MaGpRBjm+efhtOrz9p6rKIiBqsoqIivPTSS7h9+zacnZ2rXa5GTz1/kFwux5AhQzBkyJAab0Or1WLy5Mno3r072rVrB6D8UncbGxu9oAMASqUSOTk5umWUSmWl+RXzqjJz5kxMnTpV97qgoADNmzdHRETEQ5v1ILVajYSEBPTt2xcKhcLg9aiyetHLZ57B9eQxuJn0G5qqWuKFEPM9RlIv+llPsJfSYj+lw17ePzLzKJKEHSnExsbi3LlzOHr0qNHfy9bWFra2tpWmKxSKGn1garoeVWbuvfTt5g/fbv6PXtBMmHs/6xP2Ulrsp3Qaci8N3e9aPy5CChMmTMCOHTtw8OBB+PztjEJPT0+UlpYiPz9fb/nc3Fx4enrqlnnw6qyK1xXLEJF54h2PiagumDTsCIKACRMm4Pvvv8ePP/6o9yR1AOjUqRMUCgUOHDigm3b58mVkZmZCpVIBAFQqFc6ePYsbN27olklISICzszPv6kxkxuLiAD+/8pOK/fzKXxMRGYNJD2PFxsZi48aN+OGHH9CoUSPdOTYuLi6wt7eHi4sLoqOjMXXqVLi5ucHZ2RkTJ06ESqVCaGgoACAiIgJBQUEYNWoUFi9ejJycHMyaNQuxsbFVHqoiItOr7o7HkZG8XJyIpGfSsLNq1SoAQK9evfSmr1u3DmPGjAEALFu2DFZWVhg2bBhKSkoQGRmJTz/9VLesXC7Hjh078Nprr0GlUsHR0RFRUVGYN29eXe0GEYn0sDseM+wQkdRMGnYMuerdzs4OK1euxMqVK6tdxs/PD7t27ZKyNCIyooo7Hv898PCOx0RkLGZxgjIRNSy84zER1SWzufSciBqW6Ojyc3TS0spHdBh0iMhYGHaIyGR8fBhyiMj4eBiLiIiILBrDDhEREVk0hh0iIiKyaAw7REREZNEYdoiIiMiiMeyQWchOzkLBD5nITuYTIcm8ZGUBZ8824cNKieoxhh0yucQxcWjWPQCj1k1Cs+4BSBzDJ0KSeYiLAwICrDF7dncEBFjzYaVE9RTDDplUdnIWusXHQI7y5wbIoYUqfjxHeMjk7j+sVAag/Pv48eAID1E9xLBDJpWTmKoLOhWsoUHusTQTVURU7mEPKyWi+oVhh0zKMywQmgc+hmWQQ9mdT4Qk06p4WOnf8WGlRPUTww6ZlFeID45HrUUZyp8IWQY5kqLWwCuEzxBoCLKygIMHzfPQ0P2HlQoAyr/zYaVE9RPDDplc2PpoXD+Wiv+MW47rx1IRtj7a1CVRHYiLA/z8gN69y7+b48m/0dFAamoZ5s8/itTUMkTzo0lULzHskFnwCvGB8yBfjug0EPdP/i1/rdXCbE/+9fEB2rf/iyM6RPUYww4R1Tme/EtEdYlhh8jEzPm8FWPhyb9EVJcYdohMqD6ct2IM90/+LX8tl4Mn/xKR0TDsEJlIfTpvxRiio4GrV8tHta5eBU/+JSKjsTZ1AUQN1cPOW2koIxw+Pg1nX4nIdDiyQ2QiPG+FiKhuMOwQmQjPWyEiqhs8jEVkQtHRQGRk+aGrgAAGHSIiY2DYITIxnrdCRGRcPIxFREREFo1hh4iIiCwaww4RERFZNIYdIiIismgMO0RERGTRGHaIiIjIojHsEBERkUVj2CEiIiKLxrBDREREFo1hh5CdnIVflh5EdnKWqUshIiKSHMNOA5c4Jg4eXfwQPK03PLr4IXFMnKlLMmtZWcDBg+XfiYiofmDYacCyk7PQLT4GcmgBAHJooYofzxGeasTFAX5+QO/e5d/jmAuJiOoFhp0GLCcxVRd0KlhDg9xjaSaqyHxlZQExMYD2f+3SaoHx4znCQ0RUHzDsNGCeYYHQPPARKIMcyu4BJqrIfKWm3g86FTQaII25kIjI7DHsNGBeIT44HrUWZZADKA86SVFr4BXiY+LKzE9gIGD1wH8tcjkQwFxIRGT2GHYauLD10bh58ipOLzuImyevImx9tKlLMks+PsDateUBByj/vmZN+XQiIjJv1qYugEzPK8SHozkGiI4GOnQAjh4FevQAQkJMXRERERmCYYfIQHFx909StrIqH+mJ5kAYEZHZ42EsIgPwaiwiovqLYYfIALwai4io/mLYITIAr8YiIqq/GHaIDMCrsYiI6i+eoExkoOhoIDKy/NBVQACDDhFRfWHSkZ0jR45g4MCB8Pb2hkwmw9atW/XmC4KAd955B15eXrC3t0d4eDhSU1P1lsnLy8PIkSPh7OwMV1dXREdHo7CwsA73ghoSHx+gVy8GHSKi+sSkYefu3bt44oknsHLlyirnL168GMuXL8fq1atx4sQJODo6IjIyEsXFxbplRo4cifPnzyMhIQE7duzAkSNHEBMTU1e78FDZyVn4ZelBPliTiIjIhEx6GKt///7o379/lfMEQcBHH32EWbNmYfDgwQCAL7/8EkqlElu3bsXw4cNx8eJF7NmzB8nJyejcuTMAYMWKFXjmmWewZMkSeHt719m+PChxTBy6xcfAC1poYIXEqLW8OzEREZEJmO05OxkZGcjJyUF4eLhumouLC7p27YqkpCQMHz4cSUlJcHV11QUdAAgPD4eVlRVOnDiB5557rsptl5SUoKSkRPe6oKAAAKBWq6FWqw2usWLZB9fJTs5Ct/gY3RPF5dBCFT8emTG9eafialTXS6oZ9lM67KW02E/psJeG77vZhp2cnBwAgFKp1JuuVCp183JycuDh4aE339raGm5ubrplqrJgwQLMnTu30vR9+/bBwcFBdK0JCQl6rwt+yMQo6N+UxRoaHI7bAeebvqK335A82EuqHfZTOuyltNhP6TTkXhYVFRm0nNmGHWOaOXMmpk6dqntdUFCA5s2bIyIiAs7OzgZvR61WIyEhAX379oVCodBNz26aBc26ybqRHaD8ieI9o5/lyE41qusl1Qz7KR32Ulrsp3TYy/tHZh7FbMOOp6cnACA3NxdeXl666bm5uejYsaNumRs3buitV1ZWhry8PN36VbG1tYWtrW2l6QqFokYfmAfX8+3mj8SotVDFj4c1NCiDHElRaxDWzV/0thuamv4bUNXYT+mwl9JiP6XTkHtp6H6b7U0F/f394enpiQMHDuimFRQU4MSJE1CpVAAAlUqF/Px8pKSk6Jb58ccfodVq0bVr1zqv+e/C1kfj5smrOL3sIG6evMqTk4mIiEzEpCM7hYWFSPvbw4UyMjJw+vRpuLm5wdfXF5MnT8Z7772HwMBA+Pv7Y/bs2fD29saQIUMAAG3atEG/fv3wyiuvYPXq1VCr1ZgwYQKGDx9u0iuxKniF+PCwFRERkYmZNOz8/PPPePrpp3WvK86jiYqKwvr16/Hmm2/i7t27iImJQX5+Pnr06IE9e/bAzs5Ot86GDRswYcIE9OnTB1ZWVhg2bBiWL19e5/tCRERE5smkYadXr14QBKHa+TKZDPPmzcO8efOqXcbNzQ0bN240RnlERERkAcz2nB0iIiIiKTDsEBERkUVj2CEiIiKLxrBDREREFo1hh4iIiCwaww4RERFZNIYdIiIismgMO0RERGTRGHaIiIjIopntU8/rUsVdnA19VHwFtVqNoqIiFBQUNNgnzkqFvZQW+ykd9lJa7Kd02Mv7f7cf9jQGgGEHAHDnzh0AQPPmzU1cCREREYl1584duLi4VDtfJjwqDjUAWq0W169fR6NGjSCTyQxer6CgAM2bN8fvv/8OZ2dnI1Zo+dhLabGf0mEvpcV+Soe9LB/RuXPnDry9vWFlVf2ZORzZAWBlZQUfH58ar+/s7NxgP2hSYy+lxX5Kh72UFvspnYbey4eN6FTgCcpERERk0Rh2iIiIyKIx7NSCra0t3n33Xdja2pq6lHqPvZQW+ykd9lJa7Kd02EvD8QRlIiIismgc2SEiIiKLxrBDREREFo1hh4iIiCwaww4RERFZNIYdA/zxxx94+eWX4e7uDnt7e7Rv3x4///yzbr4gCHjnnXfg5eUFe3t7hIeHIzU11YQVmy+NRoPZs2fD398f9vb2eOyxxzB//ny955qwn1U7cuQIBg4cCG9vb8hkMmzdulVvviF9y8vLw8iRI+Hs7AxXV1dER0ejsLCwDvfCfDysn2q1Gm+99Rbat28PR0dHeHt7Y/To0bh+/breNtjPco/6bP7dq6++CplMho8++khvOnt5nyH9vHjxIgYNGgQXFxc4OjoiJCQEmZmZuvnFxcWIjY2Fu7s7nJycMGzYMOTm5tbhXpgXhp1HuHXrFrp37w6FQoHdu3fjwoUL+PDDD9G4cWPdMosXL8by5cuxevVqnDhxAo6OjoiMjERxcbEJKzdPixYtwqpVq/DJJ5/g4sWLWLRoERYvXowVK1bolmE/q3b37l088cQTWLlyZZXzDenbyJEjcf78eSQkJGDHjh04cuQIYmJi6moXzMrD+llUVIRTp05h9uzZOHXqFLZs2YLLly9j0KBBesuxn+Ue9dms8P333+Onn36Ct7d3pXns5X2P6md6ejp69OiB1q1b49ChQ/j1118xe/Zs2NnZ6ZaZMmUKtm/fjs2bN+Pw4cO4fv06hg4dWle7YH4Eeqi33npL6NGjR7XztVqt4OnpKfz73//WTcvPzxdsbW2Fr7/+ui5KrFcGDBggjBs3Tm/a0KFDhZEjRwqCwH4aCoDw/fff614b0rcLFy4IAITk5GTdMrt37xZkMpnwxx9/1Fnt5ujBflbl5MmTAgDh2rVrgiCwn9WprpdZWVlCs2bNhHPnzgl+fn7CsmXLdPPYy+pV1c8XX3xRePnll6tdJz8/X1AoFMLmzZt10y5evCgAEJKSkoxVqlnjyM4jbNu2DZ07d8bzzz8PDw8PBAcH47PPPtPNz8jIQE5ODsLDw3XTXFxc0LVrVyQlJZmiZLPWrVs3HDhwAFeuXAEAnDlzBkePHkX//v0BsJ81ZUjfkpKS4Orqis6dO+uWCQ8Ph5WVFU6cOFHnNdc3t2/fhkwmg6urKwD2UwytVotRo0Zh+vTpaNu2baX57KXhtFotdu7ciccffxyRkZHw8PBA165d9Q51paSkQK1W6/0+aN26NXx9fRvs71GGnUf47bffsGrVKgQGBmLv3r147bXXMGnSJMTHxwMAcnJyAABKpVJvPaVSqZtH982YMQPDhw9H69atoVAoEBwcjMmTJ2PkyJEA2M+aMqRvOTk58PDw0JtvbW0NNzc39vYRiouL8dZbb2HEiBG6By6yn4ZbtGgRrK2tMWnSpCrns5eGu3HjBgoLC7Fw4UL069cP+/btw3PPPYehQ4fi8OHDAMr7aWNjowvmFRry71E+9fwRtFotOnfujA8++AAAEBwcjHPnzmH16tWIiooycXX1z7fffosNGzZg48aNaNu2LU6fPo3JkyfD29ub/SSzpFar8cILL0AQBKxatcrU5dQ7KSkp+Pjjj3Hq1CnIZDJTl1PvabVaAMDgwYMxZcoUAEDHjh1x/PhxrF69Gj179jRleWaLIzuP4OXlhaCgIL1pbdq00Z317unpCQCVznLPzc3VzaP7pk+frhvdad++PUaNGoUpU6ZgwYIFANjPmjKkb56enrhx44be/LKyMuTl5bG31agIOteuXUNCQoJuVAdgPw2VmJiIGzduwNfXF9bW1rC2tsa1a9cwbdo0tGjRAgB7KUaTJk1gbW39yL9LpaWlyM/P11umIf8eZdh5hO7du+Py5ct6065cuQI/Pz8AgL+/Pzw9PXHgwAHd/IKCApw4cQIqlapOa60PioqKYGWl/7GTy+W6/1thP2vGkL6pVCrk5+cjJSVFt8yPP/4IrVaLrl271nnN5q4i6KSmpmL//v1wd3fXm89+GmbUqFH49ddfcfr0ad2Xt7c3pk+fjr179wJgL8WwsbFBSEjIQ/8uderUCQqFQu/3weXLl5GZmdlwf4+a+gxpc3fy5EnB2tpaeP/994XU1FRhw4YNgoODg/DVV1/pllm4cKHg6uoq/PDDD8Kvv/4qDB48WPD39xfu3btnwsrNU1RUlNCsWTNhx44dQkZGhrBlyxahSZMmwptvvqlbhv2s2p07d4RffvlF+OWXXwQAwtKlS4VffvlFd3WQIX3r16+fEBwcLJw4cUI4evSoEBgYKIwYMcJUu2RSD+tnaWmpMGjQIMHHx0c4ffq0kJ2drfsqKSnRbYP9LPeoz+aDHrwaSxDYy797VD+3bNkiKBQKYe3atUJqaqqwYsUKQS6XC4mJibptvPrqq4Kvr6/w448/Cj///LOgUqkElUplql0yOYYdA2zfvl1o166dYGtrK7Ru3VpYu3at3nytVivMnj1bUCqVgq2trdCnTx/h8uXLJqrWvBUUFAivv/664OvrK9jZ2QktW7YU3n77bb0/IOxn1Q4ePCgAqPQVFRUlCIJhffvrr7+EESNGCE5OToKzs7MwduxY4c6dOybYG9N7WD8zMjKqnAdAOHjwoG4b7Ge5R302H1RV2GEv7zOkn3FxcUJAQIBgZ2cnPPHEE8LWrVv1tnHv3j3hn//8p9C4cWPBwcFBeO6554Ts7Ow63hPzIROEv926loiIiMjC8JwdIiIismgMO0RERGTRGHaIiIjIojHsEBERkUVj2CEiIiKLxrBDREREFo1hh4iIiCwaww4RERFZNIYdIqpTLVq0wEcffSRqnTFjxmDIkCG617169cLkyZMlrcucxcXFISIiwiTvPWPGDEycONEk700kFYYdIjM1ZswYyGSySl/9+vUzeBuWGgq2bNmC+fPnm7oMHDp0CDKZrNLTpaVUXFyM2bNn49133zXaezzMG2+8gfj4ePz2228meX8iKTDsEJmxfv36ITs7W+/r66+/rvM6SktL6/w9H8bNzQ2NGjUydRmSEQQBZWVlVc7773//C2dnZ3Tv3r2OqyrXpEkTREZGYtWqVSZ5fyIpMOwQmTFbW1t4enrqfTVu3BhA+aiCjY0NEhMTdcsvXrwYHh4eyM3NxZgxY3D48GF8/PHHulGhq1evAgDOnTuH/v37w8nJCUqlEqNGjcKff/6p206vXr0wYcIETJ48WffHrmIU48CBA+jcuTMcHBzQrVs3XL58Wbdeeno6Bg8eDKVSCScnJ4SEhGD//v2i9lmj0WDq1KlwdXWFu7s73nzzTTz4CL8HR6z+85//oHPnzmjUqBE8PT3x0ksv4caNG7r5FbXv3bsXwcHBsLe3R+/evXHjxg3s3r0bbdq0gbOzM1566SUUFRXp1tNqtViwYAH8/f1hb2+PJ554Av/9738BAFevXsXTTz8NAGjcuDFkMhnGjBnzyPX+Xs/u3bvRqVMn2Nra4ujRo1X2Y9OmTRg4cKDetIrDeh988AGUSiVcXV0xb948lJWVYfr06XBzc4OPjw/WrVunW+fq1auQyWT49ttvERYWBnt7e4SEhODKlStITk5G586d4eTkhP79++PmzZt67zdw4EBs2rTpUf90RObLtM8hJaLqREVFCYMHD37oMtOnTxf8/PyE/Px84dSpU4KNjY3www8/CIIgCPn5+YJKpRJeeeUVITs7W8jOzhbKysqEW7duCU2bNhVmzpwpXLx4UTh16pTQt29f4emnn9Ztt2fPnoKTk5Mwffp04dKlS8KlS5d0T2Lu2rWrcOjQIeH8+fNCWFiY0K1bN916p0+fFlavXi2cPXtWuHLlijBr1izBzs5OuHbtmm6Zqp54/XeLFi0SGjduLHz33XfChQsXhOjoaKFRo0Z6vejZs6fw+uuv617HxcUJu3btEtLT04WkpCRBpVIJ/fv3182vqD00NFQ4evSocOrUKSEgIEDo2bOnEBERIZw6dUo4cuSI4O7uLixcuFC33nvvvSe0bt1a2LNnj5Ceni6sW7dOsLW1FQ4dOiSUlZUJ3333nQBAuHz5spCdnS3k5+c/cr2/19OhQwdh3759QlpamvDXX39V2Q8XFxdh06ZNetOioqKERo0aCbGxscKlS5eEuLg4AYAQGRkpvP/++8KVK1eE+fPnCwqFQvj9998FQRB0T3KvqOvChQtCaGio0KlTJ6FXr156fXn11Vf13u/ixYsCACEjI6Pafzcic8awQ2SmoqKiBLlcLjg6Oup9vf/++7plSkpKhI4dOwovvPCCEBQUJLzyyit623gwFAiCIMyfP1+IiIjQm/b777/r/mhXrBccHKy3TMUf6P379+um7dy5UwAg3Lt3r9r9aNu2rbBixQrd60eFHS8vL2Hx4sW612q1WvDx8Xlo2HlQcnKyAEC4c+dOtbUvWLBAACCkp6frpo0fP16IjIwUBEEQiouLBQcHB+H48eN6246OjhZGjBiht91bt27p5otZb+vWrdXugyAIwq1btwQAwpEjR/SmR0VFCX5+foJGo9FNa9WqlRAWFqZ7XVZWJjg6Ogpff/21IAj3w87nn3+uW+brr78WAAgHDhzQ60urVq303u/27dsCAF1YI6pvrOt4IImIRHj66acrnSvh5uam+9nGxgYbNmxAhw4d4Ofnh2XLlj1ym2fOnMHBgwfh5ORUaV56ejoef/xxAECnTp2qXL9Dhw66n728vAAAN27cgK+vLwoLCzFnzhzs3LkT2dnZKCsrw71795CZmfnonQVw+/ZtZGdno2vXrrpp1tbW6Ny5c6VDWX+XkpKCOXPm4MyZM7h16xa0Wi0AIDMzE0FBQVXWrlQq4eDggJYtW+pNO3nyJAAgLS0NRUVF6Nu3r957lZaWIjg4uNpaxKzXuXPnarcDAPfu3QMA2NnZVZrXtm1bWFndPxNBqVSiXbt2utdyuRzu7u56h/OAyj0AgPbt2+tNe3Ade3t7ANA7xEdUnzDsEJkxR0dHBAQEPHSZ48ePAwDy8vKQl5cHR0fHhy5fWFiIgQMHYtGiRZXmVYSXiveuikKh0P0sk8kAQBcu3njjDSQkJGDJkiUICAiAvb09/u///s+oJzjfvXsXkZGRiIyMxIYNG9C0aVNkZmYiMjKy0vs+WPvfX1dMq9iXwsJCAMDOnTvRrFkzveVsbW2rrUfMeo/6t3J3d4dMJsOtW7cqzauq9oftT1XrVfz7PTjtwXXy8vIAAE2bNn1ovUTmimGHqB5LT0/HlClT8Nlnn+Gbb75BVFQU9u/fr/s/fhsbG2g0Gr11nnzySXz33Xdo0aIFrK2l/RVw7NgxjBkzBs899xyA8j/8FSdFG8LFxQVeXl44ceIEnnrqKQBAWVkZUlJS8OSTT1a5zqVLl/DXX39h4cKFaN68OQDg559/rt2OAAgKCoKtrS0yMzPRs2fPKpexsbEBAL0eG7KeoWxsbBAUFIQLFy6Y7D47QPkJ7QqFAm3btjVZDUS1wauxiMxYSUkJcnJy9L4qrprSaDR4+eWXERkZibFjx2LdunX49ddf8eGHH+rWb9GiBU6cOIGrV6/izz//hFarRWxsLPLy8jBixAgkJycjPT0de/fuxdixYysFI7ECAwOxZcsWnD59GmfOnMFLL71UaZTgUV5//XUsXLgQW7duxaVLl/DPf/7zofex8fX1hY2NDVasWIHffvsN27Ztk+QePI0aNcIbb7yBKVOmID4+Hunp6Th16hRWrFiB+Ph4AICfnx9kMhl27NiBmzdvorCw0KD1xIiMjKz2Sq26kpiYqLuCi6g+YtghMmN79uyBl5eX3lePHj0AAO+//z6uXbuGNWvWACg/BLV27VrMmjULZ86cAVB+WEkulyMoKEh3eMfb2xvHjh2DRqNBREQE2rdvj8mTJ8PV1VXvHJCaWLp0KRo3boxu3bph4MCBiIyMrHZEpjrTpk3DqFGjEBUVBZVKhUaNGulGiqrStGlTrF+/Hps3b0ZQUBAWLlyIJUuW1Go/KsyfPx+zZ8/GggUL0KZNG/Tr1w87d+6Ev78/AKBZs2aYO3cuZsyYAaVSiQkTJhi0nhjR0dHYtWsXbt++Lck+1cSmTZvwyiuvmOz9iWpLJjzsrD8iIjK5559/Hk8++SRmzpxZ5++9e/duTJs2Db/++qvkhz2J6gpHdoiIzNy///3vKq+eqwt3797FunXrGHSoXuPIDhEREVk0juwQERGRRWPYISIiIovGsENEREQWjWGHiIiILBrDDhEREVk0hh0iIiKyaAw7REREZNEYdoiIiMiiMewQERGRRft/o6RG4rMypU4AAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We keep only the non dominated component (Pareto front)\n",
"df_filter = df[df[\"Dominated\"] == False]\n",
"# Diameter of filtered bearings\n",
"df_filter_D = df_filter[\"D\"]\n",
"# Axial force of filtered bearings\n",
"df_filter_F = df_filter[\"Fa axial static\"]\n",
"\n",
"# plot of the data set with the Pareto front\n",
"g, ax = plt.subplots(1, 1, sharex=True)\n",
"ax.plot(df[\"D\"], df[\"Fa axial static\"], \".b\", df_filter_D, df_filter_F, \".r\")\n",
"ax.set_ylabel(\"Axial maximal static force (kN)\")\n",
"ax.set_xlabel(\"External diameter (mm)\")\n",
"ax.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Linear regression\n",
"\n",
"The filtered data will be approximeted here by a linear regression of the form: $Y=aX+b$ \n",
"\n",
"We use here :\n",
"- the functions of the [scikit-learn](http://scikit-learn.org) package ([linear_model.LinearRegression](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html))\n",
"- a log transformation in order to linearize the power law expression $Y=k.X^a$ into $log(Y) = log(k) + a.log(X)$\n",
"\n",
"A usefull introduction to machine learning can be found here [Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/):\n",
"> VanderPlas, J. (2016). Python data science handbook: Essential tools for working with data. \" O'Reilly Media, Inc.\"\n",
"\n",
"with examples of [linear regressions](https://jakevdp.github.io/PythonDataScienceHandbook/05.06-linear-regression.html)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression()"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Import packages\n",
"from sklearn import linear_model\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Create a new object for the linear regression\n",
"reg = linear_model.LinearRegression()\n",
"\n",
"# Get the data :\n",
"# - X inputs and Y outputs\n",
"# - apply a log transformation in order\n",
"\n",
"X = np.log10(df_filter[\"D\"].values)\n",
"\n",
"Y = np.log10(df_filter[\"Fa axial static\"].values)\n",
"\n",
"# Gives a new shape to an array without changing its data : transform data into array\n",
"X = X.reshape(-1, 1)\n",
"Y = Y.reshape(-1, 1)\n",
"\n",
"# Realize the data fitting\n",
"reg.fit(X, Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now compare the coefficients of linear regression with scaling laws:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The coefficient are: [[1.91448233]]\n",
"The intercept is: [-1.43355268]\n",
"The estimation model is: F_axial_max = 3.69e-02.D^1.9\n"
]
}
],
"source": [
"print(\"The coefficient are:\", reg.coef_)\n",
"print(\"The intercept is:\", reg.intercept_)\n",
"print(\"The estimation model is: F_axial_max = %.2e.D^%.1f\" % (10**reg.intercept_, reg.coef_))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remark : unit of $D$ is $mm$ and F$_{axial,max}$ is $kN$\n",
"\n",
"We can also directly compare on a graphic the both expressions:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Add 1 mm diameter point\n",
"Xa = np.insert(X, 0, np.log10([1, 10, 20])).reshape(-1, 1)\n",
"# The predict function calculate the output with the regression\n",
"Yest = reg.predict(Xa)\n",
"\n",
"# Scaling law\n",
"Yscal = F_axial_ref * (10**Xa / D_ref) ** 2\n",
"\n",
"# plot\n",
"h, ax = plt.subplots(1, 1, sharex=True)\n",
"ax.plot(10**Xa, 10**Yest, \"--b\", 10**X, 10**Y, \".r\", 10**Xa, Yscal, \"g\")\n",
"ax.set_ylabel(\"Axial maximal static force (kN)\")\n",
"ax.set_xlabel(\"External diameter (mm)\")\n",
"ax.grid()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[203.14683888]])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"10 ** reg.predict([[np.log10(90)]])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}