Entorno de desarrollo Xfuzzy 3 | |
Herramienta de generación de modelo SysGen - Xfsg |
La herramienta de síntesis hardware xfsg (Xfuzzy to System Generator) permite trasladar de manera automática la especificación XFL3 de un sistema difuso jerárquico, compuesto por la combinación de distintos módulos de inferencia y bloques crisp, en un modelo Simulink que puede ser simulado en el entorno MATLAB e implementado en FPGAs de Xilinx. Sin embargo, no todas las especificaciones XFL3 son susceptibles de ser implementadas mediante xfsg. En concreto, los sistemas difusos que pueden ser implementados por esta herramienta deben emplear funciones o familias de funciones de pertenencia triangulares con grado de solapamiento 2 y usar métodos de defuzzificación simplificados. La interfaz gráfica de xfsg puede ser ejecutada desde la ventana principal del entorno Xfuzzy, utilizando la opción "To Sysgen" del menú Synthesis, o a través del icono correspondiente de la barra de botones. La ventana principal de xfsg está dividida en cinco partes: una zona con información sobre la localización y el nombre de los ficheros utilizados, la estructura en árbol que desglosa las bases de reglas y bloques crisp que componen el sistema, un área en la que inicialmente se muestra la interconexión de los distintos componentes del sistema, una zona de opciones globales, y una serie de botones situados en la parte inferior de la ventana.
La zona de información sobre ficheros y directorios está dividida en tres campos. El campo Input XFL file contiene la ruta absoluta del fichero de especificación XFL3 seleccionado al lanzar la herramienta. Este campo es informativo, no puede ser modificado por el usuario. El campo Name for Output files permite configurar el prefijo de los ficheros de salida de xfsg. Por defecto aparece el nombre del sistema difuso de entrada. Finalmente, el campo Output directory indica la ruta absoluta del directorio donde se ubicarán los ficheros de salida que genera la herramienta. En este caso aparece por defecto el directorio que contiene la especificación del sistema. La zona superior de la ventana también incluye un botón (identificado por el texto XFSG) que, al ser pulsado, muestra un cuadro de diálogo donde se enumeran los distintos operadores, métodos de defuzzificación, tipos de funciones de pertenencia y bloques crisp que pueden aparecer en los sistemas difusos sintetizados por la herramienta. Estas funciones se encuentran definidas en lo que en la terminología de Xfuzzy se denomina el “paquete xfsg”. A la derecha del botón aparece un texto que aconseja al usuario usar solo las funciones incluidas en dicho paquete para asegurar que no se produzca ningún problema al implementar el sistema. En la zona central izquierda de la ventana se muestra la estructura del sistema difuso en forma de árbol, con los elementos que lo componen agrupados bajo las categorías RuleBases y CrispBlocks. Inicialmente, o siempre que se seleccione el nivel superior de la especificación del sistema, en la zona de la derecha aparece una ventana con los componentes que forman el sistema y su interconexión. Cuando se selecciona una base de reglas concreta dentro de la categoría RuleBases, aparece en esta zona la interfaz que se muestra en la siguiente figura. En ella el usuario puede definir los distintos parámetros que dimensionan el módulo de inferencia. En concreto se puede introducir el número de bits con el que se codifican las entradas, la salida, el grado de pertenencia de los antecedentes y las pendientes de las funciones de pertenencia. También en esta zona se pueden visualizar ciertos valores calculados a partir de la especificación del sistema. Concretamente, el número de funciones de pertenencia y los valores de los puntos de corte y las pendientes por cada entrada, aí como la representación matricial de la base de reglas correspondiente. Cuando se selecciona un bloque crisp en la estructura de árbol, la parte central derecha de la interfaz muestra un solo campo a rellenar relativo al número de bits definidos para la salida del bloque.
Cuando todos los parámetros relativos a la base de reglas o al bloque crisp han sido configurados es necesario pulsar el botón Apply para guardar los cambios realizados (en caso contrario se perderá la información introducida en el formulario). Tras ello, el icono rojo que aparecía inicialmente junto a la base de conocimiento se sustituye por el icono verde que se observa en la figura. Cuando los parámetros de todas las bases de reglas y bloques crisp que componen el sistema han sido definidos, aparece también un icono verde junto al nivel superior de la especificación del sistema y se habilitan los botones Save Configuration y Generate Files de la zona inferior de la interfaz. El botón Save Configuration permite guardar la configuración del sistema mediante un fichero XML que almacena información relativa a las opciones de implementación de los distintos componentes del sistema (ver sección Fichero de configuración). Las configuraciones guardadas mediante esta opción pueden ser cargadas en un momento posterior utilizando el botón Load Configuration. Antes de pulsar el botón Generate Files el usuario puede configurar las opciones que aparecen en la zona Global Options de la interfaz gráfica. La funcionalidad de cada una de las opciones es la siguiente:
Una vez definidos los parámetros de los distintos componentes del sistema y las opciones globales, se puede pulsar el botón Generate Files para generar los siguientes ficheros en el directorio de salida indicado:
La configuración del proceso de síntesis con xfsg puede guardarse en un fichero XML para ser recuperada en un momento posterior. Debe tenerse en cuenta que la sintaxis del fichero de configuración puede cambiar en las sucesivas versiones de Xfuzzy y que sólo se pueden cargar ficheros de configuración generados con la versión actual, por lo que los ficheros XML antiguos se deben adaptar al formato correcto agregando las nuevas etiquetas. La apariencia del fichero de configuración refleja la estructura en forma de árbol que representa al sistema. La raíz de dicho fichero es la etiqueta denominada system, que tiene tres atributos: name, rulebases y crisps. El primero indica el nombre del sistema, mientras que los otros dos indican el número de bases de reglas y de bloques crisps, respectivamente. (Si el sistema no contiene ningún bloque crisp no aparece este atributo).
El fichero incluye tres elementos principales rulebases, crisps y options. La etiqueta
rulebases contiene información sobre las bases de reglas, cada una de ellas identificada con la etiqueta
rulebase. Este elemento tiene como atributos: name, que indica el nombre de la base de reglas;
inputs, que indica el número de entradas; y outputs, que indica el número de salidas. Los
elementos hijos de esta etiqueta definen cada uno de los parámetros de la base de reglas: El elemento crisps aparece vacío cuando el sistema no incluye ningún bloque de este tipo. En caso contrario, cada bloque es definido mediante una etiqueta crisp que incluye los atributos: name, que indica el nombre del bloque; inputs, que indica el número de entradas; y outputs, que indica el número de salidas. El único parámetro que puede definirse para este tipo de elementos es el número de bits con el que se codifica la salida (bitsize_output).
Por último, la etiqueta options se utiliza para identificar las distintas opciones que aparecen en las secciones Global Options y Files and directory information de la interfaz gráfica de xfvhdl. Los elementos hijos de dicha etiqueta son: include_rule_confidence_factor_mfile, gen_txtfile, gen_simmodel, use_simp_components, outputFile y outputDirectory. los cuatro primeros admiten un valor booleano (true o false) que indica la activación o no de la correspondiente opción. Las configuraciones guardadas pueden ser posteriormente cargadas utilizando el botón Load Configuration, sin necesidad de introducir nuevamente todos los valores. Si se produce algún error o warning durante la generación de los ficheros de salida de xfsg, se comunicará al usuario en el área de mensajes de Xfuzzy. El listado de los posibles errores junto a la descripción de las causas que los motivan se ilustra en la siguiente tabla.
-------------------------------------------------------------------------------------- S. Sánchez-Solano, E. del Toro, M. Brox, P. Brox, I. Baturone Model-Based Design Methodology for Rapid Development of Fuzzy Controllers on FPGAs IEEE Transactions on Industrial Informatics, 2012 DOI: 10.1109/TII.2012.2211608 |
Para comentarios, sugerencias, notificación de bugs, etc. contacte con nosotros en:
xfuzzy-team@imse-cnm.csic.es
©IMSE-CNM 2018