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.
University of Michigan Press, Ann Arbor, Michigan.
Goldberg, David E. (1989) Genetic Algorithms in
Search, Optimization, and Machine Learning.
Addison-Wesley.
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.
CINVESTAV-IPN.
No hay comentarios:
Publicar un comentario