Está en la página 1de 16

Práctica 2.

Lógica Difusa
Resumen

En esta práctica se da una introducción a la lógica difusa, y se realizan dos ejemplos del uso del
ToolBox fuzzylogic de MATLAB, para la solución de problemas sencillos.

En esta práctica se da una introducción a la lógica difusa, empezando por su concepto, su relación
con el comportamiento humano, su uso y las teorías en las que se basa. Enseguida se muestran
otras características de este tipo de lógica y la forma y situaciones en la que se usa diferenciándola
de la lógica clásica. Como parte final de la introducción se hace referencia a conceptos que son
útiles para el entendimiento de este tema incluyendo entre ellos el del controlador difuso,
enumerando las partes de las que consta y las características de cada una de ellas.

En el cuerpo de este trabajo se desarrollan dos problemas usando la lógica difusa, el primero
(hecho en clase) determina el porcentaje de propina a pagar dependiendo de si el servicio fue
considerado pobre bueno o excelente y de si la comida fue mala o deliciosa. El segundo problema
consta de mantener la temperatura de un cuarto en un valor deseado, esto se logra activando un
enfriador o un calentador de forma independiente dependiendo de si el error y la diferencia del
error es positiva, negativa o cero. En ambos problemas se hace un desarrollo paso a paso de la
implementación de estos sistemas; se observa la construcción de la función, las entradas y sus
conjuntos de pertenencia, así como las salidas, las reglas que son necesarias para dar una salida y
cómo se obtiene un valor numérico a partir de calificaciones que son meramente basadas en una
cuestión personal.

Finalmente se analizan resultados y se dan conclusiones.

Objetivo:

Conocer y aplicar los fundamentos de la lógica fuzzy a ejemplos académicos y de la vida diaria.

Introducción y marco teórico

La cantidad y variedad de aplicaciones de la lógica difusa (fuzzy, borrosa, heurística) han crecido
considerablemente. La lógica difusa es una lógica alternativa a la lógica clásica que pretende
introducir un grado de vaguedad en las cosas que evalúa. En el mundo existe mucho conocimiento
ambiguo e impreciso por naturaleza. El razonamiento humano con frecuencia actúa con este tipo
de información. La lógica difusa fue diseñada precisamente para imitar el comportamiento del ser
humano. La clave de esta adaptación, se basa en comprender los cuantificadores de cualidad para
nuestras inferencias.

Este tipo de lógica se pude definir como la aplicación de la Teoría de los conjuntos difusos junto a
la extracción de valores reales de problemas complejos. Se basa en reglas heurísticas de la forma
SI (antecedente) ENTONCES (consecuente), donde el antecedente y el consecuente son también
conjuntos difusos, ya sea puros o resultado de operar con ellos.

Los métodos de inferencia para esta base de reglas deben ser sencillos, versátiles y eficientes. Los
resultados de dichos métodos son un área final, fruto de un conjunto de áreas solapadas entre sí
(cada área es un resultado de una regla de inferencia). Para escoger una salida concreta a partir de
tanta premisa difusa, el método más usado es el del centroide, en el que la salida final será el
centroide del área total resultante.

Las reglas de las que dispone el motor de inferencia de un sistema difuso pueden ser formuladas
por expertos o aprendidas por el propio sistema, haciendo uso de redes neuronales para
fortalecer las futuras tomas de decisiones.

La lógica difusa se inició en 1965 por Lotfi A. Zadeh, profesor de la Universidad de California en
Berkeley. Surgió como una herramienta importante para el control de sistemas y procesos
industriales complejos, así como también para la electrónica de entretenimiento y hogar, sistemas
de diagnóstico y otros sistemas expertos.

Se puede aplicar en procesos demasiado complejos, cuando no existe un modelo de solución


simple o un modelo matemático preciso. Es útil también cuando se necesita usar el conocimiento
experto que utiliza conceptos ambiguos o imprecisos. De la misma manera se puede aplicar
cuando ciertas partes de un sistema a controlar son desconocidas y no pueden medirse de forma
confiable y cuando el ajuste de una variable puede producir desajuste de otras. No es
recomendable utilizar la lógica difusa cuando algún modelo matemático ya soluciona
eficientemente el problema, cuando los problemas son lineales o cuando no tienen solución.

