DISCUSSION
DISADVANTAGE:
De acuerdo con las definiciones usadas en inteligencia artificial, la determinación de conclusiones o la generación de hipótesis basados en el estado de una entrada es llamado inferencia.
Página 52 Figura 3.9. Tipos de funciones de membrecía que maneja el FUZZY- UAM [3.3].
3.5.1.4. REGLAS.
Las reglas de control son relaciones que se utilizan para expresar la relación existente entre los conceptos imprecisos y el comportamiento que gobierna al sistema que se quiere controlar, el experto debe desarrollar todo un conjunto de estas reglas -tantas como sean necesarias- para lograr una buena descripción del sistema a controlar. Cada regla tiene la forma de una declaración IF – THEN. La parte IF de la regla contiene una o más condiciones, llamadas antecedentes. La parte THEN de la regla contiene una o más acciones, llamadas consecuencias. Los antecedentes de las reglas corresponden directamente al grado de membresía (entrada difusa) calculada durante el proceso de fusificación.
Estas reglas de control en Fuzzy-UAM se generan de manera automática evitando al diseñador la engorrosa tarea de la creación de las mismas. La cantidad de reglas depende de todas las posibles combinaciones que se puedan dar entre las funciones de membresía de la entrada y la salida; por ejemplo si tenemos dos variables de entrada y una de salida todas con 3 FM (función membresia) cada una, segeneraran un total de 27 (3x3x3=27) reglas decontrol, Ver Figura 3.10. Cada una de estas reglas cuenta con un grado de soporte o prioridad, el cual indica que regla contribuirá en mayor o menor partea la salida generada por el sistema en determinado momento; la asignación de estos grados de soporte depende de la experiencia del diseñador en el proceso de control. El grado de soporte permite no ser tan radical en la evaluación de las reglas ya que permite tener una evaluación parcial de las mismas [12].
Una característica importante que presenta este bloque es que no deja que el usuario elimine reglas de manera definitiva ya que solo las puede desactivar asignándoles un valor para el grado de soporte de 0. Todas las reglas desactivadas aparecen con un color diferente a las reglas que han sido activadas.
Página 53 Figura 3.10. Ventana que indica las reglas de control generadas con Fuzzy-UAM [3.3]. 3.5.1.5. OPERADORES DIFUSOS.
Los antecedentes de cada una de las reglas generadas por Fuzzy-UAM, son relacionadas con algún tipo de operador difuso, ver figura 3.11. Generalmente en el diseño de controles difusos son utilizados como mínimo 2 operadores: el operador AND (intersección) para el mínimo, el operador OR (unión) para el máximo; la selección del operador depende en gran parte del sistema de inferencia a utilizar. Fuzzy-UAM ofrece la oportunidad de poder seleccionar diferentes operadores difusos y con esto experimentar con diferentes sistemas de inferencia [12].
Página 54 3.5.1.6. DEFUSIFICACIÓN.
El resultado final del sistema lógico difuso es la determinación de un valor de salida real que pueda ser utilizado por tu aplicación o proceso de control. El valor difuso (salida difusa) es convertido a un valor real (salidas del sistema) en el proceso de Defusificación. Existen varios métodos diferentes de Defusificación utilizados en los sistemas de lógica difusa. Cada método de Defusificación utiliza una fórmula matemática para calcular la salida final basado en la fuerza de todas las reglas lógicas que han sido disparadas. Las variables en las formulas son grados de membresía de entrada y salida.
Para realizar la Defusificación se debe de contar con las funciones de membresía de la variable de salida. En Fuzzy -UAM, las funciones de membresía utilizadas para los conjuntos difusos de salida difieren de las funciones de membresía utilizadas para los conjuntos difusos de entrada.
Mientras las funciones de membresía de entrada pueden ser representadas en la forma de triángulos, trapecios, campanas y gaussianas; las funciones de membresía de salida son representadas con un solo punto llamado Singleton, aun cuando en las interfaces de usuario aparecen como triángulos. Un Singleton tiene un valor discreto con un grado de membresía de 1.0.
Los Singletons son utilizados como conjuntos de salida ya que proporcionan un método más rápido para calcular valores de salida reales, con lo que se minimizan los requerimientos de cálculo. Ya que el Fuzzy-UAM ha sido diseñado primeramente para sistemas de control, el método de los Singletons es utilizado para permitir que el Fuzzy-UAM tenga una mayor velocidad en aplicaciones de tiempo real. En la figura 3.12, se muestra tres funciones de membresía para la
variable de salida “Velocidad”: Lenta, Media y Alta. La función de membresía
“Lenta” es definida con una forma triangular pero en realidad es definida como un
Singleton con un valor de 50 (línea gruesa), “Media” con un valor de 100, y “Alta”
con un valor de 150 [12].
Página 55 3.6. SOFTWARE XFUZZY 3 PARA PROCESADO DE IMÁGENES.
El entorno Xfuzzy 3 posee una serie de herramientas de CAD (Diseño Asistido por Computadora) que comparten un lenguaje común de especificación de sistemas fuzzy denominado XFL3. Una de las características de este lenguaje es que separa la descripción de una base de reglas de la definición de los operadores que intervienen en ella. Esto significa que el cálculo de los grados de pertenencia (definición de las funciones de pertenencia), el de los grados de activación de las reglas (definición de las conectivas, de los operadores complemento y modificadores lingüísticos) y el cálculo de la salida no fuzzy (definición del método de concreción) se hace en base a la elección de funciones matemáticas definidas en ficheros externos al que define la estructura de la base de reglas. Estos ficheros, denominados “paquetes”, pueden ser definidos libremente por el usuario, lo cual es una gran ventaja para extender la aplicabilidad de Xfuzzy 3 porque según el campo de aplicación los operadores pueden ser diferentes.
En el caso del procesado de imágenes, son varios los trabajos en que aparecen operadores particulares que no son habituales en control.
Otra diferencia con respecto al control es que el número de entradas que se contempla en las bases de reglas suele ser más elevado por lo que suelen especificarse sólo algunos casos posibles y el resto se engloba en una regla del
tipo “else”, cuyo grado de activación se calcula de forma diferente según los autores.
Para estos casos, el usuario de Xfuzzy 3 puede definir paquetes específicos con funciones particulares de tipo:
(a) Binarias (operando sobre dos argumentos, como t-normas y s-normas), (b) unarias (sobre un argumento, como c-normas y modificadores lingüísticos), (c) funciones de pertenencia y (d) métodos de concreción. La definición de una función incluye su nombre y alias posibles, los parámetros que especifican su comportamiento, así como posibles restricciones sobre estos parámetros, la descripción de su comportamiento en Java y en C y C++ si se quiere generar síntesis a esos lenguajes e incluso la descripción de sus derivadas si sequiere emplear esta función en métodos de aprendizaje guiados por gradiente. El usuario puede introducir toda esta información de forma gráfica mediante la herramienta
xfpkg. Ver Figura 3.13.
Con esta utilidad se genera automáticamente una clase Java que incorpora todas las características de la función y que puede emplearse por cualquier especificación XFL3 [13].
Página 56 Figura 3.13. Ventana principal de la herramienta xfpkg [3.4].
Por otro lado, el procesado de imágenes suele encadenar razonamientos. Por ejemplo, también se emplea una base de reglas fuzzy para seleccionar los parámetros de un filtro gaussiano (no fuzzy) y en la inferencia fuzzy determina el tipo de filtro (fuzzy o no) a seleccionar.
Para estos casos, el usuario de Xfuzzy 3 puede definir los distintos módulos constitutivos tanto fuzzy como no fuzzy (o crisp) y conectarlos con la jerarquía
adecuada. Esto lo puede hacer de forma gráfica mediante la herramienta xfedit.
En la ventana principal de esta herramienta, el usuario puede definir las distintas bases de reglas o módulos fuzzy, cada una con sus funciones de pertenencia y operadores propios, así como seleccionar los distintos módulos crisp. Los módulos crisp se definenen en un paquete que deberá estar cargado en el entorno (para esta definición de módulos crisp también es muy útil la herramienta
xfpkg comentada anteriormente).
Pueden definirse para aplicar cualquier función matemática sobre sus entradas. Otra versatilidad interesante que permite XFL3 es que, a la hora de interconectar módulos fuzzy, se pueden intercambiar valores tanto crisp como fuzzy, según que se empleen o no métodos de concreción antes de intercambiar los valores.
Para analizar cómo el sistema definido procesa las imágenes, el usuario puede emplear la herramienta de simulación xfsim. Esta herramienta conecta el sistema
con un modelo del contexto de operación (una planta, en la nomenclatura de control), que el usuario definirá como una clase Java. En el caso del procesado de imágenes, esta clase Java generará las entradas al procesado a partir de una imagen dada y tomará las salidas del procesado para generar la imagen resultante y los ficheros de datos (log) necesarios.
Si en la simulación no se obtienen buenos resultados, suele ser muy útil la herramienta xfmt, que permite monitorizar las entradas y salidas de cada módulo
Página 57 y los grados de activación de las reglas. Así puede detectarse si se ha cometido algún error en la traducción a reglas del conocimiento heurístico.
Para mejorar de forma automática los resultados de un sistema de procesado se pueden aplicar métodos de aprendizaje que ajusten los parámetros del sistema. Para ello puede emplearse la herramienta xfsl, que permite aplicar una gran
variedad de algoritmos de aprendizaje supervisado. Incluso si no se dispone de conocimiento heurístico para definir el sistema pero sí de datos numéricos, se puede emplear la herramienta xfdm para extraer automáticamente una base de
reglas. En este caso, suele ser útil emplear a continuación la herramienta xfsp,
que permite simplificar las funciones de pertenencia y/o las reglas de la base extraída.
Por último, el sistema de procesado definido en XFL3 puede traducirse de forma automática a Java, C y C++ utilizando las herramientas de síntesis xfj, xfc y xfcc,
respectivamente [13].