FJ Moreno Velo, I. Baturone, S. Sánchez Solano, A. Barriga Instituto

Transcripción

FJ Moreno Velo, I. Baturone, S. Sánchez Solano, A. Barriga Instituto
LA DEFINICIÓN DE CONCEPTOS LINGÜÍSTICOS EN XFUZZY 3
F. J. Moreno Velo, I. Baturone, S. Sánchez Solano, A. Barriga
Instituto de Microelectrónica de Sevilla - Centro Nacional de Microelectrónica
Avda. Reina Mercedes s/n, (Edif. CICA),
E-41012, Sevilla, Spain.
Proc. XII Congreso Español de Tecnologías y Lógica Fuzzy, (ESTYLF 2004),
pp. 575-580, Jaén, Septiembre 15-17, 2004.
This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights
therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere
to the terms and constraints invoked by each author’s copyright. In most cases, these works may not be reposted without
the explicit permission of the copyright holder.
LA DEFINICIÓN DE CONCEPTOS LINGÜÍSTICOS EN XFUZZY 3
F. J. Moreno Velo
I. Baturone
S. Sánchez-Solano
A. Barriga
Instituto de Microelectrónica de Sevilla (CNM-CSIC)
Avda. Reina Mercedes s/n, Edif. CICA. 41012-Sevilla. España
[email protected]
Resumen
Este trabajo presenta un estudio sobre las diferentes formas de definir conceptos lingüísticos
difusos, ya sean funciones de pertenencia libres
o familias de funciones de pertenencia, y describe la capacidad del lenguaje XFL3 (el lenguaje de especificación formal de Xfuzzy 3)
tanto para utilizar ambas formas como para
extender el conjunto de funciones y familias disponibles. El trabajo incluye un ejemplo de aplicación en el que se pone de manifiesto las
ventajas e inconvenientes de cada opción.
parámetros: ( a, b, c ) con ( a < b < c )
a
Las funciones de pertenencia, como forma de representar
conceptos lingüísticos, suponen la base de cualquier metodología difusa. Desde un punto de vista teórico, cualquier
función definida sobre el universo de discurso de una variable que tome valores en el intervalo [0, 1] puede ser utilizada como una función de pertenencia [1]. Teniendo en cuenta el significado lingüístico asociado a estas funciones, las
formas más utilizadas corresponden a la descripción difusa
de valores concretos (funciones δ), de intervalos (funciones
π) y de intervalos extremos del universo de discurso (funciones s y funciones z)[2].
Desde un punto de vista práctico, las funciones de pertenencia se suelen definir como funciones analíticas. Gene-
Figura 1: Algunas de las funciones analíticas más usadas.
c
( x – a)
---------------- si ( a < x < b )
(b – a)
(c – x)
---------------- si ( c > x ≥ b )
(c – b)
parámetros: ( m, w, s )
con ( w > 0 ) y s ∈ ( – 1, 1 )
w
m
Palabras clave: Funciones de Pertenencia,
Diseño de Sistemas Difusos, Herramientas
CAD, Lenguajes formales.
1 INTRODUCCIÓN
b



µ( x) = 






µ( x) = 



