UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos...

152
1 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA MAGISTER EN AUTOMATIZACIÓN INDUSTRIAL UNFUZZY – SOFTWARE PARA EL ANÁLISIS, DISEÑO, SIMULACIÓN E IMPLEMENTACIÓN DE SISTEMAS DE LÓGICA DIFUSA Ing. Oscar G. Duarte V. Santafé de Bogotá, Agosto de 1997

Transcript of UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos...

Page 1: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

1

UNIVERSIDAD NACIONAL DE COLOMBIA

FACULTAD DE INGENIERÍA

MAGISTER EN AUTOMATIZACIÓN INDUSTRIAL

UNFUZZY – SOFTWARE PARA EL ANÁLISIS, DISEÑO, SIMULACIÓN E IMPLEMENTACIÓN DE

SISTEMAS DE LÓGICA DIFUSA

Ing. Oscar G. Duarte V.

Santafé de Bogotá, Agosto de 1997

Page 2: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

NADA ES MAYOR

Nada es mayor que tú : sólo la rosa tiene tu edad suspensa, ili mitada. Eres la primavera deseada sin ser la primavera ni la rosa. Vago espejo de amor donde la rosa inaugura su forma deseada, absorta, inmensa, pura, ili mitada ; imagen sí, pero sin ser la rosa. Bajo tu piel de nube marinera, luz girante, tu sangre silenciosa despliega su escarlata arborecida. Nada es mayor que tú, rosa y no rosa, primavera sin ser la primavera ; arpegio en la garganta de la vida !

Arturo Camacho Ramírez

Page 3: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

1

0. INTRODUCCIÓN Este texto corresponde al Informe Escrito de mi trabajo presentado como Tesis para la Maestría de Automatización Industrial adelantada en la Facultad de Ingeniería de la Universidad Nacional de Colombia. En él he intentado condensar los principales resultados del Proyecto de Investigación que ha dado como fruto el software de diseño, simulación e implementación de Sistemas de Lógica Difusa, al que he bautizado UNFUZZY. La idea de elaborar un software para lógica difusa apareció en el primer semestre de 1996, dentro del desarrollo del curso Control Difuso, a cargo del Ing. Gustavo Pérez Hoyos. Ph.D., quien además es el Director de esta Tesis. La ausencia de herramientas de diseño para Sistemas de Lógica Difusa de propósito general dió una justificación fuerte a la idea. Inicialmente se implementó un programa de computador para DOS, que permitía diseñar Sistemas de Lógica Difusa de una entrada y una salida, y visualizar su comportamiento, con una interfaz poco amigable, y empleando algoritmos de escasa eficiencia. Ese primer programa rudimentario sirvió como aliciente para proponer al Comité Asesor de la Maestría el Proyecto de Tesis cuyos resultados presento en este texto. El objetivo original del Proyecto era el de diseñar e implementar una herramienta de software para ambiente Windows, que facilit ara el diseño y análisis de Sistemas de Lógica Difusa de Múltiples Entradas y Múltiples Salidas, y en esos términos fue aprobado por el Comité. Sin embargo, a medida que avanzaba el trabajo surgieron propuestas de funciones adicionales que podrían incluirse en la herramienta. De estas propuestas, finalmente fueron implementadas las siguientes : 1. Generación de Tablas de Entrada-Salida 2. Generación de Código Fuente C y/o C++ 3. Entrenamiento mediante Tablas Particularmente las últimas dos incrementaron el potencial de la herramienta en una forma asombrosa : El código fuente permite la implementación en software de los sistemas diseñados, y el entrenamiento amplía las posibili dades de aplicación de los éstos.

Page 4: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

2

UNFUZZY fue concebido como una herramienta de propósito general, y por lo tanto espero que su utili zación facilit e la labor de aquellos en cuyas áreas de trabajo tiene cabida la Lógica Difusa. La organización del presente texto se hizo en seis capítulos cuyo contenido abreviado es el siguiente : El Capítulo 1 resume los principales conceptos de la Lógica Difusa. El propósito no es el de servir de guía introductoria en el tema, sino el de presentar la terminología empleada en el Proyecto. El Capítulo 2 muestra los resultados de la etapa de análisis del software, es decir, es una presentación a alto nivel del código fuente desarrollado para UNFUZZY, mientras que el Capítulo 3 muestra los resultados de la etapa de diseño del software, en la que se especifican los principales detalles de las clases implementadas. El Capítulo 4 es el Manual del Usuario de UNFUZZY, cuyo contenido se ha incluido también en la ayuda en línea del programa, junto con los conceptos del Capítulo 1. El Capítulo 5 presenta tres ejemplos de aplicación de UNFUZZY, en los que se resalta la utili zación del código fuente generado por el programa, y las opciones de entrenamiento. Los tres ejemplos son tres distintos programas en los que se empleó intensivamente código C++ generado por UNFUZZY, y en dos de ellos se utili zan algoritmos de entrenamiento. Los ejemplos son : Control del Péndulo Invertido, Identificación de Plantas, y Predicción de la Serie de Tiempo del caudal mensual del río Bogotá. Por último, el capítulo 6 es una visión crítica del proyecto, que permite obtener algunas conclusiones globales del mismo.

Oscar G. Duarte

Page 5: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

3

1. CONCEPTOS BÁSICOS En el contexto de este informe, se ha tomado como acepción de “Sistema de Lógica Difusa” la definición presentada por Wang1 para los Sistemas de Lógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor respectivamente. A continuación se presenta una breve descripción de dichos sistemas, que tiene por objeto clarificar la terminología empleada en el texto, más que servir de guía introductoria al tema de la Lógica Difusa2.

1.1. Conjuntos Difusos y Lógica Difusa Los Conjuntos Difusos pueden entenderse como una extensión de los conjuntos “ordinarios” , generalmente denominados Conjuntos Concretos. Un conjunto difuso C está definido por su Función Característica o de Pertenencia uC(x), que se define como una función que toma valores de un Universo de Discurso U (por ejemplo un intervalo de los números Reales) y entrega valores en el intervalo real [0,1] :

U u xC ( ) [ , ] → 01 En la figura 1.1 se muestran las funciones de pertenencia que definen tres conjuntos difusos, para los cuales el Universo de Discurso es el intervalo [-1,1].

1 Wang, Li-Xin, "Adaptative Fuzzy Systems and Control". Prentice Hall , 1994, p. 1-7. Esta definición excluye los sistemas tipo Takagi - Sugeno explicados en el mismo texto de Wang. 2 Aquellos lectores que no estén famili arizados con el tema de la lógica difusa y de los Sistemas de lógica Difusa, pueden acudir al mismo texto de Wang, o a Mendel, Jerry, "Fuzzy Logic systems for engineering: a tutorial" Proceedings of the IEEE, v83, # 3, p. 345-377.; se recomienda tambien Driankov, Dimiter y otros, "An Introduction to Fuzzy Control", Springer-Verlag, 1993.

Page 6: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

4

Figura 1.1 Funciones de Pertenencia

Se entiende por Soporte de un conjunto difuso C el subconjunto S del Universo de Discurso U para el cual la función de pertenencia es distinta de cero. En la figura 1.1 el soporte del conjunto BAJO es [-1,0], el de MEDIO es [-0.5,0.5], y el de ALTO es [0,1]. Al trabajar con Conjuntos Concretos el tipo de operaciones básicas son la Unión, la Intersección y el Complemento de conjuntos. Con los conjuntos difusos pueden definirse al menos las siguientes operaciones:

1.1.1. T-Normas Una T-Norma es una función denotada por el operador (* ) que opera sobre el conjunto [0,1] x [0,1] y produce resultados en el conjunto [0,1], con las siguientes propiedades:

x (* ) y = y (* ) x (x (* ) y) (* ) z = x (* ) (y (* ) z)

Si (x <= y And w < =z ) entonces (x (* ) w <= y (* ) z) x (* ) 1 = x

Si dos conjuntos difusos están definidos sobre el mismo Universo de Discurso U, la Intersección entre los dos puede asociarse a un nuevo conjunto Difuso cuya función de pertenencia está determinada por la aplicación de una T-Norma sobre las funciones de pertenencia individuales de los dos conjuntos :

u x u x u xA B A B∩ = ∗( ) ( )( ) ( )

Un Conjunto Difuso puede estar representando a un Número Difuso, en cuyo caso la Intersección de los conjuntos se interpreta como la operación AND entre los dos números.

1.1.2. S-Normas

Page 7: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

5

Una S-Norma es una función denotada por el operador (+) que opera sobre el conjunto [0,1] x [0,1] y produce resultados en el conjunto [0,1], con las siguientes propiedades:

x (+) y = y (+) x (x (+) y) (+) z = x (+) (y (+) z)

Si (x <= y And w < =z ) entonces (x (+) w <= y (+) z) x (+) 0 = x

Si dos conjuntos difusos están definidos sobre el mismo Universo de Discurso U, la Unión entre los dos puede asociarse a un nuevo conjunto Difuso cuya función de pertenencia está determinada por la aplicación de una S-Norma sobre las funciones de pertenencia individuales de los dos conjuntos :

u x u x u xA B A B∪ = +( ) ( )( ) ( )

Un Conjunto Difuso puede estar representando a un Número Difuso, en cuyo caso la Unión de los conjuntos se interpreta como la operación OR entre los dos números.

1.1.3. Complemento El complemento es una función que opera sobre un Conjunto Difuso, produciendo otro Conjunto Difuso cuya función de pertenencia está dada por

u x u xA A′ = −( ) ( )1

1.1.4. Modificadores Un modificador es un número real positi vo h que opera sobre un Conjunto Difuso alterando su función de pertenencia así:

[ ]u x u xA A

h

′ =( ) ( )

Si h > 1, el modificador se interpreta como si al Conjunto Difuso se le hubiese adicionado el cali ficativo “ muy” . ( MUY BAJO, MUY MEDIO, MUY ALTO en los conjuntos de la figura 1.1). Por el contrario, si 1>h>0, el modificador se interpreta como si al Conjunto Difuso se le hubiese adicionado el cali ficativo “ poco” . ( POCO BAJO, POCO MEDIO, POCO ALTO en los conjuntos de la figura 1.1).

Page 8: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

6

1.1.5. Relación Dados dos conjuntos Difusos A y B, cada uno de ellos definidos sobre los Universos de Discurso U y V respectivamente, se define la relación R entre A y B como un nuevo conjunto difuso R(A,B) definido sobre el Universo de Discurso UxV. La función de pertenencia de este nuevo conjunto representa el grado de presencia o ausencia de alguna asociación o interacción entre los conjuntos originales.

1.1.6. Composición de Relaciones y Conjuntos Dadas dos relaciones R y S con las siguientes características, 1. R relaciona los conjuntos A y B definidos en los Universos de Discurso U y

V respectivamente. 2. S relaciona los conjuntos B y C definidos en los Universos de Discurso V y

W respectivamente. estas relaciones R y S pueden componerse entre si para generar una nueva relación RoS que relacione los conjuntos A y C; esta relación será entonces un nuevo Conjunto Difuso RoS(A,C), definido sobre el Universo de Discurso UxW, cuya función de pertenencia está dada por:

u x z u x y u y zRoSy

R S( , ) max{ ( , )( ) ( , )}= ∗

En donde (* ) es un T-Norma, x,y,z son elementos de los Universos de Discurso U, V, W respectivamente, y el cálculo del máximo debe hacerse sobre todos los posibles valores que y puede tomar en el Universo de Discurso V. Es posible remplazar la Relación R por un Conjunto Difuso D definido sobre U, en cuyo caso los Universos de discurso U y V serían el mismo; en estas condiciones la composición se efectuaría entre el conjunto D y la relación S y la función de pertenencia estaría dada por:

u z u x u x zRoSx

D S( ) max{ ( )( ) ( , )}= ∗

Page 9: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

7

1.1.7. Implicación La implicación es un tipo de relación entre dos conjuntos difusos; por ejemplo, la implicación entre los conjuntos P y Q definidos sobre U y V respectivamente es un conjunto difuso (P

�Q) definido sobre UxV. Existen

dos tipos de implicación con propiedades diferentes:

1.1.7.1.Implicación IF-THEN Este tipo de implicaciones pretenden ser una extensión del operador booleano IF-THEN, y por lo tanto deben satisfacer:

up � q(0,0)=1 up � q(0,1)=1 up � q(1,0)=0 up � q(1,1)=1

Una implicación de este tipo también se conoce como una Implicación Lógica.

1.1.7.2.Implicación AND Este tipo de implicaciones pretenden ser una extensión del operador booleano AND, ya que buscan explorar relaciones de causalidad. Por el hecho de ser una extensión del operador AND, las implicaciones de este tipo son T-Normas. También se conocen como Implicaciones de Ingeniería.

1.2. Estructura de un Sistema de Lóg ica Difusa Un Sistema de Lógica Difusa puede entenderse como un sistema no lineal de múltiples entradas concretas y multiples salidas concretas, cuya estructura interna se muestra en la figura 1.2. Cada una de las variables concretas de entrada o salida se representa dentro del Sistema de Lógica Difusa por medio de una Variable Lingüística. El conjunto de las Variables Lingüísticas de entrada se conoce como el Universo de Entrada, y el conjunto de las Variables Lingüísticas de salida se conoce como el Universo de Salida

Page 10: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

8

Figura 1.2 Sistema de Lógica Difusa

1.2.1. Variables Lingüísticas Cada Variable Lingüística está conformada por un conjunto de propiedades entre las cuales podemos destacar

1.2.1.1.Nombre de la Variable Es una etiqueta con la que se distingue la naturaleza de la variable (e.g. Temperatura, Cambio de Error, etc).

1.2.1.2.Universo de Discurso Es el intervalo real dentro del cual la variable concreta puede tomar un valor (e.g. [-10,50], [0.5,2.5]).

1.2.1.3.Valores Lingüísticos Son los posibles cali ficativos que puede tomar la variable (e.g. BAJO, MEDIO y ALTO). Cada uno de estos valores tiene asociado un Conjunto Difuso definido sobre el Universo de Discurso de la variable. En la figura 1.3 se muestran las funciones de pertenencia de los tres Conjuntos Difusos asociados a los Valores Lingüísticos BAJO, MEDIO y ALTO para la Variable Lingüística de nombre TEMPERATURA, cuyo Universo de Discurso es el intervalo [-10,50].

Page 11: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

9

Figura 1.3 Valores Lingüísticos

1.2.2. Difusor El bloque difusor recibe las múltiples entradas concretas que llegan al Sistema de Lógica Difusa, y produce un Conjunto Difuso por cada una de ellas (ver figura 1.4). Cada Conjunto Difuso producido por este bloque está definido sobre el Universo de Discurso de la Variable Lingüística respectiva, está centrado en el valor concreto de entrada, y tiene una función de pertenencia cuya forma puede ser distinta para cada variable de entrada.

Figura 1.4Difusor

1.2.3. Base de Reglas La base de reglas es un conjunto de m reglas, cada una de las cuales es de la forma3: IF ( entrada 1 es conjunto i1 AND entrada 2 es conjunto i2 AND......AND entrada p es conjunto ip ) THEN (salida 1 es conjunto i1 AND salida 2 es conjunto i2 AND......AND salida q es conjunto iq) En donde conjunto i j es uno de los Valores Lingüísticos que puede tomar la variable (de entrada o de salida) j . Opcionalmente, cada uno de los Valores

3 Se ha supuesto un sistema con p entradas y q salidas.

Page 12: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

10

Lingüísticos de las variables de entrada puede estar afectado por un modificador, de tal manera, que una determinada regla puede en realidad ser de la forma IF ( entrada 1 es [muy/poco (mod1)] conjunto i1 AND entrada 2 es [muy/poco (mod2)] conjunto i2 AND......AND entrada p es [muy/poco (modp)] conjunto ip ) THEN (salida 1 es conjunto i1 AND salida 2 es conjunto i2 AND......AND salida q es conjunto iq) En cada regla pueden distinguirse dos partes: el Antecedente y el Consecuente; de tal forma que cada regla puede escribirse en forma abreviada como

IF (Antecedente ) THEN (Consecuente).

Si las m reglas cubren todas las posibles combinaciones de Valores Lingüísticos de los Antecedentes, se dice que la Base de Reglas es Completa. En ningún caso puede permiti rse que existan dos reglas con el mismo Antecedente.

1.2.4. Motor de Inferencia El Motor de Inferencia recibe los p conjuntos difusos producidos por el Difusor, y los aplica a cada una de las m reglas de la Base de Reglas, para producir m*q Conjuntos Difusos (un conjunto difuso por cada variable de salida en cada una de las reglas) definidos sobre los Universos de Discurso de la Variables Lingüísticas de salida (ver figura 1.5).

Figura 1.5 Máquina de Inferencia

La forma en que se define la función de pertenencia de cada uno de los m*q Conjuntos Difusos producidos es la siguiente:

Page 13: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

11

Supóngase que el Difusor produce p conjuntos difusos Dif1, Dif2,... Difp, , con funciones de pertenencia

uDif1(x1), uDif2(x2), ...uDifp(xp), Supóngase ademas que la regla número i es de la forma IF ( entrada 1 es ci1 AND entrada 2 es ci2 AND....AND entrada p es cip ) THEN (salida 1 es di1 AND salida 2 es di2 AND......AND salida q es diq) En donde los conjuntos cik y di j tienen funciones de pertenencia

uci1(x1), uci2(x2), ...ucip(xp), udi1(y1), udi2(y2), ...udiq(yq),

Supóngase que el conjunto Bij es uno de los m*q conjuntos difusos generados por el Motor de Inferencia, correspondiente a la regla i y a la variable de salida j. Dicho conjunto Bij tiene por funcion de pertenencia:

uBij(yj)=composicion( uDif(x), uImp(x,yj)) uBij(yj)=maxx( uDif(x) (* ) uImp(x,yj))

En donde x corresponde a un vector de las p variables de entrada x1, x2, ...xp; (* ) corresponde a un operador T-Norma, y uDif(x), uImp(x,yj) se definen a continuación:

uDif(x) = uDif1(x1)ANDuDif2(x2) AND ... ANDuDifp(xp) uImp(x,yj) = (uAntecedente(x) � uConsecuente(yj))

uAntecedente(x)= uci1(x1)ANDuci2(x2) AND ... ANDucip(xp) uConsecuente(yj) = udij(xj)

En donde el operador AND corresponde a un operador T-Norma, y el operador � corresponde a una Implicación. En caso de que la regla i sea de la forma IF ( entrada 1 es [muy/poco(mod1)] ci1 AND entrada 2 es [muy/poco(mod2)] ci2 AND....AND entrada p es [muy/poco(modp)] cip ) THEN (salida 1 es di1 AND salida 2 es di2 AND......AND salida q es diq)

Page 14: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

12

el único cambio que debe hacerse para la determinación de las funciones de pertenencia es el siguiente: uAntecedente(x)= (uci1(x1))

mod1AND(uci2(x2)) mod2AND ... AND(ucip(xp))

modp

1.2.5. Concresor El bloque de concreción recibe los m*q Conjuntos Difusos generados por el motor de Inferencia, y produce q valores concretos correspondientes a cada una de las Variables de Salida del Sistema de Lógica Difusa (ver figura 1.6).

Figura 1.6 Concresor

En general, para producir cada uno de los q valores concretos, el Concresor toma los m Conjuntos Difusos correspondientes a cada Variable de Salida, y mediante algún algoritmo produce un valor concreto. Ciertos algoritmos de concreción efectúan la Unión o la Intersección de los m Conjuntos Difusos; cuando esto es así, debe observarse si el operador de Implicación empleado por el Motor de Inferencia es una Implicación IF-THEN o una Implicación AND; en el primero de los casos el algoritmo deberá emplear una Intersección (una T-Norma) y en el segundo caso una Unión ( una S-Norma).

1.3. Entrenamiento de Sistemas de Lóg ica Difusa mediante Tablas

De acuerdo a lo presentado en el numeral 1.2, el diseño de un Sistema de Lógica Difusa plantea como mínimo la selección de los siguientes parámetros : 1. Número de Variables Concretas de Entrada y de Salida.

Page 15: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

13

2. Estructura de las Variables Lingüísticas asociadas a cada Variable Concreta de Entrada y de Salida.

3. Definición de los Conjuntos Difusos asociados a cada Valor Lingüístico de cada Variable Lingüística.

4. Definición del tipo de Difusor empleado para cada Variable de Entrada. 5. Definición del número de reglas presentes en la Base de reglas. 6. Valores Lingüísticos de cada una de las variables del Antecedente y del

Consecuente para cada regla. 7. Tipo de relación de Implicación, operador AND, T-Norma de composición

a utili zar en el Motor de Inferencia. 8. Tipo de Concresor empleado para cada Variable de Salida. 9. Tipo de Unión o Intersección a utili zar en el Concresor. De lo anterior se desprende que la tarea para el diseñador de un Sistema de Lógica Difusa puede ser compleja debido a que debe seleccionar varios parámetros, cada uno de los cuáles ofrece bastantes opciones4. El objetivo de los algoritmos de entrenamiento es el de facilit ar el diseño de un Sistema de Lógica Difusa, del cuál se conoce al menos parte del comportamiento que de él se espera obtener. A continuación se presentan dos de los algoritmos de entrenamiento conocidos5, que fueron implementados en el presente trabajo. Estos algoritmos parten de tablas que describen cuáles deben ser las salidas concretas, cuando se especifican las entradas concretas, es decir, de tablas como la siguiente : Entrada 1 Entrada 2 ... Entrada p Salida 1 Salida 2 ... Salida q

x11 x21 ... xp1 y11 y21 ... yq1 x12 x22 ... xp2 y12 y22 ... yq2 . . .

.

.

.

. . .

.

.

.

.

.

.

. . .

x1w x2w ... xpw y1w y2w ... yqw

Tabla 1.1

4 Véase Mendel, Jerry, "Fuzzy Logic systems for engineering: a tutorial" Proceedings of the IEEE, v83, # 3, p. 369. 5 Wang presenta otros tres algoritmos diferentes, no explorados en este proyecto.

Page 16: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

14

La tabla anterior puede interpretarse como sigue : “ Se desea que el Sistema de Lógica Difusa responda con las salidas concretas y11, y21, ... yq1, cuando las entradas concretas son x11, x21, ... xp1; que responda con las salidas concretas y12, y22, ... yq2, cuando las entradas concretas son x12, x22, ... xp2; ....... ; que responda con las salidas concretas y1w, y2w, ... yqw, cuando las entradas concretas son x1w, x2w, ... xpw.” Los w casos que se quieren obtener con el Sistema de Lógica Difusa pueden ser insuficientes para determinar completamente el diseño, o por el contrario, pueden ser inconsistentes entre sí.

1.3.1. Algoritmo de entrenamiento con los Universos Fijos Este algoritmo permite determinar la base de reglas a partir de una tabla como la Tabla 2.1 ; el diseñador debe seleccionar los demás parámetros de Sistema de Lógica Difusa. El procedimiento es el siguiente para cada uno de los w casos: 1. Determinar los grados de pertenencia de x1k, x2k, ... xpk, y1k, y2k, ... yqk a cada

uno de los Valores Lingüísticos de las respectivas Variables Lingüísticas. 2. Seleccionar los Valores Lingüísticos Lx1k, Lx2k, ... Lxpk, Ly1k, Ly2k, ... Lyqk,

para los cuales los grados de pertenencia respectivos son máximos. 3. Crear una regla de la forma IF Entrada 1 es Lx1k AND Entrada 2 es Lx2k

AND ... AND Entrada p es Lxpk THEN Salida 1 es Ly1k AND Salida 2 es Ly2k AND ... AND Salida q es Lyqk .

4. Asignar a la regla anterior un factor de certeza, calculado como el producto de los grados de pertenencia a cada Valor Lingüístico.

5. Verificar si en la Base de Reglas existe ya una regla con el mismo antecedente (y quizás distinto consecuente); de ser así, dejar en la Base aquella que tenga un mayor factor de certeza. Si aún no hay en la Base de Reglas una regla con el mismo antecedente, adicionar la nueva regla a la Base.

1.3.2. Algoritmo de entrenamiento con los Universos Variables

Page 17: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

15

Este algoritmo permite determinar la definición de las Variables Lingüísticas de los Universos de Entrada y de Salida, así como la base de reglas a partir de una tabla como la Tabla 2.1 ; el diseñador debe seleccionar los demás parámetros de Sistema de Lógica Difusa. El procedimiento es el siguiente para cada uno de los w casos: 1. Crear los Valores Lingüísticos Lx1k, Lx2k, ... Lxpk, Ly1k, Ly2k, ... Lyqk, uno para

cada Variable Lingüística de los Universos de Entrada y Salida. Estos Valores Lingüísticos están asociados con Conjuntos Difusos, cada uno de ls cuales estará centrado en los valores concretos x1k, x2k, ... xpk, y1k, y2k, ... yqk. La forma de estos conjuntos puede ser definida por el usuario.

2. Crear una regla de la forma IF Entrada 1 es Lx1k AND Entrada 2 es Lx2k AND ... AND Entrada p es Lxpk THEN Salida 1 es Ly1k AND Salida 2 es Ly2k AND ... AND Salida q es Lyqk .

Es de resaltar que éste algoritmo incrementa la complejidad del Sistema de Lógica Difusa con cada línea de la tabla de entrenamiento6, y no evalúa si la información es redundante, o lo que es peor, si es contradictoria frente a información previa.

6 En efecto, si la tabla de entrenamiento consta de doscientos datos, al finalizar el entrenamiento cada Variable Lingüística estará definida por doscientos Valores Lingüísticos.

Page 18: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

16

2. UNFUZZY - ANÁLISIS DEL SOFTWARE El propósito fundamental de este capítulo consiste en hacer una presentación a Alto Nivel del código fuente desarrollado para el programa UNFUZZY. Se mostrarán por tanto, la estructura general del programa y los módulos que lo conforman, con el único fin de explicar cómo interactúan entre sí.

2.1. Propó sito del programa El programa UNFUZZY tiene por propósito brindar al usuario un ambiente de trabajo adecuado para el diseño, simulación e implementación de Sistemas de Lógica Difusa. Debido a que el diseñador tiene varias opciones de selección de parámetros, cada una de las cuales afecta el desempeño global del Sistema, se ha buscado que UNFUZZY sea una herramienta con las siguientes características:

2.1.1. Diseño de Sistemas de Lógica Difusa Dentro de la estructura básica de un Sistema de Lógica Difusa explicada en el numeral 1.2 son numerosos los parámetros de diseño; UNFUZZY brinda la posibili dad de : 1. Definir el número de Variables Concretas de Entrada y de Salida. 2. Definir las Variables Lingüísticas asociadas a cada Variable Concreta de

Entrada y de Salida. 3. Definir el nombre de cada Variable Lingüística . 4. Definir el Universo de Discurso de cada Variable Lingüística. 5. Definir los Valores Lingüísticos de cada Variable Lingüística. 6. Definir los Conjuntos Difusos asociados a cada Valor Lingüístico. La forma

de cada Conjunto Difuso puede seleccionarse dentro de las opciones presentadas en la tabla 2.1; los parámetros de cada Conjunto Difuso pueden definirse gráficamente, especificando su valor o empleando opciones de Autodefinición.

7. Definir el tipo de Difusor empleado para cada Variable de Entrada; la forma de cada Difusor puede seleccionarse dentro de las opciones presentadas en la tabla 2.1; los parámetros de cada Difusor pueden definirse especificando su valor.

8. Definir el número de reglas presentes en la Base de reglas.

Page 19: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

17

9. Especificar para cada regla cuáles son los Valores Lingüísticos de cada una de las variables del Antecedente y del Consecuente.

10.Adicionar, si se desea, un modificador a cada uno de los Valores Lingüísticos de los Antecedentes de cada regla.

11.Autodefinir los Antecedentes de una Base de Reglas Completa. 12.Autodefinir los Consecuentes de una Base de Reglas con tendencias

crecientes, decrecientes o constantes frente a variaciones de los Antecedentes.

