{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "1a8b3769", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def hide_code_in_slideshow(): \n", " from IPython import display\n", " import binascii\n", " import os\n", " uid = binascii.hexlify(os.urandom(8)).decode() \n", " html = \"\"\"
\n", " \"\"\" % (uid, uid)\n", " display.display_html(html, raw=True)\n", "\n", "hide_code_in_slideshow() " ] }, { "cell_type": "code", "execution_count": 2, "id": "7743e289", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "#!pip install scikit-fuzzy\n", "\n", "%matplotlib inline\n", "\n", "import numpy as np\n", "import skfuzzy as fuzz\n", "from skfuzzy import control as ctrl" ] }, { "cell_type": "markdown", "id": "00acac82", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Control Difuso\n", "\n", "Es un sistema de control que esta basado en la lógica difusa. \n", "\n", "\n", "\n", "[Lofti A. Zadeh](https://es.wikipedia.org/wiki/Lotfi_A._Zadeh) desarrollo la lógica difusa. " ] }, { "cell_type": "markdown", "id": "b0236a5d", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# ¿Qué tan mojada esta la ropa?\n", "\n", "## Lógica Booleana\n", "\n", "- Mojada (_Verdadero_)\n", "- Seca (_Falso_)\n", "\n", "## Lógica Difusa\n", "\n", "- Parcialmente Mojada (0.7)\n", "- Parcialmente Seca (0.3)" ] }, { "cell_type": "markdown", "id": "7437f798", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Beneficios del control difuso\n", "\n", "- No requiere conocer el modelo dinámico del sistema a controlar. Por tanto,\n", " - No requiere identificar el sistema\n", " - No necesita aproximar el modelo\n", " - No necesita linealizarlo. \n", "- **Pero,**\n", " - No se conoce bien el sistema" ] }, { "cell_type": "code", "execution_count": 3, "id": "4d41226b", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# https://www.irjet.net/archives/V2/i8/IRJET-V2I8104.pdf\n", "# https://www.upt.ro/img/files/alegeri_2020/csud/5_Cinci_lucrari_stiintifice_in_extenso_2020-2024.pdf" ] }, { "cell_type": "markdown", "id": "5848d0e9", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Aplicaciones del control difuso " ] }, { "cell_type": "markdown", "id": "a227ba30", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Estructura de un controlador difuso\n", "\n", "![](control-loop.png)\n", "\n", "Tomada de [_A survey on industrial applications of fuzzy control_](https://doi.org/10.1016/j.compind.2010.10.001)" ] }, { "cell_type": "markdown", "id": "207c3854", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Etapas dentro de un controlador difuso\n", "\n", "- Valores de Entrada (_crisp inputs_)\n", "- **Módulo de Fusificación**\n", "- Entradas difusas\n", "- **Módulo de Inferencia**\n", "- Conclusiones difusas\n", "- **Módulo de Defusificación**\n", "- Valores de Salida (_crisp outputs_)" ] }, { "cell_type": "markdown", "id": "503a4528", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Variables lingüísticas / Funciones de membresia\n", "\n" ] }, { "cell_type": "markdown", "id": "1c31b49c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Reglas de Control \n", "\n", "Dado un sistema con dos entradas $X$ y $Y$ y una salida $Z$, podemos definir las reglas de control en el modulo de inferencia así:\n", "\n", "- Si $X$ es $A_1$ y $Y$ es $B_1$, entonces $Z$ es $C_1$\n", "- Si $X$ es $A_2$ y $Y$ es $B_2$, entonces $Z$ es $C_2$\n", "- Si $X$ es $A_3$ y $Y$ es $B_3$, entonces $Z$ es $C_3$" ] }, { "cell_type": "markdown", "id": "d355cc78", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modulo de Defusificación\n", "\n", "Para la defusificación se pueden usar diferentes métodos:\n", "\n", "- Centroide: considera a la función como una función de distribución de masa y busca su centroide. \n", "- Bisectriz: divide el area bajo la función en dos regiones iguales.\n", "- Máximo central (MOM _mean of maximum_): toma el promedio de los máximos.\n", "- Máximo más grande (LOM _largest of maximum_): toma el máximo más grande. \n", "- Máximo más pequeño (SOM _smallest of maximum_): toma el máximo más pequeño.\n", "\n", "[![](defusificacion.png)](https://www.slideserve.com/erv/hedge)" ] }, { "cell_type": "markdown", "id": "63e6f395", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modulo de inferencia \n", "\n", "Existen diferentes métodos de inferencia, entre ellos: \n", "\n", "- Mamdani " ] }, { "cell_type": "markdown", "id": "211cb146", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "[![](mamdani.jpg)](http://www.dma.fi.upm.es/recursos/aplicaciones/logica_borrosa/web/fuzzy_inferencia/mamdanir_en.htm)" ] }, { "cell_type": "markdown", "id": "f419182e", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo : Impresora\n", "\n", "Realicemos el control de posición de la impresora via el voltaje del motor con un controlador difuso.\n", "\n", "![](printer.png)\n", "\n", "- Variable de entrada : Error de posición\n", "- Variable de salida : Voltaje del motor" ] }, { "cell_type": "markdown", "id": "a3a17df5", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Sistema de control\n", "\n", "![](control-loop.png)" ] }, { "cell_type": "markdown", "id": "208b3f91", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Reglas de control\n", "\n", "- Si el error es NG, entonces el voltaje es NG (negativo grande)\n", "- Si el error es NP, entonces el voltaje es NP (negativo pequeño)\n", "- Si el error es C, entonces el voltaje es C (cero)\n", "- Si el error es PP, entonces el voltaje es PP (positivo pequeño)\n", "- Si el error es PG, entonces el voltaje es PG (positivo grande)\n" ] }, { "cell_type": "markdown", "id": "244a1016", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# En MATLAB \n", "\n", "Usaremos la aplicación _fuzzy logic designer_, debemos tener instalado el _Fuzzy Logic Toolbox_\n", "\n", "![](fuzzy-logic-toolbox.png)" ] }, { "cell_type": "markdown", "id": "9c30a1fb", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Fuzzy logic designer\n", "\n", "Esta es la ventana inicial, donde definiremos la variable de entrada como el error y la variable de salida como el voltaje. \n", "\n", "![](fuzzy-logic-designer.png)" ] }, { "cell_type": "markdown", "id": "11d57d70", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Funciones de membresia\n", "\n", "Cambiar los valores de error en posición\n", "\n", "- ENG = (Range -20, 20, Type: Trapmf, Params: -20 -20 -10 – 5)\n", "- ENP = (Range -20, 20, Type: Trimf, Params: -10 -5 -0 )\n", "- EC = (Range -20, 20, Type: Trimf, Params: -5 -0 5 )\n", "- EPP = (Range -20, 20, Type: Trimf, Params: 0 5 10 )\n", "- EPG = (Range -20, 20, Type: Trápmf, Params: 5 10 20 20 )\n" ] }, { "cell_type": "markdown", "id": "9d81d2bd", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Funciones de membresia\n", "\n", "Cambiar los valores de voltaje\n", "\n", "- VNG = (Range -12, 12, Type: Trapmf, Params: -12 -12 -6 – 3)\n", "- VNP = (Range -12, 12, Type: Trimf, Params: -6 -3 -0 )\n", "- VC = (Range -12, 12, Type: Trimf, Params: -3 -0 3 )\n", "- VPP = (Range -12, 12, Type: Trimf, Params: 0 3 6 )\n", "- VPG = (Range -12, 12, Type: Trapmf, Params: 3 6 12 12 )\n" ] }, { "cell_type": "markdown", "id": "385f9bde", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Añadir reglas de control \n", "\n", "- Vamos a edit y buscamos el término _Rules_.\n", "- Emparejamos las entradas y salidas correspondientes con el bóton \"Add rule\"\n", "- Cuando hayamos terminado cerramos la ventana.\n", "- Seleccionamos el metodo de fusificación. \n", "- Exportamos las reglas. " ] }, { "cell_type": "markdown", "id": "016b7c46", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Visualización de las reglas\n", "\n", "![](fuzzy-logic-designer-rules.png)" ] }, { "cell_type": "markdown", "id": "19fedf9d", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Visualización de la superficie de control\n", "\n", "![](fuzzy-logic-designer-surface.png)" ] }, { "cell_type": "markdown", "id": "234deb4c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Archivos para Matlab\n", "\n", "- [Controlador difuso](impresora.fis)\n", "- [Simulink](impresora.slx)" ] }, { "cell_type": "markdown", "id": "a23371b7", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Aunque la lógica difusa se había estado estudiando desde aproximadamente\n", "Los años 1920,Lofti Zadeh fue quien oficialmente introdujo el tema en 1965.\n", "El observó que los computadores no les iba bien manejando datos subjetivos\n", "Tales que si podían ser manejados por humanos." ] }, { "cell_type": "markdown", "id": "cecdc571", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Lógica difusa\n", "\n", "¿Que tan mojada esta la ropa? \n", "\n", "- Lógica clásica: Verdadero (mojado), Falso (seco)\n", "\n", "$$M \\in \\{0,1\\}$$\n", "\n", "- Lógica difusa: Parcialmente verdarero, parcialmente falso.\n", "\n", " $$M \\in [0,1]$$\n", " \n", " Muy seca, poco seca, poco mojada, muy mojada" ] }, { "cell_type": "markdown", "id": "691d7e41", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo calor\n", "\n", "**¿Está el té caliente?**\n", "\n", "- En sistemas booleanos, tenemos valores absolutos:\n", "\n", "$$\\array{\\text{Si}&\\text{No}}$$\n", "\n", "- En sistemas difusos, tenemos valores que son parcialmente verdaderos y parcialmente falsos\n", "\n", "$$\\array{\\text{Muy Caliente}&\\text{Caliente}&\\text{Frío}&\\text{Muy Frío}}$$" ] }, { "cell_type": "markdown", "id": "8de86823", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ventajas del control difuso\n", "\n", "No requiere conocer el modelo dinámico del sistema a controlar. Por tanto,\n", "- El control difuso no requiere identificar el sistema\n", "- Ni necesita aproximar el modelo\n", "- Ni necesita linealizarlo\n", "Facilita el diseño del controlador\n", "\n", "Pero necesita conocer las reglas lingüísticas de control de un experto. Cuando no se conoce el modelo se usa:\n", "- Control PID (una entrada y una salida)\n", "- Control Difuso (múltiples entradas y salidas)\n" ] }, { "cell_type": "markdown", "id": "708ab9da", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Función de membresia\n", "\n", "La función de membresia fue introducida por Lofti A. Zaden en 1965 en el artículo _\"fuzzy sets\"_. Las funciones de membresia caracterizan la caracteristica difusa. \n", "\n", "A cada valor difuso se le asigna un valor numérico entre 0 y 1." ] }, { "cell_type": "markdown", "id": "192806b9", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Conjuntos\n", "\n", "En conjuntos clásicos los elementos pueden ser o no-ser parte de un conjunto. \n", "\n", "Sea $A$ un conjunto, y $\\chi$ la función de membresia a dicho conjunto:\n", "\n", "$$\\chi_A(x) = \\left\\{\\array{0&x\\in A\\\\1&x\\notin A}\\right\\}$$\n", "\n", "Para un ejemplo de alturas $A= \\{165,166,167,\\ldots\\}$\n", "\n", "## Cardinalidad\n", "\n", "La cardinalidad de un conjunto $S$ es denotado por $|S|$, y es el numero de elementos del conjunto. Este número también se conoce como el número cardinal. " ] }, { "cell_type": "markdown", "id": "3def755c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Conjunto difuso\n", "\n", "Los conjuntos difusos pueden ser considerados una extensión de los conjuntos clásicos. \n", "\n", "**En lógica difusa un elemento puede ser parcialmente miembro de un conjunto.**\n", "\n", "La función de membresia para un conjunto difuso se representa por $\\mu_A(x)$" ] }, { "cell_type": "markdown", "id": "0c546eba", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Operaciones de conjuntos clásicos \n", "\n", "$$A=\\{1,2,3,4,5\\} \\quad B=\\{4,5,6,7,8\\}$$\n", "\n", "\n", "- Union $A \\cup B = \\{x | x \\in A \\;\\text{o}\\; x \\in B \\}$\n", "\n", "$$A\\cup B = \\{1,2,3,4,5,6,7,8\\}$$\n", "\n", "- Intersección $A \\cap B = \\{x | x \\in A \\;\\text{y}\\; x \\in B \\}$\n", "\n", "$$A\\cap B = \\{4,5\\}$$\n", "\n", "- Complemento $A'= \\{x|x\\notin A, x\\in X\\}$\n", "\n", "- Diferencia $A|B = \\{x|x\\in A \\;\\text{y}\\; x\\notin B\\}$" ] }, { "cell_type": "markdown", "id": "433b97be", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Operaciones de conjuntos difusos\n", "\n", "- Union (máximo)\n", "\n", "$$\\mu_{\\tilde{A}\\cup\\tilde{B}} = \\mu_{\\tilde{A}}\\cup\\mu_{\\tilde{B}} \\quad y \\in u$$" ] }, { "cell_type": "code", "execution_count": 4, "id": "4b4dc3d3", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 5, "id": "1db35e6a", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "import tkinter\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "# matplotlib.use('TkAgg')" ] }, { "cell_type": "code", "execution_count": 6, "id": "4de645be", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Python39\\lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:122: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "union = ctrl.Antecedent(np.arange(0, 10.05, 0.05), 'Universe')\n", "MFA = fuzz.trapmf(union.universe, [0, 4, 6, 10])\n", "MFB = fuzz.trimf(union.universe, [6, 8, 10])\n", "union['A'] = MFA\n", "union['B'] = MFB\n", "_,union['A∪B'] = fuzz.fuzzymath.fuzzy_or(union.universe,MFA,union.universe,MFB)\n", "union.view()\n", "\n", "# La función .view() necesita instalar un backend que permita graficar\n", "# \n", "# pip install pyqt5\n", "#\n", "# https://stackoverflow.com/questions/56656777/userwarning-matplotlib-is-currently-using-agg-which-is-a-non-gui-backend-so" ] }, { "cell_type": "markdown", "id": "42bd28e3", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Operaciones de conjuntos difusos\n", "\n", "- Intersección (mínimo)\n", "\n", "$$\\mu_{\\tilde{A}\\cap\\tilde{B}} = \\mu_{\\tilde{A}}\\cap\\mu_{\\tilde{B}} \\quad y \\in u$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "fc19950c", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Python39\\lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:122: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "interseccion = ctrl.Antecedent(np.arange(0, 10.05, 0.05), 'Universe')\n", "interseccion['A'] = MFA\n", "interseccion['B'] = MFB\n", "_,interseccion['A∩B'] = fuzz.fuzzymath.fuzzy_and(interseccion.universe,MFA,interseccion.universe,MFB)\n", "interseccion.view()" ] }, { "cell_type": "markdown", "id": "a0bf07aa", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Operaciones de conjuntos difusos\n", "\n", "- Complemento \n", "\n", "$$\\bar{\\mu_{\\tilde{A}}} = 1-\\mu_{\\tilde{A}} \\quad y \\in u$$" ] }, { "cell_type": "code", "execution_count": 8, "id": "25973e6d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Python39\\lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:122: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "complemento = ctrl.Antecedent(np.arange(0, 10.05, 0.05), 'Universe')\n", "complemento['A'] = MFA\n", "complemento[\"A'\"] = fuzz.fuzzymath.fuzzy_not(MFA)\n", "complemento.view()" ] }, { "cell_type": "markdown", "id": "ca2effab", "metadata": {}, "source": [ "# Operaciones de conjuntos difusos\n", "\n", "- Diferencia \n", "\n", "$$\\mu_{\\tilde{A}|\\tilde{B}} = \\mu_{\\tilde{A}}\\cap\\bar{\\mu_{\\tilde{B}}} \\quad y \\in u$$" ] }, { "cell_type": "code", "execution_count": 9, "id": "8c0f489d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Python39\\lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:122: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "diferencia = ctrl.Antecedent(np.arange(0, 10.05, 0.05), 'Universe')\n", "diferencia['A'] = MFA\n", "diferencia['B'] = MFB\n", "_,diferencia['A | B'] = fuzz.fuzzymath.fuzzy_and(diferencia.universe,MFA,diferencia.universe,fuzz.fuzzymath.fuzzy_not(MFB))\n", "diferencia.view()" ] }, { "cell_type": "markdown", "id": "dea953e8", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Propiedades de los conjuntos\n", "\n", "- Commutatividad\n", "\n", "$$A\\cup B = B\\cup A \\qquad A\\cap B = B\\cap A$$\n", "\n", "- Asociatividad\n", "\n", "$$A\\cup (B\\cup C) = (A\\cup B)\\cup C \\qquad A\\cap (B\\cap C) = (A\\cap B)\\cap C$$\n", "\n", "- Distributividad\n", "\n", "$$A\\cup (B\\cap C) = (A\\cup B)\\cap (A \\cup C) \\qquad A\\cap (B\\cup C) = (A\\cap B)\\cup (A \\cap C)$$\n", "\n", "- Idempotencia\n", "\n", "$$A\\cup A = A \\qquad A\\cap A = A$$\n", "\n", "- Identidad\n", "\n", "$$A\\cup 0 = A \\qquad A\\cap 0 = 0 \\qquad A\\cap X =A \\qquad A\\cup X = X$$\n", "\n", "- Transitividad\n", "\n", "$$\\text{si } A \\subseteq B \\;\\text{y}\\; B\\subseteq C \\;\\text{, entonces}\\; A \\subseteq C$$\n", "\n", "- Involución\n", "- Teorema de Morgan" ] }, { "cell_type": "markdown", "id": "1da1729f", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Composición de relaciones difusas\n", "\n", "$$T = R \\textbf{ o } S $$\n", "\n", "Donde $R$ es la relación de universos $X$ y $Y$ y $S$ es la relación de universos $Y$ y $Z$, luego $T$ es la relación de universos $X$ y $Z$.\n", "\n", "Dos tipo de composiciones existen:\n", "\n", "- Composición MAX-MIN :\n", "\n", "$$\\mu_{R \\textbf{ o } S}= \\max_{y\\in Y}\\left[\\min\\left(\\mu_R(x,y),\\mu_S(y,z)\\right)\\right]$$\n", "\n", "- Composición MAX-Producto : \n", "\n", "$$\\mu_{R \\textbf{ o } S}= \\max_{y\\in Y}\\left[\\mu_R(x,y)\\cdot\\mu_S(y,z)\\right]$$" ] }, { "cell_type": "code", "execution_count": 10, "id": "3274ece6", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def MaxMinCompo(R,S):\n", " T = np.zeros([R.shape[0],S.shape[1]])\n", " for xi in range(R.shape[0]):\n", " for zi in range(S.shape[1]):\n", " T[xi,zi] = np.max(np.minimum(R[xi,:],S[:,zi].T))\n", " return T\n", "\n", "def MaxProdCompo(R,S):\n", " T = np.zeros([R.shape[0],S.shape[1]])\n", " for xi in range(R.shape[0]):\n", " for zi in range(S.shape[1]):\n", " T[xi,zi] = np.max(np.multiply(R[xi,:],S[:,zi].T))\n", " return T" ] }, { "cell_type": "code", "execution_count": 11, "id": "2382676a", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ejemplo de Composición\n", "\n", "R =\n", " [[0.5 0.1]\n", " [0.2 0.9]\n", " [0.8 0.6]]\n", "S =\n", " [[0.6 0.4 0.7]\n", " [0.5 0.8 0.9]]\n", "T = {max-min}\n", " [[0.5 0.4 0.5]\n", " [0.5 0.8 0.9]\n", " [0.6 0.6 0.7]]\n", "T = {max-prod}\n", " [[0.3 0.2 0.35]\n", " [0.45 0.72 0.81]\n", " [0.48 0.48 0.56]]\n" ] } ], "source": [ "print(\"Ejemplo de Composición\\n\")\n", "\n", "R = np.matrix([[0.5,0.1],[0.2,0.9],[0.8,0.6]])\n", "S = np.matrix([[0.6,0.4,0.7],[0.5,0.8,0.9]])\n", "print(\"R =\\n\",R)\n", "print(\"S =\\n\",S)\n", "T = MaxMinCompo(R,S)\n", "print(\"T = {max-min}\\n\",T)\n", "T = MaxProdCompo(R,S)\n", "print(\"T = {max-prod}\\n\",T)" ] }, { "cell_type": "code", "execution_count": 12, "id": "9241b49e", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ejemplo de Composición\n", "\n", "R =\n", " [[0.3 0.9 0.2]\n", " [0.6 0.5 0. ]]\n", "S =\n", " [[1. 0.6]\n", " [0.4 0.1]\n", " [0.7 0. ]]\n", "T = {max-min}\n", " [[0.4 0.3]\n", " [0.6 0.6]]\n", "T = {max-prod}\n", " [[0.36 0.18]\n", " [0.6 0.36]]\n" ] } ], "source": [ "print(\"Ejemplo de Composición\\n\")\n", "\n", "R = np.matrix([[0.3,0.9,0.2],[0.6,0.5,0]])\n", "S = np.matrix([[1,0.6],[0.4,0.1],[0.7,0]])\n", "print(\"R =\\n\",R)\n", "print(\"S =\\n\",S)\n", "T = MaxMinCompo(R,S)\n", "print(\"T = {max-min}\\n\",T)\n", "T = MaxProdCompo(R,S)\n", "print(\"T = {max-prod}\\n\",T)" ] }, { "cell_type": "markdown", "id": "d8bbb257", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Propiedades de las relaciones \n", "\n", "- **Reflexividad**: Cuando una relación es reflexiva, cada nodo en el grafo genera una conexión con sigo mismo.\n", "\n", "$$R = \\left\\{(x,x)\\right\\} \\qquad\\text{ , } x\\in R$$\n", "\n", "- **Simetria**: Una relación es simétrica cuando en le grafo, para cada conexión del nodo $i$ hacia el nodo $j$, hay una conexión apuntando en la direción opuesta, es decir, del nodo $j$ al nodo $i$. \n", "\n", "$$(x,y)\\in R \\qquad\\to\\qquad (y,x)\\in R$$\n", "\n", "- **Transitividad**: Una relación es transitiva cuando para cada par de conexiones en el grafo, una apuntando del nodo $i$ al nodo $j$ y otra del nodo $j$ al nodo $k$, existe tambien una conexión del nodo $i$ al nodo $k$." ] } ], "metadata": { "celltoolbar": "Slideshow", "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.8" } }, "nbformat": 4, "nbformat_minor": 5 }