2( x – m)
--------------------- + 1 si ( x < m )
( 1 – s )w
2(m – x)
--------------------- + 1 si ( x ≥ m )
( 1 + s )w
Figura 2: Diferentes expresiones para definir una
función triangular.
ralmente, la expresión matemática de estas funciones contiene una serie de parámetros que deben ser introducidos al
definir la función. Por ejemplo, la definición de una función de pertenencia gaussiana requiere la introducción del
valor del centro y la anchura de la función. Las funciones
analíticas más utilizadas incluyen funciones lineales a tramos (triángulos, trapecios y rampas) y funciones no lineales (campanas y sigmoides) [3]. La Figura 1 muestra una
representación gráfica de estas funciones analíticas.
A la hora de afrontar el diseño de un sistema difuso, no sólo
es importante considerar la forma de las funciones de pertenencia a utilizar, sino también la expresión matemática
más adecuada para estas funciones. Por ejemplo, una función triangular puede ser definida mediante tres parámetros: el ápice y los límites del triángulo (Fig. 2.a), o el ápice,
anchura y sesgo (Fig. 2.b). En general, no se ha prestado
demasiada atención a la selección de la expresión matemática más adecuada para las funciones de pertenencia. Otros
aspectos, como la selección de la forma de las funciones o
los operadores a utilizar han sido mucho más estudiados, ya
que influyen directamente en el comportamiento del sistema. Por otro lado, la definición de las funciones de pertenencia en términos de un conjunto de parámetros o de otro
no tiene influencia sobre el funcionamiento del sistema difuso.
Este trabajo ha sido financiado parcialmente por el proyecto CICYT TIC2001-1726.
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY
575
Sin embargo, cuando se aplican técnicas de soft computing
en el diseño de sistemas difusos (como la identificación,
ajuste o simplificación automática de estos sistemas) la selección de los parámetros que definen las funciones cobra
una gran importancia. Estas técnicas suelen modificar automáticamente el valor de estos parámetros, por lo que resulta muy importante utilizar expresiones paramétricas que
permitan mantener la interpretabilidad lingüística del sistema bajo estos procesos automatizados.
La estructura de este trabajo es la siguiente. El apartado 2
describe las diferentes formas de definir paramétricamente
un conjunto de funciones de pertenencia, así como la interpretación lingüística asociada y sus ventajas e inconvenientes. El apartado 3 describe cómo se han desarrollado estas
formas de representación en XFL3, el lenguaje de especificación formal del entorno Xfuzzy 3. Por último, el apartado
4 muestra un ejemplo en el que se utilizan diferentes definiciones y se estudian los resultados que permiten obtener.
2 FORMAS DE DEFINICIÓN DE FUNCIONES DE PERTENENCIA
La primera cuestión a la hora de definir un conjunto de funciones de pertenencia (relacionadas con las etiquetas lingüísticas de una variable) es si utilizar una lista de parámetros para definir el conjunto de funciones completo, o si definir cada función de pertenencia por medio de sus propios
parámetros. En el primer caso estaremos hablando de familias de funciones de pertenencia, mientras que el segundo
caso se conoce como funciones de pertenencia libres (Fig.
3).
La definición de las funciones de pertenencia en forma de
familia tiene varias ventajas. En primer lugar, requiere un
número de parámetros menor que el que utilizan las funciones libres. Esto puede facilitar el ajuste de los sistemas y
permitir el uso de algunos algoritmos de aprendizaje (como
los algoritmos de enfriamiento simulado o los algoritmos
genéticos) que no son apropiados cuando el número de pa-
p1
p11
p12 p21
p2
p3
p13 p22 p31
p4
p23 p32
p33
Figura 3: Differentes formas de definición: a) Familia de
funciones; (b) Funciones de pertenencia libres.
576
rámetros a ajustar es alto. En segundo lugar, la utilización
de una lista de parámetros comunes facilita la garantía del
significado lingüístico de las funciones, ya que no pueden
variar su orden, simetría o grado de solapamiento por construcción. Por último, las familias permiten definir funciones con un grado de solapamiento fijo. Esto resulta muy
útil para poder aplicar mecanismos de inferencia simplificados (utilizando reglas activas, por ejemplo) lo que aumenta la velocidad de inferencia del sistema y permite la
integración en circuitos difusos. El principal inconveniente
de este tipo de definición es que representa restricciones
muy fuertes a las variaciones de las funciones, lo que puede
ser un obstáculo a la hora de optimizar el comportamiento
del sistema. Esto es especialmente importante en el caso de
variables de salida.
Por su parte, la definición de funciones de pertenencia libres no impone ninguna restricción respecto al movimiento
de las funciones en procesos de ajuste automático. Esto resulta muy útil en procesos de adquisición de conocimiento,
ya que permite aprender la forma, posición y grado de solapamiento más adecuado para las funciones. Las funciones libres permiten obtener mejores resultados en los procesos de optimización, ya que utilizan un mayor número de
grados de libertad. El principal inconveniente es la dificultad para mantener el significado lingüístico en procesos de
optimización automáticos y que pueden generar representaciones incompatibles con esquemas de inferencia simplificados.
En general, las funciones de pertenencia libres resultan más
apropiadas para describir variables de salida, mientras que
las familias de funciones son más adecuadas para describir
variables de entrada. En los casos en los que no existe mucha información sobre la forma más adecuada para representar una variable de entrada, una buena táctica suele ser
representarlas inicialmente mediante funciones libres y
realizar un proceso de ajuste, de forma que el resultado de
esta optimización permita obtener conocimiento sobre la
forma, simetría y grado de solapamiento adecuados. Esta
información puede emplearse para describir la función por
medio de una familia de funciones adecuada.
Un aspecto importante, tanto para la definición de funciones libres como para la de familias de funciones, es la selección de la descripción paramétrica más adecuada. Una
descripción paramétrica adecuada es aquella con el mayor
grado de libertad posible capaz de mantener el significado
lingüístico de las funciones, así como las restricciones particulares que considere el diseñador. La Figura 4 muestra
un ejemplo con un conjunto de 7 funciones triangulares. Si
se describen por medio de funciones libres se necesitan 21
parámetros (3 por función) (Fig. 4b). Es posible mantener
el orden y el grado de solapamiento 2 utilizando una familia de funciones triangulares con 5 parámetros (Fig. 4c). Si
la variable descrita tiene un comportamiento simétrico, se
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY
(a)
(b)
(c)
(d)
Figura 4: Ejemplo de la evolución de un conjunto de funciones: (a) estado inicial; (b) estado final con funciones libres;
(c) estado final con una familia de funciones; (d) estado final con una familia de funciones simétricas.
puede utilizar una familia de funciones triangulares simétricas, utilizando tan solo 2 parámetros (Fig. 4d).
La capacidad de utilizar tanto funciones de pertenencia libres como familias de funciones es una característica muy
deseable en los entornos CAD de diseño de sistemas difusos. Estos entornos deberían ofrecer las familias y funciones más usuales. Un conjunto típico de funciones libres
contiene triángulos, trapezoides, rampas, campanas, sigmoides y singularidades. Un conjunto típico de familias
contiene familias de triángulos, de trapecios, de campanas
y de splines (para un grado de solapamiento 3), así como
sus versiones simétricas. Otra característica deseable es la
capacidad de crear nuevas funciones y familias e integrarlas en el flujo de diseño del entorno. El siguiente apartado
muestra cómo se han considerado estas características en el
entorno Xfuzzy 3.
3 LA DEFINICIÓN DE FUNCIONES DE
PERTENENCIA EN XFL3
XFL3 es un lenguaje de descripción formal de sistemas difusos complejos [4], definido como lenguaje de especificación común de las herramientas integradas en el entorno de
desarrollo Xfuzzy 3 [5]. Estas herramientas cubren las diferentes etapas del flujo de diseño de los sistemas difusos:
descripción, identificación, ajuste, simplificación, verificación y síntesis. Las principales características de XFL3 son
su alta expresividad, extensibilidad y modularidad. La modularidad se refiere a la capacidad del lenguaje para describir sistemas jerárquicos formados por diferentes módulos,
tanto bases de reglas como bloques no difusos. En cuanto a
la expresividad, el lenguaje permite describir reglas difusas
por medio de cualquier combinación de conectivas difusas
y modificadores lingüísticos. Por último, el lenguaje incorpora mecanismos que permiten extender el conjunto de
funciones disponibles para representar los diferentes bloques del sistema: operadores difusos, modificadores lingüísticos, funciones de pertenencia libres, familias de funciones, métodos de concreción o bloques no difusos.
La descripción de un sistema por medio de XFL3 se divide
en dos partes: la descripción lógica (incluida en ficheros de
extensión “xfl”) y la descripción funcional (incluida en ficheros llamados paquetes de funciones), que describe matemáticamente las funciones utilizadas en la descripción lógica. La descripción lógica contiene la definición de tres tipos de objetos (conjunto de operadores, tipos de variables
y bases de reglas), así como la descripción de la estructura
modular del sistema. La definición de las funciones de pertenencia asignadas a las variables se incluye en los tipos de
variables. La sintaxis de estos objetos en XFL3 es la siguiente:
type identificador [min,max; card] {
fam_id[] paquete.familia(parámetros);
mf_id paquete.función(parámetros);
mf_id fam_id[índice];
.... }
Esta definición incluye el nombre del objeto, la descripción
del universo de discurso (que incluye los límites del mismo
y la cardinalidad), la lista de etiquetas lingüísticas (mf_id)
y la definición de la función de pertenencia asociada. Esta
función puede ser una función de pertenencia libre (seleccionada en un paquete de funciones) o un miembro de una
familia de funciones, definida previamente mediante su selección en un paquete de funciones. La Figura 5 muestra un
ejemplo de definición de un tipo de variable utilizando funciones libres o familias de funciones.
Los paquetes de funciones contienen la definición matemática de las funciones utilizadas en la descripción lógica del
sistema. Estos paquetes se definen en archivos con extensión “.pkg” y pueden ser creados libremente por los diseñadores. De esta forma, el conjunto de funciones disponibles
en el diseño de sistemas difusos puede ser ampliado. Un
paquete contiene un conjunto de definiciones de funciones
de seis tipos diferentes: funciones binarias (asociadas a las
conectivas difusas), funciones unarias (asociadas a los modificadores lingüísticos), métodos de concreción, funcio-
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY
577
type TInput1 [0,100] {
very_small xfl.triangle(-25,0,25);
small
xfl.triangle(0,25,50);
medium
xfl.triangle(25,50,75);
big
xfl.triangle(50,75,100);
very_big
xfl.triangle(75,100,125);
}
type TInput2 [0,100] {
family[]
xfl.triangular(25,50,75);
very_small family[0];
small
family[1];
medium
family[2];
big
family[3];
very_big
family[4];
}
Figura 5: Ejemplo de definición de tipos de variable
utilizando funciones libres y familias de funciones.
nes concretas (asociadas a bloques no difusos), funciones
de pertenencia libres y familias de funciones de pertenencia. Estas definiciones se basan en una serie de bloques que
definen los parámetros de la función, la descripción matemática en varios lenguajes de programación y algunas otras
características.
La Figura 6 y la Figura 7 muestran un ejemplo de definición de una función de pertenencia libre y de una familia de
funciones de pertenencia, respectivamente, en los que se
refleja el contenido de los diferentes bloques de las definiciones. El bloque parameters permite definir el conjunto de
parámetros de la función. El último identificador puede ir
seguido de corchetes, indicando que se trata de una lista de
parámetros. El bloque requires expresa los requisitos que
deben cumplir los valores de estos parámetros para representar una definición válida. En este bloque se pueden utilizar las constantes min y max (universo de discurso) y la
función sorted(). La definición de una familia de funciones
debe contener el bloque members que indica el número de
funciones que contiene la familia.
mos basados en el gradiente del sistema. Este bloque se divide en los cinco subbloques descritos anteriormente y su
objetivo es almacenar en la variable deriv[] el valor de las
derivadas respecto a cada parámetro.
La modificación automática de los parámetros puede generar situaciones en las que las restricciones de estos parámetros no se cumplan. El bloque update se utiliza para evitar
estos problemas. El código de este bloque actualiza los valores de los parámetros (variable pos[]) a partir de los desplazamientos deseados (variable desp[]) teniendo en cuenta la selección de parámetros a ajustar (variable adj[]), asegurando que la descripción de la función sea consistente.
La función sortedUpdate() puede utilizarse para asegurar
una actualización que mantenga una condición de orden en
los valores de los parámetros.
El contenido de estos bloques sirve de base para generar
una clase Java que contiene toda la funcionalidad incluida
en la definición. Esta clase puede ser instanciada en tiempo
de ejecución, permitiendo el uso de nuevas funciones definidas por el diseñador. Este mecanismo dota al entorno
Xfuzzy 3 de una enorme flexibilidad en su capacidad de diseño. Las herramientas integradas en el entorno han sido
programadas para soportar este tipo de funciones extendidas por el usuario.
4 EJEMPLO DE APLICACIÓN
Los bloques java, ansi_c y cplusplus contienen la descripción matemática de la función en estos lenguajes de programación. Estos bloques se dividen en cinco subbloques:
equal, greatereq, smallereq, center y basis. El subbloque
equal define el grado de pertenencia del valor x. Los subbloques greatereq y smallereq definen el grado de pertenencia del valor x para las modificaciones lingüísticas
mayor_o_igual y menor_o_igual. Los subbloques center y
basis calculan el valor del centro y de la base de la función.
En la definición de familias de funciones, la variable i indica el índice de la función a evaluar.
Consideremos como ejemplo el diseño de un sistema difuso que aproxime el comportamiento de la función mostrada
en la Figura 8. Se trata de una función con dos variables de
entrada que se utiliza comúnmente para evaluar aproximadores difusos [6]. Para representar el comportamiento de
esta función se ha utilizado un conjunto de 441 patrones de
entrada-salida. Inicialmente se ha considerado una descripción de las variables de entrada por medio de 7 funciones
de pertenencia gaussianas distribuidas homogéneamente.
La base de reglas considerada contiene todas las combinaciones posibles de estas funciones, lo que forma un total de
49 reglas. Cada una de estas reglas contiene una conclusión
independiente descrita por medio de una función gaussiana. Inicialmente el comportamiento del sistema es plano,
ya que las 49 funciones de pertenencia de salida son iguales. Para aproximar el comportamiento de este sistema a la
función objetivo se ha utilizado la herramienta de aprendizaje automático integrada en Xfuzzy 3 [7], y se han seleccionado como ajustables todos los parámetros de las funciones de pertenencia (126). La Figura 9 representa la descripción de las funciones de pertenencia tras el proceso de
aprendizaje. El comportamiento del sistema se aproxima a
la función objetivo con un RMSE del 0.46%.
El bloque derivative define las derivadas de la función.
Esta información es importante para poder utilizar las funciones en procesos de ajuste automático que usen algorit-
A partir del resultado anterior se puede extraer información
para obtener una representación que pueda ser sintetizada
mediante técnicas de inferencia simplificada. En particular,
578
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY
mf triangle {
parameter a, b, c;
requires { a<b && b<c && b>=min && b<=max }
java {
equal {
if(a<x && x<=b) return (x-a)/(b-a);
if(b<x && x<c) return (c-x)/(c-b);
return 0;
}
greatereq { ... }
smallereq { ... }
center { ... }
basis { ... }
}
ansi_c { ... }
cplusplus { ... }
derivative {
equal {
if(a<x && x<b) {
deriv[0] = (x-b)/((b-a)*(b-a));
deriv[1] = (a-x)/((b-a)*(b-a));
} else if(b<x && x<c) {
deriv[1] = (c-x)/((c-b)*(c-b));
deriv[2] = (x-b)/((c-b)*(c-b));
} else if(x==a) {
deriv[0] = 0.5/(a-b);
} else if(x==b) {
deriv[1] = 0.5/(a-b) + 0.5/(c-b);
} else if(x==c) {
deriv[2] = 0.5/(c-b);
}
}
....
}
update {
pos = sortedUpdate(pos,desp,adj);
if(pos[1]<min) pos[1]=min;
if(pos[2]<=pos[1]) pos[2] = pos[1]+step;
if(pos[1]>max) pos[1]=max;
if(pos[0]>=pos[1]) pos[0] = pos[1]-step;
}
}
Figura 6: Ejemplo de definición de una función de pertenencia libre: la función triangle.
family triangular {
parameter p[];
requires { p.length>0 && p[0]>min &&
p[p.length-1]<max && sorted(p) }
members { return p.length+2; }
java {
equal {
double a = (i==0? min-1 : (i==1 ? min : p[i-2]));
double b = (i==0? min : (i==p.length+1? max : p[i-1]));
double c = (i==p.length? max :
(i==p.length+1? max+1 : p[i]));
return (a<x && x<=b? (x-a)/(b-a) :
(b<x && x<c? (c-x)/(c-b) : 0));
}
greatereq { ... }
smallereq { ... }
center { ... }
basis { ... }
}
ansi_c { ... }
cplusplus { ... }
derivative {
equal {
double a = ...;
double b = ...;
double c = ...;
if(i>=2) {
if(a<x && x<b) deriv[i-2] = (x-b)/((b-a)*(b-a));
else if(x==a) deriv[i-2] = 0.5/(a-b);
else deriv[i-2] = 0;
}
if(i>=1 && i<=p.length) {
if(a<x && x<b) deriv[i-1] = (a-x)/((b-a)*(b-a));
else if(b<x && x<c) deriv[i-1] = (c-x)/((c-b)*(c-b));
else if(x==b) deriv[i-1] = 0.5/(a-b) + 0.5/(c-b);
else deriv[i-1] = 0;
}
if(i<p.length) {
if(b<x && x<c) deriv[i] = (x-b)/((c-b)*(c-b));
else if(x==c) deriv[i] = 0.5/(c-b);
else deriv[i] = 0;
}
}
.....
}
update {
pos = sortedUpdate(pos,desp,adj);
if(pos[0]<min) {
pos[0]=min;
for(int i=1;i<p.length; i++) {
if(pos[i]<=pos[i-1]) pos[i] = pos[i-1]+step;
else break;
}
}
if(pos[p.length-1]>max) {
pos[p.length-1]=max;
for(int i=p.length-2; i>=0; i--) {
if(pos[i]>=pos[i+1]) pos[i] = pos[i+1]-step;
else break;
}
}
}
}
Figura 7: Ejemplo de definición de una familia de funciones de pertenencia; la familia triangular.
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY
579
1
f ( x, y ) = --- ⋅ ( 1 + sin ( 2πx ) ⋅ cos ( 2πy ) )
2
x
y
z
Figura 8: Función objetivo.
las variables de entrada muestran una descripción simétrica
y el grado de solapamiento parece estar limitado a 3. Estas
características pueden imponerse por construcción utilizando una descripción de las variables de entrada por medio de familias de B-splines simétricos. De esta forma, el
número de parámetros de estas variables se reduce de 28 a
4, utilizando 2 parámetros por familia. La Figura 10 muestra el resultado de un proceso de aprendizaje utilizando esta
nueva representación. En esta representación se puede
apreciar cómo las funciones de pertenencia de la variable
de salida tienden a agruparse, y pueden reducirse de 49 a 9
funciones por medio de un proceso de clustering. El grado
de aproximación es ahora de un RMSE del 0.89%. Por tanto, el uso de familias de funciones de pertenencia ha empeorado ligeramente el grado de aproximación, pero permite reducir el número de reglas activas de 49 a 9, fijando
un grado de solapamiento 3 por construcción. Esto permite
generar representaciones con una velocidad de inferencia
mayor y facilita la síntesis hardware del sistema difuso.
5 CONCLUSIÓN
Al introducir las técnicas de aprendizaje automático en el
flujo de diseño de los sistemas difusos, la descripción paramétrica de las funciones de pertenencia adquiere una gran
x
y
z
Figura 9: Resultados obtenidos utilizando funciones
libres.
580
Figura 10: Resultados obtenidos utilizando familias de
funciones.
importancia. Una descripción paramétrica adecuada permite mantener ciertas características deseables, como el orden, simetría o grado de pertenencia de las funciones, a lo
largo de los procesos de modificación automáticos. La última versión de XFL3, el lenguaje de especificación de
Xfuzzy 3, permite utilizar tanto funciones de pertenencia
libres como familias de funciones definidas por el usuario,
de manera que éste pueda introducir nuevas definiciones
que representen las restricciones deseadas para cada sistema. Una información más detallada sobre XFL3 y Xfuzzy
3 puede encontrarse en la página oficial de Xfuzzy:
http://www.imse.cnm.es/Xfuzzy/
Referencias
[1] L.A. Zadeh, “Fuzzy sets”, Information and control,
Vol.8, pp. 338-358, 1965.
[2] E. Cox, The Fuzzy Systems Handbook, AP Professional, 1999.
[3] T.J. Ross, Fuzzy Logic with Engineering Applications, McGraw-Hill inc., 1995.
[4] F.J. Moreno-Velo, S. Sánchez-Solano, A. Barriga, I.
Baturone, D. R. López, “XFL3: A New Fuzzy System
Specification Language”, Mathware & Soft Computing, Vol. 8, No. 3, pp. 239- 253, 2001.
[5] F.J. Moreno Velo, I. Baturone, S. Sánchez Solano, A.
Barriga, “Rapid Design of Fuzzy Systems with
Xfuzzy”, IEEE Int. Conf. on Fuzzy Systems (FUZZIEEE 2003), pp. 342-347.
[6] R. Rovatti, R. Guerrieri, “Fuzzy sets of rules for system identification”, IEEE Trans. Fuzzy Systems, Vol
4, No. 2, pp.89-102, 1996.
[7] F.J. Moreno Velo, I. Baturone, R. Senhadji, S. Sánchez
Solano, “Tuning Complex Fuzzy Systems by Supervised Learning Algorithms”, IEEE Int. Conf. on Fuzzy
Systems (FUZZ-IEEE 2003), pp. 226-231.
XII CONGRESO ESPAÑOL SOBRE TECNOLOGÍAS Y LÓGICA FUZZY

Documentos relacionados