lunes, 23 de julio de 2012

Diseño de la Interface Gráfica del Sistema de Escritorio


Para que el usuario interactúe con el sistema se muestra la pantalla principal y a continuación una breve descripción: 

En la pantalla principal se muestra el menú de opciones Menú, y el de Información. Se tiene el botón de Run que es el botón para ejecutar el AGS con la función que se tenga actualmente, inicialmente se pone por defaul una. Se presenta una tabla donde se desplegarán los resultados del ciclo evolutivo del Algoritmo Genético, el número de Iteración o generación, el valor de la Función Objetivo, y los valores para las variables X y Y encontrados para optimizar dicha función.
En la parte inferior se muestra el reloj y la fecha actual del sistema.

 
En el Menú se tienen las siguientes opciones de selección:

-          Función Objetivo; que a su vez contiene 2 opciones para administrar las Funciones Objetivo almacenadas en el sistema.

-          Algoritmo Genético; que muestra las opciones para configurar los parámetros del AG, y la posibilidad para realizar un conjunto de experimentos o múltiples ejecuciones del AG.

En el menú Información se presentan dos opciones una para obtener información general de los Algoritmos Genéticos y la otra Acerca de... donde se presenta información y créditos del sistema. Estas opciones se muestran en la imagen de abajo.

 
Para poder Configurar los parámetros del AG, se tiene la pantalla que se muestra abajo, en ella se puede seleccionar la Función Objetivo de entre las que se tienen almacenadas.
También se presentas los campos correspondientes para poder definir los rangos en los que se desea realizar la búsqueda, mediante los limites superior e inferior de cada una de las variables, X y Y.
Se pude seleccionar si la optimización es maximizar o minimizar la función seleccionada, la opción de precisión se refiere al número de decimales con los que se representaran los valores de las variables.
Por último se presentan los campos para definir los valores operativos del AG, el tamaño de la población, que es el número de individuos involucrados en el ciclo evolutivo. El número de generaciones o ciclos evolutivos a realizar como criterio de paro del Algoritmo. La probabilidad de cruzar los individuos en la población, y la probabilidad de mutar los genes de los individuos en la población. Y si se desea aplicar el elitismo, es decir, conservar  sin cambios al mejor individuo para la siguiente generación del ciclo evolutivo. Ésta pantalla se muestra a continuación.

 Para Agregar una nueva Función Objetivo se tiene la pantalla que se muestra más abajo.
En esta pantalla se puede definir una Función Objetivo mediante cada uno de sus 4 elementos, y definiendo sus coeficientes a y b así como la variable a la que pertenece y su función matemática base de entre el catalogo de funciones predeterminadas. También se cuenta con un botón para poder visualizar como quedaría la función con los parámetros que se han ingresado.

La función principal del Sistema es realizar la ejecución del Algoritmo Genético para optimizar una función matemática que definamos, esto se lleva a cabo con el botón que se encuentra en la pantalla inicial o principal Run, una vez configurados la Función Objetivo, el Algoritmo Genético y sus correspondientes parámetros se puede ejecutar el AG y ver los resultados en la tabla principal. Un ejemplo de ésta funcionalidad se presenta en la siguiente imagen.


Prueba del Algoritmo Genético

Para poder saber si los resultados que nos presenta el AG son correctos he escogido una función que aparece continuamente en la literatura del tema, es conocida como una de las funciones de Michalewicz:

Fue propuesta por Zbigniew Michalewicz en su libro “Genetic Algorithms + Data Structures = Evolution Programs”.

 Aquí se reporta el mejor resultado como: 38.827553 aunque con otros parámetros el resultado del ejemplo que se ilustra en la imagen anterior es muy similar al reportado por Michalewicz.
Comparación de Resultados:
Michalewicz
Mi AG en Java
Diferencia
38.827553
38.81900776321816
0.00854524
 
Es conveniente notar que el resultado obtenido por mi AG fue realizado sin una calibración o tuning del AG, es muy posible que realizando la calibración e implementando operadores de cruce y selección más eficaces se pueda mejorar el resultado reportado por Michalewicz.




 
Referencias Bibliográficas sobre Algoritmos Genéticos


Holland, John H. (1975) Adaptation in Natural and Artificial Systems.
University of Michigan Press, Ann Arbor, Michigan.

Goldberg, David E. (1989) Genetic Algorithms in Search, Optimization, and Machine Learning.
Addison-Wesley.

Michalewicz, Zbigniew (1992) Genetic Algorithms + Data Structures = Evolution Programs.
Artificial Intelligence Series, Springer-Verlag.

Coello-Coello, Carlos A. (2008) Apuntes de Introducción a la Computación Evolutiva.
CINVESTAV-IPN.

No hay comentarios:

Publicar un comentario