1. Universidad Nacional de Loja
Carrera de Ingeniería en Sistemas
Inteligencia Artificial
Nombre: Gabriela Narváez Chamba
2012
2. Framework JGAP
1. Introducción
Los Algoritmos Genéticos (AGs) son métodos adaptativos que pueden usarse para resolver
problemas de búsqueda y optimización [1]. Están basados en el proceso genético de los
organismos vivos, pues, combinan la supervivencia de los individuos mejor adaptados junto
con operadores de búsqueda genéticos como la mutación y el cruce.
Fueron desarrollados por Jhon Holland y Rechemberg que crearon algoritmos de optimización
imitando los principios básicos de la naturaleza.
El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica
robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes
áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se
garantiza que el Algoritmo Genético encuentre la solución óptima del problema, puede
encontrar soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos
de optimización combinatoria [1].
JGAP es un framework basado en Java para implementar Algoritmos Genéticos. Proporciona
mecanismos genéticos básicos que pueden ser fácilmente utilizados para solucionar problemas
aplicando los principios evolutivos.
El objetivo principal del presente trabajo es conocer y probar este framework, por lo tanto el
informe se estructura de la siguiente manera: Introducción que proporciona una idea general
acerca de los algoritmos genéricos y JGAP; Instalación y Configuración en donde se establece
de forma clara y precisa las acciones a llevar acabo para utilizar el framework; y finalmente
Ejemplo Práctico, en esta esta sección se plasma un ejemplo explicativo para en entender el
funcionamiento y manipular adecuadamente JGAP
2
3. 2. Instalación y Configuración de JGAP
Para el ejemplo práctico que se menciona al final del documento así como todas las pruebas
realizadas para el desarrollo de este informe, se utilizó el IDE Netbeans y las librerías de JGAP
2.1. Descarga e instalación de la Máquina Virtual de Java y Netbeans
La máquina virtual permite la compilación de las aplicaciones desarrolladas bajo el lenguaje
de programación JAVA. Se pude descargar de su página oficial de ORACLE la última
versión1:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
A continuación se muestra la página de descarga, aquí se pude descargar “Java Plataform
(JDK)7u4” que es la máquina virtual o en su defecto descargar “JDK 7u4 +Netbeans” que
contiene en uno solo tanto la máquina virtual como el IDE Netbeans que para nuestro caso
también lo vamos a necesitar
Si por el contrario ya se tiene instalada la máquina virtual, se puede descargar el IDE
Netbeans de su página oficial: http://netbeans.org/downloads/index.html
Como se muestra en la figura, la última versión es la 7.1.2 y además existen algunas
opciones, todo depende de los paquetes que se desee descargar junto con el IDE2
1
Hasta la fecha de realización de este informe la última versión es 7
3
4. La instalación tanto de Java con Netbeans es sencilla, basta con ejecutar el archivo .exe
(que se obtiene de la descarga) aceptar términos y condiciones y clic en siguiente hasta
finalizar la instalación
2.2. Descarga y utilización de JGAP
Para utilizar JGAP es necesario descargar unas librerías (archivos jar); esto se puede realizar
desde la página http://sourceforge.net/projects/jgap/files/.
En la página se indica cual es la última versión y al hacer clic en el enlace se direcciona hacia la
descarga del archivo comprimido:
A continuación se descomprime el archivo jgap_3.6.2_full.zip, en este archivo se encuentran las
librerías y algunos ejemplos de aplicación compilados y todos los códigos fuentes.
2
Es recomendable descargar la versión de Netbeans completa 257MB (con todos sus paquetes) para no tener
problemas posteriores. La última versión es la 7.1.2
4
5. Las tres librerías que nos interesan son:
a. Importar librerías JGAP a un Proyecto
Crear un proyecto en Netbeans
o Clic en Archivo—>Proyecto Nuevo.
o Aparecerá la siguiente ventana en donde se debe escoger el tipo de proyecto a
desarrollar, este caso es “Java Application”
o Clic en siguiente >, aparecerá la siguiente ventana en donde se debe especificar
el nombre y ubicación del proyecto. Por defecto Netbeans direcciona todos los
proyectos a su carpeta NetBeansProjects ubicada en Mis Documentos
5
6. o Finalmente clic en Terminar, a continuación aparecerá la interfaz de Netbeans
para el desarrollo de la aplicación dentro del proyecto recientemente creado
Importar las librerías JGAP al proyecto creado
Al crear un proyecto en Netbeans también se crea otras carpetas, cada una con su
función. Por el momento nos interesa la carpeta Bibliotecas, pues aquí es donde
debemos importar las librerías JGAP
o Clic derecho sobre la carpeta Bibliotecas, se despliega el siguiente submenú en
donde se debe escoger la opción Agregar archivo JARCarpeta
6
7. o A continuación aparece ala siguiente ventana en donde se debe especificar la
ruta donde se encuentran las 3 librerías. Seleccionarlas y clic en Abrir
IMPORTANTE: Una buena práctica es colocar las librerías en una carpeta dentro de nuestro
proyecto, de esta forma cuando realice el paso anterior va a direccionarse hacia el mismo
proyecto, además se debe escoger la opción Ruta Relativa. La ventaja es la portabilidad, ya
que al abrir el archivo desde otra máquina no existirá el problema de librerías pérdidas o de
darse el caso, se la puede importar desde el mismo proyecto
o Ahora podemos ver que en la carpeta Bibliotecas del Proyecto EjemploJGAP
se encuentran agregados 3 archivos jar que corresponden a las librerías JGAP
o A partir de este momento se puede trabajar en la implementación de un
algoritmos genético utilizando el framework JGAP
7
8. Para una mayor comprensión puede ver el siguiente video JGAP-parte1
http://www.youtube.com/watch?v=eQKHcJbPMNQ&feature=youtu.be
3. Ejemplo Práctico de utilización de JGAP
La forma más efectiva de entender y aprender es a través de la realización de ejercicios
prácticos. El siguiente ejemplo es una variante del original3[2] adaptado al entorno ecuatoriano:
El problema consiste en lograr descomponer un cierto monto de dinero en la menor cantidad
posible de monedas. Por ejemplo si se tiene 1,70 dólares (170 centavos) se puede
descomponer en:
1 moneda de 1dólar
1 moneda de 50 centavos y
2 monedas de 10 centavos
Dando un total de 4 monedas.
Pero también existen otras formas de descomponer, tomando en consideración que las
monedas utilizadas dentro del Ecuador son 6 (Dólar, 50 ctv, 25 ctv, 10 ctv, 5 ctv y 1 ctv), asi
podemos tener:
2 monedas de 50 centavos
2 monedas de 25 centavos y
4 monedas de 5 centavos
Dando un total de 8 monedas
Como se puede observar, existen muchas soluciones (cromosomas) para el problema y tiene
un valor de aptitud asociado, que deberá depender de la cantidad de monedas totales de ese
cromosoma. Mientras menos monedas se necesiten más aptas será la solución ya que lo que
se busca es lograr la menor cantidad de monedas posibles.
Solución: Implementación del Algoritmo Genéticos
Para la solución, partimos de la creación de un proyecto en Netbeans denominado
Proyecto_JGAP, dentro de este se tiene el paquete de fuentes, que contiene dos clases:
CambioMinimo en donde se especifica una serie de parámetros y la clase
CambioMinimoFuncionAptitud en donde se codifica la función aptitud
Se debe tener claro que cada gen de los cromosomas será un número entero y representará la
cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cada cromosoma tendrá 6
genes
1. Moneda de 1 dólar (100 centavos)
3
Inicialmente el ejercicio fue implementado para que funcione con pesos, luego con euros y ahora el objetivo es
adaptarlo al sistema monetario del Ecuador
8
9. 2. Moneda de 50 centavos
3. Moneda de 25 centavos
4. Moneda de 10 centavos
5. Moneda de 5 centavos
6. Moneda de 1 centavo
Código Fuente
El código fuente de este proyecto tiene documentado cada una de sus instrucciones para un
mejor entendimiento, además se ha realizado un video explicativo de todos los cambios
realizados al código fuente original con el objetivo de adaptarlo al contexto actual que es el
Sistema Monetario del Ecuador, además se agregó una interfaz gráfica
Ver video: JGAP-parte2
http://www.youtube.com/watch?v=dTI3LPJ0dvk&feature=youtu.be
Referencias
[1] A Guerra.” Aprendizaje Automático: Algoritmos genéticos” [online]. México: Universidad
Veracruzana. 2004. Disponible en:
http://di002.edv.uniovi.es/~alguero/eaac/eaac_archivos/09-
10/Trabajos%20para%20evaluaci%C3%B3n/Quintairos/Art%C3%ADculos%20proporcionado
s/temageneticos.pdf
[2] G.A.Veloso, R. Arce “Algoritmos Genético JGAP” [online].Facultad de Ingenierías
Informáticas. 2009. Disponible en:
http://eqaula.org/eva/file.php/1800/Trabajo_Practico_Aplicaciones_Informaticas.pdf
9