{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Defining fuzzy logic system for evaluating TRS performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "

\n", " \"load\n", "

\n", "\n", "This example shows how to evaluate the design margins of a turbine rear structure (TRS) when experiencing thermal loads. Two temperatures affect the TRS' performance. They are the temperature of the nacelle compartment $T_1$ and the temperature of the gas surface $T_1$. The output that we are interested in is the safety factor $n_\\textrm{safety}$.\n", "\n", "Simulation results tell us that $n_\\textrm{safety}$ decreases when the difference ${\\lvert}T_2 - T_1{\\rvert}$ and vice versa. Based on this qualitative knowledge, we can use ``mvmlib`` to quantify these parameters and find out how much change can a TRS absorb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define fuzzy parameters\n", "\n", "First let us import all the required tools to define the parameters ``T1``, ``T2``, and ``n_safety`` as fuzzy parameters" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from mvm import TriangularFunc, FuzzySet, FuzzyRule, FuzzySystem" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we define the **universe** in which our parameters can vary. \n", "$$\n", "250 \\le T_1 \\le 450 \\\\\n", "480 \\le T_2 \\le 680 \\\\\n", "1.0 \\le n_\\text{safety} \\le 6.0 \\\\\n", "$$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "# Generate universe variables\n", "lb = np.array([250, 480, 1.0])\n", "ub = np.array([450, 680, 6.0])\n", "labels = ['T1','T2','n_safety']\n", "\n", "universe = np.linspace(lb, ub, 100) # grid for all variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we define the **membership functions** in the form of a triangular function. The left foot of the triangle is given by ``shapes_lo``, the center of the triangle is given by ``shapes_md``, and the right foot of the triangle is given by ``shapes_hi``." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Define shape of triangular membership functions\n", "shapes_lo = np.array([lb, lb, lb + (ub-lb)/2 ])\n", "shapes_md = np.array([lb + (ub-lb)/4, lb + (ub-lb)/2, ub - (ub-lb)/4 ])\n", "shapes_hi = np.array([lb + 1*(ub-lb)/2, ub, ub ])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we create fuzzy set object for each parameter by looping over ``lb``, ``ub``, and ``n_safety`` and visualize the results fuzzy sets." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Generate fuzzy membership functions\n", "fuzzy_sets = []\n", "for i in range(len(lb)):\n", " lo = TriangularFunc(universe[:,i],labels[i])\n", " lo.set_func(shapes_lo[0,i],shapes_lo[1,i],shapes_lo[2,i])\n", "\n", " md = TriangularFunc(universe[:,i],labels[i])\n", " md.set_func(shapes_md[0,i],shapes_md[1,i],shapes_md[2,i])\n", "\n", " hi = TriangularFunc(universe[:,i],labels[i])\n", " hi.set_func(shapes_hi[0,i],shapes_hi[1,i],shapes_hi[2,i])\n", "\n", " fuzzyset_i = FuzzySet(lo,md,hi,labels[i])\n", "\n", " fuzzy_sets += [fuzzyset_i]\n", "\n", "# label each fuzzy set\n", "temp_T1 = fuzzy_sets[0]\n", "temp_T2 = fuzzy_sets[1]\n", "n_safety = fuzzy_sets[2]\n", "\n", "# Visualize these universes and membership functions\n", "temp_T1.view()\n", "temp_T2.view()\n", "n_safety.view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define fuzzy rules\n", "\n", "Next we define the **fuzzy rules** needed to infer the value of ``n_safety``. The **antecedents** are ``T1`` and ``T2`` and the **consequent** is ``n_safety``.\n", "The following fuzzy rules should be applied in our fuzzy logic system:\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RuleT1Operator T2 n_safety
1 low AND high low
2 high AND low high
3 low AND low medium
4 high AND low medium
5 medium AND high low
6 medium AND low high
7 low AND medium low
8 high AND medium high
9 medium AND medium medium
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Define fuzzy rules\n", "rule1 = FuzzyRule([{'fun1': temp_T1.lo, 'fun2': temp_T2.hi, 'operator': 'AND'},],n_safety.lo,label='R1')\n", "rule2 = FuzzyRule([{'fun1': temp_T1.hi, 'fun2': temp_T2.lo, 'operator': 'AND'},],n_safety.hi,label='R2')\n", "rule3 = FuzzyRule([{'fun1': temp_T1.lo, 'fun2': temp_T2.lo, 'operator': 'AND'},],n_safety.md,label='R3')\n", "rule4 = FuzzyRule([{'fun1': temp_T1.hi, 'fun2': temp_T2.hi, 'operator': 'AND'},],n_safety.md,label='R4')\n", "\n", "rule5 = FuzzyRule([{'fun1': temp_T1.md, 'fun2': temp_T2.hi, 'operator': 'AND'},],n_safety.lo,label='R5')\n", "rule6 = FuzzyRule([{'fun1': temp_T1.md, 'fun2': temp_T2.lo, 'operator': 'AND'},],n_safety.hi,label='R6')\n", "rule7 = FuzzyRule([{'fun1': temp_T1.lo, 'fun2': temp_T2.md, 'operator': 'AND'},],n_safety.lo,label='R7')\n", "rule8 = FuzzyRule([{'fun1': temp_T1.hi, 'fun2': temp_T2.md, 'operator': 'AND'},],n_safety.hi,label='R8')\n", "\n", "rule9 = FuzzyRule([{'fun1': temp_T1.md, 'fun2': temp_T2.md, 'operator': 'AND'},],n_safety.md,label='R9')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fuzzy inference on a single loadcase\n", "\n", "Next we define our fuzzy logic system based on the **antecedents**, **consequents**, and **fuzzy rules** we have defined so far. We infer the value of ``n_safety`` based on ``T1=370`` and ``T2=580`` using the centroid rule for defuzzification (default). The outputs are the crisp value ``n_safety_value``, the aggregate membership function of the output ``aggregate``, and the activation function value at the centroid.\n", "\n", "All of these outputs are displayed in the plot below." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Define fuzzy control system\n", "rules = [rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9]\n", "sim = FuzzySystem([temp_T1,temp_T2],n_safety,rules)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Define inputs and compute the behaviour of the TRS at a given temperature\n", "inputs = np.array([\n", " 370.0, # T1\n", " 580.0, # T2\n", " ])\n", "n_safety_value, aggregate, n_safety_activation = sim.compute(inputs, normalize=True)\n", "\n", "# Visualize the fuzzy behaviour\n", "sim.view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fuzzy inference on multiple combinations of loads (2D parameter space)\n", "\n", "Next we infer the value of ``n_safety`` for different combinations of ``T1`` and ``T2`` by sweeping over them. We first create a 2D full factorial grid of the variables" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from mvm import Design\n", "\n", "# Simulate at higher resolution the control space in 2D\n", "n_levels = 20\n", "inputs = Design(lb[:2],ub[:2],n_levels,\"fullfact\").unscale()\n", "\n", "sim.reset() # remember to reset the fuzzy system when inferring a new set of values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we retrieve the crisp values ``z`` for each of the samples in ``inputs``" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Loop through the system to collect the control surface\n", "z,a,_ = sim.compute(inputs)\n", "\n", "# Reshape the outputs for contour plotting\n", "x = inputs[:,0].reshape((n_levels,n_levels))\n", "y = inputs[:,1].reshape((n_levels,n_levels))\n", "z = z.reshape((n_levels,n_levels))\n", "\n", "# Plot the result in 2D\n", "import matplotlib.pyplot as plt\n", "fig = plt.figure(figsize=(8, 8))\n", "ax = fig.add_subplot()\n", "\n", "surf = ax.contourf(x, y, z, cmap=plt.cm.jet,)\n", "ax.set_xlabel('T1')\n", "ax.set_ylabel('T2')\n", "\n", "cbar = plt.cm.ScalarMappable(cmap=plt.cm.jet)\n", "cbar.set_array(z)\n", "\n", "boundaries = np.linspace(1, 6, 51)\n", "cbar_h = fig.colorbar(cbar, boundaries=boundaries)\n", "cbar_h.set_label('safety factor', rotation=90, labelpad=3)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The expected inverse relationship between temperature difference and structural performance can be seen above" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definition of uncertain requirements\n", "\n", "### Requirement definition\n", "\n", "The requirements are high level system specifications. In this examples they are given a Normal distribution in terms of $T_1$$ and $T_2$:\n", "\n", "$$\n", "T_1,T_2 \\sim \\mathcal{N}(\\boldsymbol{\\mu},\\boldsymbol{\\Sigma})\n", "$$\n", "\n", "we define the means $\\boldsymbol{\\mu}$ and covariances $\\boldsymbol{\\Sigma}$ and use them to define a multivariate normal joint PDF" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from mvm import GaussianFunc # Import the Gaussian distribution class\n", "\n", "# Requirement specifications for T1, T2\n", "mu = np.array([370,580])\n", "Sigma = np.array([\n", " [50, 25],\n", " [75, 100],\n", " ])\n", "Requirement = GaussianFunc(mu, Sigma, 'R1')\n", "Requirement.random(10000)\n", "Requirement.view(xlabel='Thermal specification $T_1,T_2 \\\n", " \\sim \\mathcal{N}(\\mu,\\Sigma)$')\n", "Requirement.reset()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The samples from the distribution follow the expected distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A requirement that is used as a target threshold\n", "\n", "The target that the TRS must reach is a decided safety factor value that its own safety factor must exceed\n", "\n", "$$\n", "n_\\textrm{safety} \\ge n_\\textrm{safety}^{decided}\n", "$$\n", "\n", "This $n_\\textrm{safety}^{decided}$ is usually uncertain and can also be represented by a PDF centered around a mean" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# for n_decided\n", "mu = np.array([4.0,])\n", "Sigma = np.array([[0.3**2,],])\n", "decided_safety = GaussianFunc(mu, Sigma, 'T1')\n", "decided_safety.random(10000)\n", "decided_safety.view(xlabel='Decided $n_\\mathrm{safety}^\\mathrm{decided}$')\n", "decided_safety.reset()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Elements of Margin Analysis Network (MAN)\n", "\n", "In this section we define the inputs and outputs needed to construct a MAN. We begin with the input specifications, which stem from design requirements." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from mvm import InputSpec, Behaviour, MarginNode, MarginNetwork" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Input specifications\n", "There are three input specifications in this example, $T_1$, $T_2$, and $n_\\textrm{safety}^{decided}$" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# define input specifications\n", "s1 = InputSpec(Requirement.mu[0], 'S1', universe = [300,450], variable_type='FLOAT', cov_index=0, description='nacelle temperature', symbol='T1', distribution=Requirement)\n", "s2 = InputSpec(Requirement.mu[1], 'S2', universe = [500,650], variable_type='FLOAT', cov_index=1, description='gas surface temperature', symbol='T2', distribution=Requirement)\n", "s3 = InputSpec(decided_safety.mu, 'S3', universe = [3.0,5.0], variable_type='FLOAT', description='decided safety', symbol='n_decided')\n", "input_specs = [s1,s2,s3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Behaviour\n", "\n", "Finally, the TRS own safety factor (governed by its behaviour) is given a simulation model or some other calculation. In this example it is given by the fuzzy logic system we defined. We use the normalized aggregate function to define an **arbitrary** PDF as follows" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.8828408643953733\n", "0.908118934351573\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from mvm import Distribution # Import the arbitrary distribution class\n", "\n", "# Behaviour and capability\n", "\n", "behaviour = Distribution(aggregate,lb=lb[-1],ub=ub[-1])\n", "\n", "print(behaviour.random(10000).mean()) # should be close to 10.0\n", "print(behaviour.random(10000).std()) # should be close to 5.0\n", "behaviour.view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We embed this stochastic model in `Behaviour` object for the MAN" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# this is the n_safety model\n", "class B1(Behaviour):\n", " def __call__(self,T1,T2):\n", " # Compute for given inputs\n", " sim.reset()\n", " _,aggregate,_ = sim.compute(np.array([[T1,T2],]), normalize=True)\n", " behaviour = Distribution(aggregate,lb=lb[-1],ub=ub[-1])\n", " self.target_threshold = behaviour.random()\n", "\n", "b1 = B1(n_i=0,n_p=0,n_dv=0,n_tt=0,key='B1')\n", "behaviours = [b1,]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Margin Nodes\n", "Now we define the margin node. Since $n_\\textrm{safety} \\ge n_\\textrm{safety}^{decided}$, this is a `must_exceed` type of margin" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Defining a MarginNode object\n", "e1 = MarginNode('E1',direction='must_exceed')\n", "margin_nodes = [e1,]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Margin Analysis Network\n", "Now we define how all the previous elements are connected together inside a MAN" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Defining a MarginNetwork object\n", "class MAN(MarginNetwork):\n", " \n", " def randomize(self):\n", " Requirement.random()\n", " decided_safety.random()\n", " s1.random();s2.random();s3.random()\n", " \n", " def forward(self):\n", "\n", " Requirement.random()\n", " decided_safety.random()\n", "\n", " # retrieve MAN components\n", " s1 = self.input_specs[0] # stochastic\n", " s2 = self.input_specs[1] # stochastic\n", " s3 = self.input_specs[2] # stochastic\n", " b1 = self.behaviours[0]\n", " e1 = self.margin_nodes[0]\n", "\n", " # Execute behaviour models\n", " b1(s1.value,s2.value)\n", " e1(b1.target_threshold,s3.value)\n", "\n", "man = MAN([],input_specs,[],behaviours,[],margin_nodes,[],'MAN_1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running the MAN inside a Monte-Carlo simulation\n", "We loop over the defined MarginNetwork object as many times as needed to get the distribution of the margin node" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Progress: 99% \r" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import sys\n", "\n", "n_epochs = 10000\n", "for n in range(n_epochs):\n", " sys.stdout.write(\"Progress: %d%% \\r\" %((n/n_epochs)* 100)) # display progress\n", " man.forward()\n", "\n", "e1.excess.view(xlabel='Excess $\\Delta = n_\\mathrm{safety} - \\\n", " n_\\mathrm{safety}^\\mathrm{decided}$')\n", "e1.excess.view_cdf(xlabel='Excess $\\Delta = n_\\mathrm{safety} - \\\n", " n_\\mathrm{safety}^\\mathrm{decided}$')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8.8 ('.env': venv)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" }, "vscode": { "interpreter": { "hash": "d2c59efba7b009353695b5a6cbe310397ac58aaa3c8acf134630ccd9465f821a" } } }, "nbformat": 4, "nbformat_minor": 2 }