La lógica difusa en comparación con la lógica convencional permite trabajar con información que
no es exacta para poder definir evaluaciones convencionales, contrario con la lógica tradicional
que permite trabajar con información definida y precisa.

Con la finalidad de entender más este tipo de lógica se enumeran algunos conceptos útiles:

Conjunto Nítido: Es un conjunto que puede ser enumerado, consta de reglas y tiene una función
característica; la cual define un conjunto al tomar como parámetro un elemento y regresa 1 si el
elemento pertenece a un conjunto y cero si no pertenece a él.

Conjunto Difuso o Borroso: Son una generalización de los conjuntos nítidos. En la teoría de
conjuntos difusos, los elementos pueden pertenecer parcialmente a los conjuntos. El grado de
pertenencia se determina por una función de membresía (también llamada función de
pertenencia).

Una función de membresía define un conjunto difuso de la siguiente manera, toma como
argumento un elemento, y regresa un valor entre 0 y 1 que define el grado en que ese elemento
pertenece al conjunto. La definición de un conjunto difuso depende del problema en particular y
de la persona que lo define.

Fuzzy Sets o Conjuntos Difusos: Desde el punto de vista de que se aplican palabras a la definición
de cualquier propiedad. No pueden ser definidos con 0 o 1, se ha de establecer un peso para la
característica estableciendo valores intermedios.

Grado de Pertenencia: Este valor establece el punto de transición entre 0 y 1 entre las condiciones
del conjunto difuso.

Resumen de la información: A partir de un conjunto de entradas se puede determinar una


situación.
Variable difusa: Cualquier valor que está basado en la percepción humana más que en valores
precisos de medición. Está vinculada con el uso del lenguaje y pueden ser usadas en estructuras
del tipo if- then.

Controlador Difuso: Trabaja de manera muy diferente a los sistemas de control convencionales.
Estos usan el conocimiento experto para generar una base de conocimientos que dará al sistema
la capacidad de tomar decisiones sobre ciertas acciones que se presentan en su funcionamiento.
Permiten describir un conjunto de reglas que utilizaría una persona para controlar un proceso y a
partir de estas reglas generar acciones de control.

Fig. 1 Estructura de un modelo difuso.

Fusificación: Convertir valores crisp o va-lores reales en valores difusos. Se asignan grados de
pertenencia a cada una de las variables de entrada con relación a los conjuntos difusos
previamente definidos utilizando las funciones de pertenencia asociadas a los conjuntos difusos.

Base de conocimiento: Contiene el conocimiento asociado con el dominio de la aplicación y los


objetivos de control. Se deben definir las reglas lingüísticas de control que realizarán la toma de
decisiones que decidirán la forma en la que debe actuar el sistema.

Inferencia: Relaciona los conjuntos difusos de entrada y salida para representar las reglas que
definirán el sistema. Se utiliza la información de la base de conocimiento para generar reglas
mediante el uso de condiciones (si- entonces).

Defusificación: Adecua los valores difusos generados en la inferencia en valores crisp, que
posteriormente se utilizarán en el proceso de control. Se utilizan métodos matemáticos simples
como el método del Centroide, Método del Promedio Ponderado y Método de Membresía del
Medio del Máximo.

Planteamiento

Problema 1.

Con base en la calidad del servicio y de la comida, se quiere determinar qué porcentaje de propina
se le proporcionará al mesero. El servicio será calificado del 1 al 10, del mismo modo será
calificada la comida, el resultado de la función nos dará un valor numérico de propina en un rango
del 0 a 16%.
Desarrollo y Memoria de Cálculo

Desarrollo

Del ejercicio que se realizó en clase.

1. Se abre el módulo de Fuzzy Logic en MATLAB, haciendo clic en la opción FIS Editor GUI
(Fuzzy)

Fig. 2 Módulo de Lógica Difusa en MATLAB

2. Se introducen el número de variables de entrada que serán procesadas en las reglas * para
obtener la salida de la función

Fig. 3 Se muestra como añadir una nueva variable.

3. Se nombra cada una de las entradas y las salidas, del mismo modo se le asigna un nombre
a la función y a cada uno de los conjuntos para cada variable.

Fig. 4 En esta ventana es en donde se pueden cambiar los valores del conjunto de pertenencia de cada variable.

