Arquitectura de alto rendimiento para procesadores difusos

98
Instituto Politécnico Nacional Centro de Investigación en Computación Arquitectura de Alto Rendimiento para Procesadores Difusos TESIS Que para obtener el grado de: Doctor en Ciencias de la Computación Presenta: M en C Antonio Hernández Zavala Directores de tesis: Dr. Oscar Camacho Nieto Dr. Ildar Zakirzjanovich Batyrshin Enero de 2009

Transcript of Arquitectura de alto rendimiento para procesadores difusos

Page 1: Arquitectura de alto rendimiento para procesadores difusos

Instituto Politécnico Nacional Centro de Investigación en Computación

Arquitectura de Alto Rendimiento para Procesadores Difusos

TESIS

Que para obtener el grado de:

Doctor en Ciencias de la Computación

Presenta:

M en C Antonio Hernández Zavala

Directores de tesis: Dr. Oscar Camacho Nieto

Dr. Ildar Zakirzjanovich Batyrshin

Enero de 2009

Page 2: Arquitectura de alto rendimiento para procesadores difusos
Page 3: Arquitectura de alto rendimiento para procesadores difusos
Page 4: Arquitectura de alto rendimiento para procesadores difusos

Resumen La lógica difusa se ha convertido en una buena opción para representar modelos inciertos de sistemas complejos que no pueden ser representados fácilmente en términos de matemáticas convencionales. Específicamente, el hardware difuso se ha convertido en la mejor opción para alcanzar altas velocidades de inferencia, lo cual se ha presentado en aplicaciones de alto rendimiento como purificación de agua, robótica, reconocimiento de patrones, entre otras aplicaciones eficientes de sistemas difusos. Existen dos formas de representar los valores del universo de membresía: la primera es cuando se utilizan números de punto flotante, la segunda es cuando se utiliza el universo de los enteros. En el primer caso el universo de membresía pertenece a [0, 1], en el segundo caso el universo de membresía pertenece al intervalo de enteros dado por [0, 12 −m ], donde m es el número de bits utilizado de acuerdo a las demandas de resolución de la aplicación. Este segundo caso es totalmente compatible con computadoras digitales, dado que las operaciones con punto flotante consumen mucho más tiempo y recursos que las operaciones con enteros.

Este trabajo presenta un método para implementar mecanismos de inferencia difusa para implementaciones discretas, donde se incluye un nuevo método de defuzzificación, con el objetivo de reducir el número de instrucciones a ejecutar, obteniendo como consecuencia un menor tiempo de procesamiento y menor cantidad de recursos utilizados. Se presentan resultados de la simulación de los nuevos métodos.

Para sintonización de sistemas difusos existen diversos métodos que requieren del ajuste de las funciones de membresía, otros métodos de sintonización de sistemas difusos están basados en operaciones paramétricas para conjunción y disyunción. En este trabajo se formula el problema de construcción de nuevas clases paramétricas de conjunciones y disyunciones difusas para implementarse eficientemente en hardware y se propone una solución a éste. Se propone un nuevo método de generación de conjunciones paramétricas en términos de otras conjunciones, disyunciones y generadores difusos. El enfoque está basado en el uso de generadores paramétricos simples junto con operaciones de mínimo, máximo, t-normas y t-conormas de Lukasiewicz y drásticas que presentan una implementación hardware digital eficiente.

En ésta tesis, se proponen varias clases de generadores paramétricos digitales, además se presentan ejemplos de conjunciones paramétricas construidas con éstos generadores y con operaciones de t-normas y t-conormas. Los bloques de circuitos básicos son implementados en hardware VLSI utilizando dispositivos programables como FPGA, presentando resultados de simulaciones.

Page 5: Arquitectura de alto rendimiento para procesadores difusos

Abstract

Fuzzy logic has become a very good choice to represent uncertain models of

complex systems that cannot be easily represented in terms of conventional mathematics. Specifically fuzzy hardware has turned to be the choice to reach high speed inference rates, which has been presented on high performance applications such as water treatment, robotics, pattern recognition, among other efficient applications of fuzzy systems. There are two forms to represent membership values universe: first one is when floating point numbers are used, second form is when integer universe is used. In the first case result of operations belongs to [0, 1], in the second case results belong to interval of integers [0, 12 −m ], where m is the number of bits used according to application resolution demands. This case is fully compatible with digital computers because floating point operations consume much more time and resources than integer operations.

This work presents a method to implement fuzzy logic inference engine for discrete implementations which includes a new method for defuzzification, with the objective of reducing the number of instructions to be executed, having as consequence fewer processing time and less resources consumed. Simulation results for new methods are considered.

For tuning fuzzy systems there are various methods that require adjustment of membership functions, another methods for tuning fuzzy systems are based on parametric operations for conjunction and disjunction. The problem of construction of parametric classes of fuzzy conjunction and disjunction operations suitable for effective digital hardware implementation is studied. The new method of generation of fuzzy parametric conjunctions by means of other fuzzy conjunctions, disjunctions and generators is proposed. The approach is based on the use of simple parametric generators together with min-max, Lukasiewicz and drastic t-norms and t-conorms that have effective digital implementation.

Several simple parametric classes of generators are proposed and examples of parametric conjunctions generated by means of these generators and basic t-norms and t-norms are considered. Circuits for basic construction blocks are implemented on VLSI hardware using FPGA programmable devices, simulation results are presented.

Page 6: Arquitectura de alto rendimiento para procesadores difusos

ÍNDICE

Índice de Figuras ……………………………………………………………… i Índice de Tablas ……………………………………………………………… iii Notación Utilizada ……………………………………………………………… iv j Capítulo 1 Introducción

1.1 Prefacio .………………………………………………………………... 1 1.2 Aplicaciones de los Sistemas Difusos …………………………………. 3 1.3 Tipos de Implementación de Sistemas Difusos ...……………………… 3 1.4 Justificación …………………………………………………………… 5 1.5 Objetivos ……………………………………………………………….... 6 1.5.1 General …………………………………………………………..... 6 1.5.2 Específicos ………………………………………………………... 6 1.6 Aportaciones …………………………………………………………… 7 1.7 Resumen de Contenido …………………………………………………. 8 j

Capítulo 2 Estado del Arte

2.1 Clasificación de Procesadores Difusos …………………………………... 9 2.2 Breve Historia de Procesadores Difusos ………………………………… 9 2.3 Conclusiones de Procesadores Difusos ………………………………… 11

j Capítulo 3 Marco Teórico

3.1 Lógica Difusa …………………………………………………………... 22 3.2 Conceptos fundamentales ……………………………………………... 22 3.2.1 Conjunto Difuso …………………………………………………... 22 3.2.2 Variable Lingüística ……………………………………………….. 23 3.2.3 Función de Membresía ……………………………………………... 25 3.3 Definiciones y Propiedades Básicas de Conjuntos Difusos ………….. 26 3.4 Conjunciones, Disyunciones y Operaciones con Conjuntos Difusos ….. 27 3.4.1 Negación ………………………………………………………..... 27 3.4.2 Normas Triangulares (t-normas) ……………………………………... 28 3.4.3 Co-normas Triangulares (t-conormas) ………………………………... 28 3.4.4 Conjunciones y Disyunciones ……………………………………… 30 3.5 Sistemas Difusos ………………………………………………………. 31 j

Page 7: Arquitectura de alto rendimiento para procesadores difusos

Capítulo 4 Modelo Propuesto

4.1 Consideraciones para Sistemas Difusos Digitales …………………….. 33 4.1.1 Fuzzificador ……………………………………………………..... 34

4.1.2 Mecanismo de Inferencia …………………………………………… 35 4.1.3 Agregación ……………………………………………………….. 37

4.1.4 Defuzzificador …………………………………………………… 38 4.2 Operaciones Paramétricas …………………………………………….. 39 4.3 Generadores Difusos ………………………………………………….. 42 4.4 Ejemplos de Conjunciones Paramétricas …………………………….. 44 Jj

Capítulo 5 Implementaciones en Hardware y Software de los Métodos Propuestos

5.1 Simulador de Sistemas de Inferencia Difusa …………………………. 47

5.1.1 Fuzzificación ……………………………………………………. 49 5.1.2 Inferencia ……………………………………………………….. 49 5.1.3 Defuzzificación ………………………………………………….. 49 5.1.4 Resultados de rendimiento ………………………………………….. 51

5.2 Implementación en Hardware de Bloques Fundamentales Difusos …... 54 5.2.1 Comparador ……………………………………………………..... 54 5.2.2 Bloque de t-normas ……………………………………………….. 55 5.2.3 Boque de t-conormas …………………………………………….....58 5.2.4 Bloque de Generadores Difusos ……………………………………. 60 5.3 Conjunciones Paramétricas en Hardware ……………………………… 67 j

Capítulo 6 Conclusiones y Propuestas para Trabajo Futuro

6.1 Simulador de Inferencia Difuso .……………………………………… 72 6.2 Conjunciones y Disyunciones Paramétricas en Hardware ……………. 72 6.3 Principal Aportación ………………………………………………… 73 6.4 Productos Obtenidos ………………………………………………….. 73 6.4 Propuestas para Trabajo futuro ………………………………………… 75 j

Referencias …………………………………………………………………….…..... 76

Page 8: Arquitectura de alto rendimiento para procesadores difusos

Índice de Figuras Figura 1. Tipos de implementación de procesadores difusos …………………………… 4 Figura 2. Clasificación de los procesadores difusos según su tecnología de construcción.9 Figura 3. Tipos de arquitecturas de procesadores difusos digitales ……………………. 10 Figura 4. Cuantificación vs. granulación ……………………………………………… 24 Figura 5. Ejemplo de variable lingüística .……………………………………………... 25 Figura 6. Distintas formas de función de membresía .…………………………………. 25 Figura 7. Definiciones para una función de membresía ………………………………. 26 Figura 8. t-normas y t-conormas básicas …………………………………….………… 29 Figura 9. Algunas operaciones con conjuntos difusos ………………………………… 31 Figura 10. Conjunción y disyunción de complementos ……………………………….. 31 Figura 11. Bloques de un sistema difuso ……………………………………………… 32 Figura 12. Funciones de membresía para la variable lingüística A ……………………. 33 Figura 13. Discretización de una función de membresía trapezoidal en levels−α ……. 34 Figura 14. Operaciones básicas de t-normas en representación de 4 bits ……………… 36 Figura 15. Primer caso de concatenación de levels−α , cuando están traslapados ……. 37 Figura 16. Segundo caso para concatenación de levels−α , cuando no intersectan …… 37 Figura 17. Tercer caso para concatenación de levels−α , con resta al inicio …………... 38 Figura 18. Defuzzificador por centro de áreas promedio COSAA …………………….. 39 Figura 19. Generadores con parámetro p= 3 en representación digital de 4 bits ………. 44 Figura 20. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (54) ………. 45 Figura 21. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (55) ………. 45 Figura 22. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (56) ………. 46 Figura 23. Ejemplo de conjunción paramétrica difusa obtenida por (61) ………….. 46 Figura 24. Simulador de sistemas de inferencia difusa ………………………………… 47 Figura 25. Sistema difuso con dos entradas y una salida discretizado a 32 levels−α y 512 valores para el universo de entrada .……………………………………………………. 48 Figura 26. Matriz de reglas para dos entradas con 4 funciones de membresía cada una y una salida con 5 funciones de membresía …………………………………………….... 48 Figura 27. Diagrama de flujo para la evaluación de entrada o fuzzificación ………….. 49 Figura 28. Algoritmo para la realización de la etapa de inferencia utilizando min como conjunción ………………………………..…………………………………………….. 50 Figura 29. Algoritmo para la creación de la función agregada ………………………… 50 Figura 30. Algoritmo propuesto para la realización del defuzzificador COSAA ……… 51 Figura 31. Resultados de los tres tipos de agregación con (63, 327) ……………………51 Figura 32. Resultados de los tres tipos de agregación con (248, 248) …………………. 51 Figura 33. Resultados de los tres tipos de agregación con (496, 477) …………………. 51 Figura 34. Diagrama del circuito correspondiente al comparador con X, P y N como entradas ………………………………..………………………………..……………… 55 Figura 35. Diagrama del circuito correspondiente a mínimo ………………………….. 55 Figura 36. Diagrama del circuito correspondiente a conjunción de Lukasiewicz …… 56

Page 9: Arquitectura de alto rendimiento para procesadores difusos

ii

Figura 37. Diagrama del circuito correspondiente a producto drástico ………………... 56 Figura 38. Implementación en hardware del bloque para t-normas …………………… 57 Figura 39. Simulación de circuito para t-normas ………………………………………. 57 Figura 40. Diagrama del circuito correspondiente a máximo ………………………….. 58 Figura 41. Diagrama del circuito correspondiente a disyunción de Lukasiewicz …… 58 Figura 42. Diagrama del circuito correspondiente a suma drástica ………………... 59 Figura 43. Simulación de circuito para t-conormas ……………………………………. 60 Figura 44. Implementación en hardware del bloque para s-normas …………………… 60 Figura 45. Circuito para el generador difuso digital 0I-Step (71) ……………………. 61 Figura 46. Circuito para el generador difuso digital 0CI-Step (72) ………………….. 61 Figura 47. Circuito para el generador difuso digital 0-Diagonal (73) ………………... 61 Figura 48. Circuito para el generador difuso digital I-Diagonal (74) …………….….. 61 Figura 49. Circuito para el generador difuso digital 0C-Diagonal (75) ……...………. 62 Figura 50. Circuito para el generador difuso digital CI-Diagonal (76) ……………… 62 Figura 51. Circuito para el generador difuso digital C-Diagonal (77) .………………. 62 Figura 52. Circuito para el generador difuso digital 0I-Diagonal (78) ………………. 63 Figura 53. Circuito para el generador difuso digital P-Diagonal (79) ……………….. 63 Figura 54. Circuito para el generador difuso digital Bounded-Sum (80) ……………. 64 Figura 55. Circuito para el generador difuso digital Bounded-Diff (81) …………….. 64 Figura 56. Circuito para el generador difuso digital Bounded-Diff-Sum (82) ……….. 65 Figura 57. Circuito correspondiente a los generadores difusos ………………………... 66 Figura 58. Simulación del circuito para los generadores 0-7 ………………………… 66 Figura 59. Simulación del circuito para los generadores 8-13 …………………………. 67 Figura 60. Circuito de conjunción paramétrica de la ecuación (83) …………………… 68 Figura 61. Circuito de conjunción paramétrica de la ecuación (84) …………………... 69 Figura 62. Circuito de conjunción paramétrica de la ecuación (85) …………………... 70 Figura 63. Circuito de conjunción paramétrica para la ecuación (61) …………………. 71

Page 10: Arquitectura de alto rendimiento para procesadores difusos

iii

Índice de Tablas Tabla 1. Comparativa entre las distintas implementaciones ……………………………. 4 Tabla 2. Procesadores difusos comerciales …………………………………………… 11 Tabla 3. Principales características de procesadores difusos propuestos desde 1985 hasta el momento …………………………….………………………………………….13 Tabla 4. Características funcionales de procesadores difusos desde 1985 hasta el momento . …………………………….………………………………………………... 18 Tabla 5. Tiempo consumido en la etapa de fuzzificación de las entradas x y y, finalmente, durante la evaluación de reglas ………………………………………………………… 52 Tabla 6. Tiempo consumido por los tres tipos de agregación ………………………….. 52 Tabla 7. Tiempo consumido en diferentes defuzzificadores …………………………... 52 Tabla 8. Pruebas realizadas par el sistema ……………………………………………... 52 Tabla 9. Bits de selección para el circuito de t-normas ………………………………... 56 Tabla 10. Bits de selección para el circuito de t-conormas ……………………………. 59 Tabla 11. Selección de generador difuso ……………………………………………… 65 Tabla 12. Recursos consumidos por la conjunción paramétrica de la ecuación (83) ….. 68 Tabla 13. Recursos consumidos por la conjunción paramétrica de la ecuación (84) …. 69 Tabla 14. Recursos consumidos por la conjunción paramétrica de la ecuación (85) …. 70 Tabla 15. Recursos consumidos por la conjunción paramétrica de la ecuación (61) ..... 71 q

Page 11: Arquitectura de alto rendimiento para procesadores difusos

iv

Notación utilizada

S Sistema Difuso X Universo de entrada A Variable lingüística A Ai(x) i-esima función de membresía para A T Conjunto de valores lingüísticos que puede tomar A. M Relaciona entre valores lingüísticos y conjuntos difusos H(A) Altura de la función de membresía A N(x) Negación de x T(x, y) t-norma S(s, y) t-conorma Ri i-esima regla difusa gi (x) i-esimo generador difuso L Universo de membresía discreto I Máximo valor de membresía en L Ci Constante i x Dato de entrada real para la primera entrada y Dato de entrada real para la segunda entrada n Número de bits para el universo de entrada m Número de bits para el universo de membresía M Función de membresía difusa in1 Variable lingüística de entrada 1 in2 Variable lingüística de entrada 2 out Variable lingüística de salida agg Variable lingüística para agregación k_in1 Número de funciones de membresía en in1 k_in2 Número de funciones de membresía en in2 k_out Número de funciones de membresía en out k Contador de funciones de membresía por variable

iα i-esimo level−α i0α Punto inicial en el intervalo con peso i ifα Punto final en el intervalo con peso i

w_in1 Vector de peso para entrada 1 w_in2 Vector de peso para entrada 2 w_rules Matriz de pesos para evaluación de las entradas rules Matriz de reglas

maxα Máximo valor de membresía alcanzado β Diferencia entre dos niveles COSAA Defuzzificación Center of Slice Area Average COG Defuzzificación Center of Gravity MOM Defuzzificación Mean of Maxima

Page 12: Arquitectura de alto rendimiento para procesadores difusos

1

Capítulo 1 Introducción En este capítulo se hace una inducción a los sistemas difusos, contemplando los trabajos históricos más representativos de esta teoría. Se presenta un panorama de aplicaciones de sistemas difusos para posteriormente, abordar los tipos de implementaciones existentes. Una vez conociendo los antecedentes de los sistemas difusos se expone la propuesta del tema donde se centra el presente trabajo de investigación, resaltando necesidades y carencias en los sistemas difusos actuales. Finalmente, se mencionan los objetivos planteados para el desarrollo del presente trabajo. 1.1 Prefacio

Al utilizar lógica clásica es prácticamente imposible crear un modelo que represente de forma matemática el razonamiento del ser humano, donde se hace uso del sentido común para razonar en un mundo donde las cosas son parcialmente verdaderas. Dado que los postulados de dicha lógica clásica solo utilizan dos valores, verdadero o falso, a esto se le conoce como principio del Tercero Excluido.

Con la finalidad de expandir las capacidades de la lógica Aristotélica, en 1920 Jan Lukasiewicz de Polonia, rompe el esquema del principio de tercero excluido asignando a una premisa, una serie de valores entre el rango de falso y verdadero que reflejan el grado de verdad de dicha premisa, es decir, que tan cierto o que tan falso es, introduciendo el concepto clave: “todo es cuestión de grados”.

En 1937, Black [1] en su artículo “vaguedad”, propone otra alternativa para representar al inexacto mundo real, menciona:

Vaguedad no debe ser comparada con la igualdad, dado que la

primera es aproximada más no exacta, entonces más que un defecto del lenguaje es una importante fuente de creatividad [2].

Lotfi Asker Zadeh profesor de ingeniería eléctrica y ciencias computacionales de

la universidad de Berkeley, publica en 1962 [3] un artículo donde resalta la incapacidad de las matemáticas convencionales para tratar sistemas reales.

Para tratar el análisis de sistemas biológicos, y lidiar

efectivamente con éstos, que son generalmente ordenes de magnitud más complejos que los sistemas hechos por humanos, se

necesita un tipo de matemáticas radicalmente distintas, matemáticas que utilicen cantidades difusas o nubosas que no

pueden ser descritas en términos de distribuciones de probabilidad [4].

Posteriormente en 1965 Zadeh [5], presenta la idea de los Conjuntos Difusos, a partir de esto, surge la Lógica Difusa como una extensión de la teoría de conjuntos clásica y ha sido una forma de representar el razonamiento aproximado de la mente humana. Aquí el valor de verdad de una premisa, puede variar en el rango [0, 1], tomando

Page 13: Arquitectura de alto rendimiento para procesadores difusos

2

valores reales que representan el grado de verdad para la variable con respecto a una función de pertenencia.

Al igual que cualquier otro tipo de lógica, la lógica difusa puede ser únicamente un sistema para inferir consecuencias de premisas

previamente establecidas y solamente de éstas. [6]

Zadeh menciona que la inteligencia artificial está basada en lógica, pero no se necesita lógica de primer orden sino lógica difusa para tratar con razonamiento inexacto o aproximado. Entonces

La lógica difusa es una generalización de la lógica bi-valuada

llamada lógica multivaluada que tiene la propiedad de graduar la verdad de la premisa haciendo uso de

cuantificadores de lenguaje común.

La razón por que los humanos pueden hacer muchas cosas que las computadoras no pueden es porque las últimas utilizan lógica bi-valuada o binaria para realizar sus cálculos.

Zadeh, menciona tres principales áreas para aplicaciones de cómputo inteligente [6]: numérico, bases de datos masivos e ingeniería del conocimiento. En esta última se refiere a computadoras orientadas a inteligencia artificial que en lugar de tratar datos utilizan conocimiento, ya que lo importante es la habilidad para inferir utilizando información de una base de conocimiento inconsistente.

Mediante lógica difusa se puede describir un sistema utilizando reglas de sentido común que se refieren a cantidades indefinidas. Se han hecho investigaciones que muestran que la lógica difusa puede aplicarse para modelar cualquier sistema continuo.

A pesar de que la construcción de reglas básicas y funciones de membresía es relativamente fácil, el ajuste de estas, no es una tarea simple, de hecho esto es el tendón de Aquiles de un sistema difuso. El método de prueba y error es comúnmente utilizado para modificar la forma de las funciones de membresía, esto requiere bastantes iteraciones de prueba para llegar a una solución óptima.

