Entorno de desarrollo Xfuzzy 3

Herramienta de edición de paquetes - Xfpkg

La descripción de un sistema difuso en el entorno Xfuzzy 3 se divide en dos partes. La estructura lógica del sistema (incluyendo las definiciones de conjuntos de operadores, tipos de variables, bases de reglas y estructura de comportamiento jerárquica) se especifica en ficheros con extensión ".xfl" y puede ser editada de forma gráfica con xfedit. Por otra parte, la descripción matemática de las funciones usadas como conectivos difusos, modificadores lingüísticos, funciones de pertenencia, familias de funciones de pertenencia, bloques no difusos y métodos de defuzzificación se especifican en paquetes (packages).

La herramienta xfpkg está dedicada a facilitar la edición de paquetes. La herramienta implementa una interfaz gráfica de usuario que muestra las listas de las diferentes funciones incluidas en el paquete y los contenidos de los diferentes campos de una definición de función. La mayoría de estos campos contienen código que describe la función en diferentes lenguajes de programación. Este código debe ser introducido manualmente. La herramienta puede ser ejecutada desde la línea de comandos o desde la ventana principal del entorno, usando la opción Edit package en el menú Design.

La figura anterior muestra la ventana principal de xfpkg. El menú File contiene las opciones "Save", "Save as", "Compile", "Delete" y "Close edition". Las primeras dos opciones se utilizan para salvar el paquete en un fichero. La opción "Compile" lleva a cabo el proceso de compilación que genera los ficheros ".java" y ".class" correspondientes a cada función definida en el paquete. La opción "Delete" se utiliza para eliminar el fichero que contiene el paquete y todos los ficheros ".java" y ".class" generados por el proceso de compilación. La última opción se emplea para cerrar la herramienta.

La ventana principal contiene seis listas que muestran las diferentes clases de funciones incluidas en el paquete: funciones binarias (relacionadas con los operadores de conjunción, disyunción, agregación e implicación), funciones unarias (asociadas a los modificadores lingüísticos), funciones de pertenencia (relacionadas con las etiquetas lingüísticas), familias de funciones de pertenencia (utilizadas para definir conjuntos de funciones de pertenencia relacionadas), funciones no difusas (asociadas a los bloques no difusos) y métodos de defuzzificación (usados para obtener valores representativos de las conclusiones difusas).

Pulsando sobre los elementos de estas listas se abre la ventana de edición de funciones. Esta ventana muestra el contenido de los diferentes campos de una definición de función. La parte inferior de esta zona contiene un grupo de tres botones: "Edit", "Apply" y "Reload". Al seleccionar una función de una de las listas sus campos no pueden ser editados hasta que el usuario ejecuta el comando Edit. El comando Apply salva los cambios de la definición. Esto incluye la generación de los ficheros ".java" y ".class". El comando Reload descarta las modificaciones realizadas y actualiza los campos con los valores previamente salvados.

Los campos de una definición de función se distribuyen entre ocho paneles tabulados. El panel Alias contiene la lista de identificadores alternativos.

El panel Parameters contiene la enumeración de los parámetros usados por la función que está siendo editada.

El panel denominado Requirements incluye el campo donde se describen las restricciones sobre los valores de los parámetros.

Los paneles Java, C y C++ contienen la descripción del comportamiento de la función en estos lenguajes de programación.

El panel Derivative contiene la descripción de las derivadas de la función.

El último panel contiene los bloques fuente con el código Java de métodos locales que pueden ser usados en otros campos y que son directamente incorporados en el fichero ".java".

La definición de funciones de pertenencia y de familias de funciones de pertenencia necesita información adicional para describir el comportamiento de la función en los diferentes lenguajes de programación. En estos casos, los paneles Java, C, C++ y Derivative contienen cinco campos para mostrar el contenido de los subbloques equal, greatereq, smallereq, center, y basis.

Además, las definiciones de funciones de pertenencia incluyen un panel Update que describe cómo modificar los valores de los parámetros de estas funciones en base a un conjunto de desplazamientos.

Las definiciones de familias de funciones de pertenencia contienen también un panel Update que describe cómo calcular el número de funciones contenidas en la familia.

Los métodos de defuzzificación pueden incluir la enumeración de las funciones de pertenencia que pueden ser usadas por cada método. Dicha enumeración aparece en el panel Requirements.

Finalmente, la ventana que describe a las funciones no difusas incluye también un panel llamado Inputs que define el número de variables de entrada de la función.

La herramienta xfpkg implementa una interfaz gráfica que permite al usuario visualizar y editar la definición de las funciones incluidas en un paquete. Esta herramienta se usa para describir de un modo gráfico el comportamiento matemático de las funciones definidas. En este sentido la herramienta es el complemento de xfedit, que describe la estructura lógica del sistema en la etapa de descripción de un sistema difuso.

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

©IMSE-CNM 2018