Aplicaciones Con JGAP

14
 Universidad Nacional de Loja UNIVERSIDAD NACIONAL DE LOJA ÁREA DE LA ENERGÍA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES. CARRERA DE INGENIERÍA EN SISTEMAS MÓDULO X INTELIGENCIA ARTIFICIAL ALGORITMOS GENETICOS PARALELO: “A”  ALUMNA:  Rosa Elizabeth Guamán Guadalima DOCENTE: Ing. Luis Antonio Chamba Eras Fecha: 2012-05-09 LOJA-ECUADOR

Transcript of Aplicaciones Con JGAP

Universidad Nacional de Loja

UNIVERSIDAD NACIONAL DE LOJA REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES. CARRERA DE INGENIERA EN SISTEMAS MDULO X INTELIGENCIA ARTIFICIAL

ALGORITMOS GENETICOS

PARALELO:

A

ALUMNA: Rosa Elizabeth Guamn Guadalima

DOCENTE:

Ing. Luis Antonio Chamba Eras

Fecha:

2012-05-09

LOJA-ECUADOR

Universidad Nacional de Lojandice

Introduccin.. 3 Instalacin y configuracin de herramientas.3 Instalacin del ide netbeans ....3 Descargar e instalar jgap4 Como agregar libreras a nuestras aplicaciones5 Ejemplo de aplicacin con jgap..10 Implementacin de ejemplo10 Ejemplificacin de ejecuciones y resultados14

Universidad Nacional de Loja

INTRODUCCINJGAP es un framework libre basado en la tecnologa JAVA, que provee mecanismos para aplicar principios evolutivos en la resolucin de problemas mediante la codificacin en un programa informtico. En este ejemplo utilizamos la versin 3.6.2 que en este momento es la versin actual disponible. Nuestro objetivo es implementar este framework en el IDE Netbeans 7.0.1 para aplicarlo en un ejemplo prctico que permita demostrar el uso de JGAP en el campo de la inteligencia artificial.

INSTALACIN Y CONFIGURACIN DE HERRAMIENTASPara empezar a trabajar con nuestro ejemplo debemos considerar que el IDE de Netbeans en cualquiera de las versiones disponibles, debe estar instalado.

INSTALACION DEL IDE NETBEANS.Para descargar Netbeans podemos ingresar a la siguiente URL:http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html

Universidad Nacional de Loja

Una vez descargado el instalador, se procede a la instalacin.

DESCARGAR E INSTALAR JGAPPara descargar las libreras de JGAP ingresamos a la direccin: http://sourceforge.net/projects/jgap/files/latest/download?source=files y automticamente emerger una ventana de descarga del archivo en formato ZIP.

Universidad Nacional de Loja

Ya una vez descargado procedemos a descomprimir el archivo.

COMO AGREGAR LIBRERAS A NUESTRAS APLICACIONESCon Netbeans instalado y JGAP descomprimido ya estamos listos para trabajar en nuestra aplicacin. 1. En Netbeans creamos un nuevo proyecto ejecutando los pasos que se muestran a continuacin:

Universidad Nacional de Loja

Digitamos el nombre del proyecto (ProyectoJGAp), y presionamos el botn Terminar.

Universidad Nacional de Loja

Creado el proyecto procedemos a configurar el Build Path para incluir la librera de jgap. Para lo cual presionamos clic derecho en el proyecto, seleccionamos la opcin establecer la configuracin y luego la opcin Personalizar.

Universidad Nacional de Loja

De la ventana emergente seleccionamos la opcin Bibliotecas y para buscar nuestra librera presionamos el botn Aadir JAR/Carpeta.

Universidad Nacional de LojaEn nuestro ordenador buscamos la ubicacin de la biblioteca y presionamos el botn Abrir:

Por ultimo presionamos el botn Aceptar para terminar nuestro proceso.

Universidad Nacional de Loja

EJEMPLO DE APLICACIN CON JGAPA continuacin presentamos un ejemplo donde se muestra cmo resolver un problema clsico de algoritmos genticos utilizando el framework JGAP. El problema consiste en lograr juntar el monto de dinero ingresado a la aplicacin por parmetro con la menor cantidad de monedas posibles. Por ejemplo si se tienen 2,25 dlares (235 centavos) puede descomponerse de la siguiente forma: 2 Moneda de un dlar 1 Moneda de 25 centavos Dando un total de 3 monedas en total. Cuantas menos monedas se necesiten ms apta ser la solucin ya que lo que se busca es lograr la menor cantidad de monedas posibles.

IMPLEMENTACIN DE EJEMPLOPara este caso la clase principal se llamar CambioMinimo y la funcin aptitud se codificar en la clase CambioMinimoFuncionAptitud. Primero se debe crear una configuracin predeterminados que luego se irn modificando. // Se crea una configuracin con valores predeterminados. // Configuration conf = new DefaultConfiguration(); Luego se le indica que el mejor elemento siempre pase a la prxima generacin // Se indica en la configuracin que el elemento ms apto siempre pase // a // la prxima generacin // conf.setPreservFittestIndividual(true); Se crea la funcin de aptitud que ms adelante se explicar y se setea en la configuracin con valores