De acuerdo a Zadeh [7] dentro de la concepción y desarrollo de Máquinas con Coeficiente de Inteligencia MIQ para obtener esta solución óptima, el factor más importante es el uso de lo llamado soft computing o cómputo suave, en particular la lógica difusa dada su habilidad de imitar la mente humana para emplear un razonamiento aproximado más que preciso, entonces se puede explotar la tolerancia para imprecisión e incertidumbre, aprender de la experiencia y adaptarse a los cambios en diversas condiciones de operación.

Para realizar cómputo suave, se han realizado productos híbridos que proporcionen a un sistema basado en reglas la capacidad de ajustarse al sistema real ya sea a través de una red neuronal [8]; en otros casos se utilizan teorías como algoritmos genéticos [9], caos [10] y fractales [11], entre otras herramientas de aprendizaje [12]. Se pueden mencionar también nuevos métodos para la sintonización de sistemas difusos, como conjunciones paramétricas.

Page 14: Arquitectura de alto rendimiento para procesadores difusos

3

Cabe destacar que un grado difuso no es lo mismo que un porcentaje de probabilidad, la probabilidad determina cuando o no ocurrirá un suceso. En difuso, se mide el grado en que algo ocurrirá o alguna condición exista [13], entonces, la incertidumbre se estima por medio de posibilidad y necesidad, logrando representar estados de ignorancia parcial o total [14].

1.2 Aplicaciones de los Sistemas Difusos

La potencial aplicación de la lógica difusa en el campo del control automático es publicada por Zadeh en 1972 [15], y no es sino hasta 1974 cuando Ebrahim H. Mamdani del colegio Queen Mary en Londres [16] encuentra la forma de aplicar la lógica difusa al control de un motor de vapor desarrollando un modelo en donde se realiza la inferencia a través de una Base de Reglas o basado en reglas. Mas adelante en 1984, Sugeno [17], presenta un proyecto para estacionar un auto donde el esquema para el control difuso tiene un consecuente basado en ecuaciones lineales de primer orden, lo cual da mayor versatilidad a los sistemas difusos. Los sistemas difusos han tenido gran aceptación a nivel mundial, en la literatura existen infinidad de aplicaciones que varían desde el control del tiempo de lavado en lavadoras automáticas, hasta el control de trenes electromagnéticos en Japón, y aun sigue incrementando la aplicación a productos de consumo. Se pueden mencionar casos de alto rendimiento como: purificación de agua [18], reactores nucleares [19], robótica [20], reconocimiento de patrones [21] y experimentos de física de alta energía [22], todas estas aplicaciones requieren de sintonización previa para llegar a un funcionamiento óptimo en sistemas difusos, es por ello que en éste trabajo se presenta una alternativa de hardware para agregar sintonización basada en conjunciones paramétricas. 1.3 Tipos de Implementación de Sistemas Difusos

En cuanto al tipo de implementación para un sistema difuso podemos distinguir notoriamente dos grandes ramas principales y una tercera que surge al fusionar las dos primeras:

• Implementación en Software. En éste tipo de implementación, se utiliza un lenguaje de programación de propósito general para realizar un algoritmo computacional que trabaje con el sistema específico. En esta implementación, y debido a que la ejecución del programa es secuencial, no es posible realizar la manipulación del proceso en tiempo real, pero es versátil para trabajar con procesos que no demandan una alta velocidad de respuesta [23] [24].

• Implementación en Hardware. La implementación se realiza a través de un

circuito que puede variar en tecnología (FPGA, ASIC, CMOS, VLSI), al utilizar un procesador diseñado para propósito específico que hace uso del paralelismo y segmentación se puede alcanzar muy altas velocidades de operación, lo cual hace a éste tipo de implementación adecuada para aplicaciones de alto rendimiento [25] [26].

Page 15: Arquitectura de alto rendimiento para procesadores difusos

4

• Implementación Mixta, en ésta se hacen sistemas que constan de algún procesador de propósito general, al cual se agrega la capacidad de realizar operaciones difusas elementales dentro del conjunto de instrucciones [27] [28].

En la tabla 1, se presenta una comparativa entre los distintos tipos de

implementación de sistemas difusos, en la columna referente a infraestructura de hardware (HW), se hace referencia al número de componentes que se involucran en la implementación, y al referirnos a la velocidad, se refiere a la velocidad a la cual realiza una inferencia. Cabe destacar que en una implementación software, se requiere del procesamiento de un programa secuencial lo cual limita el desempeño del sistema, en el caso de las implementaciones en hardware, tienen la ventaja de que se pueden realizar operaciones específicas utilizando paralelismo a nivel de operación reduciendo considerablemente el tiempo de procesamiento.

Tabla 1. Comparativa entre las distintas implementaciones.

Implementación HW Velocidad Estructura Software Bajo Baja Programa Lineal

Mixta Medio Media Programa lineal con operaciones Difusas Hardware Alto Alta Dedicado a operaciones difusas con cierto

nivel de paralelismo y segmentación.

En la figura 1, se presentan las subdivisiones de los tipos de implementación de sistemas difusos, por el lado del software, se tienen diversos lenguajes de programación de uso general ya sean de alto nivel o ensambladores. Por el lado de las implementaciones en hardware, los distintos tipos están en función de la tecnología utilizada, que puede ser programable o fijo. Finalmente las implementaciones mixtas, hacen uso de algunas características o elementos de los tipos anteriores.

Figura 1. Tipos de implementación de procesadores difusos.

En aplicaciones donde el tiempo de respuesta es vital para ejecutar el algoritmo de

lógica difusa y así obtener resultados instantáneos, la mejor opción es el hardware. Esta opción, ha sido profundizada desde 1985 con la aparición del primer procesador difuso

Implementación

Software

Mixta

Hardware

Programas de modelación

Generadores de Código para uC

Lenguajes de uso general

VLSI

CMOS

FPGA

CORE Procesador + instrucciones FUZZY

Page 16: Arquitectura de alto rendimiento para procesadores difusos

5

digital [25], hasta éstos días es un campo de investigación activo y es una de las líneas de investigación del presente documento, un resumen detallado de estas implementaciones se expone en el capítulo 2. Por otro lado, como línea de investigación adicional, se aborda la sintonización de sistemas difusos basada en conjunciones paramétricas que se expone en el capítulo 4.

1.4 Justificación

Las implementaciones en hardware para sistemas difusos proporcionan una alta velocidad de respuesta en inferencias por segundo por esto son la mejor opción para procesos no lineales a alta velocidad en tiempo real. De acuerdo a la investigación realizada sobre implementaciones en hardware para sistemas difusos, que se detalla en el capítulo 2, en la mayoría de los casos se utilizan operaciones de punto flotante para realizar inferencias, destacando que éste tipo de operaciones al implementarse en hardware consumen una mayor cantidad de recursos, a diferencia de las operaciones con enteros.

Para sintonizar o ajustar un sistema difuso no existe una herramienta teórica que permita crear reglas difusas que proporcionen la mejor respuesta del sistema y además le permitan adaptarse a diversas condiciones de operación como es el caso de fallos. Dado esto, se han utilizado herramientas matemáticas que modifican la forma de las funciones de membresía como por ejemplo redes neuronales [29], algoritmos genéticos [30], entre otras.

Cabe destacar que la etapa de sintonización requiere una fuerte cantidad de hardware adicional, o de otra forma, se debe realizar en otro equipo el cálculo de sintonización y descargar parámetros optimizados al sistema físico.

Con la finalidad de proveer flexibilidad a los sistemas difusos para modelar procesos reales se tienen operaciones de conjunción paramétrica que pueden ser ajustadas para mejorar resultados en simulación de sistemas difusos [31]-[33]. Este esquema permite la sintonización de sistemas difusos sin modificar la forma de funciones de membresía, lo cual se logra agregando parámetros constantes a las operaciones de conjunción paramétricas.

Actualmente ninguna implementación en hardware incluye operaciones paramétricas en su diseño, dado que éste enfoque es poco conocido. Por esto, se encuentra la necesidad de proponer hardware capaz de realizar conjunciones paramétricas que puedan ser implementadas en hardware digital eficientemente sin sacrificar desempeño, considerando el tipo de operaciones que utilicen.

Las ecuaciones utilizadas en sistemas difusos hacen uso de operaciones como multiplicación, división o potencias, que además de que consumen mucho hardware, requieren de una etapa de normalización para ajustar los resultados al universo discreto en cuestión sin causar un desbordamiento, entonces, estas operaciones se deben evitar en lo posible con la finalidad de hacer un sistema difuso que reduzca y optimice los recursos de hardware digital.

Por tal motivo, en el presente trabajo se desarrollan nuevas formas para conjunciones paramétricas, que mejoran su desempeño en hardware digital evitando operaciones complejas, utilizando operaciones simples. Para evaluar su comportamiento, se desarrolló un simulador donde se permita probar distintos casos, para así finalmente

Page 17: Arquitectura de alto rendimiento para procesadores difusos

6

diseñar bloques de hardware para operaciones básicas útiles en la creación de conjunciones paramétricas. 1.5 Objetivos

1.5.1 General

Desarrollo de un nuevo método para implementaciones digitales de sistemas difusos, utilizando operaciones paramétricas como herramienta para sintonización, haciendo uso de operaciones básicas optimas que permitan una implementación digital eficiente.

1.5.2 Específicos

• Descripción del sistema difuso y las partes que lo componen en términos de números binarios en el universo de los enteros.

• Fuzzificación de un dato discreto a la entrada del sistema, representado

como un número difuso formado por un conjunto de niveles-α . • Formulación de ecuaciones para conjunción que eviten operaciones

complejas como multiplicaciones y divisiones, para mejorar el tiempo de respuesta y reducir el número de componentes de hardware.

• Formulación de un método de agregación basado en suma de

intervalos.

• Formulación de un método de defuzzificación que opere con el resultado obtenido de la agregación, en niveles alfa, para entregar como un resultado de salida del sistema difuso, un valor discreto.

• Formulación de generadores difusos paramétricos que se puedan

implementar eficientemente en hardware digital y que pueden ser utilizados para construir operaciones de conjunción y disyunción paramétricas.

• Desarrollo de un simulador que permita realizar sistemas difusos con

las características mencionadas anteriormente.

• Implementación en hardware de un bloque donde se realicen las operaciones de t-normas.

• Implementación en hardware de un bloque donde se realicen las

operaciones de t-conormas.

Page 18: Arquitectura de alto rendimiento para procesadores difusos

7

• Implementación en hardware de un bloque donde se realicen las operaciones de generadores difusos.

• Implementación en hardware de operaciones de conjunción

paramétricas en un dispositivo programable en campo FPGA. 1.6 Aportaciones

En este trabajo se generó un nuevo modelo matemático para la implementación de sistemas difusos haciendo uso de operaciones con enteros, utilizando el mínimo de operaciones complejas. Derivado de lo anterior se desarrollo un nuevo método de agregación basado en suma de intervalos al cual se le denomina con resta al final y con resta al inicio, también se propone un nuevo método de defuzzificación denominado COSAA que se adapta a las necesidades del modelo propuesto y serán explicados en extenso en la sección 4.1.

En [31]-[33] proponen operaciones de conjunción paramétricas simples, para sintonización de sistemas difusos pero la mayoría de éstas no tiene una implementación en hardware eficiente dado que están basadas en operaciones como producto o potencia. Por esto, se propusieron nuevos bloques de operaciones de conjunción paramétricas basados en generadores difusos, éstos bloques están basados en operaciones como min y max, t-normas y t-conormas de tipo Lukasciewicz y Drásticos que tienen como característica su simpleza computacional [34]-[36].

También se desarrollaron ejemplos de conjunciones basadas en las clases de generadores paramétricos propuestos, unidos con t-normas y t-conormas.

Finalmente como infraestructura para el análisis y simulación del comportamiento de nuestras propuestas, se desarrollo un simulador en C++ que utiliza todas las etapas del método propuesto, incluyendo las nuevas operaciones. Lo cual permite obtener nuevos bloques de hardware para la realización de operaciones de conjunción difusa paramétricas que son de utilidad para cualquier implementación en hardware que desee incluir sintonización basada en operaciones paramétricas.

Page 19: Arquitectura de alto rendimiento para procesadores difusos

8

1.7 Resumen de contenido

En el capítulo 2 se presenta un panorama acerca de las implementaciones en hardware para sistemas difusos que se han realizado desde su aparición en 1985 hasta el momento, obteniendo una sistematización que se presenta en diversas tablas donde se muestran las características de diseño y funcionalidad más relevantes, donde se observa la necesidad de generar nuevos modelos que incluyan una etapa de sintonización paramétrica con operaciones simples.

El capítulo 3 trata los aspectos teóricos básicos en donde está sustentada la investigación, primeramente se abordan los fundamentos de lógica difusa y sistemas difusos, incluyendo las operaciones de negación, conjunción (t-normas) y disyunción (t-conormas) así como algunas propiedades matemáticas.

Posteriormente en el capítulo 4 se desarrolla la forma matemática de representación de números difusos en el universo de los enteros, cuyas operaciones deben ser simples para ser implementadas eficientemente en hardware digital. Tomando esto en consideración, se presentan las nuevas operaciones paramétricas de conjunción difusa basada en generadores difusos digitales, como herramienta para sintonización del sistema difuso.

El capítulo 5 corresponde a los resultados obtenidos en el presente trabajo, parte de éstos fueron obtenidos utilizando un simulador en C++, realizado para implementar un modelo de sistema difuso flexible con las características presentadas en el capítulo anterior, en éste simulador se analiza y evalúa las distintas conjunciones tanto básicas como paramétricas. De acuerdo a esto, se realiza la implementación en hardware digital de bloques básicos de t-normas, t-conormas y generadores difusos, utilizados para construir operaciones paramétricas difusas para sintonización en sistemas difusos.

Finalmente en el capítulo 6 se presentan las conclusiones derivadas de la investigación, se propone trabajo futuro y se presentan los productos obtenidos.

En el Apéndice A se presenta la terminología utilizada en el presente documento.

Page 20: Arquitectura de alto rendimiento para procesadores difusos

9

Capítulo 2. Estado del Arte En el presente capítulo, se hará una revisión de los procesadores difusos que se han realizado desde su aparición en 1985 hasta la actualidad, primeramente se dará una clasificación de los procesadores difusos, para posteriormente hacer una breve reseña histórica del desarrollo de éstos procesadores. Finalmente se hace un resumen donde se presentan tablas que resaltan las características más importantes de éstos desarrollos así como los autores que han estado involucrados a lo largo de más de 20 años de procesamiento difuso en hardware. Con ello, se pretende contar con un panorama del estado del arte, que nos muestre, entre otras cosas, la problemática que presentan las aportaciones de hardware existentes, para así proponer una posible solución, motivo del presente trabajo 2.1 Clasificación de Procesadores Difusos Dentro del área de procesadores difusos, se distinguen dos grandes tipos: digitales y analógicos. A partir de esto, investigadores de distintas partes del mundo han desarrollado versiones de arquitecturas de procesadores difusos, mismas que con el avance tecnológico en la fabricación de circuitos integrados y las constantes mejoras en sistemas difusos, se ha logrado a través de los años, crear dispositivos más rápidos, más eficientes y más flexibles, que adoptan la tecnología física e intelectual más avanzada hasta el momento. La clasificación de procesadores difusos según su tecnología de construcción distingue tres categorías principales que son: Analógico, Digital e Hibrido, como se muestra en la figura 2. En el primer caso se utilizan operaciones entre señales analógicas de voltaje o corriente; en el caso de las implementaciones digitales se utilizan datos binarios para realizar las operaciones. Finalmente el enfoque hibrido hace una mezcla de señales tanto digitales como analógicas.

Figura 2. Clasificación de los procesadores difusos según su tecnología de construcción.

2.2. Breve Historia de Procesadores Difusos

En 1985 Yamakawa y Miki, desarrollan el primer procesador difuso analógico CMOS que realiza operaciones difusas a través de comparaciones entre niveles de corriente [26], fue puesto en el mercado y patentado para OMRON. El enfoque analógico se ha utilizado en [37] [38] [39] entre otros. También se han creado híbridos que manejan

ANALÓGICOS

HÍBRIDOS

DIGITALES

Implementaciones Hardware para

Sistemas Difusos

Page 21: Arquitectura de alto rendimiento para procesadores difusos

10

señales tanto digitales como analógicas en la estructura del procesador, como en [40] [41].

Los procesadores digitales difusos aparecieron paralelamente en 1985, cuando Watanabe y Togai desarrollan el primer chip difuso con tecnología VLSI [25], fue patentado y comercializado por Togai Infralogic. A partir de éste, se han creado nuevas versiones de arquitecturas difusas digitales, por ejemplo, Manzoul y Serrate realizan un procesador de alta capacidad de procesamiento de tipo sistólico difuso [42], y posteriormente DeSalvador y Gutiérrez un arreglo sistólico multinivel [43]. Morisue y Kogure, utilizan una arquitectura tipo Josephson [44]; Morisue y Sakamoto, utilizan bloques de neuronas para formar operaciones difusas [45] [46] y distintas arquitecturas más se han reportado utilizando técnicas avanzadas como segmentación y paralelismo a nivel de operación, entre éstas [47] [48] [49].

De acuerdo al tipo de implementación visto en la sección 1.3, se tienen implementaciones mixtas donde se utiliza un bloque lógico de algún procesador RISC convencional, y se añaden bloques de operaciones difusas básicas al conjunto de instrucciones, una arquitectura de éste tipo fue propuesta por Watanabe en 1992 [27]. Esta implementación puede realizar un algoritmo de lógica difusa haciendo uso de operaciones tanto ordinarias como difusas, a esto se le llama arquitectura hibrida ya que incluye modificaciones en el hardware para realizar instrucciones de software eficientemente. Entre otros trabajos similares, Costa y DeGloria [50], Salapura [28]. El co-diseño en esta parte se encarga de comparar operaciones e implementarlas de la forma más eficiente, ya sean en hardware o en código ejecutable por el mismo procesador [51] [52].

Otra forma de implementación mixta es donde se maneja el uso de un co-procesador difuso unido a un procesador de uso general, el primero se encarga de realizar el cómputo difuso y el segundo realiza la interacción con los demás periféricos [53]. Con la reciente aparición de dispositivos lógicos programables, que permiten crear una arquitectura digital completa a través de bloques de circuitos lógicos conectados de tal manera que representen el comportamiento del modelo planteado y la facilidad de representar reglas difusas utilizando lenguajes de descripción de datos [54], se han presentado diversas implementaciones de hardware difuso realizadas en FPGA, en 1992 Surmann, et. Al., [55] realizaron la primera implementación de éste tipo, campo que en la actualidad está activo para la investigación y ha sido trabajado por [49] [56] [57] [58] [59], entre otros. En la figura 3 se resumen los tipos de arquitecturas de procesadores difusos digitales.

Figura 3. Tipos de arquitecturas de procesadores difusos digitales.

Utilizando como modelos los diseños anteriores, se han presentado nuevas

versiones tanto de los mismos autores como de otros proyectos que han mejorado o implementado alguna nueva característica o corregido algunas deficiencias anteriores. Se puede mencionar que la reducción del número de componentes, lleva a reducir el costo de

ASIC - FUZZY

RISC+FUZZY

CO-PROCESADOR

Procesadores Difusos

Digitales FPGA

Page 22: Arquitectura de alto rendimiento para procesadores difusos

11

fabricación aunque no siempre lleva a un mejor desempeño. También se ha tratado el incrementar la velocidad de operación, facilidad de uso, versatilidad, etc. Algunos de estos trabajos de investigación han sido patentados y comercializados por grandes compañías como se muestra en la tabla 2.

Tabla 2. Procesadores Difusos Comerciales

Autores Compañía Modelo Año Takeshi Yamakawa OMRON Taetsi Electronics FP-3000 1986

Masaki Togai TOGAI Infralogic --- 1986 Rodney J. Corder,

Mark E. Miller TOGAI Infralogic FC-110 1991

--- Neuralogix NLX230 1992 Andrea Pagni,

Rinaldo Poluzzi, Guianguido

Rizzotto

SGS Thomson Microelectronics

WARP 1993

Herbert Eichfeld, Thomas Künemund

Michael Loner

SIEMENS AG. Semiconductor

SAE- 81C99

1993

Greg J. Viot, James Sibigroth,

James L. Broseghini

MOTOROLA Inc. 68HC12 (CPU12)

1993

Massimo Abruzzese,

Biagio Giacalone

Cons Ric Microelettronica --- 1995

Vicenzo Catania, Marco Russo

ST Microelectronics ST52Fxx 1996

2.3 Conclusiones de Procesadores Difusos

En las tablas 3 y 4 se podrá apreciar las características más relevantes de los procesadores difusos que han sido desarrollados, resaltando que en la mayoría de ellos se manejan resoluciones fijas para el universo de entrada y número de valores de membresía, éstos varían desde 4 hasta 32 bits.

Todos los procesadores son sincronizados por reloj, y utilizan segmentación en diversas etapas desde 2 hasta 8 etapas, aplicando paralelismo a nivel de operación, aunque hay quienes adoptan un procesamiento serial.

El número de entradas y salidas está en función de la arquitectura difusa y varía desde 2 hasta 8 entradas y desde 1 hasta 4 salidas. El número de funciones de membresía está limitado a un máximo de hasta 16 funciones por cada entrada y hasta 256 singletons para la salida. En todos los trabajos, el número máximo de funciones de membresía traslapadas es de 2.

Page 23: Arquitectura de alto rendimiento para procesadores difusos

12

El método de inferencia más utilizado es el propuesto por Mamdani, basado en la composición MAX-MIN, tiene como característica el ser simple, este modelo será utilizado para el desarrollo del presente trabajo. El método de defuzzificación más usado es el de Centro de Gravedad o COG por sus siglas en ingles, que proporciona buenos resultados, pero consume bastante tiempo de procesamiento.

