You are on page 1of 6

CONTROL DIFUSO DE UN SEMÁFORO

Daniel Montenegro Arenas


Facultad de Informática
Universidad Complutense de Madrid
daniel.montenegro@gmail.com

Matilde Santos Peñas


Departamento de Arquitectura de Computadores y Automática
Facultad de Ciencias Físicas
Universidad Complutense de Madrid
msantos@dayca.ucm.es

Luis Garmendia Salvador


Departamento de Sistemas Informáticos y Programación
Facultad de Informática
Universidad Complutense de Madrid
lgarmend@fdi.ucm.es

Resumen entradas, salidas, reglas, operadores de inferencia, la


forma en que se implementa, y una breve descripción
El objetivo principal de este trabajo es desarrollar de su instalación. Se ha utilizado la herramienta
un sistema de inferencia difuso que implemente un Xfuzzy por sus diversas funcionalidades.
semáforo de tráfico, con el fin de tener un banco de
pruebas para analizar la influencia de los distintos Finalmente se dan algunas ideas del uso de este
parámetros del sistema difuso sobre él. Este ejemplo para fines didácticos y se mostrará cómo
dispositivo inteligente, realizado con el software varía su comportamiento al modificar algunos de sus
Xfuzzy, es fácilmente modificable. Permite disponer parámetros como los conectivos booleanos (t-normas
de un ejemplo docente para mostrar las principales y t-conormas) y operadores de implicación utilizados
características de esta técnica que se puede simular en las reglas.
y visualizar sobre un servidor Web.
1.1 INTRODUCCIÓN A LA LÓGICA
Palabras Clave: Sistema difuso, Xfuzzy, inferencia, DIFUSA
t-norma, implicaciones, control.
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
1 INTRODUCCIÓN especificidad, la vaguedad, la inconsistencia y la
complejidad del mundo real. Esto motiva el
Hallar un ejemplo sencillo para desarrollar un nacimiento de los conjuntos difusos y las lógicas
sistema de inferencia difuso es una tarea complicada. borrosas.
Los problemas que pretenden reflejar un
comportamiento medianamente realista suelen Lotfi A. Zadeh [3] en 1965 escribe su artículo en el
requerir un elevado número de reglas mientras que que introduce una teoría sobre unos objetos, los
los problemas simples no siempre llegan a tener conjuntos difusos, que son conjuntos de frontera no
aplicaciones en el mundo cotidiano, etc. Este artículo precisa y cuya función de pertenencia indica un
pretende ofrecer un ejemplo que muestre el grado.
comportamiento de un sistema con reglas básicas y
sencillas para una aplicación real, y a su vez que Las lógicas borrosas necesitan generalizar las
cuente con una interfaz que ayude al entendimiento conectivas entre conjuntos borrosos. Los conectivos
de la solución al problema planteado y permita lógicos AND, OR y NOT, y las operaciones entre
analizar distintas aproximaciones. conjuntos intersección, unión y negación se
generalizan respectivamente mediante normas
En este trabajo se ha definido un sistema difuso que triangulares, conormas triangulares y negaciones.
controla un semáforo, del que se describirán sus Según las aplicaciones se puede definir las
operaciones de los conjuntos borrosos utilizando se puede utilizar la regla composicional de inferencia
conectivos diferentes al mínimo, máximo y negación de Zadeh. Algunos operadores de implicación para
que utiliza Zadeh. realizar razonamiento aproximado, generalizando la
implicación lógica son las implicaciones residuadas,
B. Schweizer y A. Sklar [4] definen las normas las S-implicaciones, las QM-implicaciones, y otras
triangulares (o t-normas) para generalizar la [8].
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). 2 XFUZZY [2]
Una t-norma es una operación binaria asociativa en La herramienta Xfuzzy ha sido diseñada e
[0, 1], T: [0, 1] [0, 1] [0, 1], que para todo x, y, z implementada en la Universidad de Sevilla, como un
de [0, 1] satisface: entorno de desarrollo de sistemas de inferencia
basados en lógica difusa. Está formada por diversas
Elemento Neutro 1: T(x, 1) = x (1) herramientas que cubren las diferentes etapas del
proceso de diseño de un sistema de control difuso.
Si x x’, y y’ entonces T(x, y) T(x’, y’) (2)
Entre sus características más notorias se encuentran
Simetría: T(x, y) = T(y, x) (3) la capacidad para el desarrollo de sistemas complejos
y la flexibilidad para extender el conjunto de
Asociatividad: T(x, T(y,z)) = T(T(x,y), z) (4) funciones difusas disponibles en la herramienta.
Xfuzzy ha sido programado en Java y tiene licencia
Una familia de conectivos lógicos [5] borrosos (T, S, GNU.
N) está formada por una norma triangular T, una
conorma triangular S y una negación N, y se Xfuzzy esta dividido en diferentes herramientas que
denomina una terna de De Morgan o terna de Morgan pueden ser ejecutadas como programas
cuando S es la t-conorma dual de T respecto a la independientes. El entorno las integra bajo una
negación N. misma interfaz gráfica que facilita a los usuarios el
proceso de diseño. En el flujo de diseño de Xfuzzy
Las familias de conectivos lógicos más utilizadas las herramientas se encuentran divididas por etapas:
son: (Figura 1).

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λ 1 1
λ>0 1+ (
1
− 1 )−λ + ( - 1)-λ
1
−1 / λ
1+ (
1 1
− 1 )λ + ( - 1)λ
1/ λ
1−x
x y
x y