13.Seleccionar para el Motor de Inferencia el tipo de relación de Implicación a utili zar; la seleccion puede hacerse dentro de las opciones presentadas en la tabla 2.2.

14.Seleccionar para el Motor de Inferencia el tipo de operador AND a utili zar; la seleccion puede hacerse dentro de las opciones presentadas en la tabla 2.2.

15.Seleccionar para el Motor de Inferencia el tipo de T-Norma a utili zar en la Composición; la seleccion puede hacerse dentro de las opciones presentadas en la tabla 2.2.

16.Seleccionar el tipo de Concresor empleado para cada Variable de Salida; la seleccion puede hacerse dentro de las opciones presentadas en la tabla 2.1.

17.Seleccionar para el Concresor el tipo de Unión o Intersección a utili zar; la seleccion puede hacerse dentro de las opciones presentadas en la tabla 2.2.

18.Efectuar un diseño basado en los algoritmos de entrenamiento presentados en el numeral 1.3.

Page 20: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

18

Tipos de Conjuntos Difusos Disponibles

Tipos de Difusores Disponibles

Tipos de Concresores Disponibles

Tipo L Tipo Triángulo Primer Máximo Tipo Triángulo Tipo Pi Último Máximo Tipo Pi Tipo Campana Media de Máximos Tipo Gamma Tipo Pi-Campana Centro de Gravedad Tipo Z Tipo Singenton Altura Tipo Campana Tipo Pi-Campana Tipo S Tipo Singenton

Tabla 2.17 Implicación AND Composición Unión/Intersección Mínimo Mínimo Mínimo Máximo Producto Producto Producto Suma Acotada Kleene-Dienes Producto Acotado Producto Acotado Suma Drástica Lukasiewcz Producto Drástico Producto Drástico Mínimo Zadeh Famili a Tp Famili a Tp Producto Estocástica Famili a Hamacher Famili a Hamacher Producto Acotado Goguen Famili a Sugeno Famili a Sugeno Producto Drástico Gödel Famili a Frank Famili a Frank Famili a Tp Aguda Famili a Yager Famili a Yager Famili a Hamacher Famili a Dubois-Prade Famili a Dubois-Prade Famili a Sugeno Famili a Frank Famili a Yager Famili a Dubois-Prade

Tabla 2.28 Opciones de la Máquina de Inferencia

2.1.2. Simulación y Análisis de Sistemas de Lógica Difusa Para poder explotar toda la potencialidad de Diseño descrita en el numeral anterior, se necesita tener la capacidad de analizar eficientemente el comportamiento de un Sistema de Lógica Difusa, de forma tal que sea posible identificar el efecto que tiene el cambio de uno de los parámetros de diseño sobre el comportamiento global del Sistema. UNFUZZY permite al usuario efectuar los siguientes tipos de análisis sobre un Sistema de Lógica Difusa:

7 Ver numeral 4.2 8 Ibid.

Page 21: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

19

1. Calcular los valores concretos de las Variables de Salida, para unos valores concretos definidos de las Variables de Entrada.

2. Efectuar el cálculo anterior Paso a Paso, de forma tal que el usuario pueda visualizar los Conjuntos Difusos producidos por el Difusor; el li stado de las reglas que se activan con esas salidas del Difusor; los Conjuntos Difusos producidos por el Motor de Inferencia para cada regla y cada Variable de Salida; la Unión o Intersección de esos Conjuntos; y el valor Concreto producido por el Concresor para cada Variable de Salida.

3. Producir una tabla en la que se consignan los valores concretos de las Variables de Salida para todas las combinaciones posibles de valores concretos de Entrada. La li sta puede salvarse como un archivo ASCII .

4. Visualizar la relación final Entrada-Salida, comúnmente denominada Función de Transferencia (aunque no hace referencia alguna al dominio de la variable compleja). Debido a que es imposible graficar la relación entre varias entradas y varias salidas, la visualización se hace de la relación de una Variable de Salida contra una Variable de Entrada, fijando las demás Variables de Entrada en valores seleccionables por el usuario; este tipo de presentación permite efectuar análisis de sensibili dad.

2.1.3. Implementación de Sistemas de Lógica Difusa Una vez diseñado y analizado el sistema de lógica Difusa, el usuario tiene la necesidad de exportarlo para emplearlo en su aplicación particular (Control, Identificación o Modelamiento de Plantas, etc.). UNFUZZY permite esta operación mediante la generación automática de Código Fuente en lenguaje C ó C++ 9. El usuario entonces no tiene que preocuparse por los detalles de implementación de software del Sistema de Lógica ni de ninguno de sus componentes, sino únicamente por el desempeño de dicho sistema.

2.2. Análisis del software En su forma más global, la solución propuesta consistió en la elaboración de un programa cuya estructura se muestra en la figura 2.1, donde se observan claramente 3 módulos:

9 El código generado C y C++ ha sido probado empleando para ello el compilador BorlandC++ versión 4.52

Page 22: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

20

1. Módulo del Problema (Sistema de Lógica Difusa) : Encapsula todos los objetos que conforman el dominio del problema (Variables Lingüísticas, Motor de Inferencia, Base de Reglas, etc.).

2. Módulo de Consulta : Utili za el Sistema de Lógica Difusa para permiti rle al usuario efectuar simulaciones y obtener implementaciones del sistema diseñado.

3. Módulo de Edición : Interactúa con el Sistema de Lógica Difusa para alterarlo, permitiendo al usuario hacer las modificaciones de Diseño.

Figura 2.1 Estructura del programa

En los numerales siguientes se presenta el análisis de cada uno de los módulos.

2.2.1. Módulo del Problema Debido a que un Sistema de Lógica Difusa tiene una estructura global conocida (mostrada en la figura 1.2), pero con una gran dependencia respecto al número de Variables Lingüísticas de Entrada y de Salida empleadas, así como de la forma en que éstas sean definidas, se planteó como modelo general de este módulo el presentado en la figura 2.2.

Figura 2.2 Módulo del problema

Page 23: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

21

Los propósitos de cada uno de los submódulos que se observan en la figura 2.2 son los siguientes: 1. Universo de Entrada : Encapsula toda la información relativa a las

Variables Lingüísticas de Entrada. 2. Universo de Salida : Encapsula toda la información relativa a las Variables

Lingüísticas de Salida. 3. Máquina de Inferencia : Encapsula los procedimientos necesarios para

efectuar la Inferencia; Este submódulo incluye dentro de sí mismo la Base de Reglas y los algoritmos de Entrenamiento.

4. Bloque de Concreción : Encapsula los procedimientos necesarios para efectuar la concreción de los Conjuntos Difusos producidos por la Máquina de Inferencia. Existe un procedimiento independiente para cada Variable de Salida. Este Submódulo sirve también de interfaz con el Módulo de Consulta.

2.2.1.1.Universo de Entrada El Universo de Entrada puede visualizarse como un conjunto de Variables Lingüísticas de Entrada (ver figura 2.3), cada una de las cuales tiene una estructura como la que se muestra en la figura 2.4. A diferencia de lo planteado en el numeral 1.2, en este modelamiento se decidió incluir el difusor como parte de la Variable Lingüística, para facilit ar que cada Variable tuviese un Difusor diferente.

Figura 2.3 Universo

Figura 2.4 Variable Lingüística

Page 24: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

22

Los Valores Lingüísticos de cada variable son en realidad Conjuntos Difusos cuya estructura se muestra en la figura 2.5. Cada Conjunto Difuso se caracteriza por un Nombre y por su Función de Pertenencia.

Figura 2.5 Valor Lingüístico

2.2.1.2.Universo de Salida El Universo de Salida presenta la misma estructura del Universo de Entrada (de hecho son dos instanciaciones de la misma clase); para el Universo de Salida la presencia de los Difusores en las Variables Lingüísticas no es de utili dad.

2.2.1.3.Máquina de Inferencia La estructura básica de la Máquina de Inferencia se muestra en la figura 2.6. Los operadores AND, de Implicación, y de Composición son empleados por el procedimiento de Inferencia (ver numeral 1.2.4). La máquina de Inferencia posee la capacidad de entrenarse mediante los algoritmos presentados en el numeral 1.3. La Base de Reglas es un conjunto de reglas, cada una de las cuales tiene una estructura como la que se muestra en la figura 2.710.

Figura 2.6 Máquina de Inferencia

10 En esa figura se ha supuesto un Sistema de Lógica Difusa con p entradas y q salidas.

Page 25: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

23

Figura 2.7 Regla

2.2.1.4.Bloque de Concreción El Bloque de Concreción es un conjunto de tantos Concresores como Variables de Salida tenga el sistema de Lógica Difusa. Cada Concresor a su vez, tiene una estructura básica como la que se muestra en la figura 2.8. La referencia a la variable de salida es en realidad un número que le permite identificar sobre qué Variable Lingüística de Salida debe aplicar su algoritmo de concreción.

Figura 2.8 Concresor

2.2.2. Módulo de Consulta El módulo de Consulta (ver figura 2.9) consta de varios submódulos separados que interactúan con el Módulo del Problema a través del Bloque de Concreción de éste. Las funciones de cada uno de esos módulos son las siguientes: 1. Calcular: Calcula los valores concretos de las Variables de Salida, para unos

valores concretos definidos de las variables de Entrada. 2. Calcular Paso a Paso: Efectúa el cálculo anterior Paso a Paso, de forma tal

que el usuario puede visualizar distintas etapas del proceso. 3. Función de Transferencia: Visualizar la relación final Entrada-Salida.

Page 26: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

24

4. Generar Tabla: Produce una tabla en la que se consignan los valores concretos de las Variables de Salida para todas las combinaciones posibles de valores concretos de Entrada.

5. Generar Código: Genera automáticamente Código Fuente en lenguaje C ó C++.

Figura 2.9 Módulo de Consulta

2.2.3. Módulo de Edición El módulo de Edición (ver figura 2.10) consta de varios submódulos separados que interactúan con el Módulo del Problema para editarlo. Las funciones de cada uno de esos módulos son las siguientes: 1. Editor Universo de Entrada : Permite la edición de cada una de las

Variables Lingüísticas de Entrada. 2. Editor Universo de Salida : Permite la edición de cada una de las Variables

Lingüísticas de Salida, y del Bloque de Concreción. 3. Editor Base de Reglas : Permite la edición de cada una de las reglas. 4. Editor Máquina de Inferencia : Permite la edición de la Máquina de

Inferencia. 5. Módulo de Entrenamiento : Permite la edición del Sistema de Lógica

Difusa mediante los algoritmos de Entrenamiento presentados en el numeral 1.3

Page 27: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

25

Figura 2.10 Módulo de Edición

Page 28: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

26

3. UNFUZZY - DISEÑO DEL SOFTWARE A continuación se hace una presentación de las clases diseñadas e implementadas, resumiendo sus principales atributos y procedimientos, utili zando un nivel de detalle exclusivamente descriptivo, con el propósito de preparar el terreno para aquellos lectores que deseen profundizar en los detalles de implementación11. Las diferentes clases se han agrupado en tres numerales, correspondientes a cada uno de los tres módulos mostrados en la figura 2.1.

3.1. Clases Semánticas Las Clases Semánticas son aquellas que forman parte del módulo del Problema, y por tanto tienen por fin encapsular la información y los procedimientos del Sistema de Lógica Difusa. Para cada clase se presenta la información relevante en cuadros que incluyen: 1. Información General 2. Principales Atributos 3. Principales Procedimientos 4. Clases Derivadas

3.1.1. Clase ConjuntoDifuso y derivadas La clase abstracta ConjuntoDifuso tiene por propósito encapsular la definición de cada Valor Lingüístico; fundamentalmente es una Etiqueta, y un Conjunto Difuso definido por su función de pertenencia y su Soporte.

Generalidades Nombre de la Clase ConjuntoDifuso Clases Padres Clases Hijas ConjuntoL, ConjuntoTriángulo, ConjuntoPi, ConjuntoGamma,

ConjuntoZ, ConjuntoCampana, ConjuntoPiCampana, ConjuntoS, ConjuntoSinglenton, Difusor

11 Un estudio a bajo nivel que incluya todos los detalles de implementación puede llevarse a cabo a partir de los archivos mismos del código fuente, ya que éstos están ampliamente documentados.

Page 29: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

27

Archivo del Encabezado fuzzyset.hpp Archivos con funciones fuzzyset.cpp, setdial2.cpp

Principales Atributos

Nombre Tipo Descripción Nombre char Etiqueta del Valor Linguistico (Ej, “BAJO”) Tipo char Identificador de tipo (Ej. "Tipo L" ) Minimo float límite inferior del Soporte Maximo float límite superior del Soporte CodigoC char Texto necesario para generar CodigoC CodigoCPP char Texto necesario para generar CodigoC++

Principales Procedimientos

Nombre Tipo Descripción nombre() char consultor de Nombre nombre(char *s) void modificador de Nombre tipo(char *s) void modificador de Tipo minimo() float consultor de Minimo minimo(float x) void modificador de Minimo maximo() float consultor de Maximo maximo(float x) void modificador de Maximo pertenencia(float x) virtual float calcula la función de pertenencia para x; esta función debe

ser redefinida por los hijos codigoC() virtual char crea el texto necesario para generar Código C; ; esta función

debe ser redefinida por los hijos codigoCPP() virtual char crea el texto necesario para generar Código C++; ; esta

función debe ser redefinida por los hijos

Clases Derivadas (hijos)

Nombre Descripción12 ConjuntoL Conjunto Difuso con función de pertenencia

f(x)

,x a

(b x)/(b a),a x b

,x b

=<

− − > >>

î

1

0

ConjuntoTriangulo Conjunto Difuso con función de pertenencia

f(x)

,x a

(x b)/(a b),a x b

(c x)/(c b),b x c

,x c

=

<− − > >− − > >>

î

0

0

ConjuntoPi Conjunto Difuso con función de pertenencia

12 En esta tabla, a,b,c,d son reales definidos dentro del Universo de Discurso de la Variable Lingüística que contiene al ConjuntoDifuso, que satisfacen a<b<c<d.

Page 30: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

28

f(x)

,x a

(x b)/(a b),a x b

b x c

(d x)/(d c),c x d

,x d

=

<− − > >> >

− − > >>

î

0

1

0

,

ConjuntoGamma Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a),a x b

,x b

=<

− − > >>

î

0

1

ConjuntoZ Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) a x a b

(x b)/(b a) , a b x b

,x b

=

<

− − − > > +

− − + > >>

î

1

1 2 2

2 2

0

2

2

( ) , ( ) /

( ) ( ) /

ConjuntoCampana Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

(x b)/(c b) ,b x b c

(x c)/(c b) , b c x c

,x c

=

<

− − > > +

− − − + > >

− − − > > +

− − + > >>

î

0

2 2

1 2 2

1 2 2

2 2

0

2

2

2

2

( ) ( ) /

( ) ( ) /

( ) ( ) /

( ) ( ) /

ConjuntoPiCampana Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

b x c

(x c)/(d c) ,c x c d

(x d)/(d c) , c d x d

,x d

=

<

− − > > +

− − − + > >> >

− − − > > +

− − + > >>

î

0

2 2

1 2 2

1

1 2 2

2 2

0

2

2

2

2

( ) ( ) /

( ) ( ) /

,

( ) ( ) /

( ) ( ) /

ConjuntoS Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

,x b

=

<

− − > > +

− − − + > >>

î

0

2 2

1 2 2

1

2

2

( ) ( ) /

( ) ( ) /

ConjuntoSinglenton Conjunto Difuso con función de pertenencia

f(x),x x

,x x=

≠=

î

0

10

0

Difusor Clase Abstracta (ver numeral siguiente)

Page 31: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

29

3.1.2. Clase Difusor y derivadas La clase abstracta Difusor tiene por propósito encapsular la definición de los difusores que pueden emplear cada una de las Variables Lingüísticas de Entrada; es una clase heredada de ConjuntoDifuso con una forma que no se altera, pero cuyo Centro se puede modificar, alterando con ello los parámetros que definen la función de pertenencia del ConjuntoDifuso. El Difusor se evalúa en un número finito de puntos, y no en todo el soporte, creándose con ello un Intervalo de Evaluación

Generalidades

Nombre de la Clase Difusor Clases Padres ConjuntoDifuso Clases Hijas DifusorTriangulo, DifusorPi, DifusorCampana, DifusorPiCampana,

DifusorSinglenton Archivo del Encabezado fuzzific.hpp Archivos con funciones setdial2.cpp

Principales Atributos

Nombre Tipo Descripción Centro float Centro del Difusor NumeroPuntos int Número de puntos en que se evalúa el Difusor dx float Intervalo de evaluación Codigo_C char Texto necesario para generar Código C Codigo_CPP char Texto necesario para generar Código C++

Principales Procedimientos

Nombre Tipo Descripción numeroPuntos(int n) void modificador de NumeroPuntos; modifica también dx numeroPuntos() int consultor de NumeroPuntos centro() float consultor de Centro entrada(float x) void modificador de Centro; también cambia todos los

parámetros del padre para cambiar su función de pertenencia.

intervalo() float consultor de dx ancho(float) void permite cambiar el soporte del difusor Codigo_C virtual char Texto necesario para generar Código C Codigo_CPP virtual char Texto necesario para generar Código C++

Clases Derivadas (hijos)

Nombre Descripción DifusorTriangulo difusor que hereda también de la clase ConjuntoTriangulo, de la que toma

su funcionalidad como Conjunto Difuso DifusorPi difusor que hereda también de la clase ConjuntoPi, de la que toma su

funcionalidad como Conjunto Difuso

Page 32: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

30

DifusorCampana difusor que hereda también de la clase ConjuntoCampana, de la que toma su funcionalidad como Conjunto Difuso

DifusorPiCampana difusor que hereda también de la clase ConjuntoPiCampana, de la que toma su funcionalidad como Conjunto Difuso

DifusorSinglenton difusor que hereda también de la clase ConjuntoSinglenton, de la que toma su funcionalidad como Conjunto Difuso

3.1.3. Clase Norma y derivadas La clase abstracta Norma tiene por propósito definir las operaciones entre Conjuntos Difusos conocidas como T_Normas y S_Normas. De Norma se heredan dos clases abstractas hijas, S_Norma y T_Norma, y de estas a su vez se heredan varias clases concretas, en las que se implementan las operaciones lógicas difusas

Generalidades Nombre de la Clase Norma Clases Padres Clases Hijas S_Norma, T_Norma, y de éstas se heredan: Máximo, SumaAcotada,

SumaDrastica, Minimo, Producto, ProductoAcotado, ProductoDrastico, Famili aTp, Famili aHp, Famili aSp, Famili aFp, Famili aYp, Famili aAp

Archivo del Encabezado fuznorms.hpp Archivos con funciones

Principales Atributos

Nombre Tipo Descripción Tipo char Identificador del tipo de Norma (Ej, “Producto” ) CodigoCpp char Texto necesario para generar código C++;

Principales Procedimientos

Nombre Tipo Descripción tipo() char Consultor de Tipo ToSNorm() int Decide si la Norma es T_Norma ó S_Norma opera(float, float) float Efectúa la operación matemática que define la norma codigoC() virtual char Genera el texto necesario para generar Código C codigoCPP() virtual char Genera el texto necesario para generar Código C++

Clases Derivadas (hijos)

Nombre Descripción T_Norma Clase abstracta de las T_Normas S_Norma Clase abstracta de las S_Normas Minimo T_Norma definida por la relación

f x y min x y( , ) ( , )=

Producto T_Norma definida por la relación f x y xy( , ) =

ProductoDrastico T_Norma definida por la relación

Page 33: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

31

f x y

x y

y x

x ANDy

( , )

,

,

,

===≠ ≠

î

1

1

0 1 1

ProductoAcotado T_Norma definida por la relación f x y max x y( , ) ( , )= + −0 1

Famili aTp T_Norma definida por la relación

[ ]f x y x y x y

p

p p p p p( , ) ( ) ( ) ( ) * ( )

/= − − + − − − −

∈ ℜ

1 1 1 1 11

Famili aHp T_Norma definida por la relación

f x yxy

p p x y xy

p

( , )( )( )

=+ − + −

≥1

0

Famili aSp T_Norma definida por la relación f x y min x y p xy

p

( , ) ( , )= + + −≥ −

1

1

Famili aFp T_Norma definida por la relación

f x yp p

p

p

p

x y

( , ) log( )( )

= +− −

>

11 1

1

0

Famili aYp T_Norma definida por la relación

f x y min a b

p

p p p( , ) ( , (( ) ( ) ) )/= − − + −≥

1 1 1 1

0

1

Famili aAp T_Norma definida por la relación

f x yxy

max x y p

p

( , )( , , )

=

≤ ≤0 1

Maximo T_Norma definida por la relación f x y max x y( , ) ( , )=

SumaAcotada T_Norma definida por la relación f x y min x y( , ) ( , )= +1

SumaDrastica T_Norma definida por la relación

f x y

x y

y x

x ANDy

( , )

,

,

,

===≠ ≠

î

0

0

1 1 1

3.1.4. Clase Implicacion y derivadas La clase abstracta Implicacion tiene por propósito definir las relaciones de implicación entre Conjuntos Difusos. De Implicacion se heredan dos clases abstractas hijas ImplicacionT_Norma e ImplicacionI f_Then, y de estas a su vez se heredan varias clases concretas, en las que se implementan las

Page 34: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

32

implicaciones difusas. En ImplicacionT_Norma se incluyen las Implicaciones de Ingeniería, mientras que en ImplicacionI f_Then se incluyen las Implicaciones Lógicas.

Generalidades

Nombre de la Clase Implicacion Clases Padres Clases Hijas ImplicacionT_Norma, ImplicacionIf_Then, y de éstas se heredan:

ImplicacionProducto, ImplicacionMinimo, ImplicacionKleeneDienes, ImplicacionLukasiewicz, ImplicacionZadeh, ImplicacionEstocastica, ImplicacionGoguen, ImplicacionGodel, ImplicacionAguda.

Archivo del Encabezado fuzimpli .hpp Archivos con funciones

Principales Atributos

Nombre Tipo Descripción Tipo char Identificador del tipo de Implicacion (Ej, “Producto” ) CodigoC char Texto necesario para generar código C; CodigoCpp char Texto necesario para generar código C++;

Principales Procedimientos

Nombre Tipo Descripción tipo() char Consultor de Tipo defecto() float Decide si la Implicación es T_Norma ó If_Then implica(float, float) float Efectúa la operación matemática que define la implicación codigoC() virtual char Genera el texto necesario para generar Código C codigoCPP() virtual char Genera el texto necesario para generar Código C++

Clases Derivadas (hijos)

Nombre Descripción ImplicacionT_Norma Clase abstracta de las Implicaciones de Ingeniería ImplicacionIf_Then Clase abstracta de las Implicaciones Lógicas ImplicacionProducto Implicación de Ingeniería definida por la relación

f x y xy( , ) =

ImplicacionMinimo Implicación de Ingeniería definida por la relación f x y min x y( , ) ( , )=

ImplicacionKleeneDienes Implicación Lógica definida por la relación f x y x y( , ) max( , )= −1

ImplicacionLukasiewicz Implicación Lógica definida por la relación f x y min x y( , ) ( , )= − +11

ImplicacionZadeh Implicación Lógica definida por la relación f x y max min x y x( , ) ( ( , ), )= −1

ImplicacionEstocastica Implicación Lógica definida por la relación f x y max x xy( , ) ( , )= −1

ImplicacionGoguen Implicación Lógica definida por la relación

f x y miny

x( , ) ( , )= 1

Page 35: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

33

ImplicacionGodel Implicación Lógica definida por la relación

f x yx y

y x y( , )

,

,=

≤>

î

1

ImplicacionAguda Implicación Lógica definida por la relación

f x yx y

x y( , )

,

,=

≤>

î

1

0

3.1.5. Clase Variable La clase concreta Variable tiene por propósito encapsular la definición de cada Variable Lingüística; fundamentalmente es una Etiqueta, un Universo de Discurso, un li stado de Conjuntos Difusos (Valores Lingüísticos), y un Difusor.

Generalidades

Nombre de la Clase Variable Clases Padres Clases Hijas Archivo del Encabezado fuzzyvar.hpp Archivos con funciones fuzzyvar.cpp, archivo.cpp

Principales Atributos

Nombre Tipo Descripción Conjuntos Lista de

ConjuntoDifuso Esta Lista contiene los Valores Lingüísticos

DifusorEntrada Difusor * Apuntador al Difusor de la Variable RangoMinimo float Límite Inferior del Universo de Discurso RangoMaximo float Límite Superior del Universo de Discurso NumeroIntervalos int Número de Intervalos de Evaluación Intervalo float Intervalo de Evaluación definido por el Universo de

Discurso y NumeroIntervalos NombreVariable char Etiqueta con el nombre de la Variable

Principales Procedimientos Nombre Tipo Descripción difusorEntrada() Difusor * Consultor de DifusorEntrada difusorEntrada(Difusor*) Difusor * Modificador de DifusorEntrada nombreVariable() char* consultor de NombreVariable nombreVariable(char) char* modificador de NombreVariable adicionarConjuntos (ConjuntoDifuso* cd)

void Permite adicionar un ConjuntoDifuso a Conjuntos

insertarConjuntos (ConjuntoDifuso* cd)

void Permite insertar un ConjuntoDifuso a Conjuntos

Page 36: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

34

eliminarConjuntos (ConjuntoDifuso* cd)

void Permite eliminar un ConjuntoDifuso de Conjuntos

numeroConjuntos() int consultor del número de items en Conjuntos conjunto(int conj) ConjuntoDifuso* retorna un apuntador a un ConjuntoDifuso de

Conjuntos pertenencia(int, float) float ejecuta la función pertenencia de un

ConjuntoDifuso de Conjuntos pertenenciaDifusor(float) float ejecuta la función pertenencia de Difusor rangoMinimo() float Consultor de RangoMinimo rangoMinimo(float) void Modificador de RangoMinimo rangoMaximo() float Consultor de RangoMaximo rangoMaximo(float) void Modificador de RangoMaximo autodefinirConjuntos Rectos(int num)

void permite una definición rápida de un objeto Variable empleando ConjuntoDifusos rectos

autodefinirConjuntos Curvos(int num)

void permite una definición rápida de un objeto Variable empleando ConjuntoDifusos curvos

3.1.6. Clase Universo La clase concreta Universo tiene por propósito encapsular la definición de las Variables Lingüísticas que forman los Universos de Entrada y de Salida; fundamentalmente es un li stado de Variables, que tiene la funcionalidad de ejecutar los procedimientos más importantes de las clases Variable, ConjuntoDifuso y Difusor.

Generalidades

Nombre de la Clase Universo Clases Padres Clases Hijas Archivo del Encabezado fuzinput.hpp Archivos con funciones fuzinput.cpp, archivo.cpp

Principales Atributos

Nombre Tipo Descripción Variables ListaVariables Listado de Variables Lingüísticas

Principales Procedimientos

Nombre Tipo Descripción autodefinirUniversoRecto (int numVar,int numCon);

void definición rápida del Universo empleando Conjuntos Difusos rectos

autodefinirUniversoCurvo (int numVar,int numCon);

void definición rápida del Universo empleando Conjuntos Difusos curvos

adicionarVariable (Variable *var)

void permite adicionar una Variable a la lista Variables

insertarVariable (Variable *var)

void permite insertar una Variable a la lista Variables

eliminarVariable (Variable *var)

void permite eliminar una Variable de la lista Variables

Page 37: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

35

*var) numeroVariables() int permite averiguar el número de items de Variables variable(int numVar); Variable * retorna un apuntador a una Variable de la lista

Variables limpiarListaVariables(); void permite eliminar todos los miembros de la lista

Variables