En cuanto a las posibles formas de funciones de membresía existentes, la más utilizada es el trapezoide, auque existen implementaciones que no limitan esta forma dado que se puede representar de dos maneras, la primera es asignando un valor de membresía para cada punto en el universo de entrada; la segunda forma es asignar a un intervalo de valores de entrada un nivel de membresía, a esto se le conoce como representación en niveles-α . Para ahorrar cálculo al procesador, se han tratado enfoques donde las funciones de membresía son mapeadas a memoria, conteniendo esta el nivel de membresía correspondiente a una entrada, reduciendo así el cálculo en la etapa de Fuzzificación.

Algunos autores señalan el uso de “reglas activas” [69], como una herramienta para ahorrar cálculos innecesarios en la parte de inferencia, este concepto se ha mantenido hasta el momento en diversos trabajos.

En cuanto a desempeño y velocidad, se han presentado arquitecturas de hasta 300 MFLIPS, esto está en función del tipo de tecnología utilizada y de las etapas de segmentación que se apliquen, obteniendo una vez cargadas todas las etapas, una inferencia con cada ciclo de reloj. Esto también depende del número de entradas, del número de funciones de membresía para cada entrada y de la resolución utilizada.

Las formas más flexibles que se presentan son las implementaciones de co-procesadores difusos, dado que son bloques de operaciones difusas especializadas que trabajan en conjunto con un procesador de uso general y con una memoria de donde obtienen los parámetros necesarios para su operación, brindando así la flexibilidad de programar a través del procesador de uso general diversas configuraciones de sistemas difusos. Cabe mencionar que este tipo de implementaciones no es la más veloz pero si la más flexible.

Con la finalidad de proveer flexibilidad sin sacrificar desempeño, es necesario contar con bloques en hardware de operaciones básicas simples, modulares y configurables, para construir conjunciones paramétricas útiles en sintonización de sistemas difusos, tema del presente trabajo.

Page 24: Arquitectura de alto rendimiento para procesadores difusos

13

Tabla 3. Principales Características de Procesadores Difusos Propuestos Desde 1985 Hasta el Momento. Año Autores Tecnología Arquitectura Velocidad

en FLIPS Inferencia Defuzzificación Características Relevantes de

1985-1986

Togai, Watanabe [25],[60],[61]

Digital CMOS

Paralelo-Serial

80K Max-Min COG Uso de memoria ROM para almacenamiento de las reglas, mismas que se ejecutan todas en paralelo, lo cual lleva un gran tiempo de procesamiento.

1986-1995

Yamakawa, Miki [26],[62]-[65]

Analógico 2 procesadores dedicados

1M Max-Min COG Realiza el procesamiento por manejo de voltajes

1987-1988

Manzoul, Serrate [42]

Digital Segmentada con procesadores en paralelo

Relación Total

N/D Realiza un arreglo sistólico para calcular toda la relación difusa.

1986-1991

Watanabe, Detloff, Yount [66]-[68]

Digital Max-Min COG

1991 Ikeda, Hiramoto, Nakamura [69]

Digital Paralelo Segmentada

Max-Min Variable Presentan el concepto de reglas activas y almacenan las funciones de membresía en RAM.

1992 Morisue, Kogure [44]

Mixto Arquitectura Segmentada tipo Josephson

790M Max-Min COG Defuzzificación por Centro de Gravedad con Comparaciones, sin suma ni multiplicación

1992

Watanabe [27]

Digital RISC con operaciones difusas

N/D Variable Variable Agrega instrucciones vectoriales al conjunto de instrucciones de un procesador RISC, creando una FALU (Fuzzy Aritmetic and Logic Unit)

1993-1995

Surmann Ungering, Goser

Digital FPGA

Segmentado 3 etapas

Max-Min COG Fuzzificación mediante Look Up Table (LUT)

Page 25: Arquitectura de alto rendimiento para procesadores difusos

14

[70]-[72] 1993 Nakamura,

Sakashita et al [73],[74]

Digital Co-procesador

200K Max-Min COG Incluye un generador de funciones de membresía

1993-1994

Fattaruso, Mahant-Shetti, Barton [75],[76]

Mixto Paralelo 500K Max-Min COM Calcula 32 reglas en paralelo

1993 Ho, Lim, Lau [77]

Digital Max-Min Trata las entradas como singletons simplificando la circuitería

1994- 1999

Massetti, Gabrielli, Gandolfi [22],[48],[78]-[82]

Digital Segmentada en 5 etapas

50M Max-Min Yager Selector de Reglas Activas

1994 Eichfeld, Klimke, et. Al. [83]

Digital FPGA

10M Max/Bsum

COG MOM

Procesa hasta 4 reglas en paralelo

1994 Costa, DeGloria, et. al. [50]

Digital RISC segmentada en 4 etapas

Variable Max-Min Variable Procesador RISC extendido con operaciones difusas

1995- 2000

Ascia, Catania, et. Al. [47],[84]-[90]

Digital Paralelo Segmentada

52K -16.7M

Max-Min COG Utiliza Unidades de Detección de Reglas, además de manejar representación en niveles alfa.

1995 Basch, Zagar [55]

Digital Segmentada en 8 etapas

200K Max-Min COG Uso de memoria de contenido direccionable para almacenar al conjunto difuso

1995 Civera, Demarchi, Masera [56]

Digital Paralelo Serial

250K Max-Min Presenta una arquitectura paralelo-serial para realizar inferencias.

Page 26: Arquitectura de alto rendimiento para procesadores difusos

15

1995 Ramirez-Angulo, Treece, Andrews [91]

Analógico Paralelo Max-Min COG Procesador que opera en modo voltaje, y realiza defuzzificación en modo de corriente,

1995 De Salvador, Gutiérrez [43]

Digital FPGA

Sistólica multinivel VHDL

14M Max-Min N/D las reglas se incluyen en la unidad de inferencia

1996 Salapura, Hamann [92]

Digital FPGA

Segmentada Max-Min Yager El sistema difuso es representado por medio de diagramas de estado

1996

Jacomet, Walti [57]

Digital Segmentada 86M Max-Min MAX COA

Cualquier forma de función de membresía mapeada mediante LUT

1996 Guo, Peters, Surmann [38]

Analógico CMOS

Paralelo 6M Max-Min COG Etapas realizadas con operaciones en voltaje.

1997-2000

Gshwind, Salapura, Maurer [28],[93],[94]

Digital FPGA

Coprocesador segmentado

Variable Software Variable Utiliza un procesador MIPS-I unido con un procesador difuso dedicado en FPGA basado en maquinas de estado cooperativas

1997 Sakamoto, Morisue [95], [96]

Digital Ternario neuronal

Max-Min Utiliza lógica trivaluada y bloques de redes neuronales para operaciones de máximo.

1995-2002

Barriga, Baturone, et. Al. [97]-[101]

Digital FPGA

Paralelo 3M Variable COG optimizado

Realiza las operaciones de manera, Análoga y Digital.

1995-1998

Barriga, Baturone, et. Al. [102]-[106]

Mixto Paralelo 500K Max-Min COG Realiza inferencias totalmente en paralelo, puede conectarse directamente con sensores.

1996 Patyra, Digital Paralelo 300M Max-Min N/D Propone DDS direct data stream para

Page 27: Arquitectura de alto rendimiento para procesadores difusos

16

Granter, Koster [107]

FPGA Segmentada acelerar el procesamiento de Utiliza elementos de procesamiento PE max-min en paralelo.

1998 Cardarilli, Lojacono [108]

Digital Segmentado 400K Max-Min COG Funciones Trapezoidales con potencias de dos como pendientes.

1998 Song, Quigley, Pammu [109]

Analógico Paralelo 500K Max-Min COG

1998 Bin Qiu; Pak L Woon [110]

Digital FPGA

Segmentada Max-Min CEN SOM, MOM

Permite seleccionar operaciones de defuzzificación además de formas de funciones de membresía

1999-2000

D’Amore, Kienitz Saotome [111], [112]

Digital Segmentado en dos etapas

Max-min COG Utiliza una matriz de asociación de reglas

2002 Acosta, Toccini [29]

Digital FPGA

Segmentada 818K Max-min COG

2003 Garrigós Guerrero Merino [113]

Digital FPGA

Segmentado 170K COG Distribución de la base de reglas como redes de petri

2003 Gaona, Olea, Melgarejo [114]

Digital FPGA

Secuencial con modulos paralelo

45M Max-Min COA Utiliza aritmética distribuida para defuzzificación

2004 Shih-Hsu Huang; Jian-Yuan Lai [115]

Digital Segmentada 4M Max-Min COG Presentan mejoras en la detección de reglas activas haciendo uso de una unidad de asignación, (scheduling)

2004 Melgarejo, Pena Reyes

Dgital Segmentada 30M Tipo2 Tipo2 Implementa sistemas difusos de tipo 2

Page 28: Arquitectura de alto rendimiento para procesadores difusos

17

[116] 2005 Raychev,

Mtibaa y Abid [53]

Digital Co-procesador FPGA

Max-Min El co-procesador interactúa con u procesador y una RAM donde se almacenan las reglas. Operaciones de punto flotante

2005 Shih-Hsu Huang Jian-Yuan Lai [117]

Digital Paralelo Segmentado

7M Max-Min COG Utiliza funciones de membresía tipo trapezoidal

2006 Deliparaschos, Nenedakis, Tzafestas [118]

Digital FPGA

Segmentada 200M Prod-Min Weighted Average

Sistema difuso tipo Takagi-Sugeno de orden cero y generador de funciones de membresía trapezoidales.

2007 Tamukoh, Horio, Yamakawa [119]

Digital Segmentada SOR Generador de funciones de membresía basada en corrimiento de bits, uso de redes neuronales para defuzzificación con unidades activas.

Page 29: Arquitectura de alto rendimiento para procesadores difusos

18

Tabla 4. Características Funcionales de Procesadores Difusos desde 1985 Hasta el Momento.

Año Autores Número de Entradas

Número de Salidas

Número de funciones

para Entrada

Número de Funciones

para Salida

Traslapes Número de Bits en

Universo Entrada

Número de Bits para Valor de

Membresía 1985-1986

Togai, Watanabe [25],[60],[61]

1 1 31 31 2 5-6 4

1986-1995

Yamakawa, Miki [26],[62]-[65]

3 1 7 7 2 N/D N/D

1987-1988

Manzoul, Serrate [42]

2 1 Hasta 7 Hasta 7 2

1986-1991

Watanabe, Detloff, Yount [66]-[68]

2 1 7 7 2 6 6

1991 Ikeda, Hiramoto, Nakamura [69]

9 1 8 8 2 8 6

1992 Morisue, Kogure [44]

2 1 2 4

1992

Watanabe [27]

Variable Variable 2-16 2-16 2 32 6

1993-1995

Surmann Ungering, Goser [70]-[72]

4 1 8 8 2 8 8

1993 Nakamura, Sakashita et al [73],[74]

2 1 6 7 2 12 8

1993-1994

Fattaruso, Mahant-Shetti, Barton [75],[76]

8 4 28 28 2 8 6

1993 Ho, Lim, Lau 3 1 2 7 8

Page 30: Arquitectura de alto rendimiento para procesadores difusos

19

[77] 1994- 1999

Massetti, Gabrielli, Gandolfi [22],[48],[78]-[82]

4 1 7 8 2 7 4

1994 Eichfeld, Klimke, et. Al. [83]

256 64 2 8 6

1994 Costa, DeGloria, et. al. [50]

variable Variable Variable Variable Variable Variable Variable

1995- 2000

Ascia, Catania, et. Al. [47],[84]-[90]

8 1 8 8 2 8 6

1995 Basch, Zagar [55]

8 2 15 15 8 8

1995 Civera, Demarchi, Masera [56]

2 1 16 16 2 5 4

1995 Ramirez-Angulo, Treece, Andrews [91]

5 1 5 5 2 N/D N/D

1995 De Salvador, Gutiérrez [43]

4 1 7 7 2 8 6

1996 Salapura, Hamann [92]

2 1 7 7 2 8 8

1996

Jacomet, Walti [57]

4 1 7 8 6 8 6

1996 Guo, Peters, Surmann [38]

3 1 3 5 2 N/D N/D

1997-2000

Gshwind, Salapura, Maurer [28],[93],[94]

variable Variable Variable Variable Variable Variable Variable

1997 Sakamoto, Morisue

Page 31: Arquitectura de alto rendimiento para procesadores difusos

20

[95], [96] 1995-2002

Barriga, Baturone, et. Al. [97]-[101]

3 1 8 8 2 8 6

1995-1998

Barriga, Baturone, et. Al. [102]-[106]

2 1 2 N/D N/D

1996 Patyra, Granter, Koster [107]

4 2 Variable Variable Variable 6 4

1998 Cardarilli, Lojacono [108]

2 1 16 7 2 8 8

1998 Song, Quigley, Pammu [109]

2 1 7 4 2 N/D N/D

1998 Bin Qiu; Pak L Woon [110]

3 3 5 5 2 8 8

1999-2000

D’Amore, Kienitz Saotome [111], [112]

2 1 9 7 2 7-16 4-13

2002 Acosta, Toccini [29]

2 1 7 7 2 8 8

2003 Garrigós Guerrero Merino [113]

2003 Gaona, Olea, Melgarejo [114]

2 1 4 16 2 8 8

2004 Shih-Hsu Huang; Jian-Yuan Lai [115]

2 1 8 8 2 6 4

2004 Melgarejo, Pena Reyes [116]

2 1 3 9 2 8 32

Page 32: Arquitectura de alto rendimiento para procesadores difusos

21

2005 Raychev, Mtibaa y Abid [53]

Variable Variable Variable Variable Variable 16 16

2005 Shih-Hsu Huang Jian-Yuan Lai [117]

8 4 8 8 2 8 6

2006 Deliparaschos, Nenedakis, Tzafestas [118]

2 1 7 49 2 8 4

2007 Tamukoh, Horio, Yamakawa [119]

2 1 Vector Vector -- 8 12

Page 33: Arquitectura de alto rendimiento para procesadores difusos

22

Capítulo 3 Marco Teórico En el presente capítulo, se da un amplio panorama acerca de los sistemas difusos, primeramente se aborda la teoría de lógica difusa que se utiliza en sistemas difusos, se tratan los conceptos fundamentales y propiedades básicas. Posteriormente se tratan las operaciones difusas de negación, conjunción y disyunción. Finalmente se trata de manera general los sistemas difusos, explicando el funcionamiento de cada parte involucrada en el proceso de inferencia, y los distintos tipos de modelo existentes para sistemas difusos. Cabe destacar que esta última parte se considera en el capítulo 4, donde se presenta una implementación digital de estos sistemas. 3.1 Lógica Difusa

La lógica difusa surge en los anos 60’s con la aparición del concepto de conjuntos difusos realizado por Lotfi A. Zadeh [5]. En si la teoría de lógica difusa, pretende plasmar el conocimiento humano en reglas. El razonamiento humano está basado en procesos de inferencia que son aproximados más que precisos [120]. En lógica difusa, se utiliza razonamiento de sentido común a través de operaciones difusas como intersección o producto, encadenamiento, conjunción y disyunción tanto de antecedente como de consecuente, siendo estas dos últimas las más importantes [121].

La teoría difusa consta de tres partes [122]:

• Lógica Difusa. Conjunto Herramientas lógicas que incluyen operaciones de conjunción, disyunción, negación e implicación entre otros.

• Conjuntos difusos. Son un esquema de representación y relación para elementos con los que pueda trabajar la lógica difusa.

• Matemáticas Difusas. Las técnicas, teoremas o métodos que son generados por la aplicación de lógica difusa.

3.2 Conceptos Fundamentales

Sea S un sistema con entradas, salidas y el estado de S en un tiempo t denotado por

u(t), y(t), x(t), respectivamente. Entonces S es un sistema difuso sí u(t) o y(t) o x(t) o cualquier combinación de éstos cae en el rango de conjuntos difusos [123].

Dentro de los conceptos fundamentales para conjuntos difusos, se tienen los de conjuntos difusos, variable lingüística y función de membresía que serán tratados a continuación.

3.2.1 Conjunto difuso

Las clases de objetos encontrados en el mundo físico real no tienen un criterio definido de membresía precisa, entonces no constituyen clases o conjuntos en el sentido matemático formal. Por lo tanto un conjunto difuso es una clase de objetos con un grado de membresía continuo. Tal conjunto es caracterizado por una función de membresía que asigna a cada objeto del universo, un grado de membresía entre cero y uno [5]. Esta noción

Page 34: Arquitectura de alto rendimiento para procesadores difusos

23

de conjunto difuso provee un punto de partida conveniente para la construcción de un marco de trabajo que sea paralelo en muchos aspectos con el marco de trabajo de los conjuntos ordinarios, pero más general que éste, y potencialmente aplicable a una más amplia gama de problemas, particularmente en el campo de clasificación de patrones y procesamiento de información.

Definición: sea X un espacio de puntos u objetos con un elemento genérico de X

denotado por x, tal que { }xX = . Un conjunto difuso o clase A en X es caracterizado por una función de membresía )(xA que asocia a cada punto de X un número real en el intervalo [0, 1]. La evaluación de )(xA representa el grado de membresía de x en A, mientras mas cercano sea a la unidad, mas alto grado de membresía de x en A.

{ } XxxAXxxAxA ∈∀ℜ⊂∈∈= ,]1,0[)(;|))(,( (1)

Idealmente un conjunto difuso puede ser representado por una función continua, pero dado que no es posible tomar todos los valores existentes para una variable, sólo se utilizan n puntos de acuerdo a la ecuación anterior, y está en dependencia del número de bits utilizado para representar a cada )(xA .

Representado en forma de vector

( )∑=

=n

iii xxAA

1)( (2)

3.2.2 Variable lingüística

Una variable cuyos valores son palabras en lenguaje natural es llamada variable

lingüística y es una representación, en términos de palabras, de conjuntos de valores reales no definidos estrictamente, y que representan un rango de valores específico.

A manera de ejemplo, suponga la variable lingüística temperatura, en términos reales se pude representar mediante números ya sean reales o enteros, que describen una cantidad exacta por ejemplo 30ºC. Mas sin embargo esta variable puede tomar una serie de valores lingüísticos que representan un rango de temperaturas, por ejemplo “frió”, “templado”, “Calido”, etc. Esto es, la variable “temperatura” toma un valor lingüístico que obviamente le corresponde un rango de valores numéricos reales que dan sentido a la palabra. Para sentir calor la temperatura puede estar en un rango superior a 30°C por ejemplo.

Definición: Si una variable puede tomar palabras del lenguaje natural como sus valores, es llamada entonces una variable lingüística, donde las palabras son caracterizadas por conjuntos difusos definidos en el universo discurso en donde la variable esta definida [124].

Una variable lingüística se caracteriza por (A, T, X, M), donde: A es el nombre de la variable lingüística. T es el conjunto de valores lingüísticos que puede tomar A.

Page 35: Arquitectura de alto rendimiento para procesadores difusos

24

X es el dominio físico actual en donde la variable lingüística A toma sus valores cuantitativos. M es una regla semántica que relaciona cada valor lingüístico en T con un conjunto difuso en X, es decir corresponde a las funciones de membresía que describen a cada valor lingüístico de A.

Para ampliar el rango de valores posibles para una variable difusa, pueden utilizarse

prefijos calificativos llamados modificadores lingüísticos, por ejemplo mucho, poco, nada [125]. Además se puede hacer uso de disposiciones que son proposiciones que no necesariamente son siempre verdaderas y que pueden ser vistas como una proposición con cuantificadores difusos implícitos como siempre, casi-siempre, casualmente, rara vez, nunca [126].

Una variable lingüística puede ser vista como una forma de compresión de datos llamada granulación, que a diferencia de la cuantificación tiene las siguientes ventajas:

1) Es más general. 2) Imita la interpretación humana de un valor lingüístico. 3) La transición de un valor lingüístico a otro adyacente es gradual, resultando en continuidad y robustez. 4) Al utilizar granulación se reduce el número de elementos en el espacio de la variable.

En la siguiente figura se muestra un caso de cuantificación (a), donde

{ } Ζ∈≤≤= xxxX ;100| , c=11, siendo c la cardinalidad del conjunto universo o espacio. En la parte (b), es un caso de granulación donde X es descompuesto en tres partes o conjuntos fundamentales, aquí, se utiliza entonces: números poco mayores a 0, números mayores a 0 y números mucho mayores a 0, como elementos que cubren el universo, haciendo entonces c=3, reduciendo considerablemente el número de elementos a utilizar.

Figura 4. Cuantificación vs. Granulación

0 1 2 3 4 5 6 7 8 9 10

a) Cuantificación

0 1 2 3 4 5 6 7 8 9 10b) Granulación

Poco mayor a cero Mayor que

Mucho mayor a cero

Page 36: Arquitectura de alto rendimiento para procesadores difusos

25

3.2.3 Funciones de Membresía

Una variable lingüística se expresa a través de un conjunto de funciones de membresía, donde la variable es segmentada en una serie de valores lingüísticos donde cada uno es representado por una función de membresía distinta que se traslapa con k funciones de membresía adyacentes. En la siguiente figura, se muestra una variable lingüística segmentada en cinco funciones de membresía triangulares donde el número de funciones de membresía que se traslapan es igual a dos.

Figura 5. Ejemplo de variable lingüística.

Existen diversas formas de representar una función de membresía en la figura anterior se utilizaron formas triangulares, pero también pueden ser utilizadas otro tipo de formas como las presentadas en la figura 6, gausiana (a), trapezoidal (e), con un plano, seccionadas, cuadrático parciales (d) y las sigmoideas de tipo S (b) y Z (c) [23]. Cada una tiene ventajas con respecto a las demás, pero esto depende del tipo de aplicación que se vaya a realizar. Cabe mencionar que a partir de las funciones presentadas en la figura se pueden crear híbridos mediante la combinación de estas, por ejemplo las seccionadas y con un plano. En términos de implementación se ha mostrado que solo a, b, c y e son utilizadas debido a su continuidad y facilidad de uso. Pero de éstas la más utilizada computacionalmente hablando es la trapezoidal. Se puede concluir que cuando una función de tipo trapezoidal tiene una longitud de valor cero en la parte plana superior se tiene entonces una función triangular.

