Saltar al contenido

Control Fuzzy – Mamdani – Simulink

Hola controleros y controleras, en esta entrada daremos una introducción al control fuzzy usando lógica difusa y lo vamos a implementar en Simulink y adicionalmente haremos una implementación real en el laboratorio de temperatura.

Antes de comenzar, te invito a que veas nuestro curso gratuito sobre Control por Realimentación

Y que te suscríbas al canal si te interesa los sistemas de control.

Lógica Difusa

Los inicios de la lógica difusa o borrosa se remontan  a la década de los  años 60 en California – Estados Unidos  cuando el profesor Lofti A Zade  publica un trabajo titulado “Fuzzy  sets” el cual  introduce en el mundo científico  la teoría de la lógica difusa, la cual consiste en dar una cantidad múltiple de valores a determinada  variable permitiendo así incluir el razonamiento impreciso en el análisis de incertidumbre que pueda presentar dicha variable.

Este estudio de la lógica difusa se basa en la teoría tradicional de los conjuntos. Desde allí se parte para el estudio de un elemento y la forma en que este hace  parte, o tiene pertenencia a un conjunto U (universo establecido) que cumple con un número de características  o parámetros comunes entre sí para el razonamiento y la lógica humana.

La lógica fuzzy es utilizada cuando se tienen sistemas en los cuales su información no es exacta, sino que contienen un alto grado de imprecisión. Los métodos de esta lógica se basan en conjuntos difusos o también llamados Membership Functions (MF) o funciones de membrecía.

Dichos conjuntos son características expresadas por el experto de forma lingüística que pueden ser nombres o adjetivos y que toman un valor de 0 a 1 dependiendo el grado de pertenencia del conjunto en un universo.

Estas funciones tienen una representación gráfica que responde regularmente a figuras geométricas como formas triangulares o trapezoidales, y también a funciones como las campanas gaussianas, y dentro de sus perímetros se establecen los niveles a los que pertenecen dentro del universo del discurso.

Control Fuzzy

Ebrahim Mamdani fue el encargado de mostrar la aplicación de la lógica difusa en los sistemas de control en 1974, desarrollando el primer control fuzzy práctico para regular un motor de vapor.

Para esta entrada, vamos a ejemplificar el uso del controlador difuso controlando la variable temperatura de nuestro Laboratorio de Temperatura, pero adicionalmente haremos la simulación en Simulink, si tu solamente deseas ver como programar el fuzzy con matlab.

  • Curso de Sistemas de Control en Dispositivos Microcontrolados en UDEMY (PIC y ARDUINO)
  • Certificado de Aprobación una vez finalices el Curso
  • DESCUENTO si accedes directamente con los siguientes botones de acceso.
  • NOTA: Si buscas el curso directamente en UDEMY o si lo adquieres en otra plataforma distintas a las mostradas anteriormente NO OBTENDRÁS NINGUN DESCUENTO sobre el valor final del Curso.

En la siguiente figura vamos a mostrar el diagrama de bloques de un control fuzzy el cual implementaremos en esta entrada.

Control fuzzy
Control Fuzzy

Etapa de Fusificación

En esta etapa se da el proceso de conversión de los valores de entrada de forma lingüística, a valores que el control pueda interpretar.

Universo del discurso

Dentro del control difuso se tiene en cuenta  el conocimiento del experto del sistema, los parámetros del error y la  derivada  del error se extraen los rangos dentro de los cuales se mueven estos dos.

Funciones de pertenencia o membrecías (µ o MF)

Una función de pertenencia es una curva que define el grado, entre uno y cero, en que las variables pertenecen a los conjuntos difusos, se definen según el experto, analizando el sistema a controlar. Toman formas, las más conocidas son: Singlentons, trapezoidales, triangulares, sinoidales, gaussianas, entre otras. Estas funciones toman valores lingüísticos definidos por el mismo experto según el comportamiento de las variables.

Variables lingüísticas de entrada.

Como se muestra en el diagrama de bloques del control fuzzy la primera variable de entrada es el error, debido a que es la diferencia que hay entre el valor de referencia, con los datos de la variable del sistema o proceso.

Para esta variable se va a diseñar siete  variables lingüísticas, o particiones del universo del discurso. Las cuales son:

  • eNG (Error negativo grande) indica cuando la salida del error está muy por encima del valor de referencia.
  • eNM (Error negativo medio) indica cuando la salida del error está medianamente por encima del valor de referencia.
  • eNP (Error negativo pequeño) indica cuando la salida del error está por encima pero con muy poca diferencia del valor de referencia.
  • eZ  (Error cero) indica cuando la salida del error es igual al valor de referencia.
  • ePP (Error positivo pequeño) indica cuando la salida del error está por debajo pero con muy poca diferencia del valor de referencia.
  • ePM (Error positivo medio) indica cuando la salida del error está medianamente por debajo del valor de referencia.
  • ePG (Error positivo grande) indica cuando la salida del error está muy por debajo del valor de referencia.

