When the solution matters*

| Clientes | Historias de éxito | Buscador de soluciones | Perfiles |

Control borroso con 4D Academic

Inteligencia artificial y lógica borrosa en un proyecto de fin de carrera
Por Alejandro Palacios Rodrigo

 

Tradicionalmente, 4D ofrece a profesores y estudiantes versiones gratuitas de 4th Dimension Standard Edition, bajo el marco de la academia (este próximo mes de marzo, se iniciará el nuevo programa académico con la versión 4D 2004, cuyos detalles se expondrán en nuestra Web). A continuación le ofrecemos el relato de una verdadera historia de éxito académico, que narra cómo 4D fue involucrado en un proyecto de fin de carrera del Ingeniero de Minas, que recibió la calificación máxima del tribunal de la escuela: un 10 sobresaliente (El autor es demasiado modesto para comentarlo, pero nosotros sí podemos!). Cómo apreciará, el tema de su estudio es a la vez bastante lógico… y borroso… ;-).

 

Desde el nacimiento de la lógica borrosa hasta nuestros días, se han encontrado y desarrollado numerosas aplicaciones de la misma, desde el control de una máquina de vapor, hasta los modernos chips borrosos que controlan lavadoras, hornos o las luces de la casa. Aún así, se trata de una tecnología relativamente reciente, que incita a ser investigada y aplicada por los ingenieros de control.

Alejandro Palacios Rodrigo

Control Borroso: ¿Sabes llenar un tanque?

Me decidí a implementar un software de control borroso para mi proyecto de fin de carrera, con ánimo de demostrarme a mí mismo que era capaz de aplicar en la vida real, todo lo que aprendí en la asignatura de Automática de sexto curso de Ingeniería Superior de Minas. El sistema que elegí para aplicar el control fue un tanque de agua con válvulas de entrada y salida. Como no podía disponer de dicho sistema físicamente, lo que hice fue desarrollar un simulador por ordenador, que se comportase de forma idéntica al sistema a controlar. Dicho simulador genera datos que indican el estado del sistema, es decir, el llenado del tanque, la apertura de la válvula, etc. Estos datos se envían al control a través de puerto serie, como si se tratase de un sistema real, cuyos sensores de medida envían los datos de la medición al control. El control, toma la decisión en función de los datos recibidos, de abrir o cerrar la válvula de admisión de agua, regulando así la altura de llenado del tanque.

simuladorSimulador

La implementación del simulador consiste en desarrollar las funciones que nos den el parámetro adecuado. Por ejemplo, en nuestro caso, existe una función que nos da el caudal de salida de la válvula en función del tanto por ciento de apertura de la misma. El caudal de agua que sale de la válvula se alimenta al tanque, que almacenará la cantidad que ya tenía más la cantidad de agua que sale a cada instante de la válvula. Esta operación se realiza en cada iteración del programa del simulador.

Control

La lógica borrosa nace de la teoría de los conjuntos borrosos del profesor Zadeh. El objetivo del profesor Zadeh era expresar en lenguaje matemático el modo de razonamiento aproximado, característico de los humanos.  Contraria a la lógica tradicional en la que solo son posibles dos valores, en la lógica borrosa todo es cuestión de grado. El grado es el concepto fundamental de la lógica borrosa. Las cosas ya no son blancas o negras, ahora los tonos grises están permitidos.

Los conjuntos borrosos, son conjuntos en los que se define una función llamada "función de pertenencia", que asigna a cada elemento del conjunto, un valor que representa el grado en que dicho valor pertenece al conjunto. A cada conjunto se le asocia un cuantificador lingüístico, como por ejemplo, mucho, poco, bastante etc., de forma que relacionamos el modelo matemático con el lenguaje humano. La función de pertenencia, puede ser cualquiera, pero una de las más utilizadas es la función triangular por la sencillez y eficacia de la misma. Por ejemplo, si hablamos de temperatura, para mí la temperatura del agua entre 5 y 22 grados centígrados, la considero fría, entre 20 y 35, templada, y de 33 a 45, caliente. Ya tengo los intervalos definidos, a los cuales les he asociado un cuantificador lingüístico. Ahora solo falta definir las funciones de pertenencia, para tener los conjuntos borrosos. Usando funciones triangulares:

El hecho de que las funciones se solapen significa que la frontera entre lo frío y lo templado, y entre lo templado y lo caliente no está clara. Esto refuerza más la idea de difuso, ya que en la lógica tradicional, un valor dado de temperatura pertenece al conjunto de frío o al de templado, pero no puede pertenecer a los dos. Por ejemplo el valor de temperatura de 21 ºC, pertenece al conjunto de fría y de templada. Por otro lado, la elección de los intervalos de temperatura varía en función de la persona, la experiencia, el sistema a controlar y como lo quieras controlar...

Difuminar un valor real, consiste en calcular el grado en que dicho valor real pertenece a cada conjunto borroso:

En el ejemplo, el valor de 24 grados pertenece en un grado de 0,9 a conjunto de "Templado" y en grado cero a "Fría" y "Caliente". Es decir, hemos traducido el valor real de 24ºC al siguiente vector (array en programación): ( 0 , 0.9 , 0 ).

Por otro lado, en el modo de razonamiento humano, se utilizan reglas del tipo

Si CONDICION ENTONCES ACCION para transmitir instrucciones y conocimiento.

Relacionándolo con el concepto de grado, en la medida o grado en que se cumpla la condición, será en la medida o grado en que se cumpla la acción.

Un ejemplo de regla de control para nuestro sistema puede ser:

Si el tanque esta Lleno entonces la apertura de la válvula debe ser cero.

Esto quiere decir que, si el grado de pertenencia al conjunto de lleno es 1, entonces la salida que debe dar el control debe pertenecer en grado 1 al conjunto de apertura cero. Sin embargo, si la pertenencia al llenado del tanque es de 0,5 la salida pertenecerá también al conjunto apertura cero en un grado de 0,5. De esta forma se toma la decisión de la salida del sistema.

El software borroso debe contemplar los siguientes bloques:

1. Bloque de difuminación.

Como hemos visto, las reglas de trabajo son reglas borrosas, las cuales nos indican que hacer  si el valor real que envía el simulador pertenece a un  conjunto u otro. Para poder comparar el valor de la medida con las reglas de trabajo, dicho valor debe expresarse en forma de variable borrosa. Es en este bloque donde una variable real se transforma en borrosa.

2. Motor de inferencia.

Es en este bloque donde se toma la decisión. Se compara la entrada con las reglas de trabajo y se ve en que grado se cumple cada una de ellas, evaluando así el resultado.

3. Concretización

La salida borrosa hay que convertirla a un valor real que pueda ser interpretado por el dispositivo real, en nuestro caso la válvula.

Nota: Puede que la utilización de los términos "Difuminación" y "Concretización" no le sean familiares a aquellos que conocen algo de lógica borrosa, pero me he permitido la licencia de utilizar los términos castellanos en lugar de los términos en inglés(fuzzy y defuzzy) reivindicando el uso del idioma castellano allí donde existe una palabra para identificar el concepto, en lugar de asimilar directamente el término inglés.

¿Y cómo se implementa todo esto en 4D?

En primer lugar hay que definir los intervalos  de los conjuntos borrosos para cada variable. Es aquí donde especificamos que rango de la variable esta asociado a cada cuantificador lingüístico, como por ejemplo poco lleno, medio lleno, lleno etc. También diremos la función de pertenencia que vamos a utilizar, que en nuestro caso es la función triangular.

 

particiones

Esto se implementa con dos tablas:

En esta tabla se almacenan los valores de Inicio del Rango, Punto medio del rango, pendiente (m) de la recta y término independiente (n ) de la recta. De esta forma, dado un valor real, lo primero que hacemos es un "query" para identificar a que tramo pertenece, componiendo después la recta que nos da el grado de pertenencia, ya que disponemos de los valores de m y n de la recta. Las tablas utilizadas fueron las siguientes:

 

 

¿Cómo se traducen las reglas de trabajo del lenguaje humano al lenguaje matemático?

Las reglas de trabajo en lógica borrosa, recogen la experiencia del operador en el control del sistema. Cualquiera sabe que si el tanque está casi lleno debemos cerrar la válvula para que no rebose. Estas reglas de trabajo, se expresan como:

SI CONDICIÓN ENTONCES ACCIÓN y es así como se recogen en el software.

particiones

 

 

Lo que hacemos es traducir estas reglas matemáticamente para poder compararlas con el valor que viene del simulador. Esto se hace mediante las siguientes tablas:

 

 

 

 

La tabla Reglas recoge las mismas escritas en lenguaje humano. La tabla MatrizReglas, se compone a partir de la primera. Los campos C1 a C10 representan los códigos de cada uno de los diez intervalos en que se permite dividir una variable. Todos los valores se rellenan a cero con excepción de aquel que cumple la condición de la regla, que se rellena con un uno. Por ejemplo, supongamos que C1 representa al intervalo de "poco lleno" del tanque y C2, al intervalo "Medio lleno", ambos para la variable de llenado del tanque. Con respecto a la variable de apertura de la válvula, C1 representa cerrada a tope y C2 abierta a tope. Supongamos también la siguiente regla de trabajo:

Si el tanque esta poco lleno ENTONCES abre la válvula a tope.

Esto lo podemos representar en la siguiente tabla:

C1

C2

C3

C4

C5

C6

C7

C8

C9

C10

Llenado Tanque

1

0

0

0

0

0

0

0

0

0

Apertura Válvula

0

1

0

0

0

0

0

0

0

0

 

Es decir, hemos traducido las reglas a un array de dos dimensiones. Más arriba explicábamos cómo traducíamos a un array borroso un valor real. Ahora hemos hecho lo mismo con las reglas. Lo tenemos todo expresado en forma de arrays numéricos que son fácil de comparar.

Protocolo

El simulador y el control se ejecutan en dos equipos diferentes, simulando una situación de la vida real. Para comunicarlos se utiliza el puerto serie, definiendo un protocolo para el trasiego de datos. El control puede enviar al simulador dos tipos de tramas:

Las tramas constan de una cabecera, un emisor, un receptor, un cuerpo del mensaje y un CRC (código de redundancia cíclica). Este CRC, fue también diseñado por mí para chequear la correcta transmisión de las tramas de datos.

El software incorpora un control de errores, emitiendo señales de alarma si no recibe respuesta del simulador en tres intentos de comunicación.

El ciclo completo de pregunta, respuesta, orden y aceptación de la orden que tiene lugar entre el control y el simulador, se completa cada dos segundos.

4D en el proyecto

Existen dos partes diferenciadas en la industria: el control, propiamente dicho y la gestión de la información. Los dispositivos de medida generan grandes cantidades de información que es almacenada en bases de datos, y que se utiliza después para evaluar el rendimiento de nuestro proceso de control. En este sentido, 4D cumple perfectamente su función, al integrar el entorno de desarrollo y el motor de base de datos.

Por otro lado, el proyecto se basa en el manejo de arrays, por lo que utilicé mucho el juego de instrucciones que 4D tiene para su manejo, así como la posibilidad de pasar punteros a arrays, con objeto de construir métodos especializados en una tarea, que se dedican a cargar los valores adecuados en las posiciones correspondientes.

Como crítica constructiva para los responsables del producto diré que el manejo del puerto paralelo es bastante complejo. El uso de este puerto en lugar del serie, permitiría la aplicación directa del software sobre un dispositivo real, utilizando únicamente un convertidor digital / analógico, ya que posee 8 bits de datos utilizables para transmitir directamente el valor que debe tomar el actuador de la válvula.

Resultado final

El software se configuró para que funcionase como un control P.I (Proporcional Integral). Este tipo de controles son muy conocidos en la industria. El control PI borroso se comparó con un PI clásico, obteniendo unos resultados muy parecidos en el comportamiento.

Como opción de futuro y aunque a priori no pensé en ello ya que se trataba de un desarrollo sencillo y monopuesto, se me ocurrió utilizar la tecnología de 4D Client para lo siguiente: puesto que software admite almacenar las configuraciones que permiten el control de diferentes sistemas, el hecho de montar el software sobre un 4D Server implica el control simultaneo de tantos sistemas diferentes como clientes 4D tengamos, comportándose cada control  como lo hayamos definido previamente en la configuración y utilizando el mismo programa de control.

 

                                                                         Alejandro Palacios Rodrigo
 
                                                                          Madrid - Febrero 2005

 

Descargar la versión PDF de esta historia

 

 

 

software de control borroso

Internacional | Empresa | Contactar 4D | Mapa del Sitio | © 4D, S.A. 2003 | Tamaño de fuente: [A] [A] [A] *Cuando la solución es lo que importa