Figura 6. Distintas formas de función de membresía.

)(1 xA )(2 xA )(3 xA )(4 xA )(5 xA

Variable

Page 37: Arquitectura de alto rendimiento para procesadores difusos

26

3.3 Definiciones y Propiedades Básicas de Conjuntos Difusos

Un conjunto difuso es vació sí y sólo sí su función de membresía es idéntica a cero en X.

0)(, =⇔= xAA φ (3)

Dos conjuntos difusos A y B son iguales denotado por BA = sí y sólo sí )()( xBxA = para todo Xx ∈ .

)()( xBxABA =⇔= (4) A esta contenido en B o es un subconjunto menor o igual de B, escrito como BA ⊂

sí y sólo sí )()( xBxA ≤ para todo Xx ∈ . )()( xBxABA ≤⇔⊂ (5)

Se define la altura (Height) de un conjunto difuso como el valor más alto en una

función de membresía y se representa mediante H(A). Un conjunto difuso se dice que es normal cuando al menos un elemento tiene el

valor de uno, es decir 1)( =AH . Un conjunto difuso se dice que es subnormal, cuando ninguno de sus elementos

alcanza el valor 1, es decir 1)( <AH . El punto crossover es el punto donde 5.0)( =xA . Un singletón es una función de membresía puntual cuyo elemento único 0x tiene

como valor 1. 1)( 0 =xA (6)

El soporte de una función de membresía son todos aquellos elementos cuyo valor es

mayor que cero.

{ }0)(|)( >= xAxASupp (7)

El core de A, se define como el conjunto de puntos donde el valor de la función de membresía es igual a 1, puede ser vació.

{ }1)(|)( == xAxAcore (8)

Figura 7. Definiciones para una función de membresía.

Core(A)

Supp(A)

a

H(A0.5crossov

Page 38: Arquitectura de alto rendimiento para procesadores difusos

27

Dos propiedades importantes son la concentración y la dilatación de funciones de membresía, dado que pueden ser representaciones de modificadores lingüísticos como mucho, poco y nada [125].

El cuadrado o concentración de un conjunto difuso se define por

2)( AACon = (9)

y alternativamente por el modificador 2)]([)( xAxAmucho = . La dilatación se define como

2/1)( AADil = (10)

o en forma de modificador 2/1)]([)( xAxApoco = .

3.4 Conjunciones, Disyunciones y Operaciones con Conjuntos Difusos

Las operaciones fundamentales en teoría de conjuntos difusos son la negación, conjunción e intersección, como estas últimas comúnmente se utilizan normas triangulares o t-normas T(x, y), y co-normas triangulares o t-conormas S(x, y), respectivamente [127-130].

3.4.1 Negación

En lógica difusa, el conjunto de valores de verdad (llamados valores de membresía) usualmente contiene un número continuo de elementos L= [0,1]. La operación negación de un valor de membresía x en el conjunto A denotado por N(x) es definido como una función N: L → L.

La operación negación se define mediante los siguientes axiomas:

0)1(1)0( == NN (11)

yxsiyNxN ≤≥ ),()( (anti-monotonía) (12)

Las negaciones que satisfacen la propiedad (13) son conocidas como negaciones involutivas o involuciones.

xxNN =))(( (13)

Un ejemplo de involuciones más común es denotado por:

xxN −=1)( (14)

Page 39: Arquitectura de alto rendimiento para procesadores difusos

28

3.4.2 Normas Triangulares (t-normas) Las operaciones de conjunción difusa más populares son conocidas como normas triangulares o t-normas T: L×L → L, están definidas por las propiedades de conmutatividad y asociatividad, además de los siguientes axiomas (15) y (16):

Condición de límite yyTxxT == ),1(;)1,( (15)

Monotonía vyuxsivuTyxT ≤≤≤ ,),,(),( (16)

Se puede mostrar que las t-normas satisfacen la propiedad (17).

0),0(;0)0,( == yTxT (17) Se tienen diversos casos de t-normas, dentro de éstas, podemos mencionar como

formas simples con alta posibilidad de implementación en hardware las siguientes (18)-(21):

),min(),( yxyxTM = (Mínimo) (18)

xyyxTP =),( (Producto algebraico) (19)

{ }0,1max),( −+= yxyxTL (Lukasiewicz) (20)

×∈

=casootroyx

yxsiyxTD ),,min(

)1,0[)1,0[),(,0),( (Producto drástico)(21)

De los casos mencionados anteriormente, se puede descartar (19) dado que incluye

operaciones de multiplicación y esta operación consume bastantes recursos de hardware, y la intención es identificar las formas más simples.

3.4.3 Co-normas Triangulares (t-conormas) Las operaciones para disyunción difusa más populares, son conocidas como co-normas triangulares o t-conormas S: L×L → L, están definidas por las propiedades de conmutatividad y asociatividad además de los axiomas (22) y (23):

Condiciones de límite yySxxS == ),0(;)0,( (22)

Monotonía vyuxsivuSyxS ≤≤≤ ,),,(),( (23)

Se puede demostrar que las t-conormas satisfacen la propiedad (24):

Page 40: Arquitectura de alto rendimiento para procesadores difusos

29

1),1(;1)1,( == ySxS (24) Se tienen diversos casos de t-conormas, dentro de éstas, podemos mencionar como

formas simples con alta posibilidad de implementación en hardware las siguientes (25)-(28):

),max(),( yxyxSM = (Máximo) (25)

xyyxyxSP −+=),( (Suma probabilística) (26)

{ }1,min),( yxyxSL += (Lukasiewicz) (27)

×∈

=casootroyx

yxsiyxSD ),,max(

]1,0(]1,0(),(,1),( (Suma drástica) (28)

De los casos mencionados anteriormente, se puede descartar (26) dado que incluye

operaciones de multiplicación y esta operación consume bastantes recursos de hardware, y la intención es identificar las formas más simples. En la figura 8, se presentan los casos de t-normas y t-conormas que presentan una alta posibilidad de implementarse en hardware eficientemente.

Figura 8. t-normas y t-conormas básicas.

Page 41: Arquitectura de alto rendimiento para procesadores difusos

30

Las operaciones mostradas para t-normas y t-conormas pueden ser obtenidas a partir de otras mediante negación involutiva como en (14) de la siguiente manera:

S(x, y) = N (T(N(x), N (y))) (29)

T(x, y) = N (S(N(x), N (y))) (30)

Si N es una involución, las relaciones (29) y (30) pueden ser utilizadas para obtener a partir de una conjunción T (o disyunción S) la correspondiente disyunción S (o conjunción T). En éste caso el par de conjunciones y disyunciones junto con la involución N constituyen un triple de DeMorgan.

3.4.4 Conjunciones y disyunciones

Como conjunciones y disyunciones normalmente se utilizan t-normas y t-conormas,

pero generalmente es posible considerar operaciones no conmutativas y no asociativas que satisfagan las condiciones de límite y monotonía (15), (16), (22),(23).

Se ha mostrado en [31]-[33] que las propiedades conmutativa y asociativa son muy útiles en modelos matemáticos de sistemas difusos, pero en aplicaciones industriales no son de importancia. Por esta razón, la conjunción y disyunción difusas se pueden definir únicamente por las condiciones de límite y monotonía (15)-(16) para conjunciones y (22)-(23) para disyunciones, con esto se pueden construir operaciones paramétricas más simples.

Se pueden definir operaciones de unión sobre un conjunto difuso LXA →: , donde ]1,0[)( ∈xA , de la siguiente manera:

( ))(),())(( xBxATxBA =∩ (31)

( ))(),())(( xBxASxBA =∪ (32)

))(()( xANxA =¬ (33)

En la figura 9, se presentan diversas operaciones con conjuntos difusos realizadas

con mínimo y máximo como conjunción y disyunción, respectivamente. En la primera columna se tienen los conjuntos de entrada A y B, en la segunda columna, se tienen las operaciones de unión ( BA ∪ ) y ( BA ∩ ), finalmente en la tercera columna se tiene el complemento de A ( )(xA¬ ) y el complemento de la conjunción de A y B ( )( BA ∩¬ ).

Page 42: Arquitectura de alto rendimiento para procesadores difusos

31

Figura 9. Algunas operaciones con conjuntos difusos.

Dadas las operaciones de la figura 9, se puede demostrar que en conjuntos

difusos φ≠¬∩ AA (Figura 10a) y también que XAA ≠¬∪ (Figura 10b), entonces puede descartarse el principio del tercero excluido eliminando la linealidad.

(a) (b)

Figura 10. Conjunción y Disyunción de complementos. 3.5 Sistemas Difusos En esta sección se tratarán las etapas que se involucran para realizar una inferencia a partir de datos de entrada provenientes de un universo continuo o crisp. En la figura 12 se presenta un sistema difuso típico, aquí, la etapa de fuzzificación es encargada de convertir el dato de entrada crisp en un dato difuso que represente el grado de membresía de la entrada en alguna o algunas funciones de membresía de la variable lingüística. La etapa de inferencia se encarga de decidir, mediante reglas difusas, cual será la conclusión de la regla de entrada, según el modelo difuso del cual se trate. Se tienen dos tipos de modelo de sistemas difusos, de acuerdo al tipo de conclusión que utilizan, el modelo de Mamdani presentado en la ecuación (34) utiliza como conclusión un conjunto difuso, por otro lado el modelo de Sugeno presentado en la ecuación (35) una conclusión en forma de función de primer orden.

iiii CzTHENByANDAxIFR ===: (34)

),(: yxfzTHENByANDAxIFR iiii === (35)

A

B

BA ∪

BA ∩

)( BA ∩¬

Page 43: Arquitectura de alto rendimiento para procesadores difusos

32

Donde x, y son las entradas; iii CBA ,, son variables lingüísticas con funciones de membresía dadas por { }ki AAAA ,,, 21 K∈ , { }li BBBB ,,, 21 K∈ , { }ji CCCC ,,, 21 K∈ donde k, l, j son los índices de las funciones de membresía y pueden tener valores distintos pero normalmente se utilizan entre 3 y 7; z es la salida y fi es alguna función de primer orden. Todas las reglas que proporcionen una salida distinta de 0, influirán en el resultado de salida.

Cabe destacar que la parte AND de las reglas presentadas en (34) y (35) puede ser realizada por alguna operación de conjunción. Finalmente, la etapa de defuzzificación se encarga de convertir el conjunto de conclusiones activadas a un valor crisp compatible con el sistema físico donde se encuentra éste sistema difuso.

Figura 11. Bloques de un Sistema Difuso

Se han presentado en literatura diversos trabajos donde se muestran resultados

comparativos entre sistemas difusos y sistemas modelados mediante matemáticas tradicionales, donde se demuestran a través de pruebas y teoremas, que los sistemas difusos caracterizados por:

a) Inferencia fija, b) un cierto tipo de relación difusa que satisfaga alguna propiedad

especifica y, c) un método de defuzzificación.

Son capaces de aproximar cualquier función real continua en un conjunto compacto con precisión arbitraria, entonces, los sistemas difusos son aproximadores universales. Entendiendo por un aproximador universal a aquel que pueda aproximar uniformemente una función continúa a cualquier grado de precisión en conjuntos compactos. Esto ha sido demostrado por Kosko [131], Wang [132], Buckley [133] y Castro [134] [135]. Dados los anteriores trabajos, comúnmente las implementaciones de sistemas de control difuso trabajan con modelos que utilicen fuzzificador y defuzzificador.

Entre las diversas formas existentes para realizar cada una de estas etapas, nos interesan aquellas que permitan su representación eficiente utilizando números binarios dado que de esta manera se puede optimizar el hardware y el tiempo de procesamiento, esto será tratado en el capítulo 4 dedicado a explicar más a detalle las etapas mencionadas considerando su implementación digital.

Fuzzificación Defuzzificación

Inferencia

Base de Reglas

Page 44: Arquitectura de alto rendimiento para procesadores difusos

33

Capítulo 4 Modelo Propuesto En el capítulo anterior se presentaron los conceptos, operaciones y propiedades que se utilizan en sistemas difusos para realizar inferencias a partir de datos de entrada. Para implementar cada una de las etapas mencionadas en una computadora digital, deben considerarse los casos donde las operaciones permitan su implementación eficiente en hardware. En este capítulo, se describen los nuevos métodos de defuzzificación de soluciones difusas y los métodos de generación de operaciones de conjunción paramétrica simples, cuya implementación en hardware sea eficiente. Además se aborda el tema de generadores difusos digitales, que son utilizados para construir conjunciones paramétricas útiles para la sintonización de sistemas difusos. 4.1 Consideraciones para Sistemas Difusos Digitales

Usualmente para representar valores de verdad en sistemas difusos, existe un rango

de valores que pertenecen a L= [0, 1] para representar el nivel de membresía de un valor de entrada, donde 0 significa que no tiene membresía y 1 significa que tiene total membresía. El número de valores de membresía está en función de la resolución deseada.

Existen dos formas de representar el universo de membresía: a) La primera utiliza números de punto flotante. b) En la segunda se utiliza el universo de los números enteros. Para el segundo caso, el resultado pertenece a L=[0, I], donde 12 −= mI y m es un

entero que define el número de bits que se utilizaran según la resolución deseada. Este caso es totalmente compatible con computadoras digitales dado que las operaciones con punto flotante consumen una mayor cantidad de recursos que las operaciones con enteros.

Todas las formas digitales de implementar sistemas difusos tienen algo en común, utilizan finalmente números binarios como alma de sus cálculos. Tomando esto en cuenta, se puede proponer que la eficacia de una implementación no reside en la tecnología utilizada, si no que reside en la forma matemática de representar y operar utilizando números binarios en el conjunto de los enteros.

Definición: Sea A una variable lingüística cuyos valores se descomponen en K funciones de membresía como en la ecuación (36), de forma gráfica se puede apreciar en la figura 12.

{ }KAAAAA ,,,, 210 K= (36)

Figura 12. Funciones de membresía para la variable lingüística A.

… KA0A 1A 2A

Page 45: Arquitectura de alto rendimiento para procesadores difusos

34

En este trabajo se utilizarán levels−α [138] o cuts−α [139] para representar valores de membresía correspondientes a cada función de membresía. Éste método permite utilizar cualquier forma para describir las funciones de membresía, mediante el uso de un generador de intervalos para la forma deseada.

Definición: Sea M una función de membresía trapezoidal con niXxi ,,1,0; K=∈ ; donde n es el número de puntos en el eje x. Cada level−α está definido por los siguientes cuatro parámetros: M es el nombre de la función de membresía; i es la altura y es cuando mas igual a 12 −= mI , y representa el valor de membresía en M; i

0α es el punto inicial en X del level−α con valor de membresía i y i

fα es el punto final en X de ese mismo nivel. En la figura 13 se presenta la discretización de un función de membresía M en un número

12 −m de levels−α . Toda la función de membresía M es representada entonces por el conjunto de todos sus levels−α sobre el universo de X, los valores para m y n están en función del número de bits utilizado para cada uno y pueden ser diferentes, de preferencia m<n .

Figura 13. Discretización de una función de membresía trapezoidal en levels−α .

4.1.1 Fuzzificador