Weberλ Max(
1- x
λ>−1 x + y - 1 + λxy Min (x+y+λxy,1)
,0) 1 + λx
1+ λ
Łukasie- Figura 1: Flujo de Diseño de Xfuzzy 3.0.
Max(x+y-1,0) Mín{1, x+y} 1-x
wicz
Hamacherγ xy x + y - xy - (1 - γ )xy
1 − ( 1− )xy 1−x • La etapa de descripción incluye herramientas
γ>0 γ + (1 - γ )(x + y - xy)
gráficas para la definición de sistemas difusos y
la definición de paquetes de funciones.
Cuando se pretende utilizar las relaciones borrosas
para efectuar inferencias de razonamiento • La etapa de verificación está compuesta por
aproximado de la forma: herramientas para la simulación, monitorización
y representación gráfica del comportamiento del
Si x es P entonces y es Q sistema.
x es P’ (5)
y es Q’
• La etapa de ajuste facilita la aplicación de conjunto de reglas difusas y la elección de una lógica
algoritmos de aprendizaje a los sistemas ya y un operador de implicación. También el sistema
diseñados. consta de la posibilidad de funcionar con cantidades
aleatorias de peatones y coches.
• La etapa de síntesis incluye herramientas para
generar descripciones en lenguajes de alto nivel
(C, C++ y Java) para implementaciones software 3.1 SISTEMA DE INFERENCIA DIFUSO
o hardware sobre los sistemas de inferencia
difusos diseñados. En primer lugar se van a definir las variables de
entrada y salida del sistema. El semáforo tiene dos
Xfuzzy utiliza un lenguaje de especificación que es entradas y una salida. La primera entrada es la
común a todas las herramientas, y que sirve de nexo densidad de peatones (P). Esta entrada al ser una
entre ellas, el XFL (XFuzzy Language). Es un variable discreta tiene como dominio el conjunto de
lenguaje flexible y potente, que permite expresar enteros entre 0 y 20. Sobre este dominio se definen
relaciones muy complejas entre variables difusas por cinco conjuntos borrosos que definen los predicados:
medio de bases de reglas jerárquicas y conectivas, muy baja (MB), baja (B), media (M), alta (A) y muy
modificadores lingüísticos, funciones de pertenencia alta (MA), cuyas funciones de pertenencia tienen
y métodos de defuzzificación definidos por el forma gaussiana y están uniformemente distribuidas
usuario. en el universo de discurso (Figura 2).

Para el semáforo difuso se ha utilizado el editor de P = {MB, B, M, A, MA} (6)


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
Figura 2: Conjuntos borrosos sobre el dominio de la
de Zadeh la del producto o la de Lukasiewicz están
densidad de peatones ‘x’ que dan un grado de
ya implementadas en el paquete básico por defecto
pertenencia a los predicados ‘x es P’.
del Xfuzzy. Pero esta flexibilidad permite ver la
influencia de utilizar unas u otras lógicas sobre el
La segunda entrada también discreta es la densidad
comportamiento final.
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)

3 SEMÁFORO DIFUSO
El semáforo es un ejemplo simple e ilustrativo de
sistema de inferencia difuso. El modelo se basa en Figura 3: Conjuntos borrosos sobre el dominio de la
control de un semáforo según la cantidad de coches densidad de trafico ‘y’ que dan un grado de
y peatones. Su funcionamiento queda reflejado en un pertenencia a los predicados ‘y es T’.
Los conjuntos borrosos se podrían haber definido de Por último es importante decidir el método de
otras maneras, como por ejemplo mediante los conversión de difuso a nítido (o defuzzyficación).
típicos ‘dientes de sierra’. La variable de salida es la Inicialmente se ha asignado a la operación conectiva
luz del semáforo (S), el cual tiene como dominio los “and” la t-norma producto de la entradas (xfl.prod()),
reales entre 0 y 1 y dos conjuntos difusos sobre [0, 1] siguiendo a Larsen. Otras posibilidades a testear sería
para los predicados rojo (R) y verde (V), cuyas la t-norma mínimo (lógica de Zadeh) o la t-norma
funciones de pertenencia son triangulares (Figura 4). W(x, y) = max{0, x+y-1} (lógica de Lukasiewicz) o
cualquier operador que generalice la tabla lógica del
S = {R, V} (8) 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:

1 si x ≤ y
I(x, y) = y en otro caso
(10)
x

S-implicaciones como S(1-x, y) donde S es la suma


Figura 4: Conjuntos borrosos sobre el dominio de la probabilística o t-conorma en la lógica del producto
luz del semáforo ‘z’ que dan un grado de pertenencia S(x, y) = x+y-xy, o QM-implicaciones como I(x, y) =
a los predicados ‘z es S’. S(1-x, xy). Nótese que en lógica clásica las S
implicaciones ‘no x ó y’ y las QM-implicaciones ‘no
Las reglas de inferencia para el sistema difuso están x ó (x e y)’ son equivalentes y definen la implicación
descritas en la siguiente tabla (Tabla 1), y son del lógica, pero en lógica difusa son operadores
tipo reglas de producción: diferentes.

Si Peatones = A y Tráfico = B Una vez definido el sistema hay que exportarlo a un


(9) lenguaje de programación para realizar su
entonces Semáforo = C
simulación. Utilizando la herramienta de Síntesis de
donde A, B, y C son conjuntos difusos definidos Java, exportamos el sistema a clases de Java,
anteriormente para cada variable. generándose cuatro clases [2]:

Tabla 2: Reglas de Inferencia • FuzzyInferenceEngine.java: es el fichero que


describe el método de inferencia del sistema
Peatones Trafico Semáforo difuso. Permite cuatro métodos de inferencia
Muy Baja Nulo Verde para implementar este proceso.
Muy Baja Moderado Verde
Muy Baja Intenso Verde • MembershipFunction.java: es el fichero que
contiene la descripción de la interfaz usada para
Baja Nulo Rojo
describir un número difuso. Admite un sólo
Baja Moderado Verde
método, llamado compute, que calcula el grado
Baja Intenso Verde
de pertenencia para cada valor del universo de
Media Nulo Rojo discurso (defuzzification).
Media Moderado Verde
Media Intenso Verde • FuzzySingleton.java: este fichero es una clase
Alta Nulo Rojo que implementa la interfaz
Alta Moderado Rojo MembershipFunction, y representa un valor
Alta Intenso Verde nítido como un número difuso (fuzzification).
Muy Alta Nulo Rojo
Muy Alta Moderado Rojo • semaforo.java: es el fichero que contiene la clase
Muy Alta Intenso Rojo que describe el sistema difuso completo. Esta
clase es una implementación particular de la
El comportamiento del sistema difuso dependerá de interfaz FuzzyInferenceEngine. Por tanto, los
los operadores utilizados, es decir, de las operaciones métodos públicos que implementan la inferencia
matemáticas que implementen las operaciones son los de la interfaz (crispInference y
conectivas ‘y’ (o t-normas) de las reglas, y de la fuzzyInference).
función de implicación para computar el ‘entonces’.
3.2 APLICACIÓN WEB DE Al ejecutar el pageFlow se obtiene una pantalla
VISUALIZACIÓN donde se encuentran los carriles de coches y
peatones, y un semáforo que dará vía a los carriles
Con las clases exportadas en Java es posible realizar que les corresponda, y se ira actualizando con cada
una simulación del sistema desde una aplicación ciclo del sistema. La pantalla del sistema se vera de
sobre este lenguaje de programación. Por facilidad de la siguiente forma (Figura 6):
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 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
Figura 5: Carriles de Peatones y de Coches. proyecto que vamos a crear. Utilizando las funciones
por defecto que el Configuration Wizard de BEA
En cada ciclo se llama al sistema de inferencia para propone, se puede generar un dominio simple con las
averiguar el estado del semáforo, y según el valor características necesarias para poder ejecutar el
que se le asigne como resultado de la inferencia ejemplo.
difusa podrán “pasar” peatones o coches, y se quitara
un elemento de cada carril correspondiente. A su vez, El proyecto debe crearse sobre esta instancia del
y de forma aleatoria, a cada carril podrán llegar servidor como una aplicación Web, donde el
nuevos peatones o coches, dejando al sistema en un pageFlow y la pagina de visualización se encuentre
ciclo infinito mostrando su comportamiento. en un proyecto Web y se añada como proyecto de
control el paquete que contiene las clases generadas
El semáforo simula la luz ámbar como un estado por Xfuzzy. Finalmente sólo debe compilarse
previo al cambio de luz, y no esta supeditado por el proyecto de control y ejecutarse el proyecto Web
sistema de inferencia difuso. Por otro lado, es sobre el servidor.
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.
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.