3.1.7. Clase Regla La clase concreta Regla tiene por propósito encapsular la definición de las expresiones IF-THEN que emplea la Máquina de Inferencia; fundamentalmente es una li stado de Antecedentes, Consecuentes y Modificadores; los Antecedetes y los Consecuentes son números enteros que identifican Valores Lingüísticos de los Universos de Entrada y Salida respectivamente; los Modificadores son reales positi vos que sirven de exponente a las funciones de pertenencia de los antecedentes. Adicionalmente, cada regla tiene un parámetro certeza que es usado por el algoritmo de entrenamiento de Universos Fijos.

Generalidades

Nombre de la Clase Regla Clases Padres Clases Hijas Archivo del Encabezado fuzinfe3.hpp Archivos con funciones

Principales Atributos Nombre Tipo Descripción NumeroEntradas; int Número de Variables en el Universo de Entrada NumeroSalidas; int Número de Variables en el Universo de Entrada Antecedente; int * Vector de NumeroEntrada elementos, que hace referencia a

los Valores Lingüísticos del Antecedente Consecuente; int * Vector de NumeroSalida elementos, que hace referencia a

los Valores Lingüísticos del Consecuente Modificadores; float * Vector de NumeroEntrada elementos, que hace referencia a

los modificadores de los Valores Lingüísticos del Antecedente

Certeza; float parametro útil para entrenamiento de Sistemas de Lógica Difusa

Principales Procedimientos

Nombre Tipo Descripción conjuntoEntrada(int num) int Consultor de Antecedente conjuntoEntrada(int Var, int Con)

void Modificador de Antecedente

Page 38: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

36

conjuntoSalida(int num) int Consultor de Consecuente conjuntoSalida(int Var, int Con)

void Modificador de Consecuente

modificador(int num) int Consultor de Modificador modificador(int Var, int Con)

void Modificador de Modificador

certeza(float cer) void Modificador de Certeza certeza() float Consultor de Certeza

3.1.8. Clase MaquinaInferencia La clase concreta MaquinaInferencia tiene por propósito encapsular la operación del Motor de Inferencia; fundamentalmente consta de una Base de Reglas, definida como un li stado de Reglas y de unos procedimientos en los que se efectúan los algoritmos de inferencia; El Bloque de Concreción puede consultar a MaquinaInferencia para conocer las funciones de pertenencia de los Conjuntos Difusos definidos en el Universo de Salida, que son el resultado de la Inferencia.

Generalidades

Nombre de la Clase MaquinaInferencia Clases Padres Clases Hijas Archivo del Encabezado fuzinfe3.hpp Archivos con funciones fuzinfe3.hpp, archivo.cpp

Principales Atributos

Nombre Tipo Descripción BaseReglas ListaReglas * Listado con las Reglas Entradas Universo * Apuntador al Universo de Entrada Salidas Universo * Apuntador al Universo de Salida Implicaciones Implicacion * Operador de Implicacion Composicion Norma * T_Norma de la Composicion And Norma * Operador AND NumeroReglas int Numero de Reglas en ListaReglas NumeroEntradas int Numero de Variables en Entradas NumeroSalidas int Numero de Variables en Salidas

Principales Procedimientos

Nombre Tipo Descripción implicacion() Implicacion* Consultor de Implicacion implicacion (Implicacion * imp)

void Modificador de Implicacion

and() Norma* Consultor de And and(Norma *nor) void Modificador de And

Page 39: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

37

composicion() Norma* Consultor de Composicion composicion(Norma *nor) void Modificador de Composicion regla(int reg) Regla * Devuelve una Regla de ListaReglas entradas() Universo * Consultor de Entradas salidas() Universo * Consultor de Salidas numeroReglas() int Consultor de NumeroReglas actualizarEntradas (float *ent)

void Actualiza los Difusores del Universo de Entrada para unas entradas concretas archivadas en el vector ent

pertenenciaDifusores(float *ent)

float Calcula el AND de las funciones de pertenencia de los Difusores del Universo de Entrada, para un vector de netrada ent

pertenenciaImplicacion (int numSal,int numRegla, float *ent,float sal)

float Calcula la Implicacion entre Antecedente y Consecuente, para la regla numRegla, y la salida numSal, para valores del Universo de Entrada archivados en el vector ent, y valores del Universo de Salida archivados en el vector sal,

pertenenciaConsecuente (intnumSal,int numRegla, float sal)

float Calcula la pertenencia al Consecuente, para la regla numRegla, y la salida numSal, para valores del Universo de Salida archivados en el vector sal

pertenenciaAntecedente (int numRegla,float *ent)

float Calcula la pertenencia al Consecuente, para la regla numRegla, para valores del Universo de Entrada archivados en el vector ent

pertenenciaComposicion (int numVar,int numRegla , float sal)

float Calcula la Composicion entre los Difusores y la Implicacion

activarRegla (int Numregla)

int Verifica si una regla se dispara con los difusores del Universo de Entrada

EntrenaUniversoFijo(float *antecedente, float *consecuente)

void Efectúa el algoritmo de entrenamiento presentado en el numeral 1.3.1, con los datos de entrenamiento archivados en los vectores antecedente y consecuente

EntrenaUniversoVariable(float *antecedente, float *consecuente)

void Efectúa el algoritmo de entrenamiento presentado en el numeral 1.3.2, con los datos de entrenamiento archivados en los vectores antecedente y consecuente

3.1.9. Clase Concresor y derivadas La clase abstracta Concresor tiene por propósito encapsular la operación de Concreción empleada para cada Variable Lingüistica de Salida. Fundamentalmente consta de un indentificador de la Variable de Salida sobre la que debe operar, y un algoritmo de concreción;los Concresores emplean intensivamente las funciones de la Máquina de Inferencia, pues es ésta la que genera los Conjuntos Difusos que deben concretarse; la mayoría de algoritmos de concreción efectúan la Unión o la Intersección de los Conjuntos Difusos producidos por el Motor de Inferencia13, esta operación la lleva a cabo una 13 El único Concresor que no efectúa Unión ni Intersección es el de Altura.

Page 40: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

38

Norma denominada Conjunción. De esta clase se derivan varias clases concretas, cada una con un algoritmo de concreción diferente.

Generalidades

Nombre de la Clase Concresor Clases Padres Clases Hijas Archivo del Encabezado fuzdefuz.hpp Archivos con funciones fuzdefuz.cpp

Principales Atributos

Nombre Tipo Descripción Nombre char Etiqueta para distinguir el tipo de Concresor(ej.

“Altura”) CodigoC char Texto necesario para generar Código C CodigoCPP char Texto necesario para generar Código C++ Motor MaquinaInferencia * Apuntador a la Máquina de Inferencia NumeroVariable int Identificador de la Variable de Salida sobre la que

opera Conjuncion Norma * Norma para efectuar Unión o Intersección Identificador int parámetro necesario para leer archivos de disco

Principales Procedimientos

Nombre Tipo Descripción numeroVariable() int Consultor de NumeroVariable numeroVariable (int numVar)

void Modificador de NumeroVariable

motor() MaquinaInferencia * Consultor de Motor motor (MaquinaInferencia *maq)

void Modificador de Motor

defecto() float calcula la función defecto de la Implicación de Motor

nombre() char Consultor de Nombre conjuncion() Norma * Consultor de Conjuncion conjuncion(Norma *nor) void Modificador de Conjuncion identificador() int Consultor de Identificador salidaConcreta(float *ent) virtual float=0 efectúa el algoritmo de Concreción cuando las

entradas Concretas al Sistema de Lógica Difusa están almacenadas en el vector ent; Esta función encapsula todo el comportamiento del Sistema de Lógica Difusa

codigoC() virtual char*=0 genera Código C codigoCPP() virtual char*=0 genera Código C++

Clases Derivadas (hijos)

Page 41: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

39

Nombre Descripción14 PrimerMaximo Concresor definido por la expresión

{ }y y U y yy U

B* inf | ( ) sup ( )= ∈ =

∈µ µ

UltimoMaximo Concresor definido por la expresión

{ }y y U y yy U

B* sup | ( ) sup ( )= ∈ =

∈µ µ

MediaDeMaximos Concresor definido por la expresión

{ }{ }

y y U y y

y y U y y

yy y

y UB

y UB

*

*

** *

inf | ( ) sup ( )

sup | ( ) sup ( )

( )

1

2

1 2

2

= ∈ =

= ∈ =

= +

µ µ

µ µ

CentroDeGravedad Concresor definido por la expresión

y

y y dy

y dy

B

U

B

U

*

( )

( )=

∫∫

µ

µ

Altura Concresor definido por la expresión

y

y y

y

y centroAltura i

i

Bi

i

i

m

Bi

i

i

m

i

*

( )

( )

( )

=

=

=

=

µ

µ

1

1

centroAltura(i) es un parámetro del Conjunto Difuso de la Variable de Salida, que corresponde al Consecuente de la regla i; dicho parámetro intenta representar el centro del Conjunto Difuso.

3.1.10.Clase BloqueConcrecion La clase concreta BloqueConcrecion tiene por propósito encapsular la operación de Concreción empleada para todas las Variables Lingüisticas del Universo de Salida; fundamentalmente es un li stado de objetos de la clase Concresor .

14 En esta tabla se supone que el Motor de Inferencia produce m Conjuntos Difusos para la Variable de Salida en cuestión, que está definida sobre un Universo de Discurso U; cada uno de los m conjuntos tiene una función de pertenencia uBi(y), i=1,2,..m . Si el Concresor efectúa la Unión o la Intersección de los m conjuntos, el resultado es un Conjunto Difuso B que tiene función de pertenencia uB(y).

Page 42: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

40

Generalidades

Nombre de la Clase BloqueConcrecion Clases Padres Clases Hijas Archivo del Encabezado fuzdefuz.hpp Archivos con funciones fuzdefuz.cpp, archivo.cpp

Principales Atributos

Nombre Tipo Descripción Concresores ListaConcresores Listado de Concresore Motor MaquinaInferencia * Apuntador a la Máquina de Inferencia

Principales Procedimientos

Nombre Tipo Descripción adicionarConcresor (Concresor* conc)

void permite adicionar un Concresor a Concresores

insertarConcresor (Concresor* conc)

void permite insertar un Concresor a Concresores

eliminarConcresor (Concresor* conc)

void permite eliminar un Concresor de Concresores

numeroConcresores() int permite consultar el número de items en Concresores

conjuncion() Norma * Consultor al atributo Conjuncion del primer Concresor en Concresores ; Todos los Concresores emplean el mismo operador de Conjuncion

conjuncion(Norma *nor) void Modificador al atributo Conjuncion de todos los Concresores

limpiarListaConcresores() void elimina todos los Concresores motor (MaquinaInferencia* maq)

void Modificador de Motor

motor() MaquinaInferencia * Consultor de Motor concresor(int numSal) Concresor * devuelve un Concresor presente en

Concresores salidaConcreta (int numSal,float *ent)

float devuelve el dato concreto producido por un Concresor presente en Concresores, cuando la entrada al Sistema de Lógica Difusa son los valores concretos almacenados en el vector ent

salidaConcreta (float *ent,float *sal)

void calcula el dato concreto producido por todos los Concresores presentes en Concresores, cuando la entrada al Sistema de Lógica Difusa son los valores concretos almacenados en el vector ent; las salidas concretas las almacena en el vector sal

autodefinirBloqueConcrecion(MaquinaInferencia* maq,Norma *conjuncion)

void definición rápida de BloqueConcrecion

Page 43: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

41

3.2. Clases de Consulta Las Clases de Consulta son aquellas que forman parte del módulo de Consulta, y por tanto tienen por fin facilit ar la utili zación del Sistema de Lógica Difusa diseñado. La consulta se efectúa desde Cuadros de Dialogo, de tal forma que las Clases de Consulta se han heredado de la clase TDialog, provista por Borland. En el siguiente cuadro se reseña su información más relevante:

Generalidades Clase Encabezado Funciones Descripción DialogCalcular dialogos.hpp dialogos.cpp Permite Calcular las salidas concretas del

Sistema de Lógica Difusa, para un conjunto dado de entradas concretas.

DialogPasoAPaso dialogos.hpp transfe.cpp Permite Calcular Paso a Paso las salidas concretas del Sistema de Lógica Difusa, para un conjunto dado de entradas concretas.

DialogTransferencia dialogos.hpp transfe.cpp Permite visualizar las relaciones existentes entre las entradas concretas y las salidas concretas del Sistema de Lógica Difusa.

DialogEntrarDatos dialogos.hpp Permite especificar cuáles son las entradas concretas al Sistema de Lógica Difusa ; se usa desde DialogCalcular, DialogPasoAPaso, y DialogTranseferencia.

DialogGenerarCodigo gendial.hpp gendial.cpp Permite generar código fuente C y C++, para una implementación del sistema de Lógica Difusa.

DialogGenerarTabla gendial.hpp gendial.cpp Permite generar una tabla con todas las posibles combinaciones de entradas concretas al Sistema de Lógica Difusa, con sus respectivas salidas concretas.

DialogNombreClase gendial.hpp gendial.cpp Permite especificar el nombre de la clase cuyo código C++ desea generarse ; es empleada desde DialogGenerarCodigo.

3.3. Clases de Edición Las Clases de Edición son aquellas que forman parte del módulo de Edición, y por tanto tienen por fin facilit ar la modicación del Sistema de Lógica Difusa diseñado. La Edición se efectúa desde Cuadros de Dialogo, de tal forma que las Clases de Edición se han heredado de la clase TDialog, provista por Borland. En el siguiente cuadro se reseña su información más relevante:

Generalidades Clase Encabezado Funciones Descripción DialogDescripcion dialogos.hpp Permite introducir un breve comentario

descriptivo que acompañe al Sistema de Lógica Difusa

Page 44: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

42

DialogAutoEntrada dialogos.hpp Permite efectuar una definición rápida del Universo de Entrada

DialogAutoSalida dialogos.hpp Permite efectuar una definición rápida del Universo de Salida

DialogVariableEntrada dialogos.hpp dialogos.cpp, dialogos3.cpp

Permite efectuar una definición detallada del Universo de Entrada

DialogVariableSalida dialogos.hpp dialogos2.cpp dialogos3.cpp

Permite efectuar una definición detallada del Universo de Salida

DialogDefinirVariableEntrada

dialogos.hpp dialogos.cpp Permite modificar los atributos de una Variable Lingüística ; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogAutodefinirVariableEntrada

dialogos.hpp dialogos.cpp Permite efectuar una definición rápida de los Valores Lingüísticos de una Variable Lingüística ; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogInsertarConjunto dialogos.hpp Permite insertar un nuevo Valore Lingüístico en una Variable Lingüística ; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirDifusor dialogos.hpp dialogos.cpp Permite modificar los atributos del difusor de una Variable Lingüística ; se emplea desde DialogVariableEntrada.

DialogDefinirConjuntosL

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo L; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosTriangulo

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo Triángulo ; se usa desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosPi

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo Pi ; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosGamma

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo Gamma ; se usa desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosZ

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo Z; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosCampana

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo Campana; se usa desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosPiCampana

setdialo.hpp setdialo.cpp Permite modificar los atributos de un ConjuntoDifuso TipoPiCampana; se usa desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosS setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo S ; se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogDefinirConjuntosSinglenton

setdialo.hpp setdialo.cpp Permite modificar los atributos de un Conjunto Difuso Tipo L se emplea desde DialogVariableEntrada, DialogVariableSalida.

DialogBaseReglas infdial.hpp infdial.cpp Permite definir la Base de Reglas DialogIrARegla infdial.hpp infdial2.cpp Permite buscar e insertar Reglas en la Base de

Reglas ; se emplea desde DialogBaseReglas DialogOpcion infdial.hpp infdial.cpp Permite modificar las principales opciones

matemáticas de la Máquina de Inferencia y el Bloque de Concreción

DialoParametro infdial.hpp infdial2.cpp Permite definir el parámetro de algunas famili as de T-Normas ; se emplea desde DialogOpcion

Page 45: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

43

famili as de T-Normas ; se emplea desde DialogOpcion

DialogRapida infdial.hpp infdial.cpp Permite efectuar una definición rápida de la Base de Reglas

DialogEntrena entrdial.hpp entrdial.cpp Permite efectuar los algoritmos de Entrenamiento presentados en el numeral 1.3

3.4. Otras Clases Existen otras Clases cuya definición es utilit aria, sus principales características son :

Generalidades Clase Encabezado Funciones Descripción TDialogInicial fuzzyapp.hpp difumain.cpp Muestra el Cuadro de Dialogo de

presentación del programa TFuzzyApp fuzzyapp.hpp difumain.cpp Define la Aplicación TVentanaDeTrabajoClient ventana.hpp ventmdi.cpp Encapsula los procedimientos de la Ventana

Cliente en el esquema MDI TVentanaDeTrabajoChild ventana.hpp ventmdi.cpp Encapsula los procedimientos de la Ventana

Hija en el esquema MDI

Page 46: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

44

4. UNFUZZY - MANUAL DEL USUARIO En este capítulo se presenta el Manual del Usuario de UNFUZZY; la información en él contenida se ha incluido también en las opciones de Ayuda sensitiva en línea del programa. Para la correcta interpretación de las opciones que brinda UNFUZZY, se recomienda el lector revisar el Capítulo 1, en el que se ha precisado la terminología empleada. Se ha organizado este Manual de la siguiente forma: Un primer numeral de Generalidades, en el que se muestran los pasos necesarios para instalar UNFUZZY y leer un primer ejemplo desde disco; en el segundo numeral se muestran las distintas opciones de diseño disponibles; el tercero resume los pasos necesarios para el Diseño de un Sistema de Lógica Difusa; el cuarto muestra las posibili dades de análisis e implementación que brinda UNFUZZY; el quinto enseña cómo entenar un Sistema de Lógica Difusa; y finalmente se ha reservado el sexto numeral para presentar algunas consideraciones sobre la implementación de Sistemas de Lógica Difusa empleando el código fuente C y/o C++ generado por UNFUZZY.

4.1. Generalidades El propósito de UNFUZZY es brindar al usuario un ambiente de trabajo adecuado para el diseño, simulación e implementación de Sistemas de Lógica Difusa como los definidos en el Capítulo 1.

4.1.1. Requerimientos Los requirimientos de Hardware de UNFUZZY son los mismos que se tienen para Windows95 ó WindowsNT, que son las plataformas sobre las cuales funciona el programa; adicionalmente, se necesitan 2Mb de espacio disponible en disco duro para su instalación básica, 10Mb adicionales si se desean instalar los ejemplos de aplicación, 18Mb adicionales si se desean instalar los archivos del informe escrito, y 12 Mb adicionales para instalar los archivos del código fuente con los recursos.

Page 47: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

45

4.1.2. Instalación Los discos que acompañan a este texto incluyen la versión comprimida (.ZIP) de UNFUZZY; los pasos a seguir para instalar el programa son los siguientes: 1. Cree un nuevo directorio en el disco duro (p.ej. UNFUZZY) 2. Copie desde el disco 1 el archivo PKUNZIP.EXE en ese directorio. 3. Inserte el disco 1 en el drive y ejecute el comando >PKUNZIP -d a:UNFUZZY.ZIP El comando anterior debe descomprimir UNFUZZY.ZIP en los siguientes archivos

UNFUZZY.EXE : versión ejecutable del programa BWCC32.DLL : librería de BorlandC para el manejo de la interfaz

gráfica en 32 bits EJEMPLO.DIF : un primer ejemplo para probar UNFUZZY FUZZY.HPP : archivo con el encabezado de las clases necesarias para

utili zar el código C++ generado por UNFUZZY. FUZZY.CPP : archivo con las funciones de las clases necesarias para

utili zar el código C++ generado por UNFUZZY. EJEMPLO.DIF : un primer ejemplo para probar UNFUZZY. Este

archivo se copia en el subdirectorio EJEMPLOS

4. Si desea instalar los tres ejemplos de aplicación, inserte el disco 2 en el drive y ejecute el comando >PKUNZIP -d a:UNFUZAPL.ZIP. Cuando se le solicite que insertar un nuevo disco, inserte el disco 3.

5. Si desea instalar los archivos del Informe escrito que acompañan al programa, en formato WORD 6.0, inserte el disco 4 en el drive y ejecute el comando >PKUNZIP -d a:UNFUZDOC.ZIP

6. Si desea instalar los archivos con el código fuente, inserte el disco 5 en el drive y ejecute el comando >PKUNZIP -d a:UNFUZSRC.ZIP

7. Desde Windows95 ó Windows NT ejecute el programa UNFUZZY, identificado por el ícono que se muestra en la figura 4.1

Figura 4.1 Ícono de UNFUZZY

Page 48: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

46

4.1.3. Un primer ejemplo En las siguientes líneas se explica cómo leer desde disco un archivo de ejemplo suministrado con UNFUZZY, para tener un contacto inicial con las opciones de diseño y análisis que brinda el programa. Una vez instalado y ejecutado UNFUZZY, aparece en la pantalla una ventana como la que se muestra en la figura 4.2; En la barra de herramientas sólo aparece habilit ada la primer opción, que permite Leer archivos en disco; emplee esta opción para leer el archivo EJEMPLO.DIF, que ha quedado grabado en el directorio en que aparece UNFUZZY\EJEMPLOS; esta operación tambien la puede efectuar con el comando Leer disponible en la opción Archivo del Menú principal.

Figura 4.2 Ventana de UNFUZZY

Despues de Leer Ejemplo.dif, aparece en la pantalla una ventana como la mostrada en la figura 4.3. Este archivo corresponde a un Sistema de Lógica Difusa cuyas principales características son: 1. Número de Variables de Entrada: 3 2. Número de Variables de Salida: 2 3. Número de Reglas en la Base de Reglas : 125 4. Nombre de las Variables de Entrada : Entrada 1 Entrada 2 Entrada 3 5. Nombre de las Variables de Salida : Salida 1 Salida 2 6. Número de Valores Lingüísticos definidos para cada Variable de Entrada: Entrada 1 : 5 Entrada 2 : 5

Page 49: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

47

Entrada 3 : 5 7. Número de Valores Lingüísticos definidos para cada Variable de Salida: Salida 1 : 5 Salida 2 : 5 8. Tipo de difusores empleados para cada Variable de Entrada: Entrada 1 : Singlenton Entrada 2 : Singlenton Entrada 3 : Singlenton 9. Tipo de Concresores empleados para cada Variable de Salida Salida 1 : Altura Salida 2 : Altura 10. Principales operadores matemáticos empleados: AND : mímino Composición : max-mínimo Implicación : mínimo Unión : máximo

Figura 4.3 Ventana de Trabajo - Archivo EJEMPLO.DIF

Page 50: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

48

Figura 4.4 Barra de Herramientas de UNFUZZY

4.1.3.1.Primeros cálculos El ejemplo leido de disco es un Sistema de Lógica Difusa previamente diseñado; quizás lo primero que el usuario desee hacer sea calcular cuáles son los valores de las salidas para unas ciertas entradas; para ello, el usuario debe efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Calcular del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Calcular, que se muestra en la figura 4.5. Para calcular las salidas concretas del Sistema de Lógica Difusa el usuario debe seguir los siguientes pasos: 1. Informar al programa cuáles son los valores concretos de entrada: para ello

debe efectuar un doble 'cli ck' sobre cada variable de Entrada de la Lista Entradas, con lo que despliega un cuadro de diálogo en el que puede editar el valor de entrada.

1. Hacer 'cli ck' sobre el boton Calcular Como respuestas a estas acciones, UNFUZZY calculará las salidas y las escribirá en la li sta Salidas.

Page 51: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

49

Figura 4.5 Cuadro de Diálogo Calcular

4.1.3.2.Cálculo Paso a Paso Si bien este primer cálculo resume todas las operaciones del Sistema de Lógica Difusa, en ocasiones es deseable tener un conocimiento sobre los pasos intermedios que llevaron a obtener tal resultado; para ello, el usuario debe efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Calcular Paso a Paso del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestraen la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Calcular Paso a Paso, que se muestra en la figura 4.6. Para calcular paso a paso las salidas concretas del Sistema de Lógica Difusa el usuario debe seguir los siguientes pasos: 1. Informar al programa cuáles son los valores concretos de entrada: para ello

debe efectuar un doble 'cli ck' sobre cada variable de Entrada de la Lista Entradas, con lo que despliega un cuadro de diálogo en el que puede editar el valor de entrada.

1. Hacer 'cli ck' sobre el botón Siguiente Paso; como respuesta a esta acción UNFUZZY muestra los Conjuntos Difusos asociados a los Valores Lingüísticos de las Variables de Entrada, y señala el Difusor correpondiente a la entrada definida en el paso anterior. El usuario puede seleccionar la Variable de Entrada que desea visualizar, mediante la li sta Difusor. Adicionalmente, UNFUZZY indica que se ha efectuado el primero de cinco pasos ("Paso 1/5").

Page 52: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

50