En esta etapa es donde se realiza el mapeo de escala del dato de entrada de un universo X al correspondiente universo difuso. Cuando se procesa una entrada de un universo continuo, se utilizan números con valores enteros que definen los puntos donde la entrada corta a una o más funciones de membresía, esta tarea es realizada por la ecuación (37), puede tomar diversas formas entre las cuales se pueden mencionar trabajos interesantes como en [140] donde se presenta un método similar al de levels−α donde se calculan el lado derecho y lado izquierdo por separado, en [141] se presenta un método directo de fuzzificación a partir de los datos de entrada. En nuestro caso se utiliza un método de fuzzificación que no es el más óptimo pero si es explicativo acerca del procedimiento de fuzzificación.

)( 0xfuzzifierx = (37)

Definición: Al referirse al level−α más bajo en M de la figura X, su altura es igual

a 0 o 0α , y la longitud de este segmento está en el espacio del universo de entrada. Los

10α

20α

220

−m

α 0fα 2

fα 1fα 0

M

120

−m

α 0α

12 −m

α 22 −m

α

12 −m

fα 22 −m

Page 46: Arquitectura de alto rendimiento para procesadores difusos

35

valores para el punto inicial ( 00α ) y el punto final ( 0

fα ) están contenidos en el universo con la única restricción de que 00

0 fαα < , este segmento será llamado la base y su longitud está dada por la siguiente ecuación (38):

00

00_ ααα −= fLenghtBase (38)

En este caso se utilizan únicamente enteros, entonces para 0α su altura es igual a 0,

entonces su área es igual a 0 lo cual es inútil para cálculos, pero este nivel es muy importante dado que nos permite identificar si la entrada x está o no en la función de membresía M, es calculado como en (39). Esta operación puede realizarse utilizando un par de comparadores para los limites superior e inferior, si el dato se encuentra entre los limites, entonces x esta en M y se realiza el cálculo del nivel de membresía alcanzado por la entrada x, en otro caso, no se realiza ningún cálculo y x es evaluada en la base de la siguiente función de membresía.

[ ] MxTHENxIF f ∈∈ 00

0 ,αα (39)

Para evaluar la entrada x en el resto de M y obtener el mayor valor de membresía alcanzado, x es comparada en cada nivel de M como en (40) iterando mientras se cumpla la condición, i es el contador de niveles. Cuando la condición se hace falsa el proceso se detiene y los valores para el máximo nivel de membresía alcanzado y el nombre de la función se almacenan en memoria como un vector de pesos donde el índice de la localidad es igual al número de la k-esima función de membresía evaluada y el contenido es el nivel de membresía alcanzado por x. La entrada es evaluada en todas las funciones de membresía de la variable lingüística, y aquella función que tenga valor cero como resultado, no contribuye al resultado final y no necesita ser evaluada posteriormente.

[ ] 12;,0 −≤∈∈ mf iMxTHENxxxIF ii αα (40)

4.1.2 Mecanismo de Inferencia

La arquitectura propuesta para el sistema difuso es capaz de trabajar con dos entradas y una salida con hasta 7 funciones de membresía cada una en un modelo de sistema difuso de Mamdani que contiene reglas de la forma presentada en la ecuación (41):

Rn: IF x is Ai AND y is Bj THEN z is Ck (41)

donde x y y son valores reales de entrada, z es el dato real de salida; Ai, Bj y Ck son funciones de membresía de las variables lingüísticas A y B a la entrada y C a la salida, respectivamente.

El resultado de la etapa de Fuzzificación consiste en un par de vectores w_in1 y w_in2, que contienen el resultado de la evaluación de los pesos para la entradas x y y

Page 47: Arquitectura de alto rendimiento para procesadores difusos

36

respectivamente en cada función de membresía. Éstos vectores son interpolados haciendo uso de alguna conjunción, por ejemplo, Mínimo o Producto acotado o alguna conjunción paramétrica. De esto se obtiene como resultado una matriz que contiene los pesos para activar cada regla en la base de reglas, cabe destacar que las localidades cuyo valor sea 0 corresponden a las reglas que no serán activadas y por lo tanto tampoco serán evaluadas.

Por ejemplo, si se utiliza el operador min entre los vectores w_in1 y w_in2, para formar la matriz de peso de reglas que contendrá los pesos para activación de reglas, se realiza de la manera siguiente según la ecuación (42):

( )jiji inwinwTrulesw 2_,1__ = (42)

Las dimensiones para la matriz de pesos de reglas están determinadas por el

número de funciones de membresía k_in1 y k_in2 de las variables lingüísticas A y B respectivamente, donde k_in1 y k_in2 pueden ser de dimensión mínima 2 y no mayor a 7, entonces el número máximo de reglas que pueden utilizarse es 49. Esta matriz es utilizada para obtener la forma resultante de la conclusión en términos de levels−α . En (42) se utiliza mínimo como conjunción, aunque pueden utilizarse otras operaciones. En la figura 14 se presentan operaciones básicas de conjunción en representación de 4 bits que pueden ser utilizadas para conjunción. Esta misma parte la podemos realizar con operaciones paramétricas que serán tratadas en la sección 4.2.

05 10 15

05

1015

0

5

10

15

x

T= minimum

y

05 10 15

05

1015

0

5

10

15

x

S= maximum

y

0 510 15

05

1015

0

5

10

15

x

T= Lukasiewicz

y

0 510 15

05

1015

0

5

10

15

x

S= Lukasiewicz

y

05 10 15

05

1015

0

5

10

15

x

T= drastic

y

05 10 15

05

1015

0

5

10

15

x

S= drastic

y

Figura 14. Operaciones básicas de t-normas en representación de 4 bits.

Page 48: Arquitectura de alto rendimiento para procesadores difusos

37

4.1.3 Agregación

La etapa de agregación de las reglas activas es realizada utilizando un operador de concatenación para cada level−α en cada función de membresía cuyo valor es mayor que 0, es decir, únicamente con las reglas que contribuyen al resultado final. La concatenación de dos intervalos con la misma altura es realizada con los operadores max y min. Note que existen tres diferentes casos.

El primer caso es cuando ambos intervalos están traslapados y es el caso más simple. Considere dos levels−α a y b con la misma altura mα , y están traslapados como en la figura 15.

Figura 15. Primer caso de concatenación de levels−α , cuando están traslapados.

El level−α resultante es obtenido como sigue por la ecuación (43):

),(),,max(),,min( 0000 ffff rrrbarbar === (43)

El segundo caso para concatenación de levels−α es cuando los intervalos

correspondientes no están intersectados. Este caso es más complejo dado que se requiere una operación extra. Considere dos levels−α a y b con la misma altura 22 −m

α , como se muestra en la figura 16.

Figura 16. Segundo caso para concatenación de levels−α , cuando no intersectan.

Sea fab −= 0β la distancia entre los dos intervalos (alternativamente tenemos

fba −= 0β ). Este caso es calculado como sigue por la ecuación (44) y será llamado agregación con resta al final.

),(,),max(),,min( 0000 ffff rrrbarbar =−== β (44)

El tercer caso es similar al anterior pero los intervalos que no intersectan se

concatenan como en la ecuación (45), a este caso le llamaremos agregación con resta al inicio. Y se muestra en la figura 17.

Page 49: Arquitectura de alto rendimiento para procesadores difusos

38

),(),,max(,),min( 0000 ffff rrrbarbar ==+= β (45)

Figura 17. Tercer caso para concatenación de levels−α , con resta al inicio.

4.1.4 Defuzzificador

Existen en literatura diversos métodos para realizar la etapa de defuzzificación a partir de una función agregada, todos ellos satisfacen diferentes necesidades de precisión y velocidad, aunque dada su simpleza, los más utilizados son el centro de gravedad COG [142] y la media del máximo MOM [143], entre otros. Se puede encontrar un buen estudio acerca de defuzzificadores en [144-145], donde se introducen nuevos métodos. En [146] se presenta una forma de defuzzificación rápida.

Para el defuzzificador MOM solo es necesario conocer cual es el nivel mas alto y calcular el centro de este, requiere como máximo m iteraciones, por ello el resultado es proporcionado rápidamente, pero no es tan exacto. De acuerdo con la ecuación (46).

mxAMOM )( max= (46)

En el defuzzificador COG, se requieren k=2n-1 iteraciones de acuerdo al universo

de entrada dado por 2n donde n es el número de bits utilizados para la resolución de acuerdo a la ecuación (47).

=

=

×= k

ii

k

iii

xA

xAxCOG

1

1

)(

)( (47)

Se ha presentado en literatura que el método de defuzzificación COG proporciona mejores resultados que MOM, aunque MOM presenta mejor desempeño transitivo mientras que COG presenta un mejor desempeño en estado estable. Concluyendo que un defuzzificador COG proporciona un error cuadrático medio menor al de MOM [128]. En el presente trabajo de tesis, se propone un nuevo método de defuzzificación que se adapta a las necesidades de trabajar con levels−α al cual se le denomina Centro de Áreas Promedio o Center of Slice Area Average (COSAA). En este caso, se requieren maxα iteraciones donde maxα es el máximo valor de membresía alcanzado por la función agregada. La operación correspondiente esta dada por la ecuación (48). Como ejemplo en la figura 18 se presenta un caso donde m=4, entonces se calcula el centro de cada nivel iα en

a

b

r

a0

b0

af

bf

r0

β

βrf

Page 50: Arquitectura de alto rendimiento para procesadores difusos

39

una sumatoria, y el resultado se obtiene del promedio de la suma de todos los centros y está marcado como COSAA. La división entre dos se realiza como un corrimiento hacia la derecha realizado por cableado.

( )

max

00

0max

αα

αα

∑=

+

= i

f i

ii

xxx

COSAA (48)

Figura 18. Defuzzificador por centro de áreas promedio COSAA.

4.2 Operaciones Paramétricas Se han propuesto diversos métodos para la obtención de clases de t-normas

paramétricas, entre los cuales podemos mencionar las de Schweizer (49), Sklar (50), Yager (51) y Dombi (52). Los sistemas difusos con t-normas paramétricas pueden ser optimizados mediante los parámetros de éstas operaciones, pero debido a la complejidad de éstas operaciones, su uso en procedimientos de optimización no es fácil. Éste tipo de operaciones también son difíciles de implementar en hardware dado que contienen producto o potencias, lo cual las hace consumir bastantes recursos.

ppp yxyxT /1)1,0max(),( −−− −+= (49)

[ ] ppppp yxyxyxT /1)1()1()1()1(1),( −−−−+−−= (50)

( )( )ppp yxyxT /1)1()1(,1min1),( −+−−= (51)

ppp

yx

yxT /1

11

111

1),(

+

++

= (52)

Page 51: Arquitectura de alto rendimiento para procesadores difusos

40

Se tienen diversas formas de operaciones paramétricas simples adecuadas para ajustar sistemas difusos, se tratan a detalle en [31]-[33]. Para poder utilizar conjunciones definidas mediante (15) y (16) se utiliza la siguiente fórmula (53):

T(x, y)= T2(T1(x, y),S(x, y)) (53)

donde T2 y T1 son conjunciones y S es una seudo-disyunción. Las seudo-disyunciones S se definen en [32] como funciones que satisfacen (16) y (17). Suponga h, g1, g2: L→L son funciones no decrecientes llamadas generadores. La seudo-disyunción S puede generarse de la siguiente manera:

S(x, y)= S1(g1(x),g2(y)) (54)

S(x, y)= g1(S1(x, y)) (55)

S(x, y)= S2(S1(x, y),h(y)) (56)

Donde g1 y g2 satisfacen la condición de g1(1)=g2(1)=1. Como seudo-disyunciones

S para (53) se pueden utilizar t-conormas básicas o seudo-disyunciones obtenidas a partir de disyunciones básicas mediante la aplicación recursiva de las ecuaciones (53)-(56). A continuación se presentan ejemplos (57)-(59) de conjunciones paramétricas obtenidas en [32] en términos de (53)-(56):

T(x,y) = min(x,y)⋅max{1- p(1 - x),1 – q(1 - y), 0} (57)

T(x,y) = min{min(x,y), max(xp,yq)} (58)

T(x,y) = min(x,y)⋅ max(xp,yq) (59)

Estas operaciones son simples para sintonizar sistemas difusos, pero no se pueden implementar eficientemente en hardware dado que están basados en operaciones como producto o funciones exponenciales. Note que en [32] también se propuso la siguiente conjunción paramétrica (60) que puede implementarse eficientemente en hardware dado que está basada en operaciones simples como mínimo y comparación [36].

≤≤

=otherwise

yqorxpifyxyxT

,0),,min(

),( (60)

A continuación se propondrá una nueva fórmula para realizar conjunciones

paramétricas. Teorema 1. Suponga que T1 y T2 son conjunciones, S es una disyunción, y g es un

generador, entonces la fórmula (61) define una conjunción T.

T(x, y) = min (T1(x, y), S(T2(x, y),g(y))) (61)

Page 52: Arquitectura de alto rendimiento para procesadores difusos

41

Prueba. La monotonía de T se obtiene de la propiedad de monotonía de las funciones en el lado derecho de (61). Se mostrará que T satisface la condición de límite (15). De (59) se tiene que:

T(1,y)= min(T1(1, y), S(T2(1, y), g(y))) = min(y, S(y, g(y)))

De (22) y (23) se tiene:

S(x,y) ≥ S(x,0) = x, S(x,y) ≥ S(0,y) = y (62)

Entonces

S(y, g(y)) ≥ y, min(y, S(y, g(y))) = y

y

T(1,y)= y. T(x,1)= min(T1(x,1),S(T2(x,1),g(1))) = min(x, S(x, g(1))) De (60) se tiene S(x, g(1)) ≥ x y T(x,1)= min(x, S(x, g(1))) = x.

El método (61) generaliza el método propuesto en [36] donde en lugar de g(y) se utiliza una constante s.

Denotaremos T1 ≤ T2 si T1(x,y) ≤ T2(x,y) para todo x,y∈ [0,1]. Proposición. Para conjunciones especificas T1 y T2 una conjunción T en (61) se reduce

de la manera siguiente:

si T1 ≤ T2 entonces T = T1 (63)

Prueba. De (60) se tiene que S(T2(x,y),g(y)) ≥ T2(x,y) y si T2 ≥ T1 entonces (61) entrega T(x,y) = T1(x,y).

Entonces, si se desea utilizar (61) para la generación de nuevas conjunciones difusas se requiere evitar el uso de conjunciones T1 y T2 tales que T1 ≤ T2. Por ejemplo, de la proposición anterior y de (64) se tiene que para T1 = TD y T2 = TM una conjunción T en (61) se reduce como en (64)-(66):

TD(x,y) ≤ T(x,y) ≤ TM(x,y) ≤ SM(x,y) ≤ S(x,y) ≤ SD(x,y) (64)

si T1 = TD entonces T = TD (65)

si T2 = TM Entonces T = T1 (66) Si se desea utilizar en (61) t-normas básicas como (18),(20) y (21) entonces de

(62),(65) y (66) se tiene que para obtener nuevas conjunciones en (61) se pueden utilizar los siguientes pares de conjunciones: (T1 = TM , T2 = TL ), (T1 = TM , T2 = TD), (T1 = TL , T2= TD).

Page 53: Arquitectura de alto rendimiento para procesadores difusos

42

A continuación se presentan ejemplos de conjunciones paramétricas obtenidas de (61):

T(x, y) = min(TM(x, y), SL(TL(x, y),g(x))) (67)

T(x, y) = min(TM(x, y), SL(TMB(x, y),g(x))) (68) Donde TMB denota una conjunción como en (60). Ejemplos de generadores g(x) son considerados en la siguiente sección. 4.3 Generadores Difusos

Supongamos que se utilizan m bits para representar en forma digital los valores de membresía. Los diferentes valores de membresía se pueden representar por 2m números en el conjunto LD= {0,1,2,…, 2m-1}. Sea el valor máximo de membresía igual a I = 2m-1, éste valor representa total membresía, equivalente a 1 en el conjunto tradicional de valores de membresía dado por L= [0,1]. Todas las definiciones y propiedades de operaciones difusas presentadas en las secciones anteriores, pueden transformarse al universo digital reemplazando el conjunto de valores de membresía L= [0,1] por el conjunto LD= {0,1,2,…, 2m-1} y por lo tanto el valor máximo de membresía 1 se reemplaza con I. También en la definición de producto y suma drástico de (21) y (28), es necesario reemplazar los intervalos [0,1) y (0,1] por los conjuntos {0,1,2, … ,2m-2} y {1,2,…, 2m-1}, respectivamente. Por motivos de representación gráfica se utiliza en lo siguiente un valor de 4 bits para m, con el siguiente conjunto de valores de membresía digitales LD={0,1,2,…,14,15} donde el valor máximo de membresía I= 15. Se requiere utilizar generadores que puedan implementarse eficientemente en hardware. Por esta razón se proponen generadores simples que dependen de un parámetro p. Este parámetro puede cambiar desde 0 hasta I. Suponga que 0.5 (-) y 0.5(+) denotan representaciones digitales del valor de membresía 0.5, se definen como sigue:

12)(5.0 1 −=− −m , y 12)(5.0 −=+ m . Por ejemplo para m= 4 bits se tienen I = 2m-1= 15, 0.5(-) = 7 y 0.5(+) = 8. Se tienen los generadores simples (69)-(82) que pueden implementarse eficientemente en hardware:

xxg =)( (Diagonal) (69)

pxg =)( (Constante) (70)

<

=casootroI

pxsixg

,,0

)( (0I_step) (71)

<−−≤<

≤=

xpIsiIpIxpsiC

pxsixg

,,

,0)( (0CI_step) (72)

Page 54: Arquitectura de alto rendimiento para procesadores difusos

43

=casootrox

pxsixg

,,0

)( (0-diagonal) (73)

=casootroI

pxsixxg

,,

)( (I-diag) (74)

<−−≤<

≤=

xpIsixpIxpsiC

pxsixg

,,

,0)( (0C_diagonal) (75)

<−−≤<

≤=

xpIsiIpIxpsiC

pxsixxg

,,

,)( (1C_diagonal) (76)

<−−≤<

≤=

xpIsixpIxpsiC

pxsixxg

,,

,)( (C_diagonal) (77)

−<<

≤=

casootroenIpIxpsix

pxsixg

,,,0

)( (0I-diag) (78)

<−−≤<

≤<≤

=

xpsiIpIxIsiC

Ixpsippxsix

xg

1,,

,,

)( (P_diagonal) (79)

),min()( pxIxg += (Bounded Sum) (80)

),0max()( pxxg −= (Bounded difference) (81)

≤<+≤<−

=IxIsipx

Ixsipxxg

)2/(),,1min()2/(0),,0max(

)( (Bounded dif-sum)(82)

En la figura 19 se presentan éstos generadores en representación digital de 4 bits,

utilizando como parámetros I=15, p=3 correspondientes a los valores 0.2 y 1 en el intervalo [0,1] de valores de verdad.

Page 55: Arquitectura de alto rendimiento para procesadores difusos

44

Figura 19. Generadores con parámetro p= 3 en representación digital de 4 bits.

4.4 Ejemplos de Conjunciones Paramétricas

A continuación se presentaran ejemplos de superficies formadas utilizando conjunciones paramétricas de las ecuaciones (53)-(56) y (61), en cada figura se presenta la superficie continua de lado derecho y la superficie digital de 4 bits de lado izquierdo. En estas superficies se puede apreciar la forma de discriminar datos del conjunto de entrada haciendo uso del parámetro p en el generador indicado.

La figura 20 contiene un ejemplo de conjunción paramétrica obtenida mediante (53)

y (54) por medio de operaciones difusas básicas para conjunción y disyunción: T1= mínimo (18), T2= Conjunción de Lukasiewicz (20), S1= máximo (25), y con generadores: g1= p-diag (79), g2= 0I-step (71). El valor del parámetro p en el generador p-diag es igual a 0.2 en [0,1] la escala de valores de verdad. Para representación digital con 4 bits, e I=15, le corresponde el valor p=3. El parámetro p en el generador g2= 0I-step es igual a 0.7 en la escala [0,1] y 11 en representación de 4 bits.

Page 56: Arquitectura de alto rendimiento para procesadores difusos

45

Figura 20. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (54). A la

izquierda se muestra la forma de la conjunción con representación digital de 4 bits y a la derecha se presenta la misma forma como malla.

La figura 21 contiene un ejemplo de operación paramétrica obtenida mediante (53)

y (55) a través de las operaciones básicas: T1= Conjunción de Lukasiewicz (20), T2= Conjunción Drástica (21), S= máximo (25), g=0I-diagonal (78). El valor del parámetro p en el generador 0I-diag es igual a 0.2 en la escala [0,1] y 3 en representación de 4 bits.

Figura 21. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (55). La figura 22 contiene un ejemplo de operación paramétrica obtenida mediante (53)

y (56) a través de las operaciones básicas: T1= Mínimo (18), T2= Conjunción de Lukasiewicz (20), S1= máximo (25), S2= Disyunción Drástica (28), g=bound-dif-sum (82). El valor del parámetro p en el generador bound-dif-sum es igual a 0.4 en la escala [0,1] y 6 en representación de 4 bits.

Page 57: Arquitectura de alto rendimiento para procesadores difusos

46

Figura 22. Ejemplo de conjunción paramétrica difusa obtenida por (53) y (56).

La figura 23 contiene un ejemplo de operación paramétrica obtenida mediante (61)

a través de las operaciones básicas: T1= Mínimo (18), T2= Conjunción Drástica (21), S= máximo (25), g=p-diagonal (79). El valor del parámetro p en el generador p-diagonal es igual a 0.2 en la escala [0,1] y 3 en representación de 4 bits.

Figura 23. Ejemplo de conjunción paramétrica difusa obtenida por (61).

Page 58: Arquitectura de alto rendimiento para procesadores difusos

47

Capítulo 5 Implementaciones en Hardware y Software de

los Métodos Propuestos

Los resultados obtenidos durante el presente trabajo de investigación podemos dividirlos en dos partes, la primera parte se trata del desarrollo de una herramienta software de simulación para sistemas difusos que nos permite simular el comportamiento de algún modelo donde se puedan variar casi todos sus parámetros, la estructura del simulador se basa en lo presentado en la sección 4.1. La segunda parte es la implementación en hardware VLSI de conjunciones y disyunciones paramétricas presentadas en la sección 4.2, realizadas a partir de bloques básicos de t-normas, t-conormas de la sección 3.4 y los generadores difusos presentados en la sección 4.3. 5.2 Simulador de Sistemas de Inferencia Difusa

La metodología presentada en la sección 4.1, se plasmó en un simulador desarrollado en lenguaje de programación C++ Builder 6, donde cada etapa se construyó de acuerdo a los algoritmos presentados en este trabajo. El programa se probó en una computadora con procesador Pentium-M a 2GHz, con bus de 798MHz, sobre Windows XP. La pantalla principal del simulador se presenta en la figura 24.

Figura 24. Simulador de sistemas de inferencia difusa.

El simulador, trabaja con un sistema difuso que consta de dos entradas con

funciones de membresía variables desde 2 hasta 7 para cada entrada, una salida con igual número de funciones de membresía, el número de reglas varía de acuerdo al número de

Page 59: Arquitectura de alto rendimiento para procesadores difusos

48

funciones de membresía en las entradas lo cual permite utilizar entre 4 y 49 reglas como máximo. El universo de entrada para ambas entradas depende del número de bits que se utilicen y puede ser desde 2 hasta 10 bits, al igual que el universo de membresía.

Como ejemplo y para poder visualizar fácilmente el universo de membresía, se discretiza a 32 levels−α , es decir 5 bits para el eje y, y 512 valores para el eje x, es decir, 9 bits. Se utiliza un sistema difuso que consta de dos entradas con cuatro funciones de membresía cada una (k_in1= k_in2= 4), una salida con cinco funciones de membresía (k_out=5) como se muestra en la figura 25.

Figura 25. Sistema difuso con dos entradas y una salida discretizado a 32 levels−α y 512

valores para el universo de entrada.

La base de reglas que se utiliza se compone de 16 reglas de acuerdo al número de funciones de membresía en las entradas, es decir, la dimensión de la matriz de reglas se expresa como k_in1×k_in2. El contenido de cada celda en la matriz, es el valor correspondiente al índice de la función de membresía en la variable de salida que será activada. Cada regla esta expresada como en (83) y la base de reglas es como en la figura 26 donde los renglones corresponden a la entrada in2 y las columnas a in1, cada celda define cual función de salida será evaluada contra un valor no nulo de la matriz de peso de reglas.

kjISoutTHENjISinANDkISinIF 21 (83)

3 2 3 4 4 2 1 2 3 4 1 0 1 2 3 0 0 0 1 2

in2/in1 0 1 2 3 Figura 26. Matriz de reglas para dos entradas con 4 funciones de membresía cada una y una

salida con 5 funciones de membresía.

Page 60: Arquitectura de alto rendimiento para procesadores difusos

49

5.1.1 Fuzzificación

El algoritmo para realizar la etapa de fuzzificación de acuerdo a las ecuaciones (37)-(40) se presenta en la figura 27, donde se aprecia un diagrama de flujo para resolver esta tarea. Los parámetros utilizados son los siguientes: x es la entrada real que será mapeada al universo difuso, k_in1 es el número de funciones de membresía contenidas en la variable lingüística, k es el contador de funciones de membresía, i es el contador de levels−α y w_in1k es el vector de pesos para la entrada x cuando es evaluada en k funciones de membresía de la variable in1. Éste mismo procedimiento es realizado para la entrada in2, obteniendo su vector de pesos w_in2k.

START

xk_in1

k=0

i=0

k < k_in1 if

i x αα ≤≤0

END

T

F

T

F

11_+=

=kk

iinw k

1+= ii

Figura 27. Diagrama de flujo para la evaluación de entrada o Fuzzificación

5.1.2 Inferencia

El algoritmo utilizado para la construcción de la matriz de peso de reglas de la ecuación (42) es realizado de acuerdo al diagrama de flujo de la figura 28, donde se utiliza mínimo como conjunción y es implementada a través de operaciones simples como saltos y comparaciones, el resultado se presenta en w_rulesi j.

El algoritmo para calcular el resultado de la agregación para los tres casos presentados en (43)-(45), se presenta en el diagrama de flujo de la figura 29 para el caso de (43). 5.1.3 Defuzzificación

En la figura 30 se presenta el algoritmo para la realización de la defuzzificación (48) COSAA, note que num es una variable auxiliar para acumular la sumatoria de niveles, una vez que todos los niveles son sumados, el resultado es el promedio de éstos calculado como COSAA.

Page 61: Arquitectura de alto rendimiento para procesadores difusos

50

1_ inki ≤

2_ inkj ≤ ji inwinw 2_1_ >

jji inwrulesw 2__ =

0=j

0=i

ji inwinwinkink

1_,1_2_,1_

iji inwrulesw 1__ =

1+← jj

1+← ii

Figura 28. Algoritmo para la realización de la etapa de inferencia utilizando min como

conjunción.

Begin

1_ inki <

2_ inkj < 0_ >ijrulesw

0=j

0=i

outaggruleswinkink

ij ,,_2_,1_

1+← jj1+← ii

end

T

F

F T

0=k

ijruleswk _< F

)()( 00kk xoutxagg ji

αα >

)()( 00kk xoutxagg ji

αα >)()( 00

kk xoutxagg jiαα =

)()( kkfjif xoutxagg αα =1+← kk

F

F

T

T

Figura 29. Algoritmo para la creación de la función agregada.

Page 62: Arquitectura de alto rendimiento para procesadores difusos

51

iaggw i ≥_ i

ii

xxx

numnum f ααα

00

2+

−+=

00max

==

outmi _≤

iaggw _max =α

max_ α≥iaggwmaxα

numCOSAA =

Figura 30. Algoritmo propuesto para la realización del defuzzificador COSAA.

5.1.4 Resultados de rendimiento

Los resultados correspondientes a los tres casos de agregación considerados en la sección 4.1.3 se presentan en las figuras 31-33 para los casos donde: x < y con x= 63 y y=327; donde x=y=248; finalmente cuando x>y con x= 496 y y=477, respectivamente. Ordenados por (a) Agregación simple, (b) Agregación con resta al final, (c) Agregación con resta al inicio.

Figura 31. Resultados de los tres tipos de agregación con (63, 327).

Figura 32. Resultados de los tres tipos de agregación con (248, 248).

Figura 33. Resultados de los tres tipos de agregación con (496, 477).

Page 63: Arquitectura de alto rendimiento para procesadores difusos

52

En las tablas siguientes se presentan los resultados de tiempo expresados en microsegundos con el objetivo de comparar entre los diferentes métodos, las conclusiones de éstos resultados se presentan en la sección 6.1. En la tabla 5 se presenta el tiempo transcurrido durante la fuzzificación de ambas entradas x y y, el tiempo consumido durante la evaluación de reglas para diferentes entradas. La tabla 6 muestra el tiempo transcurrido durante las formas de agregación presentadas como simple, con resta al final y resta al inicio.

En la tabla 7 se presentan los resultados de tiempo para la etapa de defuzzificación comparando el método propuesto en éste trabajo Center Of Slice Area Average COSAA (48), y los más utilizados Center Of Gravity COG (47) y Mean of Maxima MOM (46). Finalmente en la tabla 8, se presentan resultados para diferentes combinaciones de métodos de agregación y defuzzificación, así como diferentes combinaciones de valores de entrada, se muestra el resultado a la salida del defuzzificador y el tiempo que se lleva en todo el proceso de inferencia. Conclusiones acerca de estas tablas se presentan en la sección 6.1

Tabla 5. Tiempo consumido en la etapa de fuzzificación de las entradas x, y; y durante la evaluación de reglas.

x y Fuzz x Fuzz y Evalua reglas 63 327 18.16 17.32 3.07 248 248 22.91 23.75 2.51 409 23 25.14 17.04 2.79 496 477 17.88 17.32 2.23

Tabla 6. Tiempo consumido por los tres tipos de agregación.

x Y Simple Resta al final

Resta al inicio

63 327 6.42 7.26 4.19 248 248 4.19 4.75 5.03 409 23 3.91 4.19 4.19 496 477 3.63 6.98 4.19

Tabla 7. Tiempo consumido en diferentes defuzzificadores.

x y COSAA COG MOM 63 327 3.63 48.61 1.95

248 248 2.23 63.70 2.23 409 23 2.23 52.52 2.23 496 477 2.23 25.14 2.23

Tabla 8. Pruebas realizadas para el sistema.

x y Agregación Defuzzificación Resultado Tiempo us

63 327 Simple COSAA 164 48.61 63 327 Simple COG 172 99.45 63 327 Simple MOM 127 43.86 63 327 End Sub COSAA 156 50.84 63 327 End Sub COG 173 98.89 63 327 End Sub MOM 94 46.09 63 327 Init Sub COSAA 168 48.61

Page 64: Arquitectura de alto rendimiento para procesadores difusos

53

63 327 Init Sub COG 176 91.63 63 327 Init Sub MOM 161 48.05 248 248 Simple COSAA 248 55.59 248 248 Simple COG 249 116.21 248 248 Simple MOM 127 57.55 248 248 End Sub COSAA 247 49.16 248 248 End Sub COG 249 120.12 248 248 End Sub MOM 119 58.38 248 248 Init Sub COSAA 249 50.01 248 248 Init Sub COG 250 112.30 248 248 Init Sub MOM 135 53.64 409 23 Simple COSAA 207 53.08 409 23 Simple COG 207 102.25 409 23 Simple MOM 127 43.86 409 23 End Sub COSAA 206 53.64 409 23 End Sub COG 207 97.22 409 23 End Sub MOM 119 54.47 409 23 Init Sub COSAA 207 49.16 409 23 Init Sub COG 208 94.98 409 23 Init Sub MOM 135 48.33 496 477 Simple COSAA 483 43.58 496 477 Simple COG 454 67.60 496 477 Simple MOM 501 44.70 496 477 End Sub COSAA 474 46.09 496 477 End Sub COG 447 68.16 496 477 End Sub MOM 469 50.56 496 477 Init Sub COSAA 493 45.81 496 477 Init Sub COG 448 68.72 496 477 Init Sub MOM 546 47.21

Page 65: Arquitectura de alto rendimiento para procesadores difusos

54

5.2 Implementación en Hardware de Bloques Fundamentales Difusos

Para aplicar las ecuaciones (53)-(56) y (61) es necesario utilizar operaciones que puedan ser implementadas eficientemente en hardware, es decir, que consuman la menor cantidad de recursos tanto de dispositivos como de tiempo.

Estas ecuaciones pueden ser realizadas por una superposición de las siguientes funciones básicas que pueden implementarse en hardware eficientemente:

i. Comparación.

ii. t-normas: mínimo (18), Resta acotada o Lukasiewicz (20) y Producto Drástico (21).

iii. t-conormas: máximo (25), Suma acotada o Lukasiewicz (27) y Producto Drástico (28).

iv. Generadores: Todos los considerados anteriormente en (69)-(82). Los circuitos correspondientes a las funciones básicas mencionadas anteriormente

se realizaron utilizando herramientas de Xilinx para diseño con FPGA. Para la construcción de éstos circuitos se utilizan compuertas lógicas básicas, comparadores, sumadores, restadores y corrimientos [147]-[152]. A continuación se presentan los circuitos correspondientes a cada una de las funciones básicas mencionadas en i-iv. 5.2.1 Comparador

Primeramente, en la figura 34 se presenta el circuito utilizado para realizar las comparaciones entre las entradas correspondientes al dato de entrada X, el parámetro P, y el máximo valor de membresía 12 −= mN . COMPMC8, son bloques correspondientes a comparadores de magnitud, que reciben dos entradas A y B de 8 bits y producen como resultado dos salidas GT y LT que significan A>B y A<B, respectivamente. El arreglo de compuertas a la salida de cada comparador permite saber cuando A ≤ B, agregando así una salida más a cada comparador. El comparador de la parte superior, se encarga de comparar X con P, generando las respectivas salidas X>P (XGTP), X ≤ P (XLEQP) y X<P (XLTP). El comparador al centro se encarga de comparar X con N-P, generando las salidas correspondientes X>N-P (XGTNMP), X≤ N-P (XLEQNMP) y X<N-P (XLTNMP). Finalmente, en el comparador de la parte inferior, se compara X con N/2 ( 12 −m ), generando de igual manera las salidas correspondientes X>N/2 (XGTND2), X ≤ N/2 (XLEQND2) y X<N/2 (XLTND2). Note que en éste ultimo caso se requiere utilizar una división, misma que se implementa en el bloque DIV_2_8BITS, que en realidad no realiza una división ya que se consumirían demasiados recursos de cómputo, por ello ésta operación se realiza mediante un corrimiento lógico hacia la derecha.

Page 66: Arquitectura de alto rendimiento para procesadores difusos

55

Figura 34. Diagrama del circuito correspondiente al comparador con X, P y N como

entradas.

5.2.2 Bloque de t-normas El bloque encargado de realizar las operaciones de t-normas está constituido por tres partes, cada una de éstas realiza una operación de t-norma. Primeramente se presenta el circuito correspondiente a cada operación, figuras de la 35 hasta la 37, para finalmente integrarlos en un solo circuito que permita seleccionar la operación deseada en la figura 38.

Figura 35. Diagrama del circuito correspondiente a mínimo

Page 67: Arquitectura de alto rendimiento para procesadores difusos

56

Figura 36. Diagrama del circuito correspondiente a conjunción de Lukasiewicz

Figura 37. Diagrama del circuito correspondiente a producto drástico

El circuito que se presenta en la figura 38, corresponde al bloque encargado de realizar todas las operaciones de t-normas presentadas anteriormente, las entradas a éste circuito, corresponden a los datos de entrada X, Y y al parámetro 12 −= mD . Las diferentes operaciones que puede realizar son seleccionadas a través de los dos bits de selección en el multiplexor de 4 canales de 8 bits (MUX4_8BITS) de la derecha al centro, correspondientes a T_SEL1 y T_SEL0, según la tabla 9:

Tabla 9. Bits de selección para el circuito de t-normas. T_SEL1 T_SEL0 Operación

0 0 Mínimo 0 1 Producto Acotado 1 0 Producto drástico 1 1 No utilizado

Los primeros comparadores de la parte superior izquierda, en conjunto con el

multiplexor de la parte superior derecha, se encargan de realizar la operación de producto drástico (21), en cada comparador se evalúa una entrada contra D, Cuando alguno de los valores de entrada X o Y sean igual que D, entonces se genera un UNO a la salida de la

Page 68: Arquitectura de alto rendimiento para procesadores difusos

57

compuerta NOR, lo cual indica al multiplexor que salida debe elegir, si X=D, selecciona Y como salida; si Y=D, selecciona X como salida; en cualquier otro caso, se selecciona CERO como salida. El comparador de la parte inferior, en conjunto con el multiplexor de dos canales de 8 bits (MUX2_8BITS), realizan la operación de mínimo entre X y Y como en (18), su funcionamiento es simple, si X>Y, la salida GT del comparador toma el valor de UNO, entonces selecciona Y como salida, en caso contrario, selecciona X como salida. Finalmente en la parte inferior, se presenta el circuito correspondiente a la operación de producto acotado, entre el sumador (ADD8) y el restador (ADSU8) realizan la parte X+Y-D de la operación en (20), finalmente la salida es seleccionada a través del multiplexor MUX2_8BITS utilizando el acarreo de salida del sumador, que si toma valor 1, significa que el número es muy grande y se le puede restar D obteniendo como resultado un número mayor que cero.

Figura 38. Implementación en hardware del bloque para t-normas.

Figura 39. Simulación de circuito para t-normas.

Page 69: Arquitectura de alto rendimiento para procesadores difusos

58

En la figura 39 se presenta la simulación para el circuito de t-normas, T_SEL1 y T_SEL0 son los bits utilizados para seleccionar que operación se aplicara a las entradas IN_X e IN_Y según la tabla 9, para entregar un resultado en T_NORM. D es el valor máximo en el universo utilizado. 5.2.3 Bloque de t-conormas

El bloque encargado de realizar las operaciones de t-conormas está constituido por tres partes, similar al circuito anterior, cada una de éstas realiza una operación de t-conorma. Primeramente se presenta el circuito correspondiente a cada operación, figuras de la 40 hasta la 42, para finalmente integrarlos en un solo circuito que permita seleccionar la operación deseada en la figura 43.

Figura 40. Diagrama del circuito correspondiente a máximo

Figura 41. Diagrama del circuito correspondiente a disyunción de Lukasiewicz

Page 70: Arquitectura de alto rendimiento para procesadores difusos

59

Figura 42. Diagrama del circuito correspondiente a suma drástica

El circuito que se presenta en la figura 44, corresponde al bloque encargado de realizar las operaciones de t-conormas presentadas anteriormente, las entradas a éste circuito, corresponden a los datos de entrada X, Y y al parámetro 12 −= mD . Las diferentes operaciones que puede realizar son seleccionadas a través de los dos bits de selección en el multiplexor de 4 canales de 8 bits (MUX4_8BITS) de la derecha al centro, correspondientes a S_SEL1 y S_SEL0, según la tabla 10:

Tabla 10. Bits de selección para el circuito de t-normas. S_SEL1 S_SEL0 Operación

0 0 Máximo 0 1 Suma Acotada 1 0 Suma drástica 1 1 No utilizado

Los primeros comparadores de la parte superior izquierda, en conjunto con el

multiplexor de la parte superior derecha, se encargan de realizar la operación de suma drástica (28), en cada comparador se evalúa una entrada contra D, Cuando alguno de los valores de entrada X o Y sean igual que D, entonces se genera un UNO a la salida de la compuerta NOR, lo cual indica al multiplexor que salida debe elegir, si X=D, selecciona Y como salida; si Y=D, selecciona X como salida, en cualquier otro caso, se selecciona UNO como salida. El comparador de la parte inferior, en conjunto con el multiplexor de dos canales de 8 bits (MUX2_8BITS), realizan la operación de máximo entre X y Y como en (25), su funcionamiento es simple, si X>Y, la salida LT del comparador toma el valor de UNO, con entonces selecciona Y como salida, en caso contrario, selecciona X como salida. Finalmente en la parte inferior, se presenta el circuito correspondiente a la operación de suma acotada, el sumador (ADD8) realiza X+Y de (27), finalmente la salida es seleccionada a través del multiplexor MUX2_8BITS utilizando el acarreo para acotar la salida a alto. En la figura 43 se presenta la simulación para el circuito de t-conormas, S_SEL1 y S_SEL0 son los bits utilizados para seleccionar que operación se aplicara a las entradas

Page 71: Arquitectura de alto rendimiento para procesadores difusos

60

IN_X e IN_Y según la tabla 10, para entregar un resultado en T_CONORM. D es el valor máximo en el universo utilizado.

Figura 43. Simulación de circuito para t-conormas.

Figura 44. Implementación en hardware del bloque para s-normas.

5.2.4 Bloque de Generadores Difusos Digital

Las implementaciones en hardware correspondientes a los generadores difusos digitales presentados en la sección 4.3 de las ecuaciones (69)-(82), se presentan en las

Page 72: Arquitectura de alto rendimiento para procesadores difusos

61

figuras de la 45 hasta la 56, donde se muestra la parte correspondiente a cada circuito de generador difuso digital. Note que los dos primeros generadores (69) y (70) no requieren más que un cableado directo de la entrada hacia la salida por ello no se presenta figura de éstos casos.

Figura 45. Circuito para el Generador Difuso Digital 0I-Step (71).

Figura 46. Circuito para el Generador Difuso Digital 0CI-Step (72).

Figura 47. Circuito para el Generador Difuso Digital 0-Diagonal (73).

Figura 48. Circuito para el Generador Difuso Digital 1-Diagonal (74).

Page 73: Arquitectura de alto rendimiento para procesadores difusos

62

Figura 49. Circuito para el Generador Difuso Digital 0C-Diagonal (75).

Figura 50. Circuito para el Generador Difuso Digital C1-Diagonal (76).

Figura 51. Circuito para el Generador Difuso Digital C-Diagonal (77).

Page 74: Arquitectura de alto rendimiento para procesadores difusos

63

Figura 52. Circuito para el Generador Difuso Digital 0I-Diagonal (78).

Figura 53. Circuito para el Generador Difuso Digital P-Diagonal (79).

Page 75: Arquitectura de alto rendimiento para procesadores difusos

64

Figura 54. Circuito para el Generador Difuso Digital Bounded-Sum(80).

Figura 55. Circuito para el Generador Difuso Digital Bounded-Difference (81).

Page 76: Arquitectura de alto rendimiento para procesadores difusos

65

Figura 56. Circuito para el Generador Difuso Digital Bounded-Diff-Sum (82). El circuito de la figura 57, presenta el bloque encargado de realizar la operación

correspondiente a cada generador de las ecuaciones (69)-(82). El circuito está dividido en tres partes: la primera parte corresponde a la entrada de datos hacia el comparador CMP_XNP, presentado en la figura 27, aquí se realizan las distintas comparaciones mencionadas útiles para realizar la operación deseada.

La segunda parte corresponde a la salida del dato, donde se tiene un multiplexor de 16 entradas de 8 bits (MUX16_8BITS), éste dispositivo se encarga de seleccionar cual operación proporciona un resultado a la salida final, se selecciona a través de las entradas SEL0, SEL1, SEL2 y SEL3, cuyo funcionamiento es de acuerdo a la tabla 4. El circuito correspondiente a cada generador se presenta en la figura indicada en la última columna de la tabla 4.

Tabla 11. Selección de Generador difuso. SEL3 SEL2 SEL1 SEL0 Generador Ecuación Figura

0 0 0 0 Diagonal 69 --- 0 0 0 1 Constante 70 --- 0 0 1 0 0I-Step 71 46 0 0 1 1 0CI-Step 72 47 0 1 0 0 0-Diagonal 73 48 0 1 0 1 1-Diagonal 74 49 0 1 1 0 0C-Diagonal 75 50 0 1 1 1 C1-Diagonal 76 51 1 0 0 0 C-Diagonal 77 52 1 0 0 1 0I-Diagonal 78 53 1 0 1 0 P-Diagonal 79 54 1 0 1 1 Bounded-Sum 80 55 1 1 0 0 Bounded-Difference 81 56 1 1 0 1 Bound-Diff-Sum 82 57 1 1 1 0 No utilizado --- --- 1 1 1 1 No utilizado --- ---

Page 77: Arquitectura de alto rendimiento para procesadores difusos

66

Figura 57. Circuito correspondiente a los generadores difusos.

En la figura 58 se muestra la simulación para los primeros 8 generadores,

ecuaciones (69)-(76). La selección del generador se realiza mediante los cuatro bits de selección SEL3-SEL0. Para diversas combinaciones en la entrada X, se obtiene un resultado en OUTPUT, utilizando el parámetro P en un espacio comprendido entre 0 y N (255); C, C1 y C2 son constantes para algunos generadores; IN_0 e IN_1 indican los límites de operación. En la figura 59 la simulación corresponde a los 6 generadores restantes (77)-(82).

Figura 58. Simulación de circuito para los generadores 0-7.

Page 78: Arquitectura de alto rendimiento para procesadores difusos

67

Figura 59. Simulación de circuito para los generadores 8-13.

5.3 Conjunciones Paramétricas en Hardware

Finalmente con los tres bloques obtenidos anteriormente se pueden construir operaciones de conjunción paramétrica útiles para sintonización en sistemas difusos con la posibilidad de no solamente variar el parámetro de optimización p, sino también la operación. Cada bloque permite seleccionar la operación a través de su puerto de selección, entonces, según el número de bloques que se utilicen es el número de bits utilizados y por ende el número de combinaciones posibles.

En las siguientes figuras se muestran los circuitos resultantes para las operaciones de la sección 4.4, los resultados de las tablas fueron sintetizados para un FPGA de xilinx modelo spartan-3 XC3S50PQ208-5.

El circuito de la figura 60 es un ejemplo de conjunción paramétrica difusa realizado para la operación obtenida por (53) y (54) como se muestra en (83).

( ) ( )( ))(2),(1,,12),( ygxgSyxTTyxT = (83)

donde T1y T2 son t-normas, S es una t-conorma, g1 y g2 son los generadores. En éste caso, para configurar el circuito se utilizan 14 bits, que indican cual operación es activada en cada bloque. En la tabla 12 se presentan los recursos consumidos por esta implementación.

Page 79: Arquitectura de alto rendimiento para procesadores difusos

68

Figura 60. Circuito de conjunción paramétrica de la ecuación (83).

Tabla 12. Recursos consumidos por la conjunción paramétrica de la ecuación (83).

Recurso Cantidad % Entradas/Salidas 96 36.6

Compuertas 2924 Slices 739 96

LUT 4 entradas 392 25 I/O Blocks 96 77

Niveles Lógicos 50 Retardo Máximo 44.13ns

Retardo en compuertas

26.70ns 60.5

Retardo en Ruta 17.42ns 39.5 donde T1y T2 son t-normas, S es una t-conorma y g es un generador. En éste caso, para configurar el circuito se utilizan 10 bits, que indican cual operación es activada en cada bloque. En la tabla 13 se presentan los recursos consumidos por esta implementación.

El circuito de la figura 61 es un ejemplo de conjunción paramétrica difusa realizado

para la operación obtenida por (53) y (55) como se muestra en (84).

( ) ( )( )),(,,12),( yxSgyxTTyxT = (84)

Page 80: Arquitectura de alto rendimiento para procesadores difusos

69

Figura 61. Circuito de Conjunción Paramétrica de la ecuación (84).

Tabla 13. Recursos consumidos por la conjunción paramétrica de la ecuación (84).

Recurso Cantidad % Entradas/Salidas 98 40

Compuertas 1943 Slices 410 53

LUT 4 entradas 256 16 I/O Blocks 98 79

Niveles Lógicos 47 Retardo Máximo 41.82ns

Retardo en compuertas

24.85ns 59.4

Retardo en Ruta 16.96ns 40.6

El circuito de la figura 62 es un ejemplo de conjunción paramétrica difusa realizado para la operación obtenida por (53) y (56) como se muestra en (85).

( ) ( )( ))(),,(12,,12),( yhyxSSyxTTyxT = (85)

donde T1y T2 son t-normas, S1 y S2 son t-conormas y h es un generador. En éste caso, para configurar el circuito se utilizan 12 bits, que indican cual operación es activada en cada bloque. En la tabla 14 se presentan los recursos consumidos por esta implementación.

Page 81: Arquitectura de alto rendimiento para procesadores difusos

70

Figura 62. Circuito de Conjunción Paramétrica de la ecuación (85).

Tabla 14. Recursos consumidos por la conjunción paramétrica de la ecuación (85).

Recurso Cantidad % Entradas/Salidas 92 38

Compuertas 1959 Slices 479 62

LUT 4 entradas 288 18 I/O Blocks 92 74

Niveles Lógicos 50 Retardo Máximo 43.88ns

Retardo en compuertas

26.71ns 60.9

Retardo en Ruta 17.17ns 39.1

El circuito de la figura 63 es un ejemplo de conjunción paramétrica difusa realizado para la operación obtenida en (61), con éste circuito se pueden realizar fácilmente operaciones como (67) y (68).

( ) ( )( ))(),,(2,,1min),( ygyxTSyxTyxT = (61)

donde T1y T2 son t-normas, S es una t-conorma, g es un generador. En este caso, para configurar el circuito se utilizan 10 bits, que indican cual operación es activada en ese bloque, note que min es fija en el bloque correspondiente. En la tabla 15 se presentan los recursos consumidos por esta implementación.

Page 82: Arquitectura de alto rendimiento para procesadores difusos

71

Figura 63. Circuito de conjunción paramétrica de la ecuación (61).

Tabla 15. Recursos consumidos por la conjunción paramétrica de la ecuación (61).

Recurso Cantidad % Entradas/Salidas 90 36

Compuertas 2215 Slices 484 63

LUT 4 entradas 264 17 I/O Blocks 90 72

Niveles Lógicos 50 Retardo Máximo 44.45ns

Retardo en compuertas

26.70ns 60.1

Retardo en Ruta 17.74ns 39.9

Page 83: Arquitectura de alto rendimiento para procesadores difusos

72

Capítulo 6. Conclusiones y Propuestas para Trabajo Futuro En éste capítulo, se presentarán las conclusiones derivadas de la presente tesis, también se presentan los productos de investigación resultantes y las direcciones de investigación futura. 6.1 Simulador de Inferencia Difuso Se logró describir un sistema difuso y las partes que lo componen en términos de números binarios en el universo de los enteros, evitando operaciones complejas como multiplicación y división, reduciendo el número de operaciones a ejecutar como se presentó en la sección 4.1. De las etapas involucradas en el sistema difuso propuesto, la que más tiempo consume es la fuzzificación debido al número de comparaciones realizadas, lo cual es descriptivo pero puede hacerse más eficiente aplicando otro método como LUT o utilizando paralelismo en la operación según lo presentado en 5.1.1. Se obtuvo una forma de realizar la agregación de los conjuntos resultantes utilizando intervalos, con las tres variantes mencionadas en la sección 4.1.3 obteniendo resultados interesantes presentados en 5.1.4.

El método de defuzzificación propuesto COSAA (48), reduce considerablemente el tiempo de cálculo consumido por el método COG (47), que utiliza al menos n-1 iteraciones, el número máximo de iteraciones en nuestra propuesta es igual al número m de levels−α , logrando así alcanzar la velocidad de operación de MOM (49), de acuerdo con la información presentada en la sección 5.1.4.

Con respecto a precisión, COSAA compite con COG y es considerablemente mejor que MOM, además de que se provee la versatilidad de utilizar diferentes formas de agregación para mejorar resultados.

El simulador para sistemas difusos resultante puede ser utilizado en cualquier sistema de cómputo permitiendo observar el comportamiento de sistemas difusos en el universo de los enteros, evitando operaciones que consuman mucho tiempo como lo es la multiplicación y división, reduciendo así el tiempo que se consume en los cálculos. Resultando una herramienta flexible y eficiente para la simulación de sistemas difusos. 6.2 Conjunciones y Disyunciones Paramétricas en Hardware

En la sección 4.2, se propuso una solución matemática al problema de implementar sistemas difusos que utilicen conjunciones paramétricas para sintonización, de manera eficiente en hardware digital. La mayoría de operaciones paramétricas difusas de conjunción y disyunción no se pueden implementar eficientemente en hardware dado que utilizan multiplicación, división, exponentes u otras operaciones complejas.

En la sección 4.3 se presentó un nuevo enfoque para la realización de operaciones paramétricas basado en el uso de generadores simples compuestos por operaciones de conjunción y disyunción también simples. Se propusieron varias clases de generadores paramétricos y ejemplos de conjunciones difusas paramétricas obtenidas mediante éstos generadores.

Page 84: Arquitectura de alto rendimiento para procesadores difusos

73

Dado esto, se obtienen los bloques de circuitos para t-normas, t-conormas y generadores de la sección 5.2 para construir algunos ejemplos como los presentados en 4.4 cuyos circuitos resultantes se presentaron en la sección 5.3. 6.3 Principal Aportación

Al considerar la cantidad innecesaria de recursos computacionales que se consumen utilizando operaciones como producto, división y potencia, dentro de las ecuaciones fundamentales para crear sistemas difusos, se logra el diseño de bloques de hardware para realizar operaciones básicas que permiten construir de forma modular sistemas difusos, en especial conjunciones paramétricas útiles para sintonización de sistemas difusos y que pueden ser utilizados como un bloque adicional a todas las arquitecturas presentadas en el capítulo 2. 6.4 Productos Obtenidos Derivado de la presente tesis, se tienen las siguientes publicaciones para el simulador, para la parte de operaciones paramétricas y otras publicaciones que fueron realizadas durante el programa de doctorado en ciencias de la computación. Revistas internacionales

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin, Osvaldo Espinosa Sosa. Digital Fuzzy Inference Engine Simulator. Research in Computing Science Vol. 30. Pp. 107-118. 2007.

Ildar Batyrshin, Antonio Hernández Zavala, Oscar Camacho Nieto, Luís Villa Vargas. Generalized Fuzzy Operations for Digital Hardware Implementation. Lecture Notes on Artificial Intelligence 4827, Springer-Verlag Berlin Heidelberg. Pp. 9–18. 2007. Imre J. Rudas, Ildar Batyrshin, Antonio Hernández Zavala, Oscar Camacho Nieto, Lazlo Horvath, Luis Villa Vargas. Generators of Fuzzy Operations for Hardware Implementations of Fuzzy Systems. Lecture Notes on Artificial Intelligence, Springer-Verlag Berlin Heidelberg. Pp. 2008.

Proceedings de Congresos Internacionales

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin. Digital Representation of Fuzzy Inference Engine. Conference on Robotics, Electronics and Automotive Mechanics CERMA. IEEE Computer Society Press. Pp. 423-427. 2007. Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin, Luis Villa Vargas, Discrete Fuzzy Inference Algorithm for Digital Implementation of Aproxímate Reasoning. International Conference on Convergence and Hybrid Information Technology ICCIT, Busan Korea Vol. 2, IEEE Computer Society Press. Pp. 696-703. 2008.

Page 85: Arquitectura de alto rendimiento para procesadores difusos

74

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin, Luís Villa Vargas, Osvaldo Espinosa Sosa. VLSI Implementation of Basic Fuzzy t-norms. Proceedings de IEEE del Congreso Internacional en Computación. Instituto Politécnico Nacional. Del 5 al 9 de Noviembre Ciudad de México. IEEE Computer Society Press. Paper 11. 2007.

Sometido a revista internacional indexada en ISI Journal List.

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin, Luís Villa Vargas, Sergio Suarez Guerra. Discrete Numbers on Fuzzy Systems for Digital Implementations. Revista Soft Computing, Springer Verlag.

En preparación para revista internacional indexada en ISI Journal List.

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin, Luís Villa Vargas, Oleksiy Pogrebniak. Hardware Implementation of Fuzzy t-norms and t-conorms.

Antonio Hernández Zavala, Oscar Camacho Nieto, Ildar Batyrshin. VLSI Design of Parametric Conjuncions Based on Fuzzy Generators.

Del curso de doctorado en ciencias de la computación:

Antonio Hernández Z., Oscar Camacho N., Cornelio Yáñez M., Juan L. Díaz de León S.; Modeling control processes using only positive values. SPIE Vol. 5916, Mathematical Methods in Pattern and Image Analysis. P.p. 59160O. 2005. Antonio Hernández Z., Oscar Camacho N., Cornelio Yáñez M. Osvaldo Espinosa S.; Low Cost Multi-Channel Data Acquisition System with Graphical HMI. Research in Computing Science IPN. Vol. 24. P.p. 85-93. Antonio Hernández Z., Oscar Camacho N., Cornelio Yáñez, Osvaldo Espinosa; Multipurpose Interface Card for Data Acquisition and Control with Low Technological Hardware Costs. Paper no. 44. IEEE ROC&C 2006. Antonio Hernández Zavala, Oscar Camacho Nieto, Osvaldo Espinosa Sosa, Leopoldo Galindo Soria, Alfonso Gutiérrez Aldana. Diseño y construcción de un Sistema Básico de Interacción y Acción con Procesos Reales Reconfigurable y de Bajo Costo. Informe Técnico serie Verde No. 118, Centro de Investigación en computación IPN, Abril 2007. Antonio Hernández Zavala, Cornelio Yáñez Márquez, Oscar Camacho Nieto, Octavio López Leyva. Implementación de Sistemas Digitales Básicos Mediante Neuronas de Tipo McCulough-Pitts. Informe Técnico serie Verde No. 119, Centro de Investigación en computación IPN, Mayo 2007.

Page 86: Arquitectura de alto rendimiento para procesadores difusos

75

6.5 Propuestas para Trabajo Futuro

Los resultados obtenidos pueden extenderse en diversas direcciones. Primero, el enfoque propuesto puede utilizarse en la creación de operaciones paramétricas para conjunción y disyunción con implementación en hardware eficiente, útiles en la realización de sistemas difusos que se puedan sintonizar mediante parámetros.

Segundo, los bloques obtenidos, se pueden utilizar para la implementación en hardware digital de operaciones de inferencia y agregación en sistemas difusos con conjunciones y disyunciones paramétricas.

Finalmente, la implementación en hardware de tales sistemas puede extender las posibilidades de diseñar sistemas difusos embebidos flexibles en tiempo real que pueden ser utilizados como componentes de sistemas inteligentes aplicados a control, reconocimiento de patrones y toma de decisiones.

Page 87: Arquitectura de alto rendimiento para procesadores difusos

76

Referencias [1] M. Black, Vagueness, Philosophy of Science No. 4, P.p. 427-455, 1937. [2] E. H. Mamdani, Application of fuzzy logic to approximate reasoning using linguistic

synthesis. Proceedings of the sixth international symposium on Multiple-valued logic. P.p. 196 – 202. 1976.

[3] L. A. Zadeh, From Circuit Theory to System Theory. IRE Proceedings, No 50. P.p. 856-

865. 1962. [4] G. J. Klir y Bo Yuan (eds.), Fuzzy Sets, Fuzzy Logic, and Fuzzy Systems: Selected Papers

by Lotfi A. Zadeh. Advances in Fuzzy Systems, Vol. 6, World Scientific Publishers. P.p. 2. 1996.

[5] L. A. Zadeh. Fuzzy Sets. Information and Control, 8(3), P.p. 338-353, 1965. [6] L. A. Zadeh. Coping with the imprecision of the real world. Communications of the ACM

Volume 27, Issue 4, P.p. 304 – 311, April 1984. [7] L. A. Zadeh. Fuzzy logic, Neural Networks, and Soft Computing. Communications of the

ACM, Vol. 37 Issue 3, P.p. 77-84, March 1994. [8] A. Roy, R. Miranda. Fuzzy Logic, Neural Networks, and Brain-Like Learning. International

Conference on Neural Networks. Volume 1. P.p. 522-527. Jun 1997. [9] I. G. Damousis, K. J. Satsios, D. P. Labridis, P. S. Dokopoulos, Combined fuzzy logic and

genetic algorithm techniques-application to an electromagnetic field problem. Fuzzy Sets and Systems, Volume 129, Issue 3 August 2002, Elsevier North-Holland, Inc. P.p. 371 – 386. 2002.

[10] Z. Li, Wolfgang A. Halang, G. Chen (Eds.). Integration of Fuzzy Logic and Chaos Theory.

Series: Studies in Fuzziness and Soft Computing, Springer Verlag Heidelberg, Vol. 187, 2006.

[11] O. Castillo, P. Melin. A hybrid fuzzy-fractal approach for time series analysis and plant

monitoring. International Journal of Intelligent Systems, Special Issue: Intelligent Systems for Process Monitoring and Diagnosis, Volume 17 Issue 8, Wiley Periodicals, Inc. P.p. 751 – 765, 2008.

[12] P. P. Bonisone, Soft Computing Applications: The Advent of Hibryd Systems. On fuzzy

logic control, advances in methodology. Bonivento, Fantuzzi, Rovatti (Eds.). World Scientific. P.p. 221-250. 1998.

[13] B. Kosko, S. Isaka. Fuzzy logic. Scientific American. Vol. 269, no. 1, P.p. 76-81. July

1993.

Page 88: Arquitectura de alto rendimiento para procesadores difusos

77

[14] D. Dubois, H. Prade. What does fuzzy logic bring to AI?. ACM Computing Surveys

(CSUR) Volume 27 , Issue 3, P.p. 328 - 330 September 1995. [15] L. A. Zadeh, A Rationale for Fuzzy Control. Journal of Dinamical Systems, Measurement,

and Control, (Trans. ASME. Ser. G), 94(1). P.p. 3-4, 1972. [16] E. H. Mamdani, Aplication of fuzzy Algorithms for the control of a dynamic plant, Poc.

IEEE 121 no. 12, P.p. 1585-1588. 1974. [17] M. Sugeno and K. Murakami, Fuzzy parking control of model car. In 23rd IEEE Conf. on

Decision and Control, Las Vegas, 1984. [18] 0. Yagishita, 0. Itoh, M. Sugeno, Application of fuzzy reasoning to the water purification

process, In industrial Applications of Fuzzy Control, M. Sugeno, Ed., Amsterdam, North Holland, P.p. 19-40. 1985.

[19] J. A. Bernard, Use of rule-based system for process control, IEEE Control Systems

Magazine, Vol. 8, No. 5, P.p. 3-13. 1988. [20] E. H. Ruspini, Reactive Fuzzy Control of Autonomous Robots, In Industrial Applications of

Fuzzy technollogy in the world, Hirota, Sugeno (Eds.), World Scientific, 1995. [21] D.J. Ostrowski, P.Y.K. Cheung, A Fuzzy Logic Approach to Handwriting Recognition, In

Fuzzy Logic, Implementation and applications, M.J. Patyra, D.M. Mlynek, (eds.), chapter 10. 1996.

[22] D.Falchieri, A.Gabrielli, E.Gandolfi, M.Masetti, Design of very high speed CMOS fuzzy

processors for applications in high energy physics experiments, Seventh International Conference on Microelectronics for Neural, Fuzzy, and Bio-Inspired Systems, Granada, Spain, P.p. 284-291. 1999.

[23] N. Govind, Fuzzy Logic Control with the Intel 8XC196 Embedded Microcontroller, Intel

Corporation, Chandler. [24] J. Schwarz, Motorola Microcontroller as the Platform for Fuzzy Aplications, Motorola

Corporation. [25] M. Togai, H. Watanabe, Expert system on a chip: an engine for real-time approximate

reasoning. IEEE Expert. P.p. 55-62. 1986. [26] T. Yamakawa, and T. Miki, The Current Mode Fuzzy Logic Integrated Circuits Fabricated

by the Standard CMOS Process. IEEE Transactions on Computers, Vol. C-35, No. 2 February, P.p. 161-167. 1986.

[27] H. Watanabe, RISC approach to design of fuzzy processor architecture, in Proc. 1st IEEE

Int. Conf. Fuzzy Systems, San Diego, CA, March. P.p. 431–441. 1992. [28] V. Salapura, A Fuzzy RISC Processor, IEEE Transactions on Fuzzy Systems Vol. 8 No. 6,

P.p. 781-790. 2000.

Page 89: Arquitectura de alto rendimiento para procesadores difusos

78

[29] N. Acosta, M. Tosini, Custom Architectures for Fuzzy and Neural Networks Controllers, Journal of Computer Science and Technology. Vol. 2, No. 7. Octubre 2002.

[30] M. H. Lim, Q. Cao, J.H. Li and W.L. Ng, Evolvable hardware using context switchable

fuzzy inference processor, IEE Proc.-Computers and Digital Technology, Vol. 151, No. 4, July. P.p. 301-311. 2004.

[31] I. Batyrshin, O. Kaynak, I. Rudas, Generalized Conjunction and Disjunction Operations for

Fuzzy Control, In: EUFIT'98, 6th European Congress on Intelligent Techniques & Soft Computing, vol. 1, Verlag Mainz, Aachen, P.p. 52-57. 1998.

[32] I. Batyrshin, O. Kaynak, Parametric Classes of Generalized Conjunction and Disjunction

Operations for Fuzzy Modeling. IEEE Transactions on Fuzzy Systems 7, P.p. 586-596. 1999.

[33] I. Batyrshin, O. Kaynak, I. Rudas, Fuzzy Modeling Based on Generalized Conjunction

Operations. IEEE Transactions on Fuzzy Systems 10, P.p. 678-683. 2002. [34] E.P. Klement, R. Mesiar, E. Pap, Triangular Norms. Kluwer, Dordrecht. 2000. [35] J.-S.R. Jang, C.T. Sun, E. Mizutani, Neuro-Fuzzy and Soft Computing. A Computational

Approach to Learning and Machine Intelligence. Prentice-Hall International. 1997. [36] I. Batyrshin, A. Hernández Zavala, O. Camacho Nieto, L. Villa Vargas, Generalized Fuzzy

Operations for Digital Hardware Implementation. In: Gelbukh, A., Kuri Morales, A.F. (eds.) MICAI 2007. LNAI, vol. 4827, Springer, Heidelberg. P.p. 9-18. 2007.

[37] I. Baturone, S. Sánchez-Solano, A. Barriga, J. L. Huertas, Implementation of

Inference/Defuzzification Methods via Continuous-Time Analog Circuits, Proc. 6th International Fuzzy Systems Association World Congress, vol. 2, Sao Paulo, July. P.p. 623-626. 1995.

[38] S. Guo, L. Peters and H. Surmann, Design and Application of an Analog Fuzzy Logic

Controller, IEEE Transactions on Fuzzy Systems, Vol. 4, No. 4 November, P.p. 429-438. 1996.

[39] J. Ramirez-Angulo, K. Treece, P. Andrews and T. Choi, Current-Mode and Voltage-Mode

VLSI Fuzzy Processor Architecture, IEEE International Symposium on Circuits and Systems, Vol. 2 May, P.p. 1156-1159. 1995.

[40] I. Baturone, S. Sánchez-Solano, J. L. Huertas, Towards the IC Implementation of Adaptive

Fuzzy Systems, IEICE Transactions on Fundamentals of Electronics. Communications and Computer Sciences, Vol. E81-A, No. 9, P.p. 1877-1885. 1998.

[41] I. Baturone, A. Barriga, S. Sánchez-Solano, J. L. Huertas. Mixed-Signal Design of a Fully

Parallel Fuzzy Processor. Electronics Letters, Vol. 34, N. 5, March. P.p. 437-438. 1998. [42] M. A. Manzoul and H. A. Serrate, Systolic VLSI array for Fuzzy Logic in Expert Systems,

Proc. of the 16th annual conference on Computer Science ACM. P.p. 380-383. 1988.

Page 90: Arquitectura de alto rendimiento para procesadores difusos

79

[43] L. de Salvador, M. Garcia, J. Gutierrez, A Multilevel Systolic Approach for Fuzzy Inference Hardware, IEEE Micro Magazine, October. P.p. 61-71. 1995.

[44] M. Morisue, Y. Kogure, A Superconducting fuzzy processor, IEEE International conference

on Fuzzy systems March. P.p. 443-450. 1992. [45] M. Sakamoto, M. Morisue, A Study of Ternary Fuzzy Processor Using Neural Networks,

IEEE international Symposium on Circuits and Systems, No. 1. P.p. 613-616. 1997. [46] M. Sakamoto, D. Hamano and M. Morisue, A Study of a Radix-2 Signed-Digital Fuzzy

Processor Using the Logic Oriented Neural Networks, Fuzzy Systems Conference Proceedings FUZZ-IEEE, Vol. 1, P.p. 30-308. 1999.

[47] G. Ascia, V. Catania, A framework for a parallel architecture dedicated to soft computing,

Proceedings Eleventh International Conference on VLSI Design, P.p. 318 – 321. 1998. [48] A. Gabrielli, E. Gandolfi,; A Fast Digital Fuzzy Processor, IEEE Micro, Volume 19, Issue

1, Jan.-Feb. P.p. 68-79. 1999. [49] G.C. Cardarilli, M. Re, R. Lojacono, VLSI Implementation of a Real Time Fuzzy Processor,

Journal of Intelligent & Fuzzy Systems, N.3, Vol. 6, Wiley, P.p.389-401. 1998. [50] E. Avogadro, S. Comodaro, A. Costa, A. De Gloria, P. Faraboschi, F. Giudici, A. Pagni,

“An Optimized RISC Instruction Set for Fuzzy Applications”. Proc. IEEE Conference on Fuzzy Systems, P.p. 133-137. 1994.

[51] A. Cabrera, S. Sánchez-Solano, R. Senhadji, A. Barriga, C. J. Jiménez. Hardware/Software

Codesign Methodology for Fuzzy Controllers Implementation. Proc. IEEE International Conference on Fuzzy Systems, Honolulu, May P.p. 464-469. 2002.

[52] V. Salapura, M. Gschwind, Hardware/software co-design of a fuzzy RISC processor, In

Proc. of the Design, Automation and Test in Europe Conference. Paris, France, February. IEEE Computer Society Press, P.p. 875-882. 1998.

[53] R. Raychev, A. Mtibaa, M. Abid, VHDL Modelling of a Fuzzy Co-processor Architecture,

International Conference on Computer Systems and Technologies - CompSysTech’2005. [54] A. Zamfirescu and C. Ussery. VHDL and fuzzy logic if-then rules. Proceedings of the

conference on European design automation EURO-DAC. P.p. 636-641. 1992. [55] H. Surmann, T. Tauber, A. Ungering, K. Goser, Architecture of a fuzzy controller based on

field programmable Gate Array, 2nd international workshop on Field Programmable Logic and Applications, Wien. 1992.

[55] D. Basch, M. Zagar, Processor Architecture model for fuzzy control, IEEE, 1995. [56] P. L. Civera, D. Demarchi and G. Masera, All-Digital VLSI Fuzzy Inference Engine: A case

Study, International Journal of Electronics, Vol. 79, No. 2, P.p. 193-203. 1995.

Page 91: Arquitectura de alto rendimiento para procesadores difusos

80

[57] M. Jacomet and R. Walti. A VLSI Fuzzy Processor with Parallel Rule Execution, FUZZIEEE’96, Proceedings of IEEE International Conference on Fuzzy Systems, P.p. 554-558. 1996.

[58] F.J. Garrigos-Guerrero y R. Ruiz Merino, Implementacion de sistemas fuzzy complejos

sobre FPGAs, Computación reconfigurable y FPGAs. P.p. 351-358. 2003. [59] I. Kalaykov. From Numbers to Fuzzy Values, the Direct Jump. ESIT 2000. [60] M. Togai, and H. Watanabe, A VLSI Implementation of Fuzzy Inference Engine: Toward an

Expert System on a Chip, Information Sciences, Vol. 38, P.p. 147-163, 1986. [61] M. Togai and H. Watanabe, An inference engine for real time approximate reasoning:

toward an expert on a chip, IEEE Expert, Vol. 1, No. 3, P.p. 55-62, Aug 1986 [62] T. Yamakawa, High Speed Fuzzy Controller Hardware System, in Proceedings of the 2nd

Fuzzy System Symposium, Japan, P.p. 122-130. 1986. [63] T. Yamakawa, High-speed Fuzzy Controller Hardware System: The Mega-FIPS Machine,

Information Sciences, Vol. 45, P.p. 113-128. 1988. [64] T. Yamakawa, A fuzzy inference engine in nonlinear analog mode and its application to a

fuzzy logic control Neural Networks, IEEE Transactions on Volume 4, Issue 3, May 1993 Page(s):496 – 522

[65] T. Miki, T. Yamakawa, Fuzzy inference on an analog fuzzy chip. IEEE Micro, Volume 15,

Issue 4, August. P.p. 8 – 18. 1995. [66] H. Watanabe, W. D. Dettloff, K. E. Yount, A VLSI Fuzzy Logic controller with

reconfigurable, Cascadable architecture, IEEE journal of solid state circuits, vol. 25, No. 2 August, P.p. 376-382. 1986.

[67] H. Watanabe, W. Dettloff and E. Yount A VLSI Fuzzy Logic Inference Engine for Real-

Time Process Control, IEEE Journal of Solid-state Circuits, Vo1.25, No.2 April, P.p.376-382. 1990.

[68] H. Watanabe, J.R. Symon, W.Dettloff, E. Yount, VLSI Fuzzy chip and inference

accelerator board systems, Proc. of IEEE Int. Symp. on Multi-Valued Logic, P.p. 120-127. May 1991.

[69] H. Ikeda, Y. Hiramoto, N. Kisu, A Fuzzy inference processor with an "Active-Rule-Driven"

architecture. Symposium on VLSI Circuits, Digest of Technical Papers. May 30-June 1, P.p. 25-26. 1991.

[70] H. Surmann, A. Ungering and K. Goser, Optimized Fuzzy Controller Architecture for Field

Programmable Gate Arrays. Springer-Verlag, Berlin, Heidelberg, New York, Tokyo. P.p. 124-133. 1993.

[71] H. Surmann, A.P. Ungering, T. Kettner, K. Goser, What kind of hardware is necessary for a

fuzzy rule based system?, 1994. IEEE World Congress on Computational Intelligence.

Page 92: Arquitectura de alto rendimiento para procesadores difusos

81

Proceedings of the Third IEEE Conference on Fuzzy Systems 26-29 vol.1, June. P.p. 274 - 278.1994.

[72] H. Surmann, A.P. Ungering, Fuzzy rule-based systems on general-purpose processors.

IEEE Micro Volume 15, Issue 4, August. P.p. 40 – 48. 1995. [73] K. Nakamura, N. Sakashita, Y. Nitta, K. Shimomura, T. Ohno, K. Eguchi, T. Tokuda, A 12

b resolution 200 kFLIPS fuzzy inference processor, Solid-State Circuits Conference, 1993. Digest of Technical Papers. 40th ISSCC. P.p.182 - 183, 287. 1993,

[74] K. Nakamura, N. Sakashita, Y. Nitta, K. Shimomura, T. Tokuda, Fuzzy inference and fuzzy

inference processor. IEEE Micro,Volume 13, Issue 5, October. P.p. 37 – 48. 1993. [75] J. Fattaruso, S.S. Mahant-Shetti, J.B. Barton, A fuzzy logic inference processor. Digest of

Technical Papers. Symposium on VLSI Circuits 19-21 May. P.p. 33 – 34. 1993. [76] J.W. Fattaruso, S.S. Mahant-Shetti, J.B. Barton, A fuzzy logic inference processor. IEEE

Journal of Solid-State Circuits, Volume 29, Issue 4, April. P.p. 397 – 402. 1994. [77] J.S. Ho, M.H. Lim, K.T. Lau, Simplified architecture of a fuzzy inference processor.

Proceedings of First New Zealand International Two-Stream Conference on Artificial Neural Networks and Expert Systems, 24-26 November. P.p. 140 – 141. 1993.

[78] E. Gandolfi, M. Masetti, I. D’Antone, A. Gabrielli, M. Spotti, Architecture of a 50 MFIPS

Fuzzy Processor and the Related 1um VLSI CMOS Digital Circuits, Fourth International Conference on Microelectronics for Neural Networks and Fuzzy Systems, Turin Italy, September 26-28, P.p. 125-133. 1994.

[79] M. Masseti, E. Gandolfi, F. Boschetti, A. Gabrieli, Design of a 1.0 um Reconfigurable VLSI

CMOS Fuzzy Processor Which Runs at 100-50 MFIPS with an Active Rule Selector, Proc. of IEEE International Conference on Systems, Man and Cybernetics, 1995.

[80] A. Gabrielli, E. Gandolfi, M. Massetti, The VLSI Design of a Digital Fuzzification Circuit

for a 4 Input CMOS Fuzzy Processor Running at a Rate of 320 ns. International Symposium on Neuro-Fuzzy Systems – EPFL Lausanne, Switzerland August 29-31, 1996.

[81] A. Gabrielli E. Gandolfi M. Masetti, Design of a Family of VLSI High Speed Fuzzy

Processors. Fifth IEEE International Conference on Fuzzy Systems, September 8-11 Louisiana - Volume 2, P.p. 1099-1105. 1996.

[82] D.Falchieri, A.Gabrielli, E.Gandolfi, M.Masetti, Design of Very High Speed CMOS Fuzzy

Processors for Applications in High Energy Physics Experiments. Seventh International Conference on Microelectronics for Neural, Fuzzy, and Bio-Inspired Systems, April 7-9, P.p. 284-291. 1999.

[83] H. Eichfeld, M. Klimke, M. Menke, J. Nolles, T. Kunemund, A general-purpose fuzzy

inference processor. Proceedings of the Fourth International Conference on Microelectronics for Neural Networks and Fuzzy Systems, 26-28 September, P.p. 310-317. 1994.

Page 93: Arquitectura de alto rendimiento para procesadores difusos

82

[84] V. Catania, M. Russo, Analog gates for a VLSI fuzzy processor. Proceedings of the 8th International Conference on VLSI Design, 4-7 January. P.p. 299-304. 1995.

[85] G. Ascia, V. Catania, B. Giacalone, M. Russo and L. Vita, Designing for parallel fuzzy

computing. IEEE Micro, vol. 15, December. P.p. 62. 1995. [86] G. Ascia, V. Catania, Design of a VLSI Parallel Processor for Fuzzy Computing, Eigth

International Conference on VLSI Design. P.p. 315-320. 1995. [87] V. Catania, G. Ascia and L. Vita. Design issues of an asynchronous parallel fuzzy

processor. In Fourth IEEE International Conference on Fuzzy Systems. P.p. 1205-1212. 1995.

[88] G. Ascia and V. Catania, A Dedicated Parallel Processor for Fuzzy Computation. Proc.

Sixth IEEE International Conference on Fuzzy Systems, IEEE Press, Piscataway, N.J., P.p. 787-792. 1997.

[89] G. Ascia, V. Catania, and M. Russo, VLSI Hardware Architecture for Complex Fuzzy

Systems. IEEE Transactions on Fuzzy Systems vol.7, n.5. P.p. 553-570. 1999. [90] G. Ascia, V. Catania, A pipeline parallel architecture for a fuzzy inference processor.,

FUZZ IEEE 2000. The Ninth IEEE International Conference on Fuzzy Systems, 7-10 May, vol.1. P.p. 257-262. 2000.

[91] J. Ramirez-Angulo, K. Treece, P. Andrews and T. Choi, Current-Mode and Voltage-Mode

VLSI Fuzzy Processor Architecture. IEEE International Symposium on Circuits and Systems, May, Vol. 2. P.p. 1156-1159. 1995.

[92] V. Salapura and V. Hamann. Implementing fuzzy control systems using VHDL and

Statecharts. Proc. of the European Design Automation Conference EURO-DAC '96 with EURO-VHDL '96, Geneva, Switzerland, September, IEEE Computer Society Press. P.p. 53-58. 1996.

[93] M. Gschwind, V. Salapura and D. Maurer, FPGA Rapid Prototyping of Application-

Specific Processors. October 22-25, 1997. [94] V. Salapura, M. Gschwind. Hardware/software co-design of a fuzzy RISC processor. In

Proc. of the Design, Automation and Test in Europe Conference, February. IEEE Computer Society Press. P.p. 875-882. 1998

[95] M. Sakamoto, M. Morisue, A Study of Ternary Fuzzy Processor Using Neural Networks.

IEEE international Symposium on Circuits and Systems, No. 1. P.p. 613-616. 1997. [96] M. Sakamoto, D. Hamano, and M. Morisue, A Study of a Radix-2 Signed-Digital Fuzzy

Processor Using the Logic Oriented Neural Networks. Fuzzy Systems Conference Proceedings FUZZ-IEEE, Vol. 1. P.p. 303-308. 1999.

[97] S. Sánchez-Solano, A. Barriga, C. J. Jiménez, J. L. Huertas, Design and Application of

Digital Fuzzy Controllers. Proc. sixth IEEE International Conference on Fuzzy Systems, vol. 2. P.p. 869-874. 1997.

Page 94: Arquitectura de alto rendimiento para procesadores difusos

83

[98] C.J. Jiménez, S. Sánchez-Solano y A. Barriga, Hardware Implementation of a General Purpose Fuzzy Controller. Proc. sixth International Fuzzy Systems Association World Congress,Vol. 2, july. P.p. 185-188. 1995.

[99] E. Lago, M. A. Hinojosa, C. J. Jiménez, A. Barriga, S. Sánchez-Solano, FPGA

Implementation of Fuzzy Controllers. Proc. twelfth Conference on Design of Circuits and Integrated Systems, November. P.p. 715-720. 1997.

[100] S. Sánchez-Solano, R. Senhadji, A. Cabrera, I. Baturone, C. J. Jiménez, A. Barriga,

Prototyping of Fuzzy Logic–Based Controllers Using Standard FPGA Development Boards. Proc. 13th IEEE International Workshop on Rapid System Prototyping, Darmstadt. P.p. 25-32. 2002.

[101] R. Senhadji, S. Sánchez-Solano, A. Barriga, I. Baturone, F. J. Moreno-Velo. NORFREA:

An Algorithm for non redundant fuzzy rule extraction. Proc. IEEE International Conference on System, Man and Cybernetics, Hammemet-Tunisia, October. P.p. 19. 2002.

[102] I. Baturone, S. Sánchez-Solano, A. Barriga, J. L. Huertas. Implementation of

Inference/Defuzzification Methods via Continuous-Time Analog Circuits. Proc. 6th International Fuzzy Systems Association World Congress, vol. 2, Sao Paulo, July. P.p. 623-626. 1995.

[103] I. Baturone, S. Sánchez-Solano, A. Barriga, J. L. Huertas. Implementation of CMOS Fuzzy

Controllers as Mixed-Signal Integrated Circuits. Trans. Fuzzy Systems, Special Issue on Hardware Implementations. Vol. 5 no. 1. P.p. 1-19. 1997.

[104] I. Baturone, A. Barriga, S. Sánchez-Solano, J. L. Huertas. Mixed-Signal Design of a Fully

Parallel Fuzzy Processor. Electronics Letters, Vol. 34, N. 5 March. P.p. 437-438. 1998. [105] A. Barriga, R. Senhadji, C. J. Jiménez, I. Baturone y S. Sánchez-Solano, A Design

Methodology for Application Specific Fuzzy Integrated Circuits. Proc. IEEE International Conference on Electronics, Circuits and Systems, Vol. 1 September. P.p. 431-434. 1998.

[106] I. Baturone, S. Sánchez-Solano, J. L. Huertas. Towards the IC Implementation of Adaptive

Fuzzy Systems. IEICE Trans. on Fundamentals of Electronics, Communications and Computer Sciences, Vol. E81-A, No. 9. P.p. 1877-1885. 1998.

[107] M. J. Patyra, J. L. Granter, K. Koster, Digital Fuzzy Logic Controller: Design and

Implementation. IEEE Transactions on fuzzy systems Vol, 4 No. 4, 1996. [108] G.C. Cardarilli, M. Re, R. Lojacono, VLSI Implementation of a Real Time Fuzzy Processor.

Journal of Intelligent & Fuzzy Systems, N. 3 Vol. 6, Wiley. P.p. 389-401. 1998. [109] C.T.P. Song, S.F. Quigley, S. Pammu, A novel CMOS analogue fuzzy inference processor.

ISCAS '98. Proceedings of the 1998 IEEE International Symposium on Circuits and Systems, Volume 3, May-June. P.p. 247 - 250 1998.

[110] B. Qiu, P. L. Woon, The hardware implementation of a generic fuzzy rule processor.

Proceedings of Fourth International Conference on Signal Processing Volume 2, 12-16 October. P.p. 1343 - 1346. 1998.

Page 95: Arquitectura de alto rendimiento para procesadores difusos

84

[111] R. D'Amore, K. Heinz Kienitz, O. Saotome, A bit scalable architecture for fuzzy processors. Proc. of XII Symposium on Integrated Circuits and Systems Design. 1999.

[112] R. D'Amore, A bit scalable architecture for fuzzy processors with three inputs and a flexible

fuzzification unit. Proc. 13th Symposium on Integrated Circuits and Systems Design. P.p. 29 – 34. 2000.

[113] F.J. Garrigos-Guerrero y R. Ruiz Merino, Implementacion de sistemas fuzzy complejos

sobre FPGAs. Computación reconfigurable y FPGAs. P.p. 351-358. 2003. [114] A. Gaona, D. Olea, M. Melgarejo, Distributed arithmetic in the design of high speed

hardware fuzzy inference systems. Proc. 22nd International Conference of the North American Fuzzy Information Processing Society NAFIPS, July. P.p. 116-120. 2003.

[115] S. Huang, J. Lai, A high speed fuzzy inference processor with dynamic analysis and

scheduling capabilities. Proceedings of IEEE Asia-Pacific Conference on Circuits and Systems, Volume 2, 6-9 December. P.p. 961-964. 2004.

[116] M. A. Melgarejo, C. A. Peña-Reyes, Hardware Architecture and FPGA Implementation of

a Type-2 Fuzzy System. GLSVLSI, ACM. 2004. [117] S. Huang, J. Lai, A High-Speed VLSI Fuzzy Inference Processor for Trapezoid-Shaped

Membership Functions. Journal of Information Science and Engineering, No. 21. P.p. 607-626. 2005.

[118] K. M. Deliparaschos, F. I. Nenedakis and S. G. Tzafestas, Design and Implementation of a

Fast Digital Fuzzy Logic Controller Using FPGA Technology. Journal of Intelligent and Robotic Systems Vol. 45. P.p. 77-96. 2006.

[119] H. Tamukoh, K. Horio, T. Yamakawa, A bit-shifting-based fuzzy inference for self-

organizing relationship (SOR) network, IEICE Electronics Express, Vol. 4, No. 2. P.p. 60-65. 2007.

[120] L. A. Zadeh, Semantic inference from fuzzy premises. Proceedings of the sixth international

symposium on Multiple-valued logic, P.p. 217-218. 1976. [121] L. A. Zadeh, Commonsense Reasoning Based on Fuzzy Logic, Proceedings of the 1986

Winter Simulation Conference. P.p. 445-447. 1986. [122] C. Meyer, A. Kandel, D. Rundus, The triad of fuzzy theory. ACM SIGAPP Applied

Computing Review, Volume 1 Issue 2. P.p. 12-15. 1993. [123] L. A. Zadeh. Fuzzy Sets and Systems. In: Fox, J., ed., System Theory. Politechnic Press,

New York. P.p. 29-39. 1965. [124] L. Wang, A Course in Fuzzy Systems and Control. Prentice Hall, 1997. [125] G. Bojadziev and M. Bojadziev, Fuzzy Sets, Fuzzy Logic, Applications. Advances in Fuzzy

Systems – Applications and Theory Vol. 5. World Scientific Publishers. 1995.

Page 96: Arquitectura de alto rendimiento para procesadores difusos

85

[126] L. A. Zadeh, A computational theory of dispositions. Proceedings of the 22nd annual meeting on Association for Computational Linguistics. P.p. 312-318. 1984.

[127] C.C. Lee, Fuzzy logic in control systems: fuzzy logic controller Part I. IEEE Transactions

on Systems, Man and Cybernetics Volume 20, Issue 2, March-April. P.p. 404-418. 1990. [128] C.C. Lee, Fuzzy logic in control systems: fuzzy logic controller Part II. IEEE Transactions

on Systems, Man and Cybernetics Volume 20, Issue 2, March-April. P.p. 419-435. 1990. [129] J.-S.R. Jang, C.T. Sun, E. Mizutani, Neuro-Fuzzy and Soft Computing. A Computational

Approach to Learning and Machine Intelligence. Prentice-Hall International. 1997. [130] E.P. Klement, R. Mesiar, E. Pap. Triangular Norms. Kluwer, Dordrecht. 2000. [131] B. Kosko, Fuzzy systems as universal approximators. IEEE international conference on

Fuzzy systems, Vol. 43 No. 11. P.p. 1329-1333. 1992. [132] L. X. Wang, Fuzzy systems are universal approximators. IEEE Transactions on Systems,

Man and Cybernetics, P.p. 1163-1170. 1992. [133] Buckley, Sugeno type controllers are universal controllers. Fuzzy sets and systems, Vol. 53

No. 3. P.p. 299-303. 1993. [134] J. L. Castro, Fuzzy logic controllers are universal aproximators. IEEE Transactions on

Systems, Man and Cybernetics. 1995. [135] J. L. Castro, M. Delgado. Fuzzy systems with defuzzification are universal approximators.

IEEE Transactions on Systems, Man and Cybernetics, Part B. Volume 26, Issue 1. P.p. 149-152. 1996.

[136] A. Hernández Zavala, O. Camacho Nieto, I. Batyrshin, L. Villa Vargas, Discrete Fuzzy

Inference Algorithm for Digital Implementation of Aproxímate Reasoning. En International Conference on Convergence and Hybrid Information Technology, Busan Korea Vol. 2, IEEE Computer Society Press. P.p. 696-703. 2008.

[137] A. Hernández Zavala, O. Camacho Nieto, I. Batyrshin. Digital Representation of Fuzzy

Inference Engine. Proceedings de Conference on Robotics, Electronics and Automotive Mechanics. IEEE Computer Society Press. P.p. 423-427. 2007.

[138] K. Uehara, M. Fujise, Fuzzy inference based on families of a-level Sets. IEEE Transactions

on Fuzzy Systems, Vol. 1, No. 2, May. P.p. 111-124. 1993. [139] G. Bojadziev, M. Bojadziev, Fuzzy Sets, Fuzzy Logic, Applications, Advances in Fuzzy

Systems – Applications and Theory Vol. 5, World Scientific Publishers, 1995. [140] M. Hanss, On the Implementation of Fuzzy Arithmetical Operations for Engineering

Problems, Proc. of the 18th International Conference of the North American Fuzzy Information Processing Society, NAFIPS. P.p. 462-466. 1999.

[141] I. Kalaykov, From Numbers to Fuzzy Values - the Direct Jump, Proceedings of ESIT. P.p.

201-206. 2000.

Page 97: Arquitectura de alto rendimiento para procesadores difusos

86

[142] G.C. Cardarilli, M. Re, R. Lojacono, M. Salmeri, A new architecture for high-speed COG based defuzzification, International Workshop on Tool Environments and Development Methods for Intelligent Systems, 0ulu, Finland, April 17-18. P.p. 165-172. 1997.

[143] A. Gaona, D. Olea, M. Melgarejo, Distributed arithmetic in the design of high speed

hardware fuzzy inference systems, 22nd International Conference of the North American Fuzzy Information Processing Society. P.p. 116-120. 2003.

[144] A. Banaiyan, S.M. Fakhraie, H.R. Mahdiani, Cost-performance co-analysis in VLSI

implementation of existing and new defuzzification methods. International Conference on Computational Intelligence for Modelling, Control and Automation, Vol. 1. P.p. 828-833. 2005.

[145] A. Banaiyan, S.M. Fakhraie, H.R. Mahdiani, Hardware Implementation and Comparison of

New Defuzzification Techniques in Fuzzy Processors. Proceedings IEEE International Symposium on Circuits and Systems. P.p. 4619-4622. 2006.

[146] H. Tamukoh, K. Horio, T. Yamakawa, A bit-shifting-based fuzzy inference for self-

organizing relationship (SOR) network, IEICE Electronics Express, Vol. 4, No. 2. P.p.60-65. 2007.

[147] R.J. Tocci, N.S. Widmer, G.L. Moss, Digital Systems: Principles and Applications. Decima

edicion. Pearson 2007. [148] T. L. Floyd, Fundamentos de Sistemas Digitales. Novena Edicion, Pearson 2006. [149] M. M. Mano, Diseño digital. Tercera Edicion, Pearson 2003. [150] D.A. Patterson, J.L. Hennessy, Computer Organization and Design: The Hardware /

Software Interface. Second Edition. Morgan Kaufmann 1998. [151] M.R. Zargham, Computer Architecture: Single and Parallel Systems. Prentice Hall 1995. [152] W. Stallings, Organizacion y Arquitectura de Computadoras. Septima Edicion, Pearson

2006. [153] I. J. Rudas, I. Batyrshin, A. Hernández Zavala, O. Camacho Nieto, L. Horvath, L.Villa

Vargas. Generators of Fuzzy Operations for Hardware Implementations of Fuzzy Systems. Lecture Notes on Artificial Intelligence, Springer-Verlag Berlin Heidelberg. P.p. 2008.

[154] I. Batyrshin, A. Hernández Zavala, O. Camacho Nieto, L. Villa Vargas. Generalized Fuzzy

Operations for Digital Hardware Implementation. Lecture Notes on Artificial Intelligence 4827, Springer-Verlag Berlin Heidelberg. P.p. 9–18. 2007.

[155] A. Hernández Zavala, O. Camacho Nieto, I. Batyrshin, L. Villa Vargas, O. Espinosa Sosa.

VLSI Implementation of Basic Fuzzy t-norms. Proceedings de IEEE del Congreso Internacional en Computación. Instituto Politécnico Nacional. Del 5 al 9 de Noviembre Ciudad de México. IEEE Computer Society Press. Paper 11. 2007.

Page 98: Arquitectura de alto rendimiento para procesadores difusos

87

[156] I. J. Rudas, I. Z. Batyrshin, A. Hernández Zavala, O. Camacho Nieto, L. Horváth, L. Villa Vargas. Fuzzy parametric conjunctions for digital hardware implementation of fuzzy systems. Sometido en la revista Computacion y Sistemas.

[157] A. Hernández Zavala, O. Camacho Nieto, I. Batyrshin, O. Espinosa Sosa. Digital Fuzzy

Inference Engine Simulator. Research in Computing Science Vol. 30. P.p. 107-118. 2007.