Entorno de desarrollo Xfuzzy 3

Herramienta de generación de código Java - Xfj

La herramienta xfj genera una representación Java del sistema difuso. La herramienta puede ser ejecutada desde la línea de comandos, con la expresión "xfj [-p package] file.xfl [out_dir]", o desde el menú Synthesis de la ventana principal del entorno. Cuando se invoca desde la línea de comandos no aparece interfaz gráfica. En este caso los ficheros con código Java se generan en el directorio de salida especificado al ejecutar la herramienta (o en el directorio que contiene al fichero del sistema, si no se indica otra cosa) y se añade una instrucción package en las clases Java cuando se usa la opción -p. Cuando xfj es invocada desde la ventana principal de Xfuzzy el nombre del package y el directorio de destino pueden ser elegidos a través de la interfaz gráfica de la herramienta.

A partir de la especificación de un sistema difuso en formato XFL3, systemname.xfl, la herramienta genera cuatro ficheros: FuzzyInferenceEngine.java, MembershipFunction.java, FuzzySingleton.java y systemname.java. Los tres primeros ficheros corresponden a las descripciones de dos interfaces y una clase que son comunes a todos los sistemas de inferencia difusos. El último fichero contiene la descripción específica del sistema difuso.

El fichero FuzzyInferenceEngine.java describe una interfaz Java que define un sistema de inferencia difuso general. Esta interfaz define cuatro métodos para implementar el proceso de inferencia con valores crisp y difusos.

public interface FuzzyInferenceEngine {
 public double[] crispInference(double[] input);
 public double[] crispInference(MembershipFunction[] input);
 public MembershipFunction[] fuzzyInference(double[] input);
 public MembershipFunction[] fuzzyInference(MembershipFunction[] input);
} 

El fichero MembershipFunction.java contiene la descripción de una interfaz usada para describir un número difuso. Contiene sólo un método, llamado compute, que calcula el grado de pertenencia para cada valor del universo de discurso del número difuso.

public interface MembershipFunction {
 public double compute(double x);
} 

La clase FuzzySingleton implementa la interfaz MembershipFunction, que representa un valor crisp como un número difuso.

public class FuzzySingleton implements MembershipFunction {
 private double value;

 public FuzzySingleton(double value) { this.value = value; }
 public double getValue() { return this.value; }
 public double compute(double x) { return (x==value? 1.0: 0.0); }
} 

Finalmente, el fichero systemname.java contiene la clase que describe el sistema difuso. Esta clase es una implementación de la interfaz FuzzyInferenceEngine. Por tanto, los métodos públicos que implementan la inferencia son los de la interfaz (crispInference y fuzzyInference).

Para comentarios, sugerencias, notificación de bugs, etc. contacte con nosotros en:   xfuzzy-team@imse-cnm.csic.es

©IMSE-CNM 2018