Universidad Nacional de Loja Carrera de Ingeniería en Sistemas Inteligencia Artificial

Nombre: Gabriela Narváez Chamba

2012

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

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

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

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

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 JAR\Carpeta

6

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

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

2. 3. 4. 5. 6.

Moneda de 50 centavos Moneda de 25 centavos Moneda de 10 centavos Moneda de 5 centavos 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/0910/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