1. Hacer 'cli ck' sobre el botón Siguiente Paso; como respuesta a esta acción UNFUZZY muestra las reglas que se activan con los difusores a que se refiere el paso 2. Adicionalmente, UNFUZZY indica que se ha efectuado el segundo de cinco pasos ("Paso 2/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY muestra las funciones de pertenencia de los Conjuntos Difusos producidos como resultado de la inferencia sobre las reglas activadas; El usuario puede seleccionar la Regla que desea visualizar, mediante la li sta Reglas Activas. Adicionalmente, UNFUZZY indica que se ha efectuado el tercero de cinco pasos ("Paso 3/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY muestra la funcion de pertenencia del Conjunto Difuso producido como resultado de la Unión o Intersección de las reglas activadas a que se refiere el paso anterior. Adicionalmente, UNFUZZY indica que se ha efectuado el cuarto de cinco pasos ("Paso 4/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY calcula los valores concretos de las Variables de Salida correpondientes a los valores Concretos de Entradas especificados en el paso 1, y lo muestra en la figura a que hace referencia el paso anterior. Adicionalmente, UNFUZZY indica que se ha efectuado el quinto de cinco pasos ("Paso 5/5").

Los pasos 2 a 6 pueden efectuarse en un sólo paso, empleando el botón Todos los Pasos; El botón Paso Inicial devuelve el cuadro de diálogo a su estado inicial.

Page 53: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

51

Figura 4.6 Cuadro de Diálogo Calcular Paso A Paso

4.1.3.3.Modificaciones al Universo de Entrada En este punto es posible que el usuario esté interesado en averiguar cómo se diseñaron las Variables Lingüísticas de los Universos de Entrada y Salida, y quizás probar sus propios diseños; a continuación se muestra cómo modificar el Universo de Entrada (para modificar el Universo de Salida los pasos son muy similares): el usuario deberá efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Definir Variable del Menú Entradas 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 1. hacer doble 'cli ck' en el figura que representa el Universo de Entrada en la

ventana de Trabajo (ver figura 4.3) Con cualquiera de las tres opciones anteriores se despliega el cuadro de Diálogo Definir Variable de Entrada, que se muestra en la figura 4.7. Las figuras que allí se muestran corresponden a las funciones de pertenencia de los valores lingüísticos de la variable de entrada seleccionada en la li sta Variable,

Page 54: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

52

y su difusor; el usuario puede entonces modificar el diseño del Universo de Entrada de la siguiente forma: 1. Generalidades de las Variables Lingüísticas: Mediante el botón Definir

Variable se pueden modificar tanto el nombre de cada variable, como su Universo de Discurso.

1. Número de Variables de Entrada: Mediante los botones Adicionar Variable y Eliminar Variable se agregan o retiran Variables Lingüísticas.

1. Tipo de difusor: Mediante la li sta difusor se selecciona el difusor de cada Variable Lingüística.

1. Función de pertenencia del difusor: Mediante el botón Definir Difusor se ajusta la función de pertenencia del difusor.

1. Función de pertenencia de un valor Lingüístico: El usuario debe primero seleccionar el Valor Lingüístico deseado mediante la li sta Conjunto (UNFUZZY dibuja con color verde el Conjunto seleccionado); después de lo cuál el usuario puede:

- Editar gráficamente: presionar el botón izquierdo del ratón cuando el cursor está ubicado sobre uno de los puntos de control (marcados por un pequeño cuadrado verde) y arrastrar (con el botón presionado) el punto hasta el lugar deseado.

- Editar los parámetros : Mediante el botón Definir Conjunto. - Modificar el Tipo de Conjunto: Mediante la li sta Tipo de Conjunto. Para ver otras opciones de edición del Universo de Entrada, el lector puede remiti rse al numeral 4.3.1.

Page 55: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

53

Figura 4.7 Cuadro de Diálogo Definir Variable de Entrada

4.1.3.4.Modificaciones a la Base de Reglas Si el usuario está interesado en conocer la Base de Reglas, y en modificarla, entonces deberá efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Reglas del Menú Inferencia 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 1. hacer doble 'cli ck' en el figura que representa la Base de Reglas en la

ventana de Trabajo (ver figura 4.3) Con cualquiera de las tres opciones anteriores se despliega el cuadro de Diálogo Definir Base de Reglas, que se muestra en la figura 4.8. Cada regla se compone de un Antecedente y un Consecuente; las modificaciones que pueden efectuarse son las siguientes:

Page 56: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

54

Modificaciones en el Antecedente: Pueden introducirse Modificadores Lingüísticos en cada uno de los términos del Antecedente; para ello debe seleccionarse el término deseado en la li sta que muestra la Regla, y luego modificar la caja de edición Modificador Lingüístico con la barra de desplazamiento ubicada a la derecha de la caja. Modificaciones en el consecuente: Pueden cambiarse los términos del consecuente; para ello debe seleccionarse el término deseado en la li sta que muestra la Regla, con lo cual la li sta Consecuente muestra los posibles valores lingüísticos que puede tomar el término deseado; el usuario debe escoger el nuevo valor lingüístico. Si el usuario desea cambiar los términos del Antecedente, debe emplear la opción Ir A... (ver numeral 4.3.3.2.5); de esta forma se asegura que no se escriban dos reglas con el mismo Antecedente y distinto Consecuente. Para consultar o modificar otra Regla, el usuario debe emplear las opciones Siguiente, Anterior, o Ir A.... Para ver otras opciones de edición de la Base de Reglas, el lector puede remiti rse al numeral 4.3.3.

Figura 4.8 Cuadro de Diálogo Definir Base de Reglas

Page 57: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

55

4.1.3.5.Modificaciones a la Máquina de Inferencia Si el usuario esté interesado en modificar alguna de las opciones matemáticas de la Máquina de Inferencia, entonces deberá efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Opciones Matemáticas del Menú Inferencia 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 1. hacer doble 'cli ck' en el figura que representa la Máquina de Inferencia en la

ventana de Trabajo (ver figura 4.3) Con cualquiera de las tres opciones anteriores se despliega el cuadro de Diálogo Opciones Matemáticas para los procesos de Inferencia y Concreción, que se muestra en la figura 4.9. Las cuatro li stas que allí aparecen permiten al usuario seleccionar distintos operadores para las funciones AND, la Composición, la Implicación, y para la Unión o Intersección que efectúan algunos Concresores.

Figura 4.9 Cuadro de Diálogo

Opciones Matemáticas para los procesos de Inferencia y Concreción

Page 58: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

56

4.1.3.6.Generación de Tablas La opción de Generación de Tablas permite al usuario crear un archivo de texto en el que se tabulan las salidas concretas para todas las posibles combinaciones de los valores concretos de entrada; para ello el usuario deberá efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Generar Tabla del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Generar Tabla, que se muestra en la figura 4.10. Al empler el botón Generar el programa calculará las salidas concretas para todas las posibles entradas, y creará una tabla que se puede grabar en disco mediante el botón Salvar.

Figura 4.10 Cuadro de Diálogo Generar Tabla

Page 59: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

57

4.1.3.7.Generación de Código Fuente La opción de Generación de Código Fuente permite al usuario crear un archivo de texto con el código fuente C ó C++ necesario para implementar el Sistema de Lógica Difusa diseñado; para ello el usuario deberá efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Generar Código del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Generar Código, que se muestra en la figura 4.11. Al emplear el botón Generar el programa generará el código fuente C ó C++ (según la selección del usuario), que se puede grabar en disco mediante el botón Salvar. Para ver detalles sobre el código fuente generado, el lector puede remiti rse a los numerales 4.4.5. y 4.6.

Figura 4.11 Cuadro de Diálogo Generar Código

Page 60: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

58

4.2. Opciones de Diseño UNFUZZY permite que el usuario seleccione distintos parámetros del Sistema de Lógica Difusa; las Tablas 4.1 a 4.6 resumen estas opciones, clasificándolas en Tipo de Conjuntos Difusos, Tipo de Difusores, Tipo de Concresores, Opciones Matemáticas, Normas e Implicaciones. Implicación AND Composición Unión/Intersección Mínimo Mínimo Mínimo Máximo Producto Producto Producto Suma Acotada Kleene-Dienes Producto Acotado Producto Acotado Suma Drástica Lukasiewcz Producto Drástico Producto Drástico Mínimo Zadeh Famili a Tp Famili a Tp Producto Estocástica Famili a Hamacher Famili a Hamacher Producto Acotado Goguen Famili a Sugeno Famil ia Sugeno Producto Drástico Gödel Famili a Frank Famili a Frank Famili a Tp Aguda Famili a Yager Famili a Yager Famili a Hamacher Famili a Dubois-Prade Famili a Dubois-Prade Famili a Sugeno Famili a Frank Famili a Yager Famili a Dubois-Prade

Tabla 4.1 Opciones de la Máquina de Inferencia

Tipo Descripción15 Tipo L Conjunto Difuso con función de pertenencia

f(x)

,x a

(b x)/(b a),a x b

,x b

=<

− − > >>

î

1

0

Triangulo Conjunto Difuso con función de pertenencia

f(x)

,x a

(x b)/(a b),a x b

(c x)/(c b),b x c

,x c

=

<− − > >− − > >>

î

0

0

Pi Conjunto Difuso con función de pertenencia

15 En esta tabla, a,b,c,d son reales definidos dentro del Universo de Discurso de la Variable Lingüística que contiene al ConjuntoDifuso, que satisfacen a<b<c<d.

Page 61: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

59

f(x)

,x a

(x b)/(a b),a x b

b x c

(d x)/(d c),c x d

,x d

=

<− − > >> >

− − > >>

î

0

1

0

,

Tipo Gamma Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a),a x b

,x b

=<

− − > >>

î

0

1

Tipo Z Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) a x a b

(x b)/(b a) , a b x b

,x b

=

<

− − − > > +

− − + > >>

î

1

1 2 2

2 2

0

2

2

( ) , ( ) /

( ) ( ) /

Campana Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

(x b)/(c b) ,b x b c

(x c)/(c b) , b c x c

,x c

=

<

− − > > +

− − − + > >

− − − > > +

− − + > >>

î

0

2 2

1 2 2

1 2 2

2 2

0

2

2

2

2

( ) ( ) /

( ) ( ) /

( ) ( ) /

( ) ( ) /

PiCampana Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

b x c

(x c)/(d c) ,c x c d

(x d)/(d c) , c d x d

,x d

=

<

− − > > +

− − − + > >> >

− − − > > +

− − + > >>

î

0

2 2

1 2 2

1

1 2 2

2 2

0

2

2

2

2

( ) ( ) /

( ) ( ) /

,

( ) ( ) /

( ) ( ) /

Tipo S Conjunto Difuso con función de pertenencia

f(x)

,x a

(x a)/(b a) ,a x a b

(x b)/(b a) , a b x b

,x b

=

<

− − > > +

− − − + > >>

î

0

2 2

1 2 2

1

2

2

( ) ( ) /

( ) ( ) /

Singlenton Conjunto Difuso con función de pertenencia

f(x),x x

,x x=

≠=

î

0

10

0

Page 62: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

60

Tabla 4.2 Tipos de Conjuntos Difusos Disponibles

Tipo Descripción Triangulo difusor que genera Conjuntos Difusos tipo Triangulo Pi difusor que genera Conjuntos Difusos tipo Pi Campana difusor que genera Conjuntos Difusos tipo Campana PiCampana difusor que genera Conjuntos Difusos tipo PiCampana Singlenton difusor que genera Conjuntos Difusos tipo Singlenton

Tabla 4.3 Tipos de Difusores Disponibles

Tipo Descripción Mínimo T_Norma definida por la relación

f x y min x y( , ) ( , )=

Producto T_Norma definida por la relación f x y xy( , ) =

Producto Drastico T_Norma definida por la relación

f x y

x y

y x

x ANDy

( , )

,

,

,

===≠ ≠

î

1

1

0 1 1

Producto Acotado T_Norma definida por la relación f x y max x y( , ) ( , )= + −0 1

Famili a Tp T_Norma definida por la relación

[ ]f x y x y x y

p

p p p p p( , ) ( ) ( ) ( ) * ( )

/= − − + − − − −

∈ ℜ

1 1 1 1 11

Familia Hamacher T_Norma definida por la relación

f x yxy

p p x y xy

p

( , )( )( )

=+ − + −

≥1

0

Famili a Sugeno T_Norma definida por la relación f x y min x y p xy

p

( , ) ( , )= + + −≥ −

1

1

Famili a Frank T_Norma definida por la relación

f x yp p

p

p

p

x y

( , ) log( )( )

= +− −

>

11 1

1

0

Famili aYager T_Norma definida por la relación

f x y min a b

p

p p p( , ) ( , (( ) ( ) ) )/= − − + −≥

1 1 1 1

0

1

Famili a Dubois-Prade T_Norma definida por la relación

Page 63: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

61

f x yxy

max x y p

p

( , )( , , )

=

≤ ≤0 1

Máximo T_Norma definida por la relación f x y max x y( , ) ( , )=

Suma Acotada T_Norma definida por la relación f x y min x y( , ) ( , )= +1

Suma Drástica T_Norma definida por la relación

f x y

x y

y x

x ANDy

( , )

,

,

,

===≠ ≠

î

0

0

1 1 1

Tabla 4.4 Tipos de Normas Disponibles

Tipo Descripción Producto Implicación de Ingeniería definida por la relación

f x y xy( , ) =

Mínimo Implicación de Ingeniería definida por la relación f x y min x y( , ) ( , )=

Kleene Dienes Implicación Lógica definida por la relación f x y x y( , ) max( , )= −1

Lukasiewicz Implicación Lógica definida por la relación f x y min x y( , ) ( , )= − +11

Zadeh Implicación Lógica definida por la relación f x y max min x y x( , ) ( ( , ), )= −1

Estocástica Implicación Lógica definida por la relación f x y max x xy( , ) ( , )= −1

Goguen Implicación Lógica definida por la relación

f x y miny

x( , ) ( , )= 1

Godel Implicación Lógica definida por la relación

f x yx y

y x y( , )

,

,=

≤>

î

1

Aguda Implicación Lógica definida por la relación

f x yx y

x y( , )

,

,=

≤>

î

1

0

Tabla 4.5 Tipos de Implicaciones Disponibles

Tipo Descripción16

16 En esta tabla se supone que el Motor de Inferencia produce m Conjuntos Difusos para la Variable de Salida en cuestión, que está definida sobre un Universo de Discurso U; cada uno de los m conjuntos tiene una función de

Page 64: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

62

Primer Máximo Concresor definido por la expresión

{ }y y U y yy U

B* inf | ( ) sup ( )= ∈ =

∈µ µ

Último Máximo Concresor definido por la expresión

{ }y y U y yy U

B* sup | ( ) sup ( )= ∈ =

∈µ µ

Media De Máximos Concresor definido por la expresión

{ }{ }

y y U y y

y y U y y

yy y

y UB

y UB

*

*

** *

inf | ( ) sup ( )

sup | ( ) sup ( )

( )

1

2

1 2

2

= ∈ =

= ∈ =

= +

µ µ

µ µ

Centro De Gravedad Concresor definido por la expresión

y

y y dy

y dy

BU

BU

*

( )

( )=

∫∫

µ

µ

Altura Concresor definido por la expresión

y

y y

y

y centroAltura i

i

Bi

i

i

m

Bi

i

i

m

i

*

( )

( )

( )

=

=

=

=

µ

µ

1

1

centroAltura(i) es un parámetro del Conjunto Difuso de la Variable de Salida, que corresponde al Consecuente de la regla i; dicho parámetro intenta representar el centro del Conjunto Difuso.

Tabla 4.6 Tipos de Concresores Disponibles

4.3. Diseño d e un Sistema de Lóg ica Difusa Para iniciar el diseño de un Sistema de Lógica Difusa, el usuario deberá seleccionar la opción Nuevo del Menú Archivo, con lo cual aparecerá una ventana como la mostrada en la figura 4.12; Esta ventana difiere de la que se muestra en la figura 4.3, porque las figuras que representan a los Universos de

pertenencia uBi(y), i=1,2,..m . Si el Concresor efectúa la Unión o la Intersección de los m conjuntos, el resultado es un Conjunto Difuso B que tiene función de pertenencia uB(y).

Page 65: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

63

Entrada y Salida, así como la de la Base de Reglas muestran que éstos no han sido diseñados aún.

Figura 4.12 Ventana de UNFUZZY para un Nuevo Sistema de Lógica Difusa

El usuario debe entonces efectuar un proceso de cinco Pasos: 1. Diseñar el Universo de Entrada 1. Diseñar el Universo de Salida 1. Diseñar la Base de Reglas 1. Diseñar la Máquina de Inferencia 1. Asignar un comentario descriptivo El orden en el que se deben efectuar estos pasos sólo está regido por las siguientes reglas: 1. "El diseño de la base de reglas debe ser posterior al diseño de los

Universos de Entrada y de Salida". 1. "Algunos cambios en los Universos de Entrada o de Salida (como el

número de Valores Lingüísticos de alguna variable) implican una redefinición de la Base de Reglas".

A continuación se presentan los cinco pasos arriba mencionados.

4.3.1. Paso 1 : Diseño del Universo de Entrada

Page 66: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

64

El diseño del Universo de Entrada consiste en la definición de las Variables Lingüísticas que lo forman, y de los difusores que acompañan a éstas. UNFUZZY permite emplear tres caminos distintos para efectuar esta definición:

4.3.1.1.Autodefinición de Universo Recto: Con esta opción el usuario define cuántas Variables Lingüísticas desea en su Universo de Entrada, y cuántos Valores lingüísticos desea para cada una de ellas (todas las Variables tendrán igual número de Valores). Para ello el usuario debe ejecutar el Comando Autodefinir Universo Recto del Menú Entradas, con lo cual se despliega el cuadro de Diálogo Autodefinición de Universos, que se muestra en la figura 4.13. UNFUZZY define entonces cada Variable Lingüística con las siguientes especificaciones: Nombre: Variable i (i es el número de la variable) Universo de Discurso : [-1,1] Intervalos de Evaluación : (n+1)*5 (n es el número de Valores Lingüísticos) Tipo de Difusor : Singlenton Valores Lingüísticos: Nombre : Conjunto j (j es el número del Conjunto) Tipo : Triángulo para todos, salvo para el primero y el último, que son tipo L y Gamma respectivamente. Soporte : [-1+(j-1)(1-(-1))/(n+1) , -1+(j+1)(1-(-1))/(n+1)] (j es el número del Conjunto, y n es el número de Valores Lingüísticos))

Figura 4.13 Cuadro de Diálogo Autodefinición de Universos

Page 67: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

65

4.3.1.2.Autodefinición de Universo Curvo: Esta opción es similar a la anterior, salvo por la forma de los Conjuntos Difusos. Con esta opción el usuario define cuántas Variables Lingüísticas desea en su Universo de Entrada, y cuántos Valores lingüísticos desea para cada una de ellas (todas las Variables tendrán igual número de Valores). Para ello el usuario debe ejecutar el Comando Autodefinir Universo Recto del Menú Entradas, con lo cual se despliega el cuadro de Diálogo Autodefinición de Universos, que se muestra en la figura 4.13. UNFUZZY define entonces cada Variable Lingüística con las siguientes especificaciones: Nombre: Variable i (i es el número de la variable) Universo de Discurso : [-1,1] Intervalos de Evaluación : (n+1)*5 (n es el número de Valores Lingüísticos) Tipo de Difusor : Singlenton Valores Lingüísticos: Nombre : Conjunto j (j es el número del Conjunto) Tipo : Campana para todos, salvo para el primero y el último, que son tipo Z y S respectivamente. Soporte : [-1+(j-1)(1-(-1))/(n+1) , -1+(j+1)(1-(-1))/(n+1)] (j es el número del Conjunto, y n es el número de Valores Lingüísticos))

4.3.1.3.Definición de cada Variable Lingüística Las opciones de Autodefinición de Universo Recto y Autodefinición de Universo Curvo permiten efectuar una definición rápida, pero tiene como inconveniente que UNFUZZY decide por el usuario todas los factores de diseño. Si el usuario desea alterar esta definición, o si desea desde un comienzo hacer su propia definición, debe entónces efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Definir Variable del Menú Entradas 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 1. hacer doble 'cli ck' en el figura que representa al Universo de Entrada en la

ventana de Trabajo (ver figura 4.12) Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Variables del Universo de Entrada, que se muestra en la figura 4.14. La información que se despliega en ese Cuadro de Diálogo corresponde a la

Page 68: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

66

Variable Lingüística seleccionada en la li sta Nombre de la Variable. Si no se ha definido previamente ningún Universo de Entrada, en esta li sta sólo debe aparecer la Variable Entrada 1. En el Cuadro de Diálogo sobresalen dos figuras, una de ellas con el título "Entrada 1", y la otra con el título "Difusor"; la primera corresponde a las funciones de pertenencia de los valores lingüísticos de la variable de entrada seleccionada en la li sta Nombre de la Variable, y la segunda a la función de pertenencia de su difusor.

Figura 4.14 Cuadro de Diálogo Definir Variable de Entrada

Para modificar el diseño del Universo de Entrada el usuario tiene las siguientes opciones:

4.3.1.3.1.Definir Variable:

Page 69: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

67

El botón Definir Variable invoca el cuadro de diálogo que se muestra en la figura 4.15. El usuario puede entonces modificar: Nombre: Es una etiqueta que se asigna a la Variable Lingüística Valor Mínimo: es el límite inferior del Universo de Discurso de la Variable Lingüística Valor Máximo: es el límite superior del Universo de Discurso de la Variable Lingüística Intervalos de Evaluación: es el número de Intervalos en el que UNFUZZY fraccionará el Universo de Discurso de las variables de Entrada, cuando se emplee la opción Generar Tabla (ver numeral 4.4.4)

Figura 4.15 Cuadro de Diálogo Definción de Variable

4.3.1.3.2.Insertar Variable

El botón Insertar Variable permite adicionar una variable Lingüística más al Universo de Entrada; para ello, invoca el mismo cuadro de diálogo de la figura 4.15, autodefine tres valores lingüísticos con conjuntos difusos de forma recta, y asigna un difusor Singlenton. La nueva Variable se ubica a continuación de la que en ese momento esté seleccionada en la li sta Nombre de la Variable.

4.3.1.3.3.Eliminar Variable

El botón Eliminar Variable permite eliminar una variable Lingüística del Universo de Entrada; UNFUZZY solicitá una confirmación antes de proceder a eliminarla.

Page 70: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

68

4.3.1.3.4.Tipo de Difusor

Mediante la li sta Difusor se puede modificar el tipo de Difusor asociado a la Variable Lingüística de Entrada.

4.3.1.3.5.Definir Difusor

El Difusor es un Conjunto Difuso cuyo centro cambia con cada Entrada Concreta, pero cuya forma se mantiene. El botón Definir Difusor permite modificar los parámetros que definen la forma del Conjunto Difuso; para ello invoca un cuadro de diálogo como el que se muestra en la figura 4.16. El cuadro de diálogo puede tener una apariencia diferente, dependiendo del tipo de Difusor que se haya seleccionado (ver numeral 4.3.1.3.4).

Figura 4.16 Cuadro de Diálogo Definir Difusor

4.3.1.3.6.Puntos de Evaluación

En el proceso de Inferencia, UNFUZZY debe efectuar la composición de la función de pertenencia de los conjuntos producidos por los Difusores, y las funciones de pertenecia asociadas a las implicaciones (ver numeral 1.2.4); Para calcular esta composición, debería evaluarse el máximo sobre todos los valores de los Universos de Discurso de las Entradas, sin embargo, el máximo sólo puede presentarse en los soportes de los conjuntos producidos por los difusores; es por ello que UNFUZZY sólo evalúa en estos soportes, y la

Page 71: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

69

evaluación la hace sobre un conjunto finito de puntos, que el usuario puede determinar mediante el botón Puntos de Evaluación. Al emplear este botón se abre un Cuadro de Diálogo como el que se muestra en la figura 4.17.

Figura 4.17 Cuadro de Diálogo Puntos de Evaluación

4.3.1.3.7.Edición gráfica de los Valores Lingüísticos

Uno de los Conjuntos Difusos cuyas funciones de pertenencia se muestran en el Cuadro de Diálogo está dibujado en color verde, mientras los demás lo están en amarill o. El conjunto en verde corresponde al seleccionado en la li sta Nombre del Conjunto; este conjunto presentará varios Puntos de Control, señalizados por un pequeño cuadrado de color verde; el número de puntos de control y su ubicación dependen del Tipo de Conjunto. Si el usuario ubica el ratón en uno de los puntos de control y presiona el botón izquierdo, notará que el cursor cambia de apariencia; si ahora el usuario arrastra el ratón y luego libera el botón izquierdo, notará que la función de pertenencia del conjunto ha sido modificada. De esta forma, puede tenerse una edición gráfica de los Conjuntos Difusos asociados a cada Valor Lingüístico.

4.3.1.3.8.Definir Conjunto

El botón Definir Conjunto invoca un cuadro de diálogo como el que se muestra en la figura 4.16; el cuadro puede tener una apariencia diferente según sea el Tipo de Conjunto seleccionado en la li sta Nombre del Conjunto (el mismo que se presenta en color verde). El usuario puede entonces modificar a dicho conjunto: Nombre: Es una etiqueta que se asigna a la Variable Lingüística Parámetros: son los valores que determinan la forma de la función de pertenencia, y cuyo significado se muestra en la figura del Cuadro de Diálogo. El número de parámetros depende del tipo de Conjunto.

Page 72: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

70

En el mismo Cuadro de Diálogo se muestran los valores mínimo y máximo del Universo de Discurso de la Variable Lingüística; estos valores no pueden modificarse aquí, pero sirven de referencia para la definición de los parámetros.

4.3.1.3.9.Insertar Conjunto

El botón Insertar Conjunto permite adicionar un Valor Lingüístico más a la Variable Lingüística; para ello, invoca el cuadro de diálogo de la figura 4.18. El usuario puede entonces seleccionar un nombre y un Tipo de Conjunto para el valor Lingüístico.

Figura 4.18 Cuadro de Diálogo Insertar Conjunto

4.3.1.3.10.Eliminar Conjunto

El botón Eliminar Conjunto permite eliminar un Valor Lingüístico de la variable lingüística; UNFUZZY solicitá una confirmación antes de proceder a eliminarla.

4.3.1.3.11.Tipo de Conjunto

Mediante la li sta Tipo de Conjunto el usuario puede modificar la forma de la función de pertenencia del conjunto seleccionado en la li sta Nombre del Conjunto (el mismo que se presenta en color verde).

Page 73: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

71

4.3.1.3.12.Autodefinir Variable

El botón Autodefinir permite efectuar una definición rápida de los Valores Lingüísticos de la Variable; para ello invoca el cuadro de diálogo que se muestra en la figura 4.19, para que el usuario decida cuántos Valores desea, y si los quiere con funciones de pertenencia de forma recta o curva; a continuación UNFUZZY efectuará una definición similar a la explicada en los numerales 4.3.1.1 y 4.3.1.2, pero sólo para la Variable Lingüística seleccionada en la li sta Nombre de la variable.

Figura 4.19 Cuadro de Diálogo Autodefinición de Variables

4.3.2. Paso 2: Diseño del Universo de Salida: El diseño del Universo de Salida consiste en la definición de las Variables Lingüísticas que lo forman, y de los concresores que acompañan a éstas. UNFUZZY permite emplear tres caminos distintos para efectuar esta definición, que son del todo análogos a empleados para definir el Universo de Entrada (ver numeral 4.3.1). Las diferencias existentes en las definiciones de los dos Universos son las siguientes:

4.3.2.1.Autodefinición de Universos Rectos o Curvos A cada variable de Salida se le asigna un concresor del tipo Altura, en lugar de un difusor.

Page 74: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

72

4.3.2.2.Intervalos de Evaluación El item Intervalos de Evaluación al que se hace referencia en el numeral 4.3.1.3.1 tiene un significado diferente para las variables de Salida: Este intervalo se refiere a la discretización que UNFUZZY hará para calcular el valor concreto de los conjuntos difusos producidos por el Motor de Inferencia.

4.3.2.3.Concresores en lugar de Difusores Como las variables de salida no requieren de difusores, se han eliminado las opciones a que hacen referencia los numerales 4.3.1.3.4, 4.3.1.1.5 y 4.3.1.3.6; en su lugar se ha incluido una li sta Concresor, con la que el usuario puede seleccionar el tipo de Concresor asociado a cada Variable Lingüística de Salida.

4.3.3. Paso 3: Diseño de la Base de Reglas El diseño de la Base de Reglas consiste en la definición de un conjunto de reglas, cada una de las cuales está conformada por un Antecedente y un Consecuente; éstos, a su vez, están definidos por términos de la fórma Variable Lingüística i es Valor Lingüístico j; en donde Variable Lingüística i es una de las variables que forman parte del Universo de Entrada (si se trata de un Antecedente) o de Salida (si se trata de un consecuente), y Valor Lingüístico j es uno de los Valores que puede tomar Variable Lingüística i; adicionalmente, cada término del Antecedente puede estar acompañado de un Modificador Lingüístico (que por defecto es 1.0), cuyo significado será el de adicionar el cali ficativo muy (si es mayor que 1.0) o poco (si es menor que 1.0). Para definir la Base de Reglas, el usuario tiene dos posibles caminos:

4.3.3.1.Definición Rápida Con esta opción UNFUZZY ayuda al usuario a definir una Base de Reglas de forma rápida; para utili zar esta opción, el usuario debe ejecutar el Comando Definición Rápida del Menú Inferencia, con lo cual se despliega el cuadro de

Page 75: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

73

Diálogo Definición Rápida de Reglas, que se muestra en la figura 4.20. Con este Cuadro el usuario puede efectuar las siguientes tareas:

Figura 4.20 Cuadro de Diálogo Definición Rápida de Reglas

4.3.3.1.1.Definición de una base completa de reglas

Al emplear el botón Definir Conjunto Completo de Reglas UNFUZZY borra todas las reglas existentes en la base, y crea una Base con tantas Reglas como posibles combinaciones de los Valores Lingüisticos de las variables de Entrada sean posibles, y asigna a cada Regla un antecedente con cada una de dichas combinaciones; otras características de la Base creada son las siguientes:

- Los Modificadores Lingüísticos de todos los términos de los Antecedentes de todas las Reglas se asignan en 1.0. - Todos los términos de los Consecuentes de todas las reglas se asignan en el primer Valor Lingüístico de la variable de Salida correspondiente.

4.3.3.1.2.Definición de una base con tendencia creciente

Al emplear el botón Tendencia Creciente UNFUZZY efectúa una operación sobre todas las reglas definidas en ese momento, para asignar los términos de los Consecuentes que se relacionan con la variable de salida seleccionada en la

Page 76: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

74

li sta Variable de Salida, según un algoritmo interno que intenta incrementar el Valor Lingüístico de Salida, conforme se incrementan los Valores Lingüísticos de las Entradas.

4.3.3.1.3.Definición de una base con tendencia decreciente

Al emplear el botón Tendencia Decreciente UNFUZZY efectúa una operación sobre todas las reglas definidas en ese momento, para asignar los términos de los Consecuentes que se relacionan con la variable de salida seleccionada en la li sta Variable de Salida, según un algoritmo interno que intenta incrementar el Valor Lingüístico de Salida, conforme se decrementan los Valores Lingüísticos de las Entradas.

