Fuzzy Control Language Parser
English
I have created a parser for the FCL (Fuzzy Control Language) using the Flex and Bison tools. The program can scan a file written it using the standard and verify it syntax. In the (near) future this parser will be added to the UNFUZZY v2 (http://unfuzzy.sourceforge.net) program I’m creating, and will increase the functionality for Free Fuzzy Logic Library (http://ffll.sourceforge.net)
Español:
He creado un parser para el FCL (Lenguaje de Control Difuso) usando las herramientas Flex y Bison. El programa puede verificar la sintaxis en un archivo escrito usando el estandar. En el futuro (cercano) este parser va a ser incorporado en UNFUZZY v2 (http://unfuzzy.sourceforge.net) y va a incrementar la funcionalidad de Free Fuzzy Logic Library (http://ffll.sourceforge.net)
Ciclo de desarrollo 3
El ciclo de desarrollo 3 que tiene el desarrollo del metodo de entrenamiento conocido con el nombre Wang – Mendel Method, basado en el siguiente paper:
Li-Xin Wang. The WM Method Completed: A Flexible Fuzzy System Approach to Data Mining. IEEE, transactions on fuzzy systems. Vol. 11, No. 6, december 2003
El desarrollo consiste en un software de consola el cual sera integrado a el ambiente grafico de UNFUZZY v2.
La forma de ejecutar el programa es dando por parametro:
- El archivo con los datos, el cual debe de tener en su primera linea el numero de variables y el numero de muestras, los valores deben de estar separador por espacios.
- Otro archivo debe de tener el numero de conjuntos difusos por cada variable de entrada y la salida
- El siguiente parametro es el nombre del archivo en el cual se va a generar todo el programa de lógica difusa en el lenguaje de control difuso
- wmmethod -din datatrain.txt -cvin sets.txt -cout programa.fcl
Documentacion Free fuzzy logic library
Hola, mientras he estado trabajando en este proyecto he trabajado con FFLL es una libreria de logica difusa que esta el momento ha funcionado muy bien, el problema que tuve es que la documentacion en linea es poca, las fuentes estan muy bien documentadas, pero no es muy comodo estar abriendo archivos y cerrando para ir de un lado a otro. Por eso me puse en la tarea de generar una documentacion en doxygen para la libreria, lo cual queda mucho mas facil de explorar desde su salida HTML.
Creo que este resultado es muy interesante para cualquiera que use la libreria de logica difusa. Lo pueden encontrar en: http://pwp.etb.net.co/iyhernandezo/index.html, esperando que proximamente este en la pagina principal de FFLL.
Esperen proximamente algunos tutoriales con esta libreria. Chao
Ciclo de desarrollo 2
Se han realizado avances en el ciclo de desarrollo 2, simultaneamente con el 3 y 4.
Este ciclo de desarrollo esta enfocado principalmente en la visualizacion grafica de la aplicacion, para el diseno de los sistemas de logica difusa por medio de un lenguaje grafico.
Los avances a los cuales se ha llegado, esta en todo lo que es el posicionamiento de los elementos, y las gráficas de las funciones de pertenencia. Como se muestra en las siguientes imagenes.
Características:
- Permite crear elementos como entradas, salidas, sistemas de inferencias y texto. Aplicando sus propiedades.
- Permite mover y conectar los elementos entre si.
- Ajustar parametros de los elementos.
Ciclo de desarrollo 1
El ciclo de desarrollo 1, concerniento al caso de usos: Disenar FLS usando FCL ha sido terminado.
Se pueden apreciar imagenes de el primer prototipo ejecutado en GNU/Linux y en Windows.
Caracteristicas:
- Funciones de coloreo para las palabar clave del Fuzzy Control Language
- Funciones de cortar, copiar, pegar, seleccionar todo, funcionando adecuadamente
- Funciones de nuevo, abrir, guardar etc…
- Funciones de impresion funcionando
En general este prototipo es un editor de texto al cual se ha modificado wxStyledTextCtrl para crear una clase unfSTC que maneje todas las funciones del editor.
Fase de planeación y elaboración
Requerimientos
Presentación general
- Este proyecto tiene por objeto crear una nueva versión del software UNFUZZY 1.2 con una interfaz gráfica más amigable incorporando una metodología de diseño para sistemas de lógica difusa y basándose en un lenguaje de control difuso utilizado internacionalmente.
Clientes
Estudiantes e investigadores en el campo de la lógica difusa
Metas
- Desarrollar UNFUZZY v2 el cual podrá ser ejecutado en arquitecturas de procesador x86 y sistemas operativos de 32 bits GNU/Linux y Windows
- Diseñar una nueva interfaz grafica de modo que sea más amigable e intuitiva con el usuario permitiendo ajustar los parámetros del procedimiento de diseño de un sistema de control difuso
- Incorporar una metodología de diseño para sistemas de lógica difusa como el planteado en la referencia [7]
- Implementar un lenguaje de control difuso basado en el creado por el comité electrotécnico internacional (IEC) definido en [1]
- Realizar ejemplos de aplicación de lógica difusa demostrando la versatilidad de UNFUZZY v2.
Funciones del sistema
- Permitir el diseño de sistemas de control difusos de múltiples entradas y múltiples salidas, ajustando diferentes opciones en los parámetros.
- Generar después del proceso de diseño y análisis código para ser utilizado en la implementación real del sistema
- A través de la simulación del sistema de control realizar el análisis del comportamiento
Atributos del sistema
- Diseño a través del uso del FCL
- Diseño a través de un formato gráfico.
- Entrenamiento de sistemas de lógica difusa.
- Posibilidad de ejecutarse en GNU/Linux y Windows
Caso de usos
Caso de uso: Diseñar FLS usando el FCL
Participantes: Usuario, interfaz gráfica
Descripción: El usuario del software esta interesado en diseñar un sistema de lógica difusa, para lo cual define el numero de entradas y salidas del sistemas, junto con sus funciones de pertenencia y opciones de fusificador y defusicador.
Caso de uso: Diseñar FLS usando el FGL
Participantes: Usuario, interfaz gráfica
Descripción: El usuario del software esta interesado en diseñar un sistema de lógica difusa, para lo cual define el numero de entradas y salidas del sistemas, junto con sus funciones de pertenencia y opciones de fusificador y defusicador.
Caso de uso: Entrenamiento de un FLS
Participantes: Usuario, interfaz gráfica, librería de entrenamiento
Descripción: Al tener las entradas y salidas definidas el usuario debe de ingresar la base de reglas al sistema, lo cual lo puede hacer usando su propio conocimiento del sistema o utilizando un algoritmo de entrenamiento basado en datos del sistema adquiridos anteriormente.
Caso de uso: Implementación del FLS
Participantes: Usuario, interfaz gráfica, librería de lógica difusa
Descripción: Después de tener el sistema de lógica difusa diseñado y entrenado el usuario procede a su simulación y análisis para lo cual se utiliza la librería de lógica difusa.
Caso de uso: Implementación del FLS
Participantes: Usuario, interfaz gráfica, librería de generación de código
Descripción: El usuario esta satisfecho con el diseño luego de su simulación y análisis y se dispone a implementarlo en hardware especifico para lo cual espera obtener un código en C++, para su implementación.
Diagrama caso de usos
Ciclos de desarrollo
Ciclo de desarrollo 1:
Caso de uso: Diseñar FLS usando FCL
Ciclo de desarrollo 2:
Caso de uso: Diseñar FLS usando FGL
Ciclo de desarrollo 3:
Caso de uso: Entrenamiento FLS, versión 1. Incluye los métodos de universos fijos y universos variables
Ciclo de desarrollo 4:
Caso de uso: Entrenamiento FSL, versión 2. Incluye el método constructivo
Ciclo de desarrollo 5:
Caso de uso: Simulación y análisis, versión 1.
Ciclo de desarrollo 6:
Caso de uso: Simulación y análisis, versión 2.
Ciclo de desarrollo 7:
Caso de uso: Generación de codigo.
Glosario
- FCL: Fuzzy Control Language definido por IEC
- IEC: Comité electrotécnico internacional
- FLS: Fuzzy logic system
Estructura UNFUZZY v2
El desarrollo de UNFUZZY v2 se ha dividido en dos modulos, con el fin de separarlas bastante e integrarlas al final del proyecto. Las partes son: ambiente de desarrollo grafico y algoritmos de logica difusa.
Algoritmos
En cuanto a los algoritmos de logica difusa se ha avanzado con los algoritmos de entrenamiento teniendo en C++ el metodo de wang-mendel tambien llamado universos fijos.
El siguiente algoritmo de entrenamiento a implementar basado en el paper de Requena y otros, esta en desarrollo actualmente, debido a que este compone de varios pasos, se ha avanzado en los metodos de clustering con fuzzy cmeans y Fuzzy Kohonen Clustering Network. Realizando la inicializacion de los clusters por el metodo de Chiu.
Grafico
En la parte grafica se trabajo con wxWidgets y ya se tiene un manejo bueno de la libreria grafica, se definio la estructura del software teniendo como resultado los siguientes puntos:
- El programa actuara como un SDI (single document interface), solo se podra editar un proyecto de logica difusa por cada UNFUZZY abierto.
- La estructura contiene un TreeControl el cual mostrara las variables (entrada y salida), sistemas de inferencia y demas elementos que se puedan agregar al desarrollo del proyecto.
- Se tiene una barra de herramientas, un menu y una barra de estado, permitiendo acceder a las funciones basicas de configuracion del software.
A continuacion se muestra un pantallazo con la estructura del software.
![]()
En la parte grafica se trabajo con wxArt2D el cual permite la interaccion de graficos unidas por lineas y se pueden crear sistemas como el siguiente:
En la parte grafica se utilizo el wxStyledTextCtrl el cual permite el trabajo con lexer y efecto de coloreo, ademas se creo un parser para crear automaticamente las variables a medida que se escriben.
Hola Mundo!!
Este blog es con el fin de llevar una bitacora del trabajo diario en UNFUZZY v2.
Dejar un comentario
Comentarios (1)
Comentarios (6)