4. Se pueden modificar los valores de los conjuntos de pertenencia o membresía, con base
en la experiencia o criterio personal. Modificamos el modelo que tienen los conjuntos de
pertenencia por default, y para la primera variable que es Servicio, seleccionamos un
comportamiento tipo Gaussiano, que se muestre en un rango del 1 al 10. El rango en el eje
X es cómo vamos a evaluar a las variables, en este caso existen 2; Servicio y Comida, las
cuales serán calificadas dentro de este rango.

Fig. 5 Editar el tipo del conjunto de pertenencia.

5. Se ajustan los valores del conjunto de membresía para las dos variables. Se cambian los
valores que tiene por default, en el caso de la variable Comida se seleccionaron solo dos
conjuntos de membresía los cuales tienen un tipo trapezoidal, en este caso también es
necesario eliminar un conjunto ya que se tiene 3 por default. Los conjuntos determinan:
 En qué nivel, según la calificación que se le da al conjunto, se pertenece o
no a esa categoría. Tomando como ejemplo la variable comida, si se le
asigna un valor de 0, entonces pertenece 100% a la categoría de Malo,
pero si se le asigna una ‘calificación’ de 10, entonces la pertenencia que
tiene al conjunto Malo es 0% y 100% al conjunto de Deliciosa.
De nuevo, los valores del rango se seleccionan a criterio personal. Se obtiene lo siguiente.

Fig. 6 Función de pertenencia de la variable servicio.

Fig. 7 Función de membresía de la variable comida.

6. Para la salida se establecen, del mismo modo, los conjuntos de membresía, en este caso la
salida es la propina, el rango en X de la propina cambia, ya no es el mismo que el del
servicio y comida, porque ahora lo que se busca es evaluar qué tanto por ciento de
propina se proporcionará al mesero. El rango va de un 0 a 16.
Se cambian los nombres de las funciones de membresía y se ajustan según parezca
conveniente. En este caso se definieron 3 conjuntos para la salida; poca, promedio y
generosa, poca con un tipo triangular y promedio y generosa con un tipo trapezoidal.
Fig. 8 Función de membresía de la propina.

7. Ya definidas las variables de entrada, de salida y sus respectivos conjuntos de pertenencia


se procede a declarar las reglas gobernarán la salida con respecto a las variables de
entrada. En este caso específico teníamos 3 reglas consideradas en un principio:
 Si el servicio es pobre o la comida es mala entonces la propina es poca.
 Si el servicio es bueno entonces la propina es promedio.
 Si el servicio es excelente o la comida es deliciosa entonces la propina es
generosa.

Estas reglas se declaran haciendo clic en la pestaña Edit y posteriormente en la ventana que
aparece.

En esta ventana se muestran las variables de entrada y sus conjuntos de pertenencia, y los
conectores lógicos de forma en que podemos declarar las reglas. Se define la salida para cada
regla.

Fig. 9 Declaración de las reglas del sistema

8. Por último podemos visualizar cómo trabaja nuestra función.


En la pestaña View, se selecciona Rules y se despliega la pantalla que se muestra a
continuación, en el recuadro de Input, introducimos los valores de nuestras dos variables,
primero la de Servicio que es la que está declarada primero y posteriormente comida. En
la salida nos proporciona un valor numérico de propina, según las reglas que se
establecieron anteriormente. Este valor es el resultado de la desfuzificación realizada
internamente por MATLAB, usando el método de ubicar el centroide de la figura
resultante en la salida.

Fig. 10 Visualización del resultado de la función.

Planteamiento

Problema 2

Se tiene un controlador difuso simple de temperatura a fin de mantener un cuarto a una valor
deseado, en este caso dicho valor le llamaremos CMD el cual alimenta a nuestro controlador,
además de la temperatura real del sistema. Como podemos ver en la figura, después del
controlador tenemos un enfriador y un calentador, los cuales serán o no activados
independientemente, según sea el caso.
CONTROLADOR DIFUSO SIMPLE

CALENTADOR
SALIDA

CONTROLADOR
CMD SISTEMA
DIFUSO

SALIDA
ENFRIADOR

TEMP

Fig. 11 Modelo del controlador basado en lógica borrosa o fuzzy.

Algunas variables que tenemos que definir

 CMD: Temperatura Objetivo (Deseada)


 TEMP: Temperatura Observada
 ERROR: CMD – TEMP