4.3.3.1.4.Definición de una base con tendencia constante

Al emplear el botón Tendencia Constante UNFUZZY efectúa una operación sobre todas las reglas definidas en ese momento, para asignar los términos de los Consecuentes que se relacionan con la variable de salida seleccionada en la li sta Variable de Salida, fijándolo en el Valor Lingüístico que este seleccionado en la li sta que aparece en el Cuadro de Diálogo.

4.3.3.2.Definición de Cada Regla Con esta opción UNFUZZY ayuda al usuario a definir una a una las Reglas que forman la Base; para utili zar esta opción, el usuario debe efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Reglas del Menú Inferencia 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 1. hacer doble 'cli ck' en el figura que representa la Base de Reglas en la

ventana de Trabajo (ver figura 4.3) Con cualquiera de las tres opciones anteriores se despliega el cuadro de Diálogo Definición de las Reglas de la Máquina de Inferencia, que se muestra en la figura 4.21. En la parte superior del Cuadro de Diálogo se muestra el número de la regla cuya información se está desplegando, y el número total de reglas definidas en la Base. En la li sta principal del Cuadro se despliga la Regla, empleando un renglón para cada uno de los términos del Antecedente y

Page 77: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

75

del Consecuente; hay también dos renglones "muertos" empleados por las palabras IF y THEN, que sirven de encabezados al Antecedente y el Consecuente, respectivamente.

Figura 4.21 Cuadro de Diálogo Definición de Reglas

Las opciones que permite el Cuadro de Diálogo son las siguientes

4.3.3.2.1.Modificaciones en el Antecedente

Pueden introducirse Modificadores Lingüísticos en cada uno de los términos del Antecedente; para ello debe seleccionarse el término deseado en la li sta que muestra la Regla, y luego modificar la caja de edición Modificador Lingüístico con la barra de desplazamiento ubicada a la derecha de la caja.

4.3.3.2.2.Modificaciones en el Consecuente

Pueden cambiarse los términos del consecuente; para ello debe seleccionarse el término deseado en la li sta que muestra la Regla, con lo cual la li sta Consecuente muestra los posibles valores lingüísticos que puede tomar el término deseado; el usuario debe escoger el nuevo valor lingüístico.

Page 78: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

76

4.3.3.2.3.Siguiente Regla

El botón Siguiente despliega la información correspondiente a la siguiente Regla en la Base

4.3.3.2.4.Anterior Regla

El botón Anterior despliega la información correspondiente a la anterior Regla en la Base

4.3.3.2.5.Ir A....

El botón Ir A... permite ubicar rápidamente una regla dentro de la base y/o adicionar nuevas reglas, para ello despliega el cuadro de diálogo Ir a... que se muestra en la figura 4.22; La regla se identifica por los términos del Antecedente, por lo tanto en este Cuadro de Diálogo no se incluye la información del Consecuente.

Figura 4.22 Cuadro de Diálogo Ir A...

Para buscar una regla el usuario puede ubicarla por su número, mediante la caja de edición Número de Regla, o mediante los términos del Antecedente así:

Page 79: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

77

1. Seleccione el primer término del Antecedente en la li sta Antecedente; al efectuar esta operación UNFUZZY desplegará los posibles Valores Lingüísticos asociados a la Variable Lingüística del primer término en la li sta Conjuntos.

1. Seleccione el Valor Lingüístico deseado para el primer término, en la li sta Conjuntos.

1. Repita los pasos 1 y 2 con todos los términos del Antecedente. 1. Emplee el botón Buscar Regla Como respuesta al último paso, UNFUZZY intentará ubicar en la Base de Reglas cuál es la Regla cuyo antecedente coincide con el que se muestra en la li sta Antecedente; si no encuentra tal regla, le preguntará al usuario si desea adicionarla a la Base. De lo anterior es claro que para adicionar una regla, primero debe buscarse en la Base, y si no existe, entonces aceptar cuando UNFUZZY le pregunte si desea adicionarla.

4.3.3.2.6.Eliminar Regla

El botón Eliminar Regla elimina la regla actual de la base de reglas.

4.3.3.2.7.Eliminar Todas

El botón Eliminar Todas elimina todas las reglas de la base de reglas; siempre subsistirá una regla, con lo que se impide que el programa entre en inconsistencias internas.

4.3.4. Paso 4: Diseño del Motor de Inferencia El diseño de la Máquina de Inferencia consiste en la selección de los operadores matemáticos que debe emplear para los distintos cálculos internos. Para llevar a acabo esta operación el usuario deberá efectuar una cualquiera de las siguientes tres operaciones: 1. Ejecutar el Comando Opciones Matemáticas del Menú Inferencia 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4

Page 80: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

78

1. hacer doble 'cli ck' en el figura que representa la Máquina de Inferencia en la ventana de Trabajo (ver figura 4.3)

Con cualquiera de las tres opciones anteriores se despliega el cuadro de Diálogo Opciones Matemáticas, que se muestra en la figura 4.23. Las cuatro li stas que allí aparecen permiten al usuario seleccionar distintos operadores para las funciones AND, la Composición, la Implicación, y para la Unión o Intersección que efectúan algunos Concresores. Al seleccionar algunas de las opciones (las famili as de T_Normas) UNFUZZY preguntará al usuario por un parámetro que permite especificar completamente el operador (ver numeral 4.2)

Figura 4.23 Cuadro de Diálogo Opciones Matemáticas

4.3.5. Paso 5: Comentario Descriptivo Para asignar un breve comentario descriptivo el usuario debe seleccionar la opción Descripción del menú Archivo, con lo cual se desplegará un Cuadro de Diálogo para que el usuario escriba un comentario de máximo 80 caracteres; dicho comentario se desplegará en la ventana de trabajo del Sistema de Lógica Difusa.

Page 81: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

79

4.4. Análisis e implementación d e un Sistema de Lóg ica Difusa

Para acceder a las opciones de análisis e implementación, el usuario deberá haber completado el proceso de diseño descrito en el numeral 4.3, luego de lo cual el usuario tendrá las siguientes posibili dades:

4.4.1. Cálculo de Salidas Esta opción permite calcular cuáles son los valores concretos de las Variables de Salida para unos ciertos valores concretos de las Variables de entrada; para ello, el usuario debe efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Calcular del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestraen la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Calcular, que se muestra en la figura 4.24. Para calcular las salidas concretas del Sistema de Lógica Difusa el usuario debe seguir los siguientes pasos: 1. Informar al programa cuáles son los valores concretos de entrada: para ello

debe efectuar un doble 'cli ck' sobre cada variable de Entrada de la Lista Entradas, con lo que despliega un cuadro de diálogo en el que puede editar el valor de entrada.

1. Hacer 'cli ck' sobre el boton Calcular como respuestas a estas acciones, UNFUZZY calculará las salidas y las escribirá en la li sta Salidas.

Page 82: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

80

Figura 4.24 Cuadro de Diálogo Calcular

4.4.2. Cálculo Paso a Paso Esta opción permite calcular cuáles son los valores concretos de las Variables de Salida para unos ciertos valores concretos de las Variables de entrada, mostrando los pasos intermedios que llevaron a obtener tal resultado; para acceder a esta opción el usuario debe efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Calcular Paso a Paso del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestraen la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Calcular Paso a Paso, que se muestra en la figura 4.25. Para calcular paso a paso las salidas concretas del Sistema de Lógica Difusa el usuario debe seguir los siguientes pasos: 1. Informar al programa cuáles son los valores concretos de entrada: para ello

debe efectuar un doble 'cli ck' sobre cada variable de Entrada de la Lista Entradas, con lo que despliega un cuadro de diálogo en el que puede editar el valor de entrada.

1. Hacer 'cli ck' sobre el botón Siguiente Paso; como respuesta a esta acción UNFUZZY muestra los Conjuntos Difusos asociados a los Valores Lingüísticos de las Variables de Entrada, y señala el Difusor correpondiente a la entrada definida en el paso anterior. El usuario puede seleccionar la Variable de Entrada que desea visualizar, mediante la li sta Difusor.

Page 83: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

81