Universidad Nacional de Loja// Se Crea la funcin de aptitud y se setea en la configuracin // FitnessFunction myFunc = new CambioMinimoFuncionAptitud(Monto); conf.setFitnessFunction(myFunc); Tambin se debe crear un cromosoma de ejemplo para que el framework conozca su estructura que en este caso poseer 6 genes de acuerdo al nmero de monedas en centavos que ocuparemos para nuestra aplicacin. // Ahora se debe indicar a la configuracin como sern los cromosomas: // en // este caso tendrn 6 genes (uno para cada tipo de moneda) con un // valor // entero (cantidad de monedas de ese tipo). // Se debe crear un cromosoma de ejemplo y cargarlo en la // configuracin // Cada gen tendr un valor mximo y mnimo que debe setearse. // Gene[ ] sampleGenes = new Gene[6]; sampleGenes[0] = new IntegerGene(conf, 0, Math.round(CambioMinimoFuncionAptitud.MAX_M0WT0/100)); // Moneda 1 dlar sampleGenes[1] = new IntegerGene(conf, 0, 10); // Moneda 50 centavos sampleGenes[2] = new IntegerGene(conf, 0, 10); // Moneda 25 centavos sampleGenes[3] = new IntegerGene(conf, 0, 10); // Moneda 10 centavos sampleGenes[4] = new IntegerGene(conf, 0, 10); // Moneda 5 centavos sampleGenes[5] = new IntegerGene(conf, 0, 10); // Moneda 1 centavo IChromosome sampleChromosome = new Chromosome(conf, sampleGenes); conf.setSampleChromosome(sampleChromosome); Es importante tener en cuenta los valores mximos y mnimos ya que al momento de cargarlos, se cargan mal, podra eliminar muchas soluciones que tal vez sean las mejores o si son muy amplios costar ms tiempo de procesamiento llegar a soluciones ptimas. Se puede configurar el tamao que tendr la poblacin (Cantidad de cromosomas de una generacin)

Universidad Nacional de Lojaconf.setPopulationSize(200); Para poder evolucionar se necesita una poblacin inicial. El framework permite cargarla de un xml pero lo mejor en este caso es indicarle que genere una poblacin inicial aleatoria. Poblacion = Genotype.randomInitialGenotype(conf); El mtodo envolve evoluciona una generacin. Se lo llama una cierta cantidad de veces con un loop para que realice cierta cantidad de evoluciones. Poblacion,evolve(); Y cambiamos la presentacin en consola para que el texto resultante se imprima con las palabras centavos y no euros o cntimos

Universidad Nacional de Loja

CLASE CambioMinimoFuncionAptitud.En la clase CambioMinimoFuncionAptitud es donde realizamos la mayor parte de modificaciones. Dentro de la sentencia if del mtodo CambioMinimoFuncionAptitud cambiamos la palabra cntimos por centavos para expresar nuestro algoritmo en funcin de la moneda ecuatoriana. Posteriormente nos trasladamos al mtodo montoCambioMoneda en donde cambiamos desde las lneas 101 a la lnea 109 los valores que tenemos en euros por los valores en dlares.

Rosa Guamn

Firmado digitalmente por Rosa Guamn Nombre de reconocimiento (DN): cn=Rosa Guamn, o=UNL, ou=Universidad Nacional de Loja, [email protected], c=EC Fecha: 2012.06.10 22:09:02 -05'00'

Universidad Nacional de Loja

EJEMPLIFICACIN DE EJECUCIONES Y RESULTADOSTiempo total de evolucion: 8049 ms El cromosoma mas apto encontrado tiene un valor aptitud de: 995.0 Y esta formado por la siguiente distribucion de monedas: 3 Moneda 1 dolar 0 Moneda 50 centavos 0 Moneda 25 centavos 1 Moneda 10 centavos 1 Moneda 5 centavos 0 Moneda 1 centavo Para un total de 315 centavos en 5 monedas. Tiempo total de evolucion: 12083 ms El cromosoma mas apto encontrado tiene un valor aptitud de: 995.0 Y esta formado por la siguiente distribucion de monedas: 5 Moneda 1 dolar 0 Moneda 50 centavos 0 Moneda 25 centavos 0 Moneda 10 centavos 0 Moneda 5 centavos 0 Moneda 1 centavo Para un total de 500 centavos en 5 monedas. Tiempo total de evolucion: 11827 ms El cromosoma mas apto encontrado tiene un valor aptitud de: 994.0 Y esta formado por la siguiente distribucion de monedas: 2 Moneda 1 dolar 1 Moneda 50 centavos 0 Moneda 25 centavos 3 Moneda 10 centavos 0 Moneda 5 centavos 0 Moneda 1 centavo Para un total de 280 centavos en 6 monedas. Tiempo total de evolucion: 6716 ms El cromosoma mas apto encontrado tiene un valor aptitud de: 995.0 Y esta formado por la siguiente distribucion de monedas: 0 Moneda 1 dolar 0 Moneda 50 centavos 0 Moneda 25 centavos 2 Moneda 10 centavos 1 Moneda 5 centavos 2 Moneda 1 centavo Para un total de 27 centavos en 5 monedas. de

315 centavos

de

500 centavos

de

280 centavos

de

27 centavos