Semaforo-Difuso

6
CONTROL DIFUSO DE UN SEMÁFORO Daniel Montenegro Arenas Facultad de Informática Universidad Complutense de Madrid [email protected] Matilde Santos Peñas Departamento de Arquitectura de Computadores y Automática Facultad de Ciencias Físicas Universidad Complutense de Madrid [email protected] Luis Garmendia Salvador Departamento de Sistemas Informáticos y Programación Facultad de Informática Universidad Complutense de Madrid [email protected] Resumen El objetivo principal de este trabajo es desarrollar un sistema de inferencia difuso que implemente un semáforo de tráfico, con el fin de tener un banco de pruebas para analizar la influencia de los distintos parámetros del sistema difuso sobre él. Este dispositivo inteligente, realizado con el software Xfuzzy, es fácilmente modificable. Permite disponer de un ejemplo docente para mostrar las principales características de esta técnica que se puede simular y visualizar sobre un servidor Web. Palabras Clave: Sistema difuso, Xfuzzy, inferencia, t-norma, implicaciones, control. 1 INTRODUCCIÓN Hallar un ejemplo sencillo para desarrollar un sistema de inferencia difuso es una tarea complicada. Los problemas que pretenden reflejar un comportamiento medianamente realista suelen requerir un elevado número de reglas mientras que los problemas simples no siempre llegan a tener aplicaciones en el mundo cotidiano, etc. Este artículo pretende ofrecer un ejemplo que muestre el comportamiento de un sistema con reglas básicas y sencillas para una aplicación real, y a su vez que cuente con una interfaz que ayude al entendimiento de la solución al problema planteado y permita analizar distintas aproximaciones. En este trabajo se ha definido un sistema difuso que controla un semáforo, del que se describirán sus entradas, salidas, reglas, operadores de inferencia, la forma en que se implementa, y una breve descripción de su instalación. Se ha utilizado la herramienta Xfuzzy por sus diversas funcionalidades. Finalmente se dan algunas ideas del uso de este ejemplo para fines didácticos y se mostrará cómo varía su comportamiento al modificar algunos de sus parámetros como los conectivos booleanos (t-normas y t-conormas) y operadores de implicación utilizados en las reglas. 1.1 INTRODUCCIÓN A LA LÓGICA DIFUSA La lógica clásica, la teoría de conjuntos clásica o la teoría de probabilidad pueden no ser adecuadas para tratar la imprecisión, la incertidumbre, la no especificidad, la vaguedad, la inconsistencia y la complejidad del mundo real. Esto motiva el nacimiento de los conjuntos difusos y las lógicas borrosas. Lotfi A. Zadeh [3] en 1965 escribe su artículo en el que introduce una teoría sobre unos objetos, los conjuntos difusos, que son conjuntos de frontera no precisa y cuya función de pertenencia indica un grado. Las lógicas borrosas necesitan generalizar las conectivas entre conjuntos borrosos. Los conectivos lógicos AND, OR y NOT, y las operaciones entre conjuntos intersección, unión y negación se generalizan respectivamente mediante normas triangulares, conormas triangulares y negaciones. Según las aplicaciones se puede definir las

Transcript of Semaforo-Difuso

Page 1: Semaforo-Difuso

CONTROL DIFUSO DE UN SEMÁFORO

Daniel Montenegro Arenas Facultad de Informática

Universidad Complutense de Madrid [email protected]

Matilde Santos Peñas

Departamento de Arquitectura de Computadores y Automática Facultad de Ciencias Físicas

Universidad Complutense de Madrid [email protected]

Luis Garmendia Salvador

Departamento de Sistemas Informáticos y Programación Facultad de Informática

Universidad Complutense de Madrid [email protected]

Resumen El objetivo principal de este trabajo es desarrollar un sistema de inferencia difuso que implemente un semáforo de tráfico, con el fin de tener un banco de pruebas para analizar la influencia de los distintos parámetros del sistema difuso sobre él. Este dispositivo inteligente, realizado con el software Xfuzzy, es fácilmente modificable. Permite disponer de un ejemplo docente para mostrar las principales características de esta técnica que se puede simular y visualizar sobre un servidor Web. Palabras Clave: Sistema difuso, Xfuzzy, inferencia, t-norma, implicaciones, control. 1 INTRODUCCIÓN Hallar un ejemplo sencillo para desarrollar un sistema de inferencia difuso es una tarea complicada. Los problemas que pretenden reflejar un comportamiento medianamente realista suelen requerir un elevado número de reglas mientras que los problemas simples no siempre llegan a tener aplicaciones en el mundo cotidiano, etc. Este artículo pretende ofrecer un ejemplo que muestre el comportamiento de un sistema con reglas básicas y sencillas para una aplicación real, y a su vez que cuente con una interfaz que ayude al entendimiento de la solución al problema planteado y permita analizar distintas aproximaciones. En este trabajo se ha definido un sistema difuso que controla un semáforo, del que se describirán sus

