Clasificador Difuso del sistema

Clasificador Difuso del sistema

¿Qué es la lógica difusa?

La lógica difusa forma parte de la inteligencia artificial, más concretamente se encuentra dentro del Soft Comuting. Las principales características del Soft Computing son:
  • Trata de modelar y estudiar la forma en la que los humanos pensamos o nos comportamos, a través del uso de computadoras u otros dispositivos.
  • Tolera la imprecisión, la incertidumbre, las verdades parciales y la aproximación.
  • En concreto la lógica difusa es considerado el núcleo de la Inteligencia Artificial por algunos autores.
La lógica difusa aparece por primera vez en 1965 de la mano de Zadeh en el artículo "Fuzzy sets", motivado por problemas de control. La lógica difusa (Fuzzy Logic) se basa en una mezcla de teoría de la probabilidad, conjuntos difusos y en la lógica de Lukasiewicz. 

La lógica difusa puede considerarse una lógica multievaluada, la cual se diferencia principalmente de la lógica clásica por que un elemento tiene un grado de pertenencia a un conjunto de valores, mientras que la lógica clásica solo acepta verdadero o falso.
Comparación lógica difusa y lógica tradicional
Grados de pertenencia en la lógica difusa a la derecha y grados de pertenencia a la lógica clásica en la izquierda.

Funciones de pertenencia a utilizar:

Como se ha comentado anteriormente la lógica difusa se basa en conjuntos difusos los cuales vienen denominados por una función de pertenencia, la cual para que este normalizado su valor mínimo debe ser 0 y el máximo 1.  Las funciones de pertenencia indican con que grado pertenece un elemento  aún determinado conjunto, existen funciones de pertenencia de muchos tipos, en esta práctica las funciones de pertenencia a utilizar son de tipo trapezoidal y de tipo single. Las de tipo trapezoidal se usarán para la entrada de los datos y las de tipo singleton, se usarán en la salida del sistema. Se deciden utilizar este tipo de funciones por ser simples y fáciles de interpretar por un microcontrolador como es el ESP8266.

Función trapezoidal a la izquierda, función de singleton a la derecha

Modelo difuso a utilizar:

Por último antes de entrar en la práctica propuesta, comentar que el modelo difuso que se va a utilizar es el modelo Lingüístico de Mamdani, ya que es fácilmente interpretable por Humanos, ya que usa reglas lingüísticas.

Sistema a controlar:

El sistema a controlar, está formado por un sensor de ultrasonidos que proporciona la distancia a la cual se encuentra un obstáculo, un sensor de luminosidad (basado en LDR), el cual mediante un valor analógico ofrece la cantidad de luz con la que cuenta el ambiente. Estos dos sensores están conectados a un microcontrolador ESP8266.

La lógica difusa que se implementa para controlar el sistema se usa para realizar fusión sensorial de alto nivel, ya que utiliza un sistema experto para tomar sus decisiones. La configuración de los sensores da lugar a una fusión complementaria, ya que un sensor no depende directamente de otro y permite resolver situaciones de datos incompletos o de incertidumbre. 

Esquema de la fusión sensorial

Como se observa en el esquema anterior, la fusión sensorial, tendrá dos entradas, una que proviene del sensor de ultrasonidos y la otra del sensor LDR, dicho sistema ofrecerá una salida que es una clasificación. La entrada del sensor ultrasonido posee valores reales desde 0 hasta 500, la entrada del sensor LDR posee valores desde 0 hasta 1024. Las salidas que ofrece el sistema difuso son los valores enteros 1, 2, 3 y 4 que representa respectivamente al Suelo, Bicicleta, Coche y Camión.

Las etiquetas del sensor ultrasonido son las siguientes:

Las etiquetas del sensor LDR son las siguientes:
La etiquetas de las salida son:

Teniendo en cuenta las entradas y las salidas del sistema, se procede a describir los componentes que conforman al sistema difuso, los operadores de conjunción e implicación son la T-norma del mínimo y la defuzzificación se realiza mediante el método FITA y  método de agregación máximo, es decir, se infiere cuanto aporta cada regla, se suma su aportación a la etiqueta de salida correspondiente y después la salida se obtiene por la etiqueta que más reglas han votado.

Las reglas utilizadas son las siguientes:
Num Regla Ultrasonido LDR Salida
1 Muy Cerca Muy Poco Camión
2 Muy Cerca Poco Camión
3 Muy Cerca Medio Coche
4 Muy Cerca Mucho Suelo
5 Cerca Muy Poco Coche
6 Cerca Poco Coche
7 Cerca Medio Coche
8 Cerca Mucho Bicicleta
9 Medio Muy Poco Coche
10 Medio Poco Coche
11 Medio Medio Bicicleta
12 Medio Mucho Suelo
13 Lejos Muy Poco Suelo
14 Lejos Poco Suelo
15 Lejos Medio Suelo
16 Lejos Mucho Suelo

Para obtener el código utilizado para la lógica difusa al igual que para todo el proyecto, pulsa aquí.

La lógica difusa se ha implementado mediante 4 clases. Las clases son Etiqueta, la cual almacena los datos necesario de cada etiqueta, Regla2E que almacena la estructura de las reglas que tienen 2 etiquetas (en este proyecto todas), REGLAS_FUZZY en la cual se almacenan todas las reglas que componen al sistema difuso, y por último Confrolador_difuso en esta clase se recogen todos los métodos necesarios para hacer los cálculos necesarios y ofrecer la salida del sistema.

Comentarios

Entradas populares de este blog

Cliente MQTT del ESP8266

I2C