o Negativo
o Cero
o Positivo
 ERROR’: Diferencial del ERROR (Calentando o Enfriando)
o Negativo
o Cero
o Positivo
 SALIDA: CONTROL (CALENTAR, SEGUIR, ENFRIAR)

El sistema tiene 2 entradas (variable lingüística) y una salida (variable lingüística):

 Error: Es la diferencia entre la temperatura observada y la deseada


 Error’: Es la relación de cambio del error.

Desarrollo y Memoria de Cálculo

Desarrollo

1. Las variables de entrada pertenecen en mayor o menor medida a 3 conjuntos que se


denominan; negativo, cero y positivo. La variable de salida también pertenece a 3
conjuntos borrosos que son; calentar: Actuar sobre el calentador del sistema, seguir:
mantener la acción anterior y enfriar: Actuar sobre el enfriador del sistema.

Un experto en la materia proporcionó la siguientes graficas de entrada y salidas.

Entradas

Fig. 12. Función de pertenencia de la entrada 1.

Error
Fig. 13 Funciones de pertenencia de la entrada 2.

Error’

Fig. 14 funciones de pertenencia de la salida.

Salida
2. Se declaran las reglas, se tienen 9 en total, las cuales se muestran en la siguiente tabla.
ERROR (CMD-TEMP)

N Z P

N ENFRIAR CALENTAR CALENTAR


D(CMD-TEMP)/DT
ERROR’

Z ENFRIAR SEGUIR CALENTAR

P ENFRIAR ENFRIAR CALENTAR

De forma explicita

 (Error negativo and error’ negativo) then (enfriar)


 (Error negativo and error’ cero) then (enfriar)
 (Error negativo and error’ positivo) then (enfriar)
 (Error cero and error’ negativo) then (calentar)
 (Error cero and error’ cero) then (seguir)
 (Error cero and error’ positivo) then (enfriar)
 (Error positivo and error’ negativo) then (calentar)
 (Error positivo and error’ cero) then (calentar)
 (Error positivo and error’ positivo) then (calentar)

3. Una vez que tenemos todo definido procedemos a utilizar la herramienta de fuzzylogic

Inicialmente colocamos el número indicado de entradas y salidas.


Fig. 15 Ventana principal del ToolBox de FuzzyLogic

4. Las configuraciones se dejan intactas.

Se definen los grados de pertenecía antes mencionados.

Fig. 16 Definición de las funciones de membresía.

5. Posteriormente en la ventana principal, en el recuadro de color blanco se hace clic para


definir las reglas del sistema.
Fig. 17 Ventana donde se definen las reglas.

Todas las reglas están basadas en el operador lógico and.

6. Al terminar se puede revisar el Surface colocándose en la ventana principal, menú


opciones => Surface.

Fig. 18 Ventana que muestra el gráfico en 3D de superficie del sistema.

7. Y finalmente de nuevo en la ventana principal, menú opciones => rules desplegará la


siguiente ventana.
Fig. 19 Ventana Rules, se muestran los valores de entrada y salida de la función.

En la esquina inferior izquierda se encuentra el vector fila con 2 elemento (entradas) las cuales se
pueden modificar a fin de conocer la respuesta del sistema

Fig. 20 Vector de entradas del sistema

Resultados y Discusión

Para ambos problemas, a partir de dos variables de entrada, de las cuales se expresaron sus
funciones de pertenencia membresía de cada una de las variables lingüísticas. Las salidas, de la
misma forma se definen como un conjunto de variables lingüísticas que tienen conjuntos de
pertenencia, declarados según la experiencia personal de quién observa el proceso que se está
evaluando.

Para el primer y segundo problema, se ingresan datos al vector de entrada, se observa el grado de
pertenencia a la función de membresía según el valor numérico ingresado, y conforme la regla
definida, es el grado de pertenencia que le corresponde la salida.

Específicamente para el problema 1, asignamos valores según lo siguiente, los calificativos para la
comida y el servicio no iguales a los nombrados en las entradas y sus funciones de membresía, son
solo adjetivos que describen de alguna forma los valores numéricos ingresados.

Comida Servicio
Muy mala (1) Bueno(8)
Regular(5) Malo(2)
Buena(7) Muy malo(0)
Excelente (10) Excelente (8)
Tabla 1 La tabla muestra valores de entrada para realizar pruebas.

Según las reglas que se ingresaron:

1.
2. Si el servicio es pobre o la comida es mala entonces la propina es poca.

3. Si el servicio es bueno entonces la propina es promedio.


4. Si el servicio es excelente o la comida es deliciosa entonces la propina es generosa.

Verifiquemos el comportamiento del programa, esperando los siguientes resultados,


expresados solo en palabras, el programa nos dará una mejor aproximación de la propina,
arrojando datos numéricos.

Comida Servicio Resultado esperado


Muy mala (1) Bueno(8) Poca propina
Regular(5) Malo(2) Poca propina
Buena(7) Muy malo(0) Propina poca, pero mayor que
los casos anteriores.
Excelente (10) Excelente (8) Muy buena propina
Tabla 2 Salidas lingüísticas esperadas

Después de especular un poco con respecto a los resultados, se prueba el programa realizado.

Para la primera prueba, donde la comida es calificada con 1 y el


servicio con 8, tenemos una propina resultante de 6.83.

Fig. 21 Prueba 1

En la segunda prueba en donde el servicio y la comida son pobres,


con entrada de 2 y 5 respectivamente, la propina resultante es de
4.64%

Fig. 22 Prueba 2
Para la tercera prueba, el servicio obtiene un valor de 0 y la
comida de 7, por lo que la propina es de 1.85

Fig. 23 Prueba 3

En la cuarta prueba el servicio y la comida son buenos, calificados con 8 y 10


respectivamente, por lo que la propina se eleva al 11.7%

Fig. 24 Prueba 4

Comida Servicio Resultado


Muy mala (1) Bueno(8) 6.38
Regular(5) Malo(2) 4.64
Buena(7) Muy malo(0) 1.85
Excelente (10) Excelente (8) 11.17
Tabla 3. Valores reales, numéricos, de la salida, propina.

Con base en la prueba 1 y la 3, se puede observar que pesa más que el servicio sea bueno, por
encima de que la comida sea sabroso o no, ya que el nivel de propina cuando la comida es regular
pero tiene mal servicio, no se compara al caso de que la comida sea mala y el servicio bueno, ya
que la propina es casi 4 veces más grande, en el último caso. Si se quiere modificar los valores
numéricos que arroja la función será necesario cambiar sus funciones de pertenencia, en cada
variable, según la ponderación que tendrá respecto a la salida, de nuevo basado en la experiencia
o criterio propio.

Del segundo ejercicio algunos ejemplos de la respuesta son:

ERROR ERROR' SALIDA


-1.5 0.5 -53.3
-1.5 4 -56.5
-0.5 0.5 -21.6
1 1.3 13.4
0.5 0.5 11.6
4 4 0
3 3 74
Tabla 4. Salidas de la función 2

Se puede observar en la tabla que se cumplen las reglas antes dispuestas, por ejemplo en error= -
1.5 y error’= 0.5 la salida es -53.3 que significa que se está enfriando el lugar, de hecho si se
mantiene el error negativo y error’ es aún más grande en magnitud la temperatura disminuye
más. Por el contrario si los dos errores son positivos la temperatura del lugar aumenta, entre más
altos en magnitud sean, la temperatura del lugar aumenta más.

Conclusiones

La aplicación de la lógica difusa a problemas cotidianos resultó ser muy didáctico con respecto al
funcionamiento de la lógica borrosa, ya que se comprobó que con ella, se puede transformar un
conjunto de variables que no son numéricas y obtener como salida un número.

Este tipo de herramientas, nos muestran otra opción en el caso de controladores, ya que la lógica
difusa se puede aplicar a sistemas, que debido a su funcionamiento complejo, o a sus partes
físicas, no puedan ser representadas por medio de un modelo matemático.

La única desventaja que podría ser considerada es que, se requiere de un conocimiento previo del
funcionamiento del sistema, o de la situación que se está analizando, ya que la asignación de las
funciones de membresía es lo que repercute directamente en la salida de la función.

Por último se puede retomar este tipo de métodos y combinarlos con el control moderno, para
obtener mejores resultados en la implementación de los sistemas de control.

Referencias

Wikipedia.org

Cala.unex.es/cala/epistemowikia

http://catarina.udlap.mx/

Tecnologías de Sistemas Inteligentes (IA95- 022) Introducción a la Lógica Difusa. M. Valenzuela


1996- 1998

También podría gustarte