entradas, salidas, reglas, operadores de inferencia, la forma en que se implementa, y una breve descripción de su instalación. Se ha utilizado la herramienta Xfuzzy por sus diversas funcionalidades. Finalmente se dan algunas ideas del uso de este ejemplo para fines didácticos y se mostrará cómo varía su comportamiento al modificar algunos de sus parámetros como los conectivos booleanos (t-normas y t-conormas) y operadores de implicación utilizados en las reglas. 1.1 INTRODUCCIÓN A LA LÓGICA

DIFUSA La lógica clásica, la teoría de conjuntos clásica o la teoría de probabilidad pueden no ser adecuadas para tratar la imprecisión, la incertidumbre, la no especificidad, la vaguedad, la inconsistencia y la complejidad del mundo real. Esto motiva el nacimiento de los conjuntos difusos y las lógicas borrosas. Lotfi A. Zadeh [3] en 1965 escribe su artículo en el que introduce una teoría sobre unos objetos, los conjuntos difusos, que son conjuntos de frontera no precisa y cuya función de pertenencia indica un grado. Las lógicas borrosas necesitan generalizar las conectivas entre conjuntos borrosos. Los conectivos lógicos AND, OR y NOT, y las operaciones entre conjuntos intersección, unión y negación se generalizan respectivamente mediante normas triangulares, conormas triangulares y negaciones. Según las aplicaciones se puede definir las

Page 2: Semaforo-Difuso

operaciones de los conjuntos borrosos utilizando conectivos diferentes al mínimo, máximo y negación que utiliza Zadeh. B. Schweizer y A. Sklar [4] definen las normas triangulares (o t-normas) para generalizar la operación de intersección clásica (operador lógico AND) así como las t-conormas para generalizar la unión clásica (operador lógico OR). Una t-norma es una operación binaria asociativa en [0, 1], T: [0, 1]�[0, 1] � [0, 1], que para todo x, y, z de [0, 1] satisface: Elemento Neutro 1: T(x, 1) = x (1) Si x � x’, y � y’ entonces T(x, y) � T(x’, y’) (2) Simetría: T(x, y) = T(y, x) (3) Asociatividad: T(x, T(y,z)) = T(T(x,y), z) (4) Una familia de conectivos lógicos [5] borrosos (T, S, N) está formada por una norma triangular T, una conorma triangular S y una negación N, y se denomina una terna de De Morgan o terna de Morgan cuando S es la t-conorma dual de T respecto a la negación N. Las familias de conectivos lógicos más utilizadas son:

Tabla 1: Familias de conectivos lógicos

T(x, y) S(x, y) N(x) Zadeh Min(x,y) Max(x,y) 1−x

x.y x+y−xy Yagerp 1-Min(((1-x)p+(1-

y)p)1/p,1) Min((xp+yp)1/p,1) (1-xp)1/p

Dombiλ λ>0 λ−

λλ−��

���

�+−

/-1)-

y()

x1

(+1

111

1

λλλ��

���

�+−

/1)-

y()

x1