Adicionalmente, UNFUZZY indica que se ha efectuado el primero de cinco pasos ("Paso 1/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso; como respuesta a esta acción UNFUZZY muestra las reglas que se activan con los difusores a que se refiere el paso 2. Adicionalmente, UNFUZZY indica que se ha efectuado el segundo de cinco pasos ("Paso 2/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY muestra las funciones de pertenencia de los Conjuntos Difusos producidos como resultado de la inferencia sobre las reglas activadas; El usuario puede seleccionar la Regla que desea visualizar, mediante la li sta Reglas Activas. Adicionalmente, UNFUZZY indica que se ha efectuado el tercero de cinco pasos ("Paso 3/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY muestra la funcion de pertenencia del Conjunto Difuso producido como resultado de la Unión o Intersección de las reglas activadas a que se refiere el paso anterior. Adicionalmente, UNFUZZY indica que se ha efectuado el cuarto de cinco pasos ("Paso 4/5").

1. Hacer 'cli ck' sobre el botón Siguiente Paso como respuesta a esta acción UNFUZZY calcula los valores concretos de las Variables de Salida correpondientes a los valores Concretos de Entradas especificados en el paso 1, y lo muestra en la figura a que hace referencia el paso anterior. Adicionalmente, UNFUZZY indica que se ha efectuado el quinto de cinco pasos ("Paso 5/5").

Los pasos 2 a 6pueden efectuarse en un sólo paso, empleando el botón Todos los Pasos; El botón Paso Inicial devuelve el cuadro de diálogo a su estado inicial.

Page 84: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

82

Figura 4.25 Cuadro de Diálogo Calcular Paso A Paso

4.4.3. Función de Transferencia La opción de Función de Transferencia permite al usuario visualizar la relación existente entre las Entradas y las Salidas; para ello el usuario deberá efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Función de Transferencia del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Función de Transferencia, que se muestra en la figura 4.26. Debido a que es imposible graficar simultáneamente la relación existente entre varias entradas y varias salidas, UNFUZZY muestra la relación de una Variable de Salida contra una Variable de Entrada, fijando las demás entradas en valores que el usuario puede determinar.

Page 85: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

83

Figura 4.26 Cuadro de Diálogo Función de Transferencia

Las opciones que brinda el Cuadro de Diálogo Función de Transferencia son las siguientes

4.4.3.1.Selección de Entrada Mediante la li sta Entradas el usuario selecciona la Variable de Entrada que quiere relacionar en la gráfica; al efectuar una nueva selección, se borran las gráficas existentes.

4.4.3.2.Selección de Salida Mediante la li sta Salidas el usuario selecciona la Variable de Salida que quiere relacionar en la gráfica; al efectuar una nueva selección, se borran las gráficas existentes.

4.4.3.3.Entradas fijas

Page 86: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

84

Al efectuar doble 'cli ck' sobre la li sta Entradas Fijas el usuario podrá modificar los valores fijos de las entradas que no es está relacionando en la gráfica; Estos valores también pueden modificarse empleando la barra de desplazamiento que se encuentra a la derecha de la li sta Entradas Fijas.

4.4.3.4.Calcular Esta opción grafica la relación existente entre la Variable de Salida seleccionada en la li sta Salidas, y la Variable de Entrada seleccionada en la li sta Entradas; si se utili za esta opción varias veces, en cada ocasión se graficará con un color distinto, de forma tal que se puedan visualizar famili as de curvas.

4.4.3.5.Limpiar Esta opción permite borrar las gráficas existentes en ese momento.

4.4.4. Generación de Tablas Entrada-Salida La opción de Generación de Tablas permite al usuario crear un archivo de texto en el que se tabulan las salidas concretas para todas las posibles combinaciones de los valores concretos de entrada; para ello el usuario deberá efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Generar Tabla del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Generar Tabla, que se muestra en la figura 4.27. Al emplear el botón Generar el programa calculará las salidas concretas para todas las posibles entradas, y creará una tabla que se puede grabar en disco mediante el botón Salvar. Para determinar cuáles son las posibles combinaciones de los valores concretos de la Variables de Entrada, UNFUZZY efectúa una discretización de los Universos de Discurso de las Variables Lingüísticas de Entrada, empleando tantos Intervalos de Discretización como haya decidido el usuario en el Cuadro de Diálogo Definir Variable (ver numeral 4.3.1.3.1).

Page 87: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

85

Figura 4.27 Cuadro de Diálogo Generar Tabla

4.4.5. Generación de Código Fuente La opción de Generación de Código Fuente permite al usuario crear un archivo de texto con el código fuente C ó C++ necesario para implementar el Sistema de Lógica Difusa diseñado; para ello el usuario deberá efectuar una cualquiera de las siguientes dos operaciones: 1. Ejecutar el Comando Generar Código del Menú Analizador 1. Utili zar el Ícono de la Barra de Herramientas que se muestra en la figura 4.4 Con cualquiera de las dos opciones anteriores se despliega el cuadro de Diálogo Generar Código, que se muestra en la figura 4.28. Al emplear el botón Generar el programa generará el código fuente C ó C++ (según la selección del usuario), que se puede grabar en disco mediante el botón Salvar.

Page 88: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

86

Figura 4.28 Cuadro de Diálogo Generar Código

Si el usuario ha seleccionado la opción Codigo C++ , entonces UNFUZZY le preguntará por el nombre que le desea asignar a una Clase en la que se encapsulará todo el comportamiento del Sistema de Lógica Difusa; por defecto, UNFUZZY asigna a dicha Clase el nombre MiSistema. El numeral 4.6 presenta algunos aspectos a tener en cuenta sobre la utili zación del código fuente C y C++ generado por UNFUZZY.

4.5. Entrenamiento de un Sistema de Lóg ica Difusa La opción de Entrenamiento de un Sistema de Lógica Difusa permite al usuario emplear los algoritmos presentados en el numeral 1.3, utili zando como datos de entrada tablas como la 1.2, que pueden estar previamente almacenadas como archivos de texto; para ello el usuario deberá ejecutar el Comando Entrenamiento del Menú Inferencia, con lo cual se despliega el cuadro de Diálogo Entrenamiento, que se muestra en la figura 4.29.

Page 89: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

87

Figura 4.29 Cuadro de Diálogo Entrenamiento

El procedimiento completo para efectuar el entrenamiento es el siguiente : 1. El usuario debe escribir en el cuadro de diálogo la tabla con los patrones de

entrenamiento, o leerla de un archivo de texto con la opción Leer. El formato en que debe escribirse la tabla es el siguiente 17:

Entrada11 ; Entrada21 ; ... ; Entradap1 ; Salida11 ; Salida21 ; ... ; Salidaq1 ; Entrada12 ; Entrada22 ; ... ; Entradap2 ; Salida12 ; Salida22 ; ... ; Salidaq2 ;

..... Entrada1w ; Entrada2w ; ... ; Entradapw ; Salida1w ; Salida2w ; ... ; Salidaqw ;

2. Utili zar la opción Validar, que permite comprobar si el formato empleado

es el correcto. 2. Seleccionar el algoritmo de entrenamiento deseado (Universos Fijos o

Universos Variables). 2. Seleccionar el Tipo de Algoritmo (Nuevo o Actualiza). Esta selección

consiste en decidir si el entrenamiento debe borrar las definiciones que se hayan hecho con entrenamientos previos, o si por el contrario debe

17 Ver Tabla 1.2

Page 90: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

88

actualizar el diseño del sistema de Lógica Difusa, sin borrar las definiciones previas.

2. Emplear la opción Entrenar, para ejecutar el algoritmo de Entrenamiento. El Algoritmo de Entrenamiento de Universos Variables debe crear nuevos Conjuntos Difusos en cada Variable Lingüística. UNFUZZY toma el primer conjunto de cada Variable, lo reproduce, y lo centra en los valores concretos de los patrones de entrenamiento. De esta forma, el usuario puede decidir qué tipo de Conjuntos quiere que genere el algoritmo, creando un modelo como primer (y si desea único) conjunto de cada Variable Lingüística, antes de ejecutar el algortimo de entrenamiento18.

4.6. Utili zación d el Código Fu ente generado po r UNFUZZY La opción de Generación de Código Fuente que se presenta en el numeral 4.4.5 permite que el usuario disponga de código en lenguaje C y/o C++, para implementar en software el Sistema de Lógica Difusa diseñado. Para poder utili zar este código el usuario debe disponer de un compilador para lenguaje C y/o C++, y tener algunos conocimientos básicos sobre su utili zación, y sobre el lenguaje de programación. Los dos principales objetivos del código fuente generado por UNFUZZY son los siguientes: 1. Permiti r que el software del usuario cree fácilmente (con una sola

instrucción) el Sistema de Lógica Difusa. 1. Permiti r que el sofware del usuario consulte fácilmente (con una sola

instrucción) cuáles son las salidas concretas del Sistema de Lógica Difusa, para unas ciertas entradas concretas.

En el código fuente se incluye tambien una función main() que permite ejempli ficar la utili zación del código, con un pequeño programa para DOS que solicita al usuario por teclado las entradas del Sistema de Lógica Difusa, y entrega las salidas del mismo a través de la pantalla. El código fuente ha sido probado empleando la herramienta de programación BorlandC++ 4.52; no obstante, es posible que para Sistemas de Lógica Difusa complejos (con muchas variables y/o muchas reglas), el compilador arroje

18 Ver numerales 4.3.1.3.7 al 4.3.1.3.11

Page 91: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

89

errores debidos a que algunas funciones resulten excesivamente extensas; en tales casos, el usuario deberá fraccionarlas adecuadamente para no exceder las capacidades del Compilador. También es posible que el encadenador detecte que el código generado exceda el estándar de 64K, en cuyo caso el usuario deberá fraccionar el archivo. A continuación se presentan algunos detalles adicionales sobre el código generado C y C++

4.6.1. Código C El código C generado corresponde a un enfoque de programación estructurada. La concepción del software es tal, que existen algunas variables, estructuras y vectores que son de ámbito global, y existen varias funciones que acceden a dichas variables globales.

4.6.1.1.Estructuras y variables globales: A continuación se presentan las principales variables globales del código C generado por UNFUZZY: 1. define: NUMEROREGLAS : Número total de Reglas NUMEROVARIABLESENTRADA : Número de variables de Entrada NUMEROVARIABLESSALIDA : Número de variables de Salida NUMEROTOTALCONJUNTOSENTRADA : Número de Valores Lingüísticos de Entrada

2. struct conjunto: incluye las siguientes variables char nombre[40] : cadena con el nombre de la variable float minimo : límite inferior del soporte del conjunto float maximo : límite superior del soporte del conjunto variable: incluye las siguientes variables char nombre[40] : cadena con el nombre de la variable float minimo : límite inferiror del Universo de Discurso float maximo : límite superior del Universo de Discurso int intervalos : número de intervalos de discretización float intervalo : intervalo de discretización int numeroConjuntos : número de Valores Lingüísticos de la variable difusor: incluye las siguientes variables float minimo : límite inferior del soporte del conjunto

Page 92: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

90

float maximo : límite superior del soporte del conjunto float centro : centro del difusor float var1 : parámetro de la función de pertenencia del difusor float var2 : parámetro de la función de pertenencia del difusor float var3 : parámetro de la función de pertenencia del difusor float var4 : parámetro de la función de pertenencia del difusor int puntos : Número de puntos de evaluación float intervalo : intervalo de evaluación

3. vectores struct variable VariablesEntrada[NUMEROVARIABLESENTRADA]: Conjunto de variables de Entrada, corresponde al Universo de Entrada. struct variable VariablesSalida[NUMEROVARIABLESSALIDA]: Conjunto de variables de Salida, corresponde al Universo de Salida. struct conjunto Entradas[NUMEROTOTALCONJUNTOSENTRADA]: Conjunto de Valores Lingüísticos del Universo de Entrada struct difusor Difusores[NUMEROTOTALCONJUNTOSENTRADA]: Conjunto de Difusores del Universo de Entrada int Reglas[NUMEROREGLAS][NUMEROVARIABLESENTRADA+NUMEROVARIABLESSALIDA] Base de Reglas float Modificadores[NUMEROREGLAS][NUMEROVARIABLESENTRADA]: Conjunto de Modificadores Lingüísticos de la Base de Reglas float CentrosAltura[NUMEROREGLAS][NUMEROVARIABLESSALIDA]:

Conjunto de los centros de los valores lingüísticos de salida, que se emplean cuando existen concresores tipo Altura.

4.6.1.2.funciones: A continuación se presentan las principales funciones del código C generado por UNFUZZY: void llenarDatos() : esta función crea el Sistema de Lógica Difusa; en rigor, lo que hace es asignar a las variables, estructuras y vectores globales sus valores adecuados. void calcular(float *ent, float * sal): esta función permite calcular cuáles son los valores concretos de salida del Sistema de Lógica Difusa, cuando se especifican unos valores concretos de entrada; los valores de entrada deben estar en el vector ent, y los valores de salida se archivan en el vector sal.

4.6.2. Código C++ El código C++ generado corresponde a un enfoque de programación orientada a objetos. El código genera una clase concreta, cuyo nombre lo decide el usuario (por defecto es MiSistema), de tal manera que el Sistema de Lógica Difusa se genera cuando el software del usuario crea un objeto de esa clase.

Page 93: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

91

Una de las principales ventajas que se tiene al emplear el enfoque orientado a objetos frente al enfoque estructurado, consiste en la facili dad de tener en un mismo programa varios Sistemas de Lógica Difusa, bien sea por tener diferentes instancias de la misma clase generada por UNFUZZY, o porque se tengan instancias únicas de diferentes clases generadas por UNFUZZY, cada una con un nombre diferente. La clase generada hereda funciones y atributos de la clase SistemaDeLogicaDifusa; la declaración de esa clase, y de otras también necesarias se incluye en los archivos fuzzy.hpp y fuzzy.cpp, que se entregan junto con UNFUZZY. Por esta razón el código del usuario debe contener la instrucción #include<fuzzy.hpp> , y debe compilar su código junto con el archivo fuzzy.cpp. Las principales funciones que se heredan de la clase SistemaDeLogicaDifusa son: 1. void calcular(float *entra,float *sale): esta función permite calcular cuáles son los valores concretos de

salida del Sistema de Lógica Difusa, cuando se especifican unos valores concretos de entrada; los valores de entrada deben estar en el vector ent, y los valores de salida se archivan en el vector sal.

1. int numeroEntradas(): retorna en número de Variables de Entrada 1. int numeroSalidas(): retorna el número de Variables de Salida 1. char *nombreVariableEntrada(int numVar): retorna el nombre de la Variable de Entrada de número

numVar 1. char *nombreVariableSalida(int numVar): retorna el nombre de la Variable de Salida de número numVar 1. void EntrenaUniversoFijo(float *antecedente, float *consecuente) : Efectúa el algoritmo de entrenamiento

presentado en el numeral 1.3.1, con los datos de entrenamiento archivados en los vectores antecedente y consecuente

1. void EntrenaUniversoVariable(float *antecedente, float *consecuente) : Efectúa el algoritmo de

entrenamiento presentado en el numeral 1.3.2, con los datos de entrenamiento archivados en los vectores antecedente y consecuente

Debido a que las clases incluidas en los archivos fuzzy.hpp y fuzzy.cpp son versiones resumidas de las mismas clases empleadas para implementar UNFUZZY, se recomienda al lector que desee profundizar en el conocimiento de su diseño, remiti rse a los capítulos 2 y 3.

Page 94: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

92

5. UNFUZZY - EJEMPLOS DE APLICACION Con el fin de ilustrar posibles aplicaciones de UNFUZZY, se han desarrollado los siguientes ejemplos: Control de Péndulo Invertido, Identificación de Plantas y Predicción de Series de Tiempo. En ninguno de los ejemplos se ha pretendido hacer una exploración exhaustiva de los posibles Sistemas de Lógica Difusa, ni tampoco comparar los resultados que se obtendrían con otras estrategias. El único interés consiste en mostrar el modo de empleo de UNFUZZY en estos casos particulares.

5.1. Controlador difuso para el péndu lo invertido Una de las aplicaciones en las que los Sistemas de Lógica Difusa han sido más promocionados, es en el diseño de Controladores. Por esta razón, el primer ejemplo de aplicación de UNFUZZY, que presentamos a continuación, es el diseño de un controlador para regular un sistema inestable, que ha sido objeto de numerosos estudios19, el péndulo invertido.

5.1.1. Planteamiento del problema El péndulo Invertido es un sistema como el que se muestra en la figura 5.1. Se trata de un brazo rígido que puede girar libremente alrededor del punto o, que está montado sobre un móvil que puede desplazarse en el sentido horizontal. La única acción de control que puede efectuarse sobre el sistema es la aplicación de una fuerza U sobre el móvil , en dirección horizontal. Se busca que el brazo se estabili ce en la posición vertical, para distintas condiciones iniciales.

19 Ver. Yamakawa, T. “Stabili zation of an Inverted Pendulum by a High Speed Fuzzy Logic Controller Hardware System”, Fuzzy Sets and Systems, 32(1989) 161-180. Driankov et. Al “An Introduction to Fuzzy Control” , Springer Verlag, pp 138-140. Así como el trabajo de Cordon O. et. al, disponible en Internet http://www.decsai.ugr.es

Page 95: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

93

Figura 5.1 Péndulo Invertido

Las ecuaciones que rigen el sistema pueden derivarse de la aplicación de las leyes de Newton para el móvil y para el brazo (ver figura 5.2):

u H My

I VlSen HlCos

V mg mh

H md

− =

= −

− =

=

� �� �

� �� �

(Suma de fuerzas horizontales en M)

(Suma de torques respecto a m)

(Suma de fuerzas verticales en m)

(Suma de fuerzas horizontales en m)

Θ Θ Θ

[1]

Figura 5.2 Modelo del péndulo

En donde u : Fuerza de Control aplicada H : Reacción horizontal del brazo sobre el móvil V : Reacción vertical del brazo sobre el móvil M : Masa del móvil m : Masa del brazo θ: Ángulo del brazo con la vertical l : distancia del eje al centro de masa del brazo d : posición horizontal del centro de masa del brazo h : posición vertical del centro de masa del brazo g : aceleración de la gravedad y : posición horizontal del móvil I : Momento de Inercia del brazo

A partir de la geometría del problema (ver figura 5.2) se puede obtener : h lCos

d lSen

==

ΘΘ [2]

y por lo tanto

Page 96: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

94

� �

(� � �

)� �(

� � �)

h l Sen Cos

d l Cos Sen

= − +

= −

Θ Θ Θ Θ

Θ Θ Θ Θ

2

2

[3] Si se definen las siguientes variables

x

x

x y

x y

1

2

3

4

=

===

Θ

Θ�

�[4]

Entonces las ecuaciones se convierten en u H Mx

Ix VlSenx HlCosx

V mg ml x Senx x Cosx

H mx ml x Cosx x Senx

− == −

− = − +

= + −

��

(�

)�

(�

)

4

2 1 1

2 1 22

1

4 2 1 22

1 [5]

Estas ecuaciones pueden escribirse como sigue :

[ ]

� �

x x

xgSenx

mlx Cosx Senx

m M

lmCos x

m M

Cosx

m Mu

lmCos x

m M

x x

xm

M ml x Cosx x Senx

M mu

1 2

2

12

21 1

21

1

21

3 4

4 2 1 22

1

4

3

4

3

1

=

=−

+

−+

+ +

−+

=

=−

− −−

[6]

El problema del control del Péndulo Invertido puede plantearse en los siguientes términos:

Se necesita diseñar un controlador que estabili ce localmente el sistema descrito por las ecuaciones [6] , en el punto de equili brio dado por

x

x1

2

0

0

==

independientemente de los valores que tomen las variables x3 y x4.

Page 97: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

95

5.1.2. Diseño del controlador difuso Como estrategias de control se diseñaron cuatro controladores difusos diferentes, con las siguientes características generales: Controlador 1 Controlador 2 Controlador 3 Controlador 4 Entradas Ángulo respecto a

la vertical Ángulo respecto a la vertical

Ángulo respecto a la vertical y Velocidad Angular

Ángulo respecto a la vertical y Velocidad Angular

Salidas Fuerza de Control Horizontal

Fuerza de Control Horizontal

Fuerza de Control Horizontal

Fuerza de Control Horizontal

Concresor Altura Centro de Gravedad Altura Altura Base de reglas Completa (3/3) Completa (3/3) Incompleta (7/15) Completa (15/15) Observaciones Comportamiento

Idéntico a un Controlador proporcional

Propuesto por Yamakawa20

Tabla 5.1 La estrategia de control empleada incluye la opción de aplicar la Fuerza Horizontal de Control como pulsos de duración igual al intervalo de muestreo, y de frecuencia variable (el periodo correspondiente a esta frecuencia es un múltiplo del intervalo de muestreo). En los numerales siguientes se describen con detalle los cuatro controladores diseñados. Nótese que las variables Lingüísticas han sido definidas sobre Universos de Discurso [-1,1]; esto se ha hecho así para definir factores de escala externos a los Controladores.

5.1.2.1.Controlador 121

5.1.2.1.1.Universo de Entrada

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Ángulo

Universo de Discurso de la Variable Ángulo: [-1,1] Número de Valores Lingüísticos para la Variable Ángulo: 3

20 ver nota anterior 21 El archivo correspondiente a este controlador tiene el nombre PENDULO1.DIF

Page 98: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

96

Nombre de los Valores Lingüísticos para la Variable Ángulo: Negativo, Cero y Positivo.

Funciones de Pertenencia de la Variable Ángulo: ver figura 5.3 Difusor de la Variable Ángulo: Singlenton.

Figura 5.3 Funciones de Pertenencia para la Variable Ángulo, Controladores 1

y 2

5.1.2.1.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Control

Universo de Discurso de la Variable Control: [-1,1] Número de Valores Lingüísticos para la Variable Control: 3 Nombre de los Valores Lingüísticos para la Variable Control: Negativo,

Cero y Positivo. Funciones de Pertenencia de la Variable Control: ver figura 5.4 Concresor de la Variable Control: Altura.

Figura 5.4 Funciones de Pertenencia para la Variable Control, Controladores 1

y 2

5.1.2.1.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.1.2.1.4.Base de Reglas

Page 99: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

97

Número de reglas: 3 Regla 1: IF Ángulo es Bajo THEN Control es Bajo Regla 2: IF Ángulo es Cero THEN Control es Cero Regla 3: IF Ángulo es Alto THEN Control es Alto

5.1.2.1.5.Relación Entrada-Salida

La relación Entrada-Salida obtenida con UNFUZZY se muestra en la figura 5.5. Nótese que este controlador equivale a un controlador proporcional.

Figura 5.5 Relación Entrada-Salida Controlador 1

5.1.2.2.Controlador 222

5.1.2.2.1.Universo de Entrada

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Ángulo

Universo de Discurso de la Variable Ángulo: [-1,1] Número de Valores Lingüísticos para la Variable Ángulo: 3 Nombre de los Valores Lingüísticos para la Variable Ángulo: Negativo,

Cero y Positivo. Funciones de Pertenencia de la Variable Ángulo: ver figura 5.3 Difusor de la Variable Ángulo: Singlenton.

5.1.2.2.2.Universo de Salida

22 El archivo correspondiente a este controlador tiene el nombre PENDULO2.DIF

Page 100: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

98

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Control

Universo de Discurso de la Variable Control: [-1,1] Número de Valores Lingüísticos para la Variable Control: 3 Nombre de los Valores Lingüísticos para la Variable Control: Negativo,

Cero y Positivo. Funciones de Pertenencia de la Variable Control: ver figura 5.4 Concresor de la Variable Control: Centro de Gravedad.

5.1.2.2.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.1.2.2.4.Base de Reglas

Número de reglas: 3 Regla 1: IF Ángulo es Bajo THEN Control es Bajo Regla 2: IF Ángulo es Cero THEN Control es Cero Regla 3: IF Ángulo es Alto THEN Control es Alto

5.1.2.2.5.Relación Entrada-Salida

La relación Entrada-Salida obtenida con UNFUZZY se muestra en la figura 5.6. Nótese que este controlador es una variación del Controlador 1, en el que la Relación de Entrada-Salida se ha suavizado en cercanías del punto en que el ángulo es cero.

Page 101: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

99

Figura 5.6 Relación Entrada-Salida Controlador 1

5.1.2.3.Controlador 323

5.1.2.3.1.Universo de Entrada

Número de Variables de Entrada: 2 Nombre de la Variable de Entrada 1: Ángulo

Universo de Discurso de la Variable Ángulo: [-1,1] Número de Valores Lingüísticos para la Variable Ángulo: 5 Nombre de los Valores Lingüísticos para la Variable Ángulo: Negativo

Mediano, Negativo Pequeño, Cero y Positivo Pequeño, Positivo Mediano.

Funciones de Pertenencia de la Variable Ángulo: ver figura 5.7 Difusor de la Variable Ángulo: Triángulo.

Figura 5.7 Funciones de Pertenencia para la Variable Ángulo, Controladores 3

y 4

Nombre de la Variable de Entrada 2: Delta Ángulo

Universo de Discurso de la Variable Velocidad Angular: [-1,1] Número de Valores Lingüísticos para la Variable Delta Ángulo: 3

23 El archivo correspondiente a este controlador tiene el nombre PENDULO3.DIF

Page 102: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

100

Nombre de los Valores Lingüísticos para la Variable Delta Ángulo: Negativo, Cero y Positivo.

Funciones de Pertenencia de la Variable Delta Ángulo: ver figura 5.8 Difusor de la Variable Delta Ángulo: Triángulo.

Figura 5.8 Funciones de Pertenencia para la Variable Delta Ángulo

Controladores 3 y 4

5.1.2.3.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Control

Universo de Discurso de la Variable Control: [-1,1] Número de Valores Lingüísticos para la Variable Control: 5 Nombre de los Valores Lingüísticos para la Variable Control: Negativo

Mediano, Negativo Pequeño, Cero y Positivo Pequeño, Positivo Mediano.

Funciones de Pertenencia de la Variable Control: ver figura 5.9 Concresor de la Variable Control: Centro de Gravedad.

Figura 5.9 Funciones de Pertenencia para la Variable Control, Controladores 3

y 4

5.1.2.3.3.Máquina de Inferencia

Page 103: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

101

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.1.2.3.4.Base de Reglas

Número de reglas: 7 Las reglas pueden visualizarse en la siguiente tabla; los valores en cada casill a corresponden a los consecuentes de cada regla. Nótese que la Base de Reglas no es completa. ÁNGULO DELT A ÁNGULO

Negativo Mediano

Negativo Pequeño

Cero Positivo Pequeño

Positivo Mediano

Negativo Negativo Pequeño

Cero

Cero Negativo Mediano

Cero Positivo Mediano

Positivo Cero Positivo Pequeño

Tabla 5.2

5.1.2.3.5.Relación Entrada-Salida

La relación Entrada-Salida obtenida con UNFUZZY se muestra en la figura 5.10.

Page 104: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

102

Figura 5.10 Relación Entrada-Salida Controlador 3

5.1.2.4.Controlador 424

5.1.2.4.1.Universo de Entrada

Número de Variables de Entrada: 2 Nombre de la Variable de Entrada 1: Ángulo

Universo de Discurso de la Variable Ángulo: [-1,1] Número de Valores Lingüísticos para la Variable Ángulo: 5 Nombre de los Valores Lingüísticos para la Variable Ángulo: Negativo

Mediano, Negativo Pequeño, Cero y Positivo Pequeño, Positivo Mediano.

Funciones de Pertenencia de la Variable Ángulo: ver figura 5.7 Difusor de la Variable Ángulo: Triángulo.

Nombre de la Variable de Entrada 2: Delta Ángulo

Universo de Discurso de la Variable Velocidad Angular: [-1,1] Número de Valores Lingüísticos para la Variable Delta Ángulo: 3 Nombre de los Valores Lingüísticos para la Variable Delta Ángulo:

Negativo, Cero y Positivo.

24 El archivo correspondiente a este controlador tiene el nombre PENDULO4.DIF

Page 105: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

103

Funciones de Pertenencia de la Variable Delta Ángulo: ver figura 5.8 Difusor de la Variable Delta Ángulo: Triángulo.

5.1.2.4.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Control

Universo de Discurso de la Variable Control: [-1,1] Número de Valores Lingüísticos para la Variable Control: 5 Nombre de los Valores Lingüísticos para la Variable Control: Negativo

Mediano, Negativo Pequeño, Cero y Positivo Pequeño, Positivo Mediano.

Funciones de Pertenencia de la Variable Control: ver figura 5.9 Concresor de la Variable Control: Centro de Gravedad.

5.1.2.4.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.1.2.4.4.Base de Reglas

Número de reglas: 15 Las reglas pueden visualizarse en la siguiente tabla; los valores en cada casill a corresponden a los consecuentes de cada regla. Nótese que la Base de Reglas se ha completado. ÁNGULO DELT A ÁNGULO

Negativo Mediano

Negativo Pequeño

Cero Positivo Pequeño

Positivo Mediano

Negativo Negativo Mediano

Negativo Pequeño

Cero Cero Positivo Pequeño

Cero Negativo Mediano

Negativo Pequeño

Cero Positivo Pequeño

Positivo Mediano

Positivo Negativo Pequeño

Cero Cero Positivo Pequeño

Positivo Mediano

Tabla 5.3

5.1.2.4.5.Relación Entrada-Salida

Page 106: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

104

La relación Entrada-Salida obtenida con UNFUZZY se muestra en la figura 5.11.

Figura 5.11 Relación Entrada-Salida Controlador 4

5.1.3. Software de simulación Para evaluar el comportamiento de los controladores diseñados se implementó un sencill o programa de simulación para ambiente Windows 3.1. El programa tiene por nombre PENDULO.EXE, y el código fuente se entrega con el disco que acompaña este texto, y se explica en el numeral 5.1.2.4. PENDULO ofrece al usuario tres opciones de menú distintas: Planta, Controlador y Simulador, que se detallan a continuación.

5.1.3.1.Planta Al seleccionar la opción Planta, se despliega el cuadro de diálogo que se muestra en la figura 5.12. En ese cuadro de diálogo el usuario podrá seleccionar los valores de los parámetros que definen el sistema del Péndulo Invertido.

Page 107: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

105

Figura 5.12 Cuadro de Diálogo Planta

5.1.3.2.Controlador Al seleccionar la opción Controlador, se despliega el cuadro de diálogo que se muestra en la figura 5.13. En ese cuadro de diálogo el usuario podrá seleccionar el tipo de controlador que desea emplear, y los valores de algunos parémetros descritos en la tabla 5.4. Los Controladores disponibles son los siguientes : 1. Libre : Corresponde a la planta sin Controlador 1. Proporcional : Corresponde a un controlador Proporcional 1. 1 Entrada ; Altura : Corresponde al Controlador 1 descrito en el numeral

5.1.2.1. 1. 1 Entrada ; C.G. : Corresponde al Controlador 2 descrito en el numeral

5.1.2.2. 1. 2 Entradas ; Incompleto : Corresponde al Controlador 3 descrito en el

numeral 5.1.2.3. 1. 2 Entradas ; Completo : Corresponde al Controlador 4 descrito en el

numeral 5.1.2.4. Controlador Escala Ángulo Escala Velocidad Escala Fuerza Libre N.A. N.A. N.A. Proporcional N.A. N.A. Factor de

Proporcionalidad 1 Entrada ; Altura Escala de la Variable

Lingüística Ángulo N.A. Escala de la Variable

Lingüística Control 1 Entrada ; C.G Escala de la Variable

Lingüística Ángulo N.A. Escala de la Variable

Lingüística Control 2 Entradas ; Incompleto Escala de la Variable

Lingüística Ángulo Escala de la Variable Lingüística Delta Ángulo

Escala de la Variable Lingüística Control

2 Entradas ; Completo Escala de la Variable Lingüística Ángulo

Escala de la Variable Lingüística Delta Ángulo

Escala de la Variable Lingüística Control

Page 108: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

106

Ángulo

Tabla 5.4

Figura 5.13 Cuadro de Diálogo Controlador

5.1.3.3.Simulador Al seleccionar la opción Simulador, se despliega el cuadro de diálogo que se muestra en la figura 5.14. En ese cuadro de diálogo el usuario podrá visualizar el comportamiento de las principales variables que describen la planta (Ángulo, Velocidad Angular, Posición, Velocidad Lineal y Fuerza de Control), bajo diferentes condiciones iniciales, y seleccionando los siguientes parámetros de simulación : 1. Intervalo de Iteración : Corresponde a el periodo de muestreo empleado

para convertir el sistema continuo en uno discreto, para simularlo mediante métodos iterativos.

1. Intervalo de Aplicación de la Fuerza : La Fuerza de control se puede aplicar en forma discontinua ; este parámetro corresponde al periodo de aplicación de dicha fuerza, y debe ser un múltiplo del Intervalo de Iteración (Si no es un múltiplo, el programa lo aproxima al múltiplo más cercano).

1. Tiempo de Simulación : Máximo tiempo que se quiere simular. Las escalas de las gráficas son las siguientes :

Page 109: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

107

Ángulo : [-a,a], donde a es Escala Ángulo seleccionada en el Cuadro de Diálogo Controlador

Velocidad Angular: [-a,a], donde a es Escala Velocidad seleccionada en el Cuadro de Diálogo Controlador

Posición : [-a,a], donde a es 60 m Velocidad Lineal : [-a,a], donde a es 30 (m/s) Fuerza: [-a,a], donde a es Escala Fuerza seleccionada en el Cuadro de Diálogo

Controlador

Figura 5.14 Cuadro de Diálogo Simulador

5.1.3.4.Código Fuente de PENDULO.EXE La extensión del código fuente empleado para compilar el programa PENDULO.EXE no permitió que fuera incluido en un único archivo. Los archivos con código fuente empleados fueron los siguientes : pendulo.cpp : Contiene el cuerpo principal del programa pendulo.rc : Contiene el archivo de recursos

Page 110: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

108

fuzzy.hpp : Archivo que acompaña a UNFUZZY fuzzy.cpp : Archivo que acompaña a UNFUZZY dif.hpp : Contiene los encabezados de las clases controlador1, controlador2, controlador3 y controlador4. dif1.cpp : Contiene el constructor de la clase controlador1. dif2.cpp : Contiene el constructor de la clase controlador2. dif3.cpp : Contiene el constructor de la clase controlador3. dif4.cpp : Contiene el constructor de la clase controlador4. De esos archivos, sólo fue necesario digitar pendulo.cpp, y crear pendulo.rc, ya que fuzzy.hpp y fuzzy.cpp se entregan junto con UNFUZZY, en tanto que dif.hpp, dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp contienen código que fue creado con la opción Generar Código de UNFUZZY. El procedimiento para crear los archivos dif.hpp, dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp fue el siguiente : 1. Empleando UNFUZZY, se diseñaron los cuatro controladores presentados

en el numeral 5.1.2. 1. Para cada uno de los cuatro controladores, se empleó la opción Generar

Código para generar código C++ ; las clases generadas tienen por nombre controlador1, controlador2, controlador3 y controlador4; El código generado se salvó en los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp se retiró la función main(), que se incluye en ellos como ejemplo de utili zación.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp se tomó el prototipo de las clases controlador1, controlador2, controlador3 y controlador4, y se trasladó a un nuevo archivo dif.hpp

1. Se modificó la instrucción #include<fuzzy.hpp> que originalmente estaba en los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp, por la instrucción #include<dif.hpp>.

1. En el archivo dif.hpp se incluyó la instrucción #include<fuzzy.hpp>

5.1.4. Resultados

Page 111: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

109

Para efectos de comparación, se seleccionaron como parámetros de los controladores los siguientes25 Controlador Escala

Ángulo (rad) Escala Velocidad (rad/s)

Escala Fuerza (N)

Intervalo de Aplicación de la Fuerza (ms)

Libre N.A. N.A. N.A. N.A. Proporcional N.A. N.A. 10 1 1 Entrada ; Altura 0.1 N.A. 10 1 1 Entrada ; C.G 0.1 N.A. 10 1 2 Entradas ; Incompleto 0.1 0.5 10 1 2 Entradas ; Completo 0.1 0.5 10 1

Tabla 5.5 En la figura 5.15 se muestran los resultados de las simulaciones (Ángulo y Velocidad Angular) de la planta con los distintos controladores, para las siguientes Condiciones Iniciales26 : Ángulo : 0.05 rad (2º 52́ ) Velocidad Angular : 0 rad/s

25 En todas las simulaciones se seleccionó como Intervalo de Iteración 1ms 26 El tiempo de simulación es de 10s.

Page 112: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

110

Figura 5.15 Comportamiento de la Planta con distintos controladores

Los Controladores que evalúan únicamente el ángulo no pueden estabili zar el Péndulo, lo cual es un resultado conocido27. Por otra parte, El mejor comportamiento corresponde al Controlador 428, que evalúa el ángulo y la velocidad angular, con un conjunto completo de reglas. Por esta razón, presentamos ahora algunos de los resultados obtenidos con este controlador :

5.1.4.1.Variación de la Escala de Fuerza El controlador 4 con los parámetros definidos en la Tabla 5.5, logra estabili zar el péndulo si las condiciones iniciales son

27 Ver Oppenheim & Will sky, “Signals and Systems” , Prentice Hall , 1983, pag 738-740 28 El Controlador 3 (de Yamakawa) funciona muy bien con una escala de fuerza de 100N

Page 113: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

111

Ángulo : menor que 0.65 rad (º´) Velocidad Angular : 0 rad/s Sin embargo, este comportamiento puede modificarse si se altera la Escala de Fuerza. La tabla 5.6 presenta cuál es el máximo valor de la Condición Inicial del Ángulo para que el controlador logre estabili zar el Péndulo, ante distintos valores de la Escala de Fuerza, suponiendo que la condición inicial de velocidad es cero.

Escala de Fuerza (N) Ángulo máximo(rad)) 5 0.35 (20º3´) 10 0.65 (37º15́ ) 20 0.99 (56º43́ ) 100 1.44 (82º30́ ) 500 1.54 (88º14́ )

Tabla 5.6

5.1.4.2.Variación del Intervalo de Aplicación de la Fuerza

En general, puede afirmarse que incrementar el Intervalo de aplicación de la fuerza equivale a disminuir la acción del controlador, y Por tanto, el tiempo de asentamiento del sistema se ve afectado. La tabla 5.7 muestra el efecto de cambiar el Intervalo de Aplicación de la Fuerza sobre el tiempo de asentamiento, para el controlador 4 definido con los parámetros de la tabla 5.5, y condiciones iniciales : Ángulo : 0.05 rad (2º 52́ ) Velocidad Angular : 0 rad/s

Intervalo de Aplicación de la Fuerza (s)

Tiempo de Asentamiento (s)

1 2.5 5 5 10 No estabili za el sistema

Tabla 5.7

5.1.5. Conclusiones Las simulaciones efectuadas no pretenden ser una exploración exhaustiva de los posibles controladores que pueden emplearse para estabili zar el Péndulo

Page 114: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

112

Invertido. Ni siquiera pretenden ser un estudio riguroso sobre el comportamiento de los pocos controladores diseñados. El único objetivo de este ejemplo es el de ilustrar la utili zación de UNFUZZY para el diseño e implementación en software de controladores difusos. En este sentido, e independientemente de los análisis que puedan hacerse sobre el péndulo y los controladores, puede concluirse que : 1. El código C++ generado por UNFUZZY para los cuatro controladores fue

suficiente para poder implementarlos en software. 1. La extensión del código generado por UNFUZZY, más el código escrito

para simular el péndulo, obligó a fraccionar el código total en varios archivos, lo cual es una práctica común en el desarrollo de software.

5.2. Identificac ión d e plantas Otra de las aplicaciones comunes de los Sistemas de Lógica Difusa es la identificación de plantas, es decir, la determinación de un modelo matemático que reproduzca lo más exactamente posible el comportamiento de una cierta planta, de la cual se conocen sus respuestas ante estímulos conocidos.

5.2.1. Planteamiento del problema Como planta desconocida seleccionamos dos sistemas de orden cero, cuyas respuestas y1 , y2 ante una entrada u están dadas por29

y u sen a u sen b u sen c u1 07 6 3 1( ) . . ( ) . ( ) . ( )= + + π π π [1]

[ ]y u a u Signo b u c u

Signo

2 07 06 03 01

1 0

1 0

( ) . . sen( ) . ( ) . sen( )

( );

;

= + +

=>

− ≤î

π π π

αα

α

[2]

Y la entrada conocida u varía con el tiempo discreto k de la siguiente forma :

u k sen d k( ) ( )= π [3]

29 En las ecuaciones [1], [2] y [3] los parámetros a,b,c,d son seleccionables.

Page 115: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

113

El problema de Identificación de estos sistemas puede plantearse en los siguientes términos: Se necesita diseñar un controlador que reproduzca lo más exactamente posible el sistema descrito por la ecuación [1] (o [2] ) , teniendo como información únicamente : 1. Un conjunto finito de datos producidos por las ecuaciones [1] y [3] (o [2] y

[3] ), correspondientes a k=0,1,2,....w 1. El sistema es de orden cero30.

5.2.2. Diseño del Sistema de lógica difusa Como modelos de la planta se diseñaron cuatro Sistemas de Lógica Difusa diferentes, con las siguientes características generales: Modelo 1 Modelo 2 Modelo 3 Modelo 4 Conjuntos del Universo de Entrada

9 12 25 1

Conjuntos del Universo de Salida

9 12 25 1

Algoritmo de Entrenamiento

Universos Fijos Universos Fijos Universos Fijos Universos Variables

Tabla 5.8

En los numerales siguientes se describen con detalle los cuatro controladores diseñados.

5.2.2.1.Modelo 131

5.2.2.1.1.Universo de Entrada

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Entrada 30 El orden del sistema típicamente se ignora, sin embargo, se ha buscado un ejemplo sencill o de identificación de plantas, por lo tanto aquí se considera este dato como conocido. 31 El archivo correspondiente a este controlador tiene el nombre MODELO1.DIF

Page 116: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

114

Universo de Discurso de la Variable Entrada: [-1,1] Número de Valores Lingüísticos para la Variable Entrada: 9 Funciones de Pertenencia de la Variable Entrada: ver figura 5.16 Difusor de la Variable Entrada: Singlenton.

Figura 5.16 Funciones de Pertenencia para las Variable Entrada y Salida,

Modelo 1

5.2.2.1.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Salida

Universo de Discurso de la Variable Salida: [-1,1] Número de Valores Lingüísticos para la Variable salida: 9 Funciones de Pertenencia de la Variable Control: ver figura 5.16 Concresor de la Variable Control: Altura.

5.2.2.1.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.2.2.1.4.Base de Reglas

Se define con el algoritmo de Entrenamiento de Universos Fijos

5.2.2.2.Modelo 232

5.2.2.2.1.Universo de Entrada

32 El archivo correspondiente a este controlador tiene el nombre MODELO2.DIF

Page 117: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

115

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Entrada

Universo de Discurso de la Variable Entrada: [-1,1] Número de Valores Lingüísticos para la Variable Entrada: 12 Funciones de Pertenencia de la Variable Entrada: ver figura 5.17 Difusor de la Variable Entrada: Singlenton.

Figura 5.17 Funciones de Pertenencia para las Variable Entrada y Salida,

Modelo 2

5.2.2.2.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Salida

Universo de Discurso de la Variable Salida: [-1,1] Número de Valores Lingüísticos para la Variable salida: 12 Funciones de Pertenencia de la Variable Control: ver figura 5.17 Concresor de la Variable Control: Altura.

5.2.2.2.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.2.2.2.4.Base de Reglas

Se define con el algoritmo de Entrenamiento de Universos Fijos

5.2.2.3.Modelo 333

5.2.2.3.1.Universo de Entrada

33 El archivo correspondiente a este controlador tiene el nombre MODELO3.DIF

Page 118: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

116

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Entrada

Universo de Discurso de la Variable Entrada: [-1,1] Número de Valores Lingüísticos para la Variable Entrada: 25 Funciones de Pertenencia de la Variable Entrada: ver figura 5.18 Difusor de la Variable Entrada: Singlenton.

Figura 5.18 Funciones de Pertenencia para las Variable Entrada y Salida,

Modelo 3

5.2.2.3.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Salida

Universo de Discurso de la Variable Salida: [-1,1] Número de Valores Lingüísticos para la Variable salida: 25 Funciones de Pertenencia de la Variable Control: ver figura 5.16 Concresor de la Variable Control: Altura.

5.2.2.3.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.2.2.3.4.Base de Reglas

Se define con el algoritmo de Entrenamiento de Universos Fijos

Page 119: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

117

5.2.2.4.Modelo 434

5.2.2.4.1.Universo de Entrada

Número de Variables de Entrada: 1 Nombre de la Variable de Entrada 1: Entrada

Universo de Discurso de la Variable Entrada: [-1,1] Número de Valores Lingüísticos para la Variable Entrada: A definir con

el algoritmo de Entrenamiento de Universos Variables, tomando como modelo el conjunto mostrado en la figura 5.19

Difusor de la Variable Entrada: Singlenton.

Figura 5.19 Conjunto modelo para las Variable Entrada y Salida, Modelo 4

5.2.2.4.2.Universo de Salida

Número de Variables de Salida: 1 Nombre de la Variable de Salida 1: Salida

Universo de Discurso de la Variable Salida: [-1,1] Número de Valores Lingüísticos para la Variable salida: A definir con el

algoritmo de Entrenamiento de Universos Variables, tomando como modelo el conjunto mostrado en la figura 5.19

Concresor de la Variable Control: Altura.

5.2.2.4.3.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

5.2.2.4.4.Base de Reglas

34 El archivo correspondiente a este controlador tiene el nombre MODELO4.DIF

Page 120: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

118

Se define con el algoritmo de Entrenamiento de Universos Variables

5.2.3. Software de simulación Para evaluar el comportamiento de los Sistemas de Lógica Difusa diseñados se implementó un sencill o programa de simulación para ambiente Windows 3.1. El programa tiene por nombre IDENTI.EXE, y el código fuente se entrega con el disco que acompaña este texto, y se explica en el numeral 5.2.2.4. IDENTI ofrece al usuario tres opciones de menú distintas: Planta, Modelo e Identifi cación, que se detallan a continuación.

5.2.3.1.Planta Al seleccionar la opción Planta, se despliega el cuadro de diálogo que se muestra en la figura 5.20. En ese cuadro de diálogo el usuario podrá seleccionar cuál de las dos plantas explicadas en el numeral 5.2.1 desea identificar, y especificar los parámetros a,b,c,d, a que hace referencia dicho numeral

Figura 5.20 Cuadro de Diálogo Planta

5.2.3.2.Modelo

Page 121: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

119

Al seleccionar la opción Modelo, se despliega el cuadro de diálogo que se muestra en la figura 5.21. En ese cuadro de diálogo el usuario podrá seleccionar el tipo de modelo que desea emplear, dentro de los explicados en el numeral 5.2.3

Figura 5.21 Cuadro de Diálogo Modelo

5.2.3.3.Identificación Al seleccionar la opción Identifi cación, se despliega el cuadro de diálogo que se muestra en la figura 5.22. En ese cuadro de diálogo el usuario podrá visualizar el comportamiento de la planta y del modelo que seleccionó, así como la diferencia (error) entre éstos dos, seleccionando los siguientes parámetros de simulación : 1. Datos de Entrenamiento : tamaño del conjunto finito de datos producidos

por las ecuaciones [1] y [3] (o [2] y [3]), correspondientes a k=0,1,2,....w, del numeral 5.2.2.

1. Datos de Validación : tamaño del conjunto finito de datos con el que se compararán los resultados de la planta y los del modelo

1. Número Total de Datos : tamaño de la muestra total de datos disponibles 1. Error Máximo : valor absoluto de la máxima diferencia entre los resultados

producidos por la planta y por el modelo 1. Error Acumulado : suma de los valores absolutos de las diferencias entre los

resultados producidos por la planta y por el modelo La escala de las tres gráficas es [-1,1]

Page 122: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

120

Figura 5.22 Cuadro de Diálogo Identifi cación

5.2.3.4.Código Fuente de IDENTI.EXE La extensión del código fuente empleado para compilar el programa IDENTI.EXE no permitió que fuera incluido en un único archivo. Los archivos con código fuente empleados fueron los siguientes : identi.cpp : Contiene el cuerpo principal del programa identi.rc : Contiene el archivo de recursos fuzzy.hpp : Archivo que acompaña a UNFUZZY fuzzy.cpp : Archivo que acompaña a UNFUZZY dif.hpp : Contiene los encabezados de las clases modelo1, modelo2, modelo3 y modelo4. dif1.cpp : Contiene el constructor de la clase modelo1. dif2.cpp : Contiene el constructor de la clase modelo2. dif3.cpp : Contiene el constructor de la clase modelo3. dif4.cpp : Contiene el constructor de la clase modelo4. De esos archivos, sólo fue necesario digitar pendulo.cpp, y crear pendulo.rc, ya que fuzzy.hpp y fuzzy.cpp se entregan junto con UNFUZZY, en tanto que

Page 123: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

121

dif.hpp, dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp contienen código que fue creado con la opción Generar Código de UNFUZZY. El procedimiento para crear los archivos dif.hpp, dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp fue el siguiente 35: 1. Empleando UNFUZZY, se diseñaron los cuatro Sistemas de Lógica Difusa

presentados en el numeral 5.2.2. 1. Para cada uno de los cuatro controladores, se empleó la opción Generar

Código para generar código C++ ; las clases generadas tienen por nombre modelo1, modelo2, modelo3 y modelo4; El código generado se salvó en los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp se retiró la función main(), que se incluye en ellos como ejemplo de utili zación.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp se tomó el prototipo de las clases modelo1, modelo2, modelo3 y modelo4, y se trasladó a un nuevo archivo dif.hpp

1. Se modificó la instrucción #include<fuzzy.hpp> que originalmente estaba en los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp, por la instrucción #include<dif.hpp>.

1. En el archivo dif.hpp se incluyó la instrucción #include<fuzzy.hpp>

5.2.4. Resultados Para las simulaciones se seleccionaron como parámetros de las acuaciones de la Planta los siguientes valores : a=1 b=3 c=5 d=0.008 La figura 5.23 compara los resultados obtenidos con los cuatro modelos, tomando 200 Datos de Entrenamiento y 500 de Validación. La tabla 5.9 muestra los errores máximos producidos en cada caso.

35 Nótese que es el mismo procedimiento empleado en el ejemplo del Péndulo Invertido

Page 124: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

122

Figura 5.23 Resultados de los cuatro modelos

Modelo Error Máximo Error Acumulado Modelo 1 0.455 85.624 Modelo 2 0.371 51.554 Modelo 3 0.299 30.152 Modelo 4 0.111 13.383

Tabla 5.9 Claramente, el cuarto modelo es el que mejor reproduce el comportamiento de la planta. Nótese que éste modelo emplea el algoritmo de entrenamiento de Universos Variables, lo que hace que el modelo final sea más complejo que los otros tres36. Al emplear el algoritmo de entrenamiento de Universos Fijos, la exactitud del modelo se ve afectada por el diseño previo de los Universos. Para observar el efecto del entrenamiento en el modelo final, la figura 5.24 muestra el comportamiento del modelo 4, cuando éste se entrena con 50, 100, 150 y 200 datos. La tabla 5.10 muestra los errores de cada caso

36 En las simulaciones puede notarse que éste modelo requiere un mayor tiempo de cálculo.

Page 125: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

123

Figura 5.24 Efecto de alterar el número de datos de entrenamiento

Datos de Entrenamiento Error Máximo Error Acumulado 50 0.456 84.718 100 0.455 77.951 150 0.455 41.071 200 0.111 13.383

Tabla 5.9

5.2.5. Conclusiones Como en el caso del Péndulo Invertido, las simulaciones efectuadas no pretenden ser una exploración exhaustiva de los posibles modelos basados en Sistemas de Lógica Difusa que pueden emplearse para modelar la planta del ejemplo. Tampoco pretenden ser un estudio riguroso sobre el comportamiento de los pocos modelos diseñados. El objetivo principal de este ejemplo es el de ilustrar la utili zación de UNFUZZY para el diseño e implementación en software de estos Sistemas de Lógica Difusa, que emplean las opciones de entrenamiento mediante los algoritmos presentados en el numeral 1.3. En este sentido, puede concluirse que : 1. El código C++ generado por UNFUZZY para los cuatro Sistemas de Lógica

Difusa fue suficiente para poder implementarlos en software.

Page 126: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

124

1. La extensión del código generado por UNFUZZY, más el código escrito para simular la planta, obligó a fraccionar el código total en varios archivos, lo cual es una práctica común en el desarrollo de software.

1. El código C++ generado por UNFUZZY incluye las opciones de entrenamiento mediante los algoritmos presentados en el numeral 1.3

5.3. Predicc ión d e series de tiempo En forma general, el problema de predecir una serie de tiempo puede asimilarse al de identificar una planta cuya dinámica es muy compleja, y de la cuál sólo se conocen sus salidas, y no sus entradas, de forma tal que los modelos posibles sólo pueden incluir las salidas anteriores de la planta para predecir las salidas futuras. Se ha seleccionado como problema la serie de los caudales medios mensuales del Río Bogotá medidos en la población de Tocaima37 (Cundinamarca), suministrados por el IDEAM (Instituto de Hidrología, Metereología y Estudios Ambientales), y que se consignan en la Tabla 5.10, y que abarcan 22 años (264 meses)

IDEAM INSTITUTO DE HIDROLOGÍA, METEREOLOGÍA Y ESTUDIOS

AMBIENTALES

VALORES MEDIOS MENSUALES DE CAUDALES (m3/seg)

LATITUD 0428 N TIPO EST LG DPTO C/MARCA FECHA INST 1965-ABR

LONGITUD 7436 W ENTIDAD IDEAM MUNICIPIO TOCAIMA

ELEVACION 0361msnm REGIONAL TOLIMA CORRIENTE BOGOTÁ

AÑO ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC ANU

1974 36.84 56.89 63.17 46.58 47.63 29.98 23.51 21.76 23.32 35.99 56.35 40.35 40.20

1975 20.59 28.11 38.21 39.39 55.08 34.94 54.89 28.79 32.73 52.35 73.77 81.57 45.04

1976 31.60 33.90 59.80 87.20 58.30 46.20 57.40 39.20 39.30 71.50 66.10 40.60 52.59

1977 33.08 28.55 29.76 43.49 34.54 29.22 19.91 16.30 22.00 37.52 77.13 16.12 32.30

1978 13.22 12.04 14.67 54.91 22.71 31.87 20.26 11.27 16.69 21.83 28.39 19.63 22.29

37 Este caudal está afectado no únicamente por la hidrología de la Cuenca del río, sino también por la regulación que de él efectúa la Empresa de Energía de Bogotá en el embalse del Muña, lo que incide en la complejidad del problema.

Page 127: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

125

1979 15.95 14.64 31.39 33.36 44.33 50.03 22.30 18.11 23.87 74.29 159.9 53.05 45.10

1980 30.82 40.89 26.83 27.91 25.89 36.92 26.10 23.59 29.65 37.56 37.73 33.36 31.44

1981 24.95 26.52 22.45 51.47 102.0 52.49 23.39 21.45 21.48 39.23 78.80 34.21 41.54

1982 43.23 41.56 60.57 141.1 86.30 35.21 27.12 20.43 20.90 32.90 39.92 51.84 50.09

1983 37.68 35.04 40.53 68.49 54.16 37.12 33.17 26.76 31.88 34.92 42.25 45.03 40.59

1984 42.22 26.05 18.27 28.73 54.15 41.77 23.44 26.05 30.96 35.11 94.76 46.16 38.97

1985 18.02 13.30 13.53 30.86 44.59 26.57 23.31 24.57 31.49 54.02 71.17 47.08 33.21

1986 37.73 49.83 73.90 52.77 55.55 63.75 54.85 43.57 39.84 91.72 87.16 50.72 58.45

1987 40.60 35.50 34.70 46.30 50.40 35.90 37.10 32.50 30.20 62.40 56.90 44.20 42.23

1988 32.33 35.38 33.72 39.47 32.09 36.69 40.95 36.32 37.22 48.81 82.45 67.25 43.56

1989 29.50 42.99 52.44 28.96 42.22 35.58 31.49 28.16 30.67 39.57 41.04 28.59 35.93

1990 28.73 39.83 30.73 37.57 56.94 35.03 28.64 26.54 24.79 34.10 40.98 51.30 36.27

1991 36.49 30.49 45.35 60.20 34.10 24.00 27.31 36.25 29.55 28.01 53.96 39.71 37.12

1992 41.07 42.91 38.95 33.49 29.68 25.12 23.38 33.43 25.83 21.26 32.78 58.44 33.86

1993 34.85 36.85 24.17 45.23 64.13 35.86 17.59 18.66 24.62 26.57 57.94 27.11 34.47

1994 32.53 37.01 41.92 52.45 55.01 40.16 37.64 33.93 29.73 51.44 72.76 25.67 42.52

1995 19.70 17.10 40.10 43.90 47.70 48.90 27.70 41.60 24.70 61.10 38.90 42.40 37.82

med 30.99 32.97 37.96 49.72 49.89 37.88 30.98 27.69 28.25 45.10 63.23 42.93 39.80

max 43.23 56.89 73.90 141.1 102.0 63.75 57.40 43.57 39.84 91.72 159.9 81.57 159.9

min 13.22 12.04 13.53 27.91 22.71 24.00 17.59 11.27 16.69 21.26 28.39 16.12 11.27

Tabla 5.10

5.3.1. Planteamiento del problema El problema puede plantearse en los siguientes términos: Se desea diseñar un Sistema de Lógica Difusa que prediga lo más exactamente posible la serie mensual de la tabla 5.10. Para predecir el caudal medio del mes K el Sistema sólo puede contar con la información disponible en la tabla hasta el mes K-1.

5.3.2. Diseño del Sistema de lógica difusa Se diseñaron cinco modelos basados en lógica difusa, cada uno de ellos con cinco entradas (salvo el modelo 5, que utili za 4 entradas) y una salida, descritas a continuación: Salida : x(k+1) : Predicción del caudal medio del mes k+1, Entradas :

Page 128: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

126

1. Promedio (k+1,P) : Promedio de los caudales medios anteriores a k+1, con periodicidad P; si P=12, y se quiere predecir el caudal medio de Mayo de 1995, esta variable será el promedio de los caudales mensuales medios de los meses de Mayo hasta antes de Mayo de 1995. 2. x(k+1-P) : si P=12, y se quiere predecir el caudal medio de Mayo de 1995, esta variable será el caudal medio mensual de Mayo de 1994. El modelo 5 no emplea esta variable. 3. x(k-1): si se quiere predecir el caudal medio de Mayo de 1995, esta variable será el caudal medio mensual de Abril de 1995. 4. x(k-2): si se quiere predecir el caudal medio de Mayo de 1995, esta variable será el caudal medio mensual de Marzo de 1995. 5. x(k-3): si se quiere predecir el caudal medio de Mayo de 1995, esta variable será el caudal medio mensual de Febrero de 1995. Modelo 1 Modelo 2 Modelo 3 Modelo 4 Modelo 5 Conjuntos del Universo de Entrada

20 9 9 1 9

Conjuntos del Universo de Salida

20 9 9 1 9

Universo de Discurso del promedio

25-70(m3/s) 25-70(m3/s) 25-70(m3/s) 25-70(m3/s) 25-70(m3/s)

Universo de Discurso de las demás variables

0-180 (m3/s) 0-180 (m3/s) 0-100 (m3/s) 0-180 (m3/s) 0-180 (m3/s)

Algoritmo de Entrenamiento

Universos Fijos Universos Fijos Universos Fijos

Universos Variables

Universos Fijos

Tabla 5.11 Los demás parámetros de las variables de entrada y salida son similares a los del ejemplo de aplicación Identificación de Plantas38

5.3.2.1.1.Máquina de Inferencia

Operador AND: Mínimo Operador de Implicación: Mínimo Operador de Composición: Mínimo Operador de Unión: Máximo

38 Ver numeral 5.2

Page 129: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

127

5.3.3. Software de simulación Para evaluar el comportamiento de los Sistemas de Lógica Difusa diseñados se implementó un sencill o programa de simulación para ambiente Windows 95 o NT. El programa tiene por nombre SERIE.EXE, y el código fuente se entrega con el disco que acompaña este texto, y se explica en el numeral 5.3.2.4. SERIE ofrece al usuario tres opciones de menú distintas: Serie, Modelo y Predicción, que se detallan a continuación.

5.3.3.1.Serie Al seleccionar la opción Serie, se despliega el cuadro de diálogo que se muestra en la figura 5.25. En ese cuadro de diálogo el usuario podrá excribir la serie (un dato por línea), o leerla desde un archivo de texto. La serie del rio Bogotá se encuentra en el archivo RIOBOGOT.TXT. Una vez escritos o leidos los datos, el usuario debe emplear la opción Validar, para comprobar el formato de la serie.

Figura 5.25 Cuadro de Diálogo Serie

Page 130: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

128

5.3.3.2.Modelo Al seleccionar la opción Modelo, se despliega el cuadro de diálogo que se muestra en la figura 5.26. En ese cuadro de diálogo el usuario podrá seleccionar el tipo de modelo que desea emplear, dentro de los explicados en el numeral 5.3.3

Figura 5.26 Cuadro de Diálogo Modelo

5.3.3.3.Predicción Al seleccionar la opción Predicción, se despliega el cuadro de diálogo que se muestra en la figura 5.27. En ese cuadro de diálogo el usuario podrá visualizar el comportamiento de la serie y del modelo que seleccionó, así como la diferencia (error) entre éstos dos, seleccionando los siguientes parámetros de simulación : 1. Datos de Entrenamiento : tamaño del conjunto finito de datos tomados de la

serie 1. Datos de Validación : tamaño del conjunto finito de datos con el que se

comparararán los resultados de la planta y los del modelo 1. Número Total de Datos : tamaño de la muestra total de datos disponibles 1. Error Máximo : valor absoluto de la máxima diferencia entre los resultados

producidos por la planta y por el modelo La escala de las tres gráficas es [0,100 (m3/s)]

Page 131: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

129

Figura 5.27 Cuadro de Diálogo Predicción

5.3.3.4.Código Fuente de SERIE.EXE La extensión del código fuente empleado para compilar el programa SERIE.EXE no permitió que fuera incluido en un único archivo. El código C++ generado por UNFUZZY para implementar el modelo 1 también resultó muy extenso, y debió ser dividido en dos archivos. Los archivos con código fuente empleados fueron los siguientes : identi.cpp : Contiene el cuerpo principal del programa identi.rc : Contiene el archivo de recursos fuzzy.hpp : Archivo que acompaña a UNFUZZY fuzzy.cpp : Archivo que acompaña a UNFUZZY dif.hpp : Contiene los encabezados de las clases modelo1, modelo2, modelo3 y modelo4. dif1.cpp : Contiene parte del constructor de la clase modelo1. dif1a.cpp : Contiene parte del constructor de la clase modelo1. dif2.cpp : Contiene el constructor de la clase modelo2. dif3.cpp : Contiene el constructor de la clase modelo3. dif4.cpp : Contiene el constructor de la clase modelo4. dif5.cpp : Contiene el constructor de la clase modelo5.

Page 132: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

130

De esos archivos, sólo fue necesario digitar pendulo.cpp, y crear pendulo.rc, ya que fuzzy.hpp y fuzzy.cpp se entregan junto con UNFUZZY, en tanto que dif.hpp, dif1.cpp, dif1a.cpp, dif2.cpp, dif3.cpp y dif4.cpp contienen código que fue creado con la opción Generar Código de UNFUZZY. El procedimiento para crear los archivos dif.hpp, dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp fue el siguiente 39: 1. Empleando UNFUZZY, se diseñaron los cuatro Sistemas de Lógica Difusa

presentados en el numeral 5.3.2. 1. Para cada uno de los cuatro controladores, se empleó la opción Generar

Código para generar código C++ ; las clases generadas tienen por nombre modelo1, modelo2, modelo3, modelo4 y modelo5; El código generado se salvó en los archivos dif1.cpp, dif2.cpp, dif3.cpp y dif4.cpp.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp , dif4.cpp y dif5.cpp se retiró la función main(), que se incluye en ellos como ejemplo de utili zación.

1. De cada uno de los archivos dif1.cpp, dif2.cpp, dif3.cpp, dif4.cpp y dif5.cpp se tomó el prototipo de las clases modelo1, modelo2, modelo3, modelo4 y modelo5, y se trasladó a un nuevo archivo dif.hpp

1. Se modificó la instrucción #include<fuzzy.hpp> que originalmente estaba en los archivos dif1.cpp, dif2.cpp, dif3.cpp, dif4.cpp y dif54.cpp, por la instrucción #include<dif.hpp>.

1. En el archivo dif.hpp se incluyó la instrucción #include<fuzzy.hpp> 1. Al compilar el programa el archivo dif1.cpp resultó muy extenso, por lo

cual fue necesario proceder de la siguiente forma

1. Se subdividió el constructor de la clase modelo1 en dos funciones: el constructor mismo y una clase auxili ar adicional(), en la que se copió parte del código del constructor, y que era llamada por éste.

1. La clase auxili ar() se escribió en el archivo dif1a.cpp, para hacer que el archivo dif1.cpp tuviera un tamaño adecuado.

1. Se modificó el prototipo de la clase modelo1, en el archivo dif.hpp para incluir la nueva función auxili ar().

39 Nótese que es el mismo procedimiento empleado en el ejemplo del Péndulo Invertido y de la Identificación de plantas, hasta el paso 6.

Page 133: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

131

5.3.4. Resultados La figura 5.28 compara los resultados obtenidos con los cuatro modelos, tomando 240 Datos de Entrenamiento (20 años) y 24 de Validación (2 años) definiendo un periodo de 12 meses. La tabla 5.12 muestra los errores máximos producidos en cada caso.

Figura 5.28 Resultados de los cuatro modelos

Modelo Error Máximo

(m3/s) Modelo 1 61.10 Modelo 2 46.55 Modelo 3 61.10 Modelo 4 61.10 Modelo 5 33.10

Tabla 5.12 Claramente, los modelos 2 y 5 son los que mejor reproducen el comportamiento de la serie. Se efectuó una prueba consistente en cambiar el periodo P que define las variables de entrada 1 y 2, cuyo valor fue de 12 para los resultados de la figura 5.28. La figura 5.29 y la tabla 5.13 resumen los resultados de esta prueba, sobre el modelo 2.

Page 134: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

132

Figura 5.29 Efecto de modificar el periodo P sobre el modelo 2

Periodo P Error Máximo

(m3/s) 24 47.70 18 30.74 12 46.55 6 47.70 3 30.37

Tabla 5.13 Para observar el efecto del entrenamiento en el modelo final, la figura 5.30 muestra el comportamiento del modelo 2, para una predicción de 20 años. A diferencia del entrenamiento utili zado en la Identificación de plantas, en este ejemplo cada nuevo dato se emplea para entrenar el sistema. En la figura 5.30 se observa que el error del modelo disminuye (aún cuando no desaparece) para los últimos datos, debido a que el entrenamiento es mayor para ellos.

Page 135: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

133

Figura 5.30 Efecto de alterar el número de datos de entrenamiento

5.3.5. Conclusiones Como en los casos del Péndulo Invertido y de la Identificación de Plantas, las simulaciones efectuadas no pretenden ser una exploración exhaustiva de los posibles modelos basados en Sistemas de Lógica Difusa que pueden emplearse para modelar la serie40. Tampoco pretenden ser un estudio riguroso sobre el comportamiento de los pocos modelos diseñados. El objetivo principal de este ejemplo es el de ilustrar la utili zación de UNFUZZY para el diseño e implementación en software de estos Sistemas de Lógica Difusa, que emplean las opciones de entrenamiento mediante los algoritmos presentados en el numeral 1.3. En este sentido, puede concluirse que : 1. El código C++ generado por UNFUZZY para los cuatro Sistemas de Lógica

Difusa fue suficiente para poder implementarlos en software. 1. La extensión del código generado por UNFUZZY, más el código escrito

para simular la planta, obligó a fraccionar el código total en varios archivos, lo cual es una práctica común en el desarrollo de software.

1. El código C++ generado por UNFUZZY incluye las opciones de entrenamiento mediante los algoritmos presentados en el numeral 1.3

40 En realidad debe anotarse que el diseño de este ejemplo hace gala de una ignortancia total en el área de la Hidrología, y por tanto no creo que resista una crítica seria de los conocedores del tema.

Page 136: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

134

6. CRÍTICA AL PROYECTO Y CONCLUSIONES Este capítulo final tiene por propósito presentar una visión crítica del proyecto , mirándolo desde una perspectiva más global, alejada de los detalles de implementación y utili zación a los que se dedican los capítulos anteriores. Se pretende con esto proponer trabajos posteriores en el área de Lógica Difusa.

6.1. Alcance de UNFUZZY El objetivo inicial del proyecto41 era el diseño e implementación de un software que permitiera diseñar Sistemas de Lógica Difusa, y analizar su comportamiento. UNFUZZY cumple con tales objetivos, y además los supera, ya que incluye dos funciones adicionales que le dan un potencial mucho mayor: 1. La generación de Código fuente en lenguaje C y C++ 2. La opción de entrenamiento de Sistemas de Lógica Difusa mediante Tablas La posibili dad de disponer de un código fuente probado permite al usuario Implementar en software el Sistema de Lógica Difusa diseñado. Dicho de otra forma, no sólo puede analizar el comportamiento del Sistema, sino que además puede disponer de él para su utili zación particular, sin tener que preocuparse por cuáles son los algoritmos internos del Sistema. El usuario sólo debe utili zar una herramienta gráfica de diseño, y ésta pone en sus manos el código fuente42. La opción de entrenar Sistemas de Lógica Difusa amplía el tipo de aplicaciones en los que éstos son utili zables. Los ejemplos de Identificación de

41 Véase la propuesta aprobada por el Comité Asesor de la Maestría de Automatización Industrial 42 A manera de referencia, la siguiente información: Para el desarrollo del programa de predicción de la serie de tiempo del río Bogotá las actividades involucradas requirieron el siguiente tiempo 1. Consecución de la serie y digitalización: 5 horas 2. Diseño de los modelos con UNFUZZY 30 minutos 3. Adecuación del código generado por UNFUZZY 15 minutos 4. Diseño e implementación del resto de código 10 horas

Page 137: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

135

Plantas y Predicción de Series de Tiempo son sólo dos de éstos casos. Vale la pena resaltar que el código C++ que genera UNFUZZY incluye la opción de entrenamiento, y por lo tanto el usuario dispone de ella en su aplicación particular. En forma resumida, pueden destacarse las siguientes características de UNFUZZY: 1. Permite el diseño gráfico de los Universos de Entrada y Salida 2. Permite seleccionar algoritmos de Difusión, Concreción, Implicación,

Composición, Unión-Intersección y operadores AND, dentro de un conjunto amplio de opciones.

3. Permite el diseño de Bases de Reglas Completas o Incompletas, como la opción de Incluir Modificadores Lingüísticos.

4. Provee herramientas de diseño rápido para los Universos de Entrada y Salida, las variables Lingüísticas y la Base de Reglas

5. Permite analizar el comportamiento global del Sistema mediante Gráficos y Tablas Entrada-Salida

6. Permite analizar el comportamiento del Sistema a entradas particulares mediante la presentación Paso a Paso de los resultados intermedios de cada Algoritmo

7. Permite entrenar Sistemas de Lógica Difusa mediante el uso de Tablas, a través de dos algoritmos diferentes

8. Provee el código fuente C y C++ del Sistema diseñado.

6.2. Limitaciones de UNFUZZY La siguiente es una li sta de las principales funciones que NO pueden efectuarse con UNFUZZY, y que quizás algún usuario desearía tener disponibles43. Con UNFUZZY usted no puede: 1. Emplear opciones de diseño distintas a las especificadas en el numeral 4.2. 2. Trabajar con Conjuntos Difusos Discretos. 3. Diseñar Sistemas de Lógica Difusa tipo Takagi-Sugeno44. 4. Diseñar Sistemas de Lógica Difusa tipo ANFIS45.

43 Todo software es susceptible de ser mejorado, y más aún las versiones 1.0 44 En estos sistemas los consecuentes de las reglas no son Valores lingüísticos sino funciones de los valores concretos de entrada

Page 138: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

136

5. Trabajar con Reglas que incluyan operadores OR, NOT, XOR y sentencias46.

De estas limitaciones quizás la más fuerte es la segunda, ya que los conjuntos discretos pueden ser muy útiles en aplicaciones como la de Toma de Decisiones, en las que las variables involucradas pueden ser algunas contínuas y otras discretas. La primera limitación llegará a ser importante en el momento en que aparezca una metodología de diseño en la que se justifique por qué razón puede ser conveniente o no escoger un determinado operador matemático para la Implicación, la Composición, etc. Mientras tanto, nada se gana con disponer de un enorme conjunto de opciones, si no se sabe cuáles son las diferencias entre ellas. No obstante lo anterior, UNFUZZY incluye los operadores más utili zados y mencionados en la literatura. Los Sistemas tipo Takagi-Sugeno, así como los ANFIS, presentan características particulares muy llamativas, que ameritan un trabajo posterior de investigación antes de intentar incluirlas en una herramienta como UNFUZZY47. Si el usuario desea trabajar con reglas que incluyan operadores distintos al AND, debe convertir tales reglas primero a combinaciones de reglas tipo AND48. En este sentido la quinta limitación es más una "molestia" que una limitación verdadera.

6.3. Otras herramientas de diseño

45 En estos sistemas parte de su estructura se implementa con una Red Neuronal, lo que brinda otras opciones de Entrenamiento 46 Sin embargo, estas reglas pueden escribirse como combinaciones de reglas que sólo incluyen el operador AND, con el que trabaja UNFUZZY 47 Además, el programa MatLab incluye una herramienta para trabajo con sistemas tipo ANFIS (ver numeral 6.3), que deben estudiarse para evaluar si vale la pena desarrollar un software adicional. 48 Véase Mendel, Jerry "Fuzzy Logic Systems for Engineering: A Tutorial", Proceedings of the IEEE, V 83 N 3 Marzo 1995, pag 365.

Page 139: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

137

Los programas de computador disponibles como herramientas de desarrollo para Lógica Difusa pueden en general clasificarse en los siguientes tres grupos: 1. Programas para aplicaciones específicas: Estos son programas

demostrativos en los que se muestra cómo un Sistema de Lógica Difusa puede resolver uno o más problemas específicos (generalmente de Control). Pueden considerarse como programas de diseño, porque el usuario puede seleccionar varios parámetros del Sistema, pero no son de aplicabili dad práctica. Como ejemplo de este grupo está el SCD14 desarrollado en la Universidad de Granada (España), para mostrar el control del Péndulo Invertido y otras dos plantas más.

2. Programas para hardware específico: Estos programas permiten diseñar Sistemas de Lógica Difusa para implementarlos en algún Hardware específico. Como ejemplo están FuzzyTech, que produce código C para microcontroladores de la famili a PIC de Microchip, y SieFuzzy, que genera programas para ser implementados en PLC's de Siemens.

3. Programas de propósito general: En este grupo podría clasificarse UNFUZZY, ya que se trata de programas que no están diseñados para una aplicación específica, ni para un Hardware específico. Pese a una busqueda intensa a través de Internet, sólo fue posible encontrar un software con estas características49: la herramienta para Lógica Difusa de MatLab.

De acuerdo a lo anterior, parecería conveniente comparar las ventajas y desventajas de UNFUZZY frente a MatLab. Desafortunadamente la información disponible sobre MatLab es sólo parcial50, no obstante pueden anotarse como grandes diferencias: 1. MatLab emplea Sistemas de Lógica Difusa tipo ANFIS, distintos a los

empleados por UNFUZZY, con algoritmos de entrenamiento diferentes. 2. Al parecer, MatLab sólo emplea una estrategia de difusión, el Singlenton,

mientras que UNFUZZY ofrece otras tres más.

49 Está fue una de las principales motivaciones para ejecutar el proyecto UNFUZZY 50 El ToolBox de Lógica Difusa ha sido solii citado por la U.N. para la sala de cómputo de Automatización Industrial, pero hasta la fecha no ha llegado, de tal manera que sólo se cuenta con la información de catálogos y de algunos demos.

Page 140: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

138

3. MatLab es un programa mucho más amplio que UNFUZZY, ya que incorpora muchas otras herramientas matemáticas, y por lo tanto resulta sencill o emplear los Sistemas de Lógica Difusa como parte de un sistema más complejo.

6.4. Hacia dónd e continuar? Aunque el origen de la Lógica Difusa data del trabajo de Zadeh de 196551, los progresos alcanzados desde finales de los años 80's hacen pensar que aún estamos empleando Sistemas de Lógica Difusa de Primera Generación52. En este sentido, el aporte que puede hacerse a la comunidad tecnológica nacional e internacional es grande, ya que el terreno ofrece vastas zonas donde la exploración efectuada aún es insuficiente. A continuación se señalan algunas de las áreas de trabajo que podrían abordarse desde la perspectiva de la Universidad Nacional de Colombia y su entorno. No deben entenderse las líneas siguientes como un Plan de Investigación. Todo lo contrario, buscan justificar la necesidad de un Plan coherente de Trabajo que incluya la mayoría de los tópicos allí i ncluidos.

6.4.1. Empleando UNFUZZY UNFUZZY pone a disposición de los usuarios una herramienta de diseño e implementación de sistemas de Lógica Difusa. Su utili zación está abierta a las distintas áreas en las que la Lógica Difusa tiene algo que aportar, como por ejemplo: 1. Control de Sistemas no Lineales 2. Modelamiento de Plantas 3. Predicción de series 4. Toma de decisiones 5. Planeamiento estratégico 6. Mantenimiento predictivo

51 L.A. Zadeh, "Fuzzy Sets", en Informat. Control, Vol 8, 1965, pp 338-353 52 Driankov y otros, "An Introduction to Fuzzy Control", Springer Verlag, 1993, pag 11,12

Page 141: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

139

6.4.2. Mejorando UNFUZZY Las versiones posteriores de UNFUZZY deben buscar mejorar esta versión Inicial en los siguientes aspectos: 1. Interfaz: Aún cuando se ha buscado diseñar una Interfaz lo más amigable

posible, son los usuarios los que deben determinar si ésta es o no adecuada, y sugerir los cambios necesarios

2. Diseño de la Base de Reglas: La experiencia del diseñador se plasma en las reglas, lo que amerita que versiones posteriores incorporen módulos que permitan capturar dicha experiencia en una mejor forma

3. Eliminar (o al menos disminuir) las limitaciones señaladas en el numeral 6.2

6.4.3. Diseño con Microcontroladores Quizás la forma más rápida de pasar del diseño de Sistemas de Lógica Difusa en Software a Hardware sea através de los microcontroladores53, ya que la Universidad cuenta con experiencia suficiente para ello. Una evaluación de las bondades y limitaciones de esta implementación debe orientar trabajos posteriores.

6.4.4. Diseño con PLC's Otra vía rápida consiste en la utili zación de las opciones de Lógica Difusa que incorporan algunos PLC's. Por este camino pueden desarrollarse aplicaciones sencill as con poco desarrollo de Hardware.

6.4.5. Diseño con procesadores difusos Existen en el mercado algunos procesadores que manejan lógica difusa, disponibles ya como un integrado. Los costos de éstos, así como el hecho de que aún están en fases experimentales, hacen que esta opción no sea tan

53 Actualmente se desarrolla como proyecto de grado en Ingeniería Eléctrica un trabajo en esta línea.

Page 142: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

140

atractiva como las otras dos, al menos desde la perspectiva de la Universidad Nacional.

6.4.6. Trabajo Teórico En este campo las áreas de trabajo son muchas y muy variadas, y casi todas apuntan a resolver el problema principal: Cómo obtener una metodología de diseño adecuada a todas las opciones que ofrece la lógica Difusa Dentro de estas áreas podemos enumerar: 1. Búsqueda de criterios de Estabili dad. 2. Diseño de mejores algoritmos de entrenamiento 3. Estudio del efecto de la selección de cada parámetro del Sistema de Lógica

Difusa en el desempeño global del mismo. 4. Búsqueda de aplicaciones de Lógica Difusa.

6.5. Conclusiones Finales Recogiendo lo dicho hasta este punto, puede concluirse que: 1. UNFUZZY es una herramienta para el diseño y la implementación en

software de Sistemas de Lógica Difusa como los descritos en el numeral 1.2, que incluye la opción de entrenamiento mediante los algoritmos descritos en el numeral 1.3

2. La posibili dad de disponer de código fuente para los sistemas diseñados con UNFUZZY hace que la implementación en software de éstos sea rápida y sencill a.

3. Las principales limitaciones de UNFUZZY son las reseñadas en el numeral 6.2

4. UNFUZZY es una herramienta generalizada, ya que los Sistemas de Lógica Difusa que se pueden diseñar e implementar con ella son de propósito general y no específico. Prueba de ello son los tres ejemplos de aplicación.

5. Mediante los tres ejemplos de aplicación presentados en el capítulo 5 se muestra cómo pueden implementarse en software los Sistemas de Lógica Difusa diseñados con UNFUZZY

6. En ninguno de los tres ejemplos de aplicación se efectuó un análisis detallado de los posibles Sistemas de Lógica Difusa, ni de su

Page 143: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

141

comportamiento frente a otras posibles soluciones, ya que el objetivo de estos ejemplos era tan sólo el de mostrar la utili zación de UNFUZZY.

Page 144: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

142

Bibliografía Álvarez, Hernán D. “ Control Difuso y Sistemas de Control Inteligentes” en Memorias del

Segundo Congreso de la Asociación Colombiana de Automática, Bucaramanga, Colombia, marzo de 1997, pp 331-340

Angasana,A. & Passino,K. “ Distributed fuzzy control of f lexible manufacturing systems”

en IEEE Transactions on Control Systems Technology, Vol 2, No.4, dic-94 ,pp 423-435

Antasklis, P.J. & Passino, K, “ Introduction to intelli gent control with high degrees of

autonomy” en An Introduction to Intelli gent Control and Autonomous Systems, Kluwer Academic Publishers, 1993, pp 1-26

Driankov, Dimiter & otros. “ An Introduction to Fuzzy Control” Springer Verlag, Berlin,

1993 Kli r, George & Yuan, Bo. “ Fuzzy Sets and Fuzzy Logic” Prentice Hall , New Jersey, 1995 Kwong, W. et al. “ Expert supervision of fuzzy learning systems for fault tolerant aircraft

control” en Proceedings of the IEEE, vol 83, No.3, mar 95, pp 466-483 Kwong,W. & Passino, K. “ Dynamically focused fuzzy learning control” en IEEE

Transactions on Systems, Man and Cybernetics - Part B :Cybernetics, Vol 26 No.1, feb 96 pp53-74

Laukonen,E. & Passino,K. “ Training Fuzzy Systems to perform estimation and

identification” , Engng. Appl. Artif. Intell . Vol 8, No 5, Elsevier Science Ltd. Gran Bretaña, pp 449-514

Laukonen,E. et al. “ Fault detection and isolation for an experimental internal

combustion engine via Fuzzy identification” en IEEE Transactions on Control Systems Technology, Vol 3 No. 3, sep 95, pp 347-355

Layne, J. & Passino, K. “ Fuzzy model reference learning control for cargo ship steering”

en IEEE Control Systems Magazine, Vol 13, No. 6, dic 93, pp 23-24 Lee, Chuen Chien. “ Fuzzy Logic in Control Systems: Fuzzy Logic Controller-Part I ” en

IEEE Transactions on Systems, Man, and Cibernetics, V 20, No. 3 Marzo/Abril 1990, pp 404-418

Lee, Chuen Chien. “ Fuzzy Logic in Control Systems: Fuzzy Logic Controller-Part II ” en

IEEE Transactions on Systems, Man, and Cibernetics, V 20, No. 3 Marzo/Abril 1990, pp 419-435

Page 145: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

143

Lin, Chin-Teng & Lee, George. “ Neural Fuzzy Systems. A NeuroFuzzy Synergism to Intelli gent Systems” Prentice Hall , 1996

López, José F. & otros. “ Comparación entre sistemas difusos para el control de una

banda transportadora dentro de un proceso de manufactura flexible” en Memorias del Segundo Congreso de la Asociación Colombiana de Automática, Bucaramanga, Colombia, marzo de 1997, pp 280-288

Mendel, Jerry. “ Fuzzy Logic Systems for Engineering: A Tutorial” en Procceedingos of

the IEEE, V 83, No. 3 Marzo 1995, pp 345-377 Meneses, Jorge E. & otros, “ Control Fuzzy basado en microcontrolador aplicado a la

operación de un válvula remota” en Memorias del Segundo Congreso de la Asociación Colombiana de Automática, Bucaramanga, Colombia, marzo de 1997, pp 175-181

Moudgal,V & Passino,K. “ Rule-based control for a flexible-link robot” en IEEE

Transactions on Control Systems Technology, Vol 2, No 4, dic 94, pp 392-405 Ordoñez, R. et al. “ Stable Multiple-Input Multiple-Output adaptative fuzzy control” en

Proceedings of the 35th conference on Decision and Control, Kobe, Japan, dec-96, pp 610-615

Passino, Kevin, “ Intelli gent Control” en The Control Handbook, IEEE pp 994-1001 Passino, Kevin, “ Fuzzy Control” en The Control Handbook, IEEE pp 1001-1017 Passino, Kevin, “ Intelli gent Control for Autonomous Systems” en IEEE Spectrum, Junio

1995 pp 55-62 Passino, K. & Lunardhi,A. “ Qualitative Analysis of Expert Control systems” en Intelli gent

Control Systems : Theory and Applications, IEEE press N.Y. 1996 Solano, Karim & otros, “ Controladores adaptables basados en mecanismos de inferencia

Difusa” en Memorias del Segundo Congreso de la Asociación Colombiana de Automática, Bucaramanga, Colombia, marzo de 1997, pp 104-113

Wang, Li-Xin “ Adaptative Fuzzy Systems and Control. Design and Stabilit y Analysis”

Prentice Hall, New Jersey, 1994 Wang, Li-Xin “ Fuzzy Systemes are Universal Approxximators” en Proceedings of the

IEEE International Conference on Fuzzy Systems, San Diego, California 1992, pp 1163-1170

Wang, Li-Xin & Mendel, Jerry. “ Back Propagation Fuzzy System as Nonlinear Dynamic

Systems Identifiers” en Proceedings of the IEEE International Conference on Fuzzy Systems, Sna Diego, California, 1992 pp 1409-1418

Page 146: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

144

Wang, Li-Xin & Mendel, Jerry. “ Fuzzy Basis Functions, Universal Approximation, ang

Orthogonal Least-Squares Learning” en IEEE Transactions on Neural Networks, Vol 3, No 5, Septiembre 1992, pp 807-814

Wang, Li-Xin & Mendel, Jerry. “ Generating Fuzzy Rules by Learning from Examples” en

Proceedings of the IEEE 1991 International Symposium on Intelli gent Control 13-15 August, Arlington, Virginia, U.S.A. pp 263-268

Yamakawa, T. “ A Fuzzy Inference Engine in Nonlinear Analog mode and its applications to a fuzzy logic control” en IEEE Transactions on Neural Networks, Mayo 1993.

Page 147: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

145

TABLA DE CONTENIDO

0. introducción ________________________________________________________1

1. conceptos básicos ____________________________________________________3

1.1. Conjuntos Difusos y Lógica Difusa_______________________________________3 1.1.1. T-Normas _______________________________________________________________4 1.1.2. S-Normas _______________________________________________________________4 1.1.3. Complemento ____________________________________________________________5 1.1.4. Modificadores____________________________________________________________5 1.1.5. Relación ________________________________________________________________6 1.1.6. Composición de Relaciones y Conjuntos _______________________________________ 6 1.1.7. Implicación______________________________________________________________7

1.1.7.1. Implicación IF-THEN ________________________________________________7 1.1.7.2. Implicación AND ___________________________________________________7

1.2. Estructura de un Sistema de Lógica Difusa________________________________7 1.2.1. Variables Lingüísticas______________________________________________________8

1.2.1.1. Nombre de la Variable________________________________________________8 1.2.1.2. Universo de Discurso_________________________________________________8 1.2.1.3. Valores Lingüísticos _________________________________________________8

1.2.2. Difusor _________________________________________________________________ 9 1.2.3. Base de Reglas ___________________________________________________________9 1.2.4. Motor de Inferencia ______________________________________________________10 1.2.5. Concresor ______________________________________________________________12

1.3. Entrenamiento de Sistemas de Lógica Difusa mediante Tablas_______________12 1.3.1. Algoritmo de entrenamiento con los Universos Fijos_____________________________14 1.3.2. Algoritmo de entrenamiento con los Universos Variables _________________________14

2. unfuzzy - análisis del software_________________________________________16

2.1. Propósito del programa _______________________________________________16 2.1.1. Diseño de Sistemas de Lógica Difusa_________________________________________16 2.1.2. Simulación y Análisis de Sistemas de Lógica Difusa_____________________________18 2.1.3. Implementación de Sistemas de Lógica Difusa _________________________________ 19

2.2. Análisis del software__________________________________________________19 2.2.1. Módulo del Problema _____________________________________________________20

2.2.1.1. Universo de Entrada ________________________________________________21 2.2.1.2. Universo de Salida__________________________________________________22 2.2.1.3. Máquina de Inferencia_______________________________________________22 2.2.1.4. Bloque de Concreción _______________________________________________23

2.2.2. Módulo de Consulta ______________________________________________________23 2.2.3. Módulo de Edición _______________________________________________________24

3. UNFUZZY - diseño del software _______________________________________26

3.1. Clases Semánticas____________________________________________________26 3.1.1. Clase ConjuntoDifuso y derivadas ___________________________________________26 3.1.2. Clase Difusor y derivadas__________________________________________________29 3.1.3. Clase Norma y derivadas __________________________________________________30 3.1.4. Clase Implicacion y derivadas ______________________________________________31 3.1.5. Clase Variable___________________________________________________________33 3.1.6. Clase Universo __________________________________________________________34

Page 148: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

146

3.1.7. Clase Regla_____________________________________________________________35 3.1.8. Clase MaquinaInferencia __________________________________________________36 3.1.9. Clase Concresor y derivadas________________________________________________37 3.1.10. Clase BloqueConcrecion___________________________________________________39

3.2. Clases de Consulta ___________________________________________________41

3.3. Clases de Edición ____________________________________________________41

3.4. Otras Clases ________________________________________________________43

4. unfuzzy - manual del usuario__________________________________________44

4.1. Generalidades_______________________________________________________44 4.1.1. Requerimientos__________________________________________________________44 4.1.2. Instalación______________________________________________________________45 4.1.3. Un primer ejemplo _______________________________________________________46

4.1.3.1. Primeros cálculos___________________________________________________48 4.1.3.2. Cálculo Paso a Paso_________________________________________________49 4.1.3.3. Modificaciones al Universo de Entrada__________________________________ 51 4.1.3.4. Modificaciones a la Base de Reglas ____________________________________ 53 4.1.3.5. Modificaciones a la Máquina de Inferencia_______________________________55 4.1.3.6. Generación de Tablas _______________________________________________56 4.1.3.7. Generación de Código Fuente _________________________________________57

4.2. Opciones de Diseño___________________________________________________58

4.3. Diseño de un Sistema de Lógica Difusa __________________________________62 4.3.1. Paso 1 : Diseño del Universo de Entrada ______________________________________ 63

4.3.1.1. Autodefinición de Universo Recto: _____________________________________ 64 4.3.1.2. Autodefinición de Universo Curvo:_____________________________________ 65 4.3.1.3. Definición de cada Variable Lingüística _________________________________ 65

4.3.2. Paso 2: Diseño del Universo de Salida: _______________________________________ 71 4.3.2.1. Autodefinición de Universos Rectos o Curvos ____________________________71 4.3.2.2. Intervalos de Evaluación _____________________________________________72 4.3.2.3. Concresores en lugar de Difusores _____________________________________ 72

4.3.3. Paso 3: Diseño de la Base de Reglas _________________________________________72 4.3.3.1. Definición Rápida __________________________________________________72 4.3.3.2. Definición de Cada Regla ____________________________________________74

4.3.4. Paso 4: Diseño del Motor de Inferencia _______________________________________ 77 4.3.5. Paso 5: Comentario Descriptivo _____________________________________________78

4.4. Análisis e implementación de un Sistema de Lógica Difusa__________________79 4.4.1. Cálculo de Salidas________________________________________________________79 4.4.2. Cálculo Paso a Paso ______________________________________________________80 4.4.3. Función de Transferencia __________________________________________________82

4.4.3.1. Selección de Entrada ________________________________________________83 4.4.3.2. Selección de Salida _________________________________________________83 4.4.3.3. Entradas fijas______________________________________________________83 4.4.3.4. Calcular __________________________________________________________84 4.4.3.5. Limpiar __________________________________________________________84

4.4.4. Generación de Tablas Entrada-Salida_________________________________________84 4.4.5. Generación de Código Fuente_______________________________________________85

4.5. Entrenamiento de un Sistema de Lógica Difusa ___________________________86

4.6. Utilización del Código Fuente generado por UNFUZZY ____________________88 4.6.1. Código C_______________________________________________________________89

4.6.1.1. Estructuras y variables globales: _______________________________________ 89 4.6.1.2. funciones: ________________________________________________________90

Page 149: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

147

4.6.2. Código C++ ____________________________________________________________90

5. unfuzzy - ejemplos de aplicacion _______________________________________92

5.1. Controlador difuso para el péndulo invertido _____________________________92 5.1.1. Planteamiento del problema ________________________________________________92 5.1.2. Diseño del controlador difuso_______________________________________________95

5.1.2.1. Controlador 1______________________________________________________95 5.1.2.2. Controlador 2______________________________________________________97 5.1.2.3. Controlador 3______________________________________________________99 5.1.2.4. Controlador 4_____________________________________________________102

5.1.3. Software de simulación___________________________________________________104 5.1.3.1. Planta___________________________________________________________104 5.1.3.2. Controlador ______________________________________________________105 5.1.3.3. Simulador _______________________________________________________106 5.1.3.4. Código Fuente de PENDULO.EXE____________________________________ 107

5.1.4. Resultados_____________________________________________________________108 5.1.4.1. Variación de la Escala de Fuerza______________________________________ 110 5.1.4.2. Variación del Intervalo de Aplicación de la Fuerza________________________111

5.1.5. Conclusiones___________________________________________________________111

5.2. Identificación de plantas _____________________________________________112 5.2.1. Planteamiento del problema _______________________________________________112 5.2.2. Diseño del Sistema de lógica difusa_________________________________________113

5.2.2.1. Modelo 1 ________________________________________________________113 5.2.2.2. Modelo 2 ________________________________________________________114 5.2.2.3. Modelo 3 ________________________________________________________115 5.2.2.4. Modelo 4 ________________________________________________________117

5.2.3. Software de simulación___________________________________________________118 5.2.3.1. Planta___________________________________________________________118 5.2.3.2. Modelo__________________________________________________________118 5.2.3.3. Identificación_____________________________________________________119 5.2.3.4. Código Fuente de IDENTI.EXE ______________________________________ 120

5.2.4. Resultados_____________________________________________________________121 5.2.5. Conclusiones___________________________________________________________123

5.3. Predicción de series de tiempo_________________________________________124 5.3.1. Planteamiento del problema _______________________________________________125 5.3.2. Diseño del Sistema de lógica difusa_________________________________________125 5.3.3. Software de simulación___________________________________________________127

5.3.3.1. Serie____________________________________________________________127 5.3.3.2. Modelo__________________________________________________________128 5.3.3.3. Predicción _______________________________________________________128 5.3.3.4. Código Fuente de SERIE.EXE _______________________________________ 129

5.3.4. Resultados_____________________________________________________________131 5.3.5. Conclusiones___________________________________________________________133

6. Crítica al Proyecto y Conclusiones ____________________________________134

6.1. Alcance de UNFUZZY _______________________________________________134

6.2. Limitaciones de UNFUZZY ___________________________________________135

6.3. Otras herr amientas de diseño _________________________________________136

6.4. Hacia dónde continuar?______________________________________________138 6.4.1. Empleando UNFUZZY___________________________________________________138 6.4.2. Mejorando UNFUZZY ___________________________________________________139 6.4.3. Diseño con Microcontroladores ____________________________________________139

Page 150: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

148

6.4.4. Diseño con PLC's _______________________________________________________139 6.4.5. Diseño con procesadores difusos ___________________________________________139 6.4.6. Trabajo Teórico ________________________________________________________140

6.5. Conclusiones Finales_________________________________________________140

Page 151: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

149

LISTA DE FIGURAS Figura 1.1 Funciones de Pertenencia________________________________________________________4 Figura 1.2 Sistema de Lógica Difusa ________________________________________________________8 Figura 1.3 Valores Lingüísticos____________________________________________________________9 Figura 1.4Difusor_______________________________________________________________________ 9 Figura 1.5 Máquina de Inferencia _________________________________________________________10 Figura 1.6 Concresor ___________________________________________________________________ 12 Figura 2.1 Estructura del programa _______________________________________________________20 Figura 2.2 Módulo del problema __________________________________________________________20 Figura 2.3 Universo ____________________________________________________________________ 21 Figura 2.4 Variable Lingüística___________________________________________________________21 Figura 2.5 Valor Lingüístico _____________________________________________________________22 Figura 2.6 Máquina de Inferencia _________________________________________________________22 Figura 2.7 Regla_______________________________________________________________________ 23 Figura 2.8 Concresor ___________________________________________________________________ 23 Figura 2.9 Módulo de Consulta ___________________________________________________________24 Figura 2.10 Módulo de Edición ___________________________________________________________25 Figura 4.1 Ícono de UNFUZZY ___________________________________________________________45 Figura 4.2 Ventana de UNFUZZY _________________________________________________________46 Figura 4.3 Ventana de Trabajo - Archivo EJEMPLO.DIF ______________________________________ 47 Figura 4.4 Barra de Herramientas de UNFUZZY _____________________________________________48 Figura 4.5 Cuadro de Diálogo Calcular ____________________________________________________49 Figura 4.6 Cuadro de Diálogo Calcular Paso A Paso__________________________________________51 Figura 4.7 Cuadro de Diálogo Definir Variable de Entrada_____________________________________ 53 Figura 4.8 Cuadro de Diálogo Definir Base de Reglas_________________________________________54 Figura 4.9 Cuadro de Diálogo____________________________________________________________55 Figura 4.10 Cuadro de Diálogo Generar Tabla ______________________________________________56 Figura 4.11 Cuadro de Diálogo Generar Código _____________________________________________57 Figura 4.12 Ventana de UNFUZZY para un Nuevo Sistema de Lógica Difusa _______________________63 Figura 4.13 Cuadro de Diálogo Autodefinición de Universos____________________________________ 64 Figura 4.14 Cuadro de Diálogo Definir Variable de Entrada____________________________________ 66 Figura 4.15 Cuadro de Diálogo Definción de Variable_________________________________________67 Figura 4.16 Cuadro de Diálogo Definir Difusor ______________________________________________68 Figura 4.17 Cuadro de Diálogo Puntos de Evaluación_________________________________________69 Figura 4.18 Cuadro de Diálogo Insertar Conjunto ____________________________________________70 Figura 4.19 Cuadro de Diálogo Autodefinición de Variables ____________________________________ 71 Figura 4.20 Cuadro de Diálogo Definición Rápida de Reglas ___________________________________ 73 Figura 4.21 Cuadro de Diálogo Definición de Reglas__________________________________________75 Figura 4.22 Cuadro de Diálogo Ir A...______________________________________________________76 Figura 4.23 Cuadro de Diálogo Opciones Matemáticas ________________________________________78 Figura 4.24 Cuadro de Diálogo Calcular ___________________________________________________80 Figura 4.25 Cuadro de Diálogo Calcular Paso A Paso_________________________________________82 Figura 4.26 Cuadro de Diálogo Función de Transferencia______________________________________ 83 Figura 4.27 Cuadro de Diálogo Generar Tabla ______________________________________________85 Figura 4.28 Cuadro de Diálogo Generar Código _____________________________________________86 Figura 4.29 Cuadro de Diálogo Entrenamiento_______________________________________________87 Figura 5.1 Péndulo Invertido_____________________________________________________________93 Figura 5.2 Modelo del péndulo ___________________________________________________________93 Figura 5.3 Funciones de Pertenencia para la Variable Ángulo, Controladores 1 y 2__________________96 Figura 5.4 Funciones de Pertenencia para la Variable Control, Controladores 1 y 2 _________________96 Figura 5.5 Relación Entrada-Salida Controlador 1____________________________________________97

Page 152: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE … DIFUSA/TextoMaestria.pdfLógica Difusa con módulos de Difusión y Concreción, que en adelante se denominarán Difusor y Concresor

150

Figura 5.6 Relación Entrada-Salida Controlador 1____________________________________________99 Figura 5.7 Funciones de Pertenencia para la Variable Ángulo, Controladores 3 y 4__________________99 Figura 5.8 Funciones de Pertenencia para la Variable Delta Ángulo_____________________________100 Figura 5.9 Funciones de Pertenencia para la Variable Control, Controladores 3 y 4 ________________100 Figura 5.10 Relación Entrada-Salida Controlador 3__________________________________________102 Figura 5.11 Relación Entrada-Salida Controlador 4__________________________________________104 Figura 5.12 Cuadro de Diálogo Planta ____________________________________________________105 Figura 5.13 Cuadro de Diálogo Controlador _______________________________________________106 Figura 5.14 Cuadro de Diálogo Simulador _________________________________________________107 Figura 5.15 Comportamiento de la Planta con distintos controladores ___________________________110 Figura 5.16 Funciones de Pertenencia para las Variable Entrada y Salida, Modelo 1________________114 Figura 5.17 Funciones de Pertenencia para las Variable Entrada y Salida, Modelo 2________________115 Figura 5.18 Funciones de Pertenencia para las Variable Entrada y Salida, Modelo 3________________116 Figura 5.19 Conjunto modelo para las Variable Entrada y Salida, Modelo 4_______________________117 Figura 5.20 Cuadro de Diálogo Planta ____________________________________________________118 Figura 5.21 Cuadro de Diálogo Modelo ___________________________________________________119 Figura 5.22 Cuadro de Diálogo Identificación ______________________________________________120 Figura 5.23 Resultados de los cuatro modelos_______________________________________________122 Figura 5.24 Efecto de alterar el número de datos de entrenamiento______________________________123 Figura 5.25 Cuadro de Diálogo Serie _____________________________________________________127 Figura 5.26 Cuadro de Diálogo Modelo ___________________________________________________128 Figura 5.27 Cuadro de Diálogo Predicción_________________________________________________129 Figura 5.28 Resultados de los cuatro modelos_______________________________________________131 Figura 5.29 Efecto de modificar el periodo P sobre el modelo 2_________________________________ 132 Figura 5.30 Efecto de alterar el número de datos de entrenamiento______________________________133