La otra variable de entrada para el sistema fuzzy es la derivada del error, dicha entrada seria también una integral del error, pero esto implicaría tener un universo del discurso muy amplio, por dicho motivo se opta por usar el diferencial del error para posteriormente integrar la salida del sistema difuso.

Las variables lingüísticas son:

  • deNG (Derivada error negativo grande) indica cuando la salida tiene una pendiente positiva.
  • deNM (Derivada error negativo mediano) indica cuando la salida tiene una pendiente medianamente positiva.
  • deNP  (Derivada error negativo pequeño) indica cuando la salida tiene una pendiente positiva casi constante.
  • deZ (Derivada error cero) indica cuando la salida permanece constante.
  • dePP (Derivada error positivo pequeño) indica cuando la salida tiene una pendiente negativa casi constante.
  • dePM (Derivada error positivo mediano) indica cuando la salida tiene una pendiente medianamente negativa.
  • dePG (Derivada error positivo grande) indica cuando la salida tiene una pendiente negativa.

Variables lingüísticas de salida

Esta variable describe tanto la salida de potencia del calentador o heater hacia los transistores para controlar temperatura. También se diseñaron siete variables lingüísticas o particiones del universo del discurso, las cuales fueron:

  • UFNG (Salida negativa grande) cuando se necesita bajar de manera inmediata la frecuencia del variador o la potencia de la resistencia.
  • UFNM (Salida negativa mediana) cuando se necesita bajar de manera rápida  la frecuencia del variador o la potencia de la resistencia.
  • UFNP  (Salida negativa pequeña) cuando se necesita bajar de manera lenta  la frecuencia del variador o la potencia de la resistencia.
  • UFZ (Salida cero) indica cuando se necesita bajar dejar constante la frecuencia del variador o la potencia de la resistencia.
  • UFPP  (Salida positiva pequeña) cuando se necesita subir de manera lenta  la frecuencia del variador o la potencia de la resistencia.
  • UFPM (Salida positiva mediana) cuando se necesita subir de manera rápida la frecuencia del variador o la potencia de la resistencia.
  • UFPG (Salida positiva grande) cuando se necesita subir de manera inmediata la frecuencia del variador o la potencia de la resistencia.

Función de pertenencia triangular

Para este control fuzzy serán creadas funciones de pertenencia triangular, representadas por la siguiente figura:

Cuya ecuación viene dada por:

f(x,a,b,c)= \left\{\begin{matrix}
0 & x \leq a\\
\dfrac{x-a}{b-a} & a \leq x \leq b\\ 
\dfrac{c-x}{c-b} & b \leq x \leq c\\ 
0 & c \leq x
\end{matrix}\right.

Entonces el grado de pertenencia del valor de entrada viene dado por la siguiente ecuación:

f(x,a,b,c)= {\rm max}\left({\rm min} \left(\dfrac{x-a}{b-a}, \dfrac{c-x}{c-b}\right ) , 0\right )

Reglas de inferencia

La tarea del sistema de inferencia es tomar los niveles de pertenencia y apoyado en la base de reglas genera una salida en el sistema difuso. La base de reglas es la manera que tiene el sistema difuso de guardar el conocimiento lingüístico que le permiten resolver el problema para el cual ha sido diseñado. Estas reglas son del tipo IF-THEN.

La elaboración de las reglas del sistema difuso se hacen mediante la tabla FAM, la cual involucra todas las combinaciones posibles que puede presentarse en el proceso.

e/dedeNGdeNMdeNPdeZdePPdePMdePG
eNGUFNGUFNGUFNGUFNGUFNMUFNPUFZ
eNMUFNGUFNGUFNGUFNMUFNPUFZUFPP
eNPUFNGUFNGUFNMUFNPUFZUFPPUFPM
eZUFNGUFNMUFNPUFZUFPPUFPMUFPG
ePPUFNMUFNPUFZUFPPUFPMUFPGUFPG
ePMUFNPUFZUFPPUFPMUFPGUFPGUFPG
ePPUFZUFPPUFPMUFPGUFPGUFPGUFPG
Tabla FAM para definición de reglas de inferencia

Las reglas son extraídas de la tabla FAM mostrada anteriormente a través de los antecedentes que se enuncian en la primera fila y la primera columna, dando como resultado la intersección entre los antecedentes involucrados, por ejemplo, las tres primeras reglas se constituyen de la siguiente manera:

  1. If (e is eNG) and (de is deNG) then (u is UFNG)
  2. If (e is eNG) and (de is deNM) then (u is UFNG)
  3. If (e is eNG) and (de is deNP) then (u is UFNG)

Defusificación

La defuzzificación es la etapa final del sistema de inferencia difusa Mamdani, en la cual se transforma el resultado difuso —representado por una función de pertenencia agregada— en un valor numérico nítido que puede ser utilizado como salida del controlador.

En este diseño se ha empleado el método del centroide (también conocido como centro de masa o centro de gravedad), el cual consiste en calcular el centro geométrico del área obtenida tras la inferencia difusa. Es el método más utilizado en lógica difusa debido a que proporciona un compromiso ponderado entre todas las salidas activadas.

Agregación parcial por etiquetas de salida

en la etapa de agregación, se hace uso de la función máximo, el cual toma el valor máximo de todas las reglas que se encuentran asociadas en los siete conjuntos o funciones de pertenencia de la salida. Para entender mejor el concepto en esta etapa, se toma como ejemplo el conjunto de membresía de la salida negativa grande (uFNG) el cual según la tabla FAM, siempre se obtiene una salida negativa grande en las reglas 1, 2, 3, 4, 8, 9, 10, 15, 16 y 22.

uNG=max([r(1:4) r(8:10) r(15:16) r(22) ]);

Este proceso se repite para cada etiqueta de salida: uNM, uNP, uZ, uPP, uPM, uPG.

Implicación (recorte o saturación)

A continuación, se realiza la implicación difusa, también conocida como recorte o saturación de las funciones de pertenencia de salida. En esta etapa, cada conjunto de salida es recortado hasta el valor correspondiente a su activación:

UFNG(UFNG>=uNG)=uNG;
UFNM(UFNM>=uNM)=uNM;
UFNP(UFNP>=uNP)=uNP;
UFZ(UFZ>=uZ)=uZ;
UFPP(UFPP>=uPP)=uPP;
UFPM(UFPM>=uPM)=uPM;
UFPG(UFPG>=uPG)=uPG

O también podemos escribirla de la siguiente forma (podemos usar cualquiera de las dos formas)

UFNG = min(UFNG, uNG);
UFNM = min(UFNM, uNM);
UFNP = min(UFNP, uNP);
UFZ  = min(UFZ,  uZ);
UFPP = min(UFPP, uPP);
UFPM = min(UFPM, uPM);
UFPG = min(UFPG, uPG);

Este paso da lugar a figuras geométricas recortadas (trapezoidales o triangulares truncadas), que representan la salida parcial de cada regla activa, según el grado con que se activó.

Agregación total

La agregación difusa final consiste en la unión de todas las funciones de salida recortadas (UFXX). Esta unión se implementa mediante la función MAX punto a punto, dando como resultado una única función fx, que representa la salida difusa combinada del sistema:

fx=max([UFNG UFNM UFNP UFZ UFPP UFPM UFPG]')

Esta función fx es la que se utiliza en la fórmula del centroide para calcular la salida crisp cg.

Interpretación geométrica

El proceso completo genera una superposición de áreas recortadas que forman una figura difusa compuesta. El valor cg obtenido por el centroide representa el centro de masa de dicha figura, integrando todas las reglas activadas y ponderándolas según su grado de activación.

Calculo del centro de gravedad (cg).

Para obtener el centro de gravedad se realiza mediante la siguiente formula:

cg = \dfrac{\sum x.f(x)}{\sum f(x)}

Donde x es el rango o universo del discurso de la variable de salida. f(x) es el vector hallado anteriormente.

Centro de Gravedad
Sistemas de Primer Orden

Sistemas Dinámicos de Primer Orden

Lugar Geométrico de las Raíces

Lugar Geométrico de las Raíces

Error en Estado Estacionario

Control Fuzzy en Simulink

A continuación implementaremos un controlador difuso inicialmente simulado en Simulink y posteriormente implementado en el TCLAB – Laboratorio de Control de Temperatura.

Control Fuzzy

Descargar Archivos

Bibliografia

  • Giraldo, S. A. C., Gómez, D. S. H., & Blandón, J. H. G. (2013). Control y monitoreo de temperatura para un horno de curado de prendas índigo utilizando lógica difusa y controles pi. REVISTA POLITÉCNICA, 9(17), 69 – 81. Recuperado a partir de https://revistas.elpoli.edu.co/index.php/pol/article/view/342
  • Kovacic, Z., & Bogdan, S. (2006). Fuzzy controller design : Theory and applications (Control engineering (Taylor & Francis) ; 19
  • Leonid Reznik, (1997). Fuzzy Controllers Handbook, Newnes.
  • Zhang, H., Liu, D. (2006). Fuzzy Modeling and Fuzzy Control. Birkhäuser Basel. p416

Citar este Artículo

📌 Selecciona el formato:
Giraldo, S. A. C. (2021). Control Fuzzy – Mamdani – Simulink. Control Automático Educación. https://controlautomaticoeducacion.com/control-realimentado/control-fuzzy-mamdani-simulink/