(+1

111

1

1−x

Weberλ

λ>−1 Max(

λλ

+1xy+1-y+x

,0) Min (x+y+λxy,1) 1 - x

1 + xλ

Łukasie-wicz Max(x+y-1,0) Mín{1, x+y} 1-x

Hamacherγ

γ>0 xy)-y+)(x-(1+xy

γγ

xy)()xy-(1-xy-y+x

−−γ

11 1−x

Cuando se pretende utilizar las relaciones borrosas para efectuar inferencias de razonamiento aproximado de la forma: Si x es P entonces y es Q

x es P’

(5) y es Q’

se puede utilizar la regla composicional de inferencia de Zadeh. Algunos operadores de implicación para realizar razonamiento aproximado, generalizando la implicación lógica son las implicaciones residuadas, las S-implicaciones, las QM-implicaciones, y otras [8]. 2 XFUZZY [2] La herramienta Xfuzzy ha sido diseñada e implementada en la Universidad de Sevilla, como un entorno de desarrollo de sistemas de inferencia basados en lógica difusa. Está formada por diversas herramientas que cubren las diferentes etapas del proceso de diseño de un sistema de control difuso. Entre sus características más notorias se encuentran la capacidad para el desarrollo de sistemas complejos y la flexibilidad para extender el conjunto de funciones difusas disponibles en la herramienta. Xfuzzy ha sido programado en Java y tiene licencia GNU. Xfuzzy esta dividido en diferentes herramientas que pueden ser ejecutadas como programas independientes. El entorno las integra bajo una misma interfaz gráfica que facilita a los usuarios el proceso de diseño. En el flujo de diseño de Xfuzzy las herramientas se encuentran divididas por etapas: (Figura 1).

Figura 1: Flujo de Diseño de Xfuzzy 3.0. • La etapa de descripción incluye herramientas

gráficas para la definición de sistemas difusos y la definición de paquetes de funciones.

• La etapa de verificación está compuesta por

herramientas para la simulación, monitorización y representación gráfica del comportamiento del sistema.

Page 3: Semaforo-Difuso

• La etapa de ajuste facilita la aplicación de algoritmos de aprendizaje a los sistemas ya diseñados.

• La etapa de síntesis incluye herramientas para

generar descripciones en lenguajes de alto nivel (C, C++ y Java) para implementaciones software o hardware sobre los sistemas de inferencia difusos diseñados.

Xfuzzy utiliza un lenguaje de especificación que es común a todas las herramientas, y que sirve de nexo entre ellas, el XFL (XFuzzy Language). Es un lenguaje flexible y potente, que permite expresar relaciones muy complejas entre variables difusas por medio de bases de reglas jerárquicas y conectivas, modificadores lingüísticos, funciones de pertenencia y métodos de defuzzificación definidos por el usuario. Para el semáforo difuso se ha utilizado el editor de sistemas (de la etapa de descripción) y la síntesis de Java (de la etapa de síntesis). El editor de paquetes (de la etapa de descripción) y las representaciones graficas, simulaciones y monitorizaciones (de la etapa de verificación) pueden ser de gran ayuda didáctica para que los alumnos aprendan a definir y supervisar sus propios conectivos booleanos (t-normas [4], t-conormas, negaciones) para operar la intersección, unión y complementario de conjuntos borrosos, o el AND, OR y NOT de los antecedentes y consecuentes en las reglas borrosas. La mayoría de las lógicas utilizadas en los sistemas difusos, como la de Zadeh la del producto o la de Lukasiewicz están ya implementadas en el paquete básico por defecto del Xfuzzy. Pero esta flexibilidad permite ver la influencia de utilizar unas u otras lógicas sobre el comportamiento final.

3 SEMÁFORO DIFUSO El semáforo es un ejemplo simple e ilustrativo de sistema de inferencia difuso. El modelo se basa en control de un semáforo según la cantidad de coches y peatones. Su funcionamiento queda reflejado en un

conjunto de reglas difusas y la elección de una lógica y un operador de implicación. También el sistema consta de la posibilidad de funcionar con cantidades aleatorias de peatones y coches. 3.1 SISTEMA DE INFERENCIA DIFUSO En primer lugar se van a definir las variables de entrada y salida del sistema. El semáforo tiene dos entradas y una salida. La primera entrada es la densidad de peatones (P). Esta entrada al ser una variable discreta tiene como dominio el conjunto de enteros entre 0 y 20. Sobre este dominio se definen cinco conjuntos borrosos que definen los predicados: muy baja (MB), baja (B), media (M), alta (A) y muy alta (MA), cuyas funciones de pertenencia tienen forma gaussiana y están uniformemente distribuidas en el universo de discurso (Figura 2).

P = {MB, B, M, A, MA} (6)

Figura 2: Conjuntos borrosos sobre el dominio de la

densidad de peatones ‘x’ que dan un grado de pertenencia a los predicados ‘x es P’.

La segunda entrada también discreta es la densidad de tráfico (T), que como dominio tiene el conjunto de enteros entre 0 y 30. Viene descrita por tres conjuntos difusos sobre T para los predicados nulo (N), moderado (M) e intenso (I), también con forma gaussiana. (Figura 3).

T = {N, M, I} (7)

Figura 3: Conjuntos borrosos sobre el dominio de la

densidad de trafico ‘y’ que dan un grado de pertenencia a los predicados ‘y es T’.

Page 4: Semaforo-Difuso

Los conjuntos borrosos se podrían haber definido de otras maneras, como por ejemplo mediante los típicos ‘dientes de sierra’. La variable de salida es la luz del semáforo (S), el cual tiene como dominio los reales entre 0 y 1 y dos conjuntos difusos sobre [0, 1] para los predicados rojo (R) y verde (V), cuyas funciones de pertenencia son triangulares (Figura 4).

S = {R, V} (8)

Figura 4: Conjuntos borrosos sobre el dominio de la luz del semáforo ‘z’ que dan un grado de pertenencia

a los predicados ‘z es S’. Las reglas de inferencia para el sistema difuso están descritas en la siguiente tabla (Tabla 1), y son del tipo reglas de producción: Si Peatones = A y Tráfico = B entonces Semáforo = C (9)

donde A, B, y C son conjuntos difusos definidos anteriormente para cada variable.

Tabla 2: Reglas de Inferencia

Peatones Trafico Semáforo Muy Baja Nulo Verde Muy Baja Moderado Verde Muy Baja Intenso Verde

Baja Nulo Rojo Baja Moderado Verde Baja Intenso Verde

Media Nulo Rojo Media Moderado Verde Media Intenso Verde Alta Nulo Rojo Alta Moderado Rojo Alta Intenso Verde

Muy Alta Nulo Rojo Muy Alta Moderado Rojo Muy Alta Intenso Rojo

El comportamiento del sistema difuso dependerá de los operadores utilizados, es decir, de las operaciones matemáticas que implementen las operaciones conectivas ‘y’ (o t-normas) de las reglas, y de la función de implicación para computar el ‘entonces’.

Por último es importante decidir el método de conversión de difuso a nítido (o defuzzyficación). Inicialmente se ha asignado a la operación conectiva “and” la t-norma producto de la entradas (xfl.prod()), siguiendo a Larsen. Otras posibilidades a testear sería la t-norma mínimo (lógica de Zadeh) o la t-norma W(x, y) = max{0, x+y-1} (lógica de Lukasiewicz) o cualquier operador que generalice la tabla lógica del AND. Como implicación se trabaja con la función por defecto de Xfuzzy, que es la implicación de Mandami. Otros operadores de implicación que se podrían utilizar son las implicaciones residuadas, que para la lógica del producto sería el operador:

I(x, y) = 1 si x yy en otro casox

≤���

(10)

S-implicaciones como S(1-x, y) donde S es la suma probabilística o t-conorma en la lógica del producto S(x, y) = x+y-xy, o QM-implicaciones como I(x, y) = S(1-x, xy). Nótese que en lógica clásica las S implicaciones ‘no x ó y’ y las QM-implicaciones ‘no x ó (x e y)’ son equivalentes y definen la implicación lógica, pero en lógica difusa son operadores diferentes. Una vez definido el sistema hay que exportarlo a un lenguaje de programación para realizar su simulación. Utilizando la herramienta de Síntesis de Java, exportamos el sistema a clases de Java, generándose cuatro clases [2]: • FuzzyInferenceEngine.java: es el fichero que

describe el método de inferencia del sistema difuso. Permite cuatro métodos de inferencia para implementar este proceso.

• MembershipFunction.java: es el fichero que

contiene la descripción de la interfaz usada para describir un número difuso. Admite un sólo método, llamado compute, que calcula el grado de pertenencia para cada valor del universo de discurso (defuzzification).

• FuzzySingleton.java: este fichero es una clase

que implementa la interfaz MembershipFunction, y representa un valor nítido como un número difuso (fuzzification).

• semaforo.java: es el fichero que contiene la clase

que describe el sistema difuso completo. Esta clase es una implementación particular de la interfaz FuzzyInferenceEngine. Por tanto, los métodos públicos que implementan la inferencia son los de la interfaz (crispInference y fuzzyInference).

Page 5: Semaforo-Difuso

3.2 APLICACIÓN WEB DE

VISUALIZACIÓN Con las clases exportadas en Java es posible realizar una simulación del sistema desde una aplicación sobre este lenguaje de programación. Por facilidad de implementación se usará un servidor BEA Weblogic y su IDE de desarrollo BEA Workshop, para implementar un pageFlow (Servlet para la tecnología de BEA) que realice la simulación. No obstante, por ser el sistema de inferencia difuso exportado como clases de Java puede simularse con cualquier otro tipo de visualización: Servlets, Swing, AWT, Midlets, etc. En dicha simulación se inicializan las entradas con valores aleatorios, y dependiendo del estado del semáforo se dará “vía libre” a peatones o coches. Los peatones y los coches funcionan con carriles: tres para los coches (todos en una misma dirección) y dos para los peatones (a la izquierda y derecha de los coches) (Figura 5).

Figura 5: Carriles de Peatones y de Coches. En cada ciclo se llama al sistema de inferencia para averiguar el estado del semáforo, y según el valor que se le asigne como resultado de la inferencia difusa podrán “pasar” peatones o coches, y se quitara un elemento de cada carril correspondiente. A su vez, y de forma aleatoria, a cada carril podrán llegar nuevos peatones o coches, dejando al sistema en un ciclo infinito mostrando su comportamiento. El semáforo simula la luz ámbar como un estado previo al cambio de luz, y no esta supeditado por el sistema de inferencia difuso. Por otro lado, es necesario dar un tiempo mínimo al cambio del semáforo: un semáforo no puede cambiar en cada ciclo, por lo que se define este tiempo como 5 ciclos del sistema. Para que la visualización pueda aportar la información de forma cercana a la real se le asignado a cada ciclo un tiempo de medio segundo.

Al ejecutar el pageFlow se obtiene una pantalla donde se encuentran los carriles de coches y peatones, y un semáforo que dará vía a los carriles que les corresponda, y se ira actualizando con cada ciclo del sistema. La pantalla del sistema se vera de la siguiente forma (Figura 6):

Figura 6: Simulación del Sistema. 3.3 INSTALACIÓN Y PUESTA EN

MARCHA Para el funcionamiento del sistema es necesario contar con el servidor BEA Weblogic 8.1 y el IDE BEA Workshop. Para desarrollo, esta herramienta es libre y puede solicitarse una copia de ella gratis en el sitio Web de BEA. Al tener instalado el servidor BEA Weblogic 8.1, es necesario crear un dominio del mismo para alojar el proyecto que vamos a crear. Utilizando las funciones por defecto que el Configuration Wizard de BEA propone, se puede generar un dominio simple con las características necesarias para poder ejecutar el ejemplo. El proyecto debe crearse sobre esta instancia del servidor como una aplicación Web, donde el pageFlow y la pagina de visualización se encuentre en un proyecto Web y se añada como proyecto de control el paquete que contiene las clases generadas por Xfuzzy. Finalmente sólo debe compilarse proyecto de control y ejecutarse el proyecto Web sobre el servidor.

Page 6: Semaforo-Difuso

4 CONCLUSIONES Y TRABAJOS FUTUROS

Este ejemplo permite, por un lado, analizar el funcionamiento de las funciones que describen el comportamiento de los operadores lógicos en la teoría difusa, y por otro la flexibilidad a cambios sobre dichas funciones para modificar el sistema de inferencia. Estas modificaciones pueden generarse en el sistema de inferencia con sólo cambiar las funciones asignadas a las operaciones difusas, y se obtendrán diversos comportamientos que ayudaran a la elección y comprensión de la utilización de distintas lógicas difusas en distintos entornos reales. Otro cambio que puede plantearse es ampliar las entradas, y tomar cada carril de peatones y/o de coches como entradas independientes, cada una del tipo correspondiente. Esto permitiría el uso de otros operadores como el “or” en las reglas utilizando t-conormas, que usualmente serán las duales de las t-normas utilizadas definidas por S(x, y) = N(T(N(x), N(y)) y así conservaremos las leyes de Morgan en la lógica seleccionada También se puede ampliar este trabajo estudiando el comportamiento de reglas que contengan negaciones. Referencias [1] BEA Systems. BEA WebLogic Workshop

Help. http://www.bea.com. [2] Xfuzzy. Pagina Web oficial.

http://www.imse.cnm.es. IMSE – Centro Nacional de Microelectrónica. Herramientas de CAD para Lógica Difusa. Xfuzzy 3.0. Sevilla. 2003.

[3] L. A. Zadeh, Fuzzy sets. Information and Control

8, (1965), pp. 338-353. [4] B. Schweizer y A. Sklar, Probabilistic Metric

Spaces. North-Holland. New York. (1960). [5] H. T. Nguyen y E. A. Walker. A first course in

Fuzzy Logic. CRC Press. (1996). [6] G. Klir y B. Yuan, Fuzzy Sets and Fuzzy Logic

Theory and its Applications. Prentice Hall. (1995).

[7] E. Trillas y L. Valverde, On mode and

implication in approximate reasoning. Approximate reasoning in expert systems. Eds. M. M. Gupta y otros. North-Holland. (1985), pp. 157-166.