Sunteți pe pagina 1din 12

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

CARRERA DE INGENIERA DE SISTEMAS

X MODULO B

Algoritmos Genticos JGAP


ALUMNA:Yanela del Cisne Ros Armjos TUTOR: Ing. Luis A. Chamba

Loja-Ecuador 2011 2001L22222222

CONTENIDOS 1. Introduccin 2. Instalacin y configuracin del entorno 2.1 Generalidades 2.2 Descarga e instalacin de JGAP 2.3 Agregar las libreras a una aplicacin 3. Algoritmos Genticos 4. Ejemplo de aplicacin 5. Implementacin de ejemplo Funcin Aptitud 6. ANEXO I: Varios Ejemplos de Ejecuciones y Resultados 7. ANEXO II: Licencia

1. INTRODUCCIN JGAP son las siglas de Java GeneticAlgorithmsPackage(paquete de algoritmos genticos para Java). Es un componente de programacin de algoritmos genticos que se utiliza como un framework. JGAP tiene clases e interfaces para representar: Genes (Gene), cromosomas (Chromosome), individuos (IChromosome), la poblacin (Genotype), la funcin de ajuste (FitnessFunction) y operadores genticos.

2. INSTALACIN Y CONFIGURACION DEL ENTORNO 2.1 GENERALIDADES En primer lugar se debe descargar e instalar la mquina virtual de java, para ello se recomienda visitar el sitio: http://java.sun.com/javase/downloads/index.jsp Posteriormente se debe instalar un IDE, que es el entorno en donde va a trabajar puede eclipse, netbeans. Para ello se puede ir a: y http://www.eclipse.org/downloads/ y http://www.netbeans.org/downloads/

2.2 DESCARGA E INSTALACIN DE JGAP El primer paso es descargar la ltima versin de JGAP. Hasta ahora la ltima versin es la 3.4.4. Se puede encontrar en la siguiente direccin: http://sourceforge.net/projects/jgap/files/ El archivo se llama jgap_3.4.4_full.zip. Se recomienda descargar el de instalacin completa si no se desea compilar el cdigo. Luego de descargar el archivo se extrae su contenido. Esto puede hacerse en cualquier directorio. Por ltimo slo es necesario incluir el archivo jgap.jar como una biblioteca para poder usar las clases de JGAP. 2.3 AGREGAR LAS LIBRERAS A UNA APLICACIN Para poder usar las clases de JGAP, se debe incluir en el proyecto. En este caso se utiliza NetBeans, por lo que se agrega el archivo jgap.jar como biblioteca. Esto puede hacerse desde las propiedades del proyecto, en el nodo Libraries. El siguiente grfico muestra la ventana de propiedades del proyecto.

La Ilustracin 2 muestra la biblioteca de JGAP ya incluida como parte del proyecto.

De ese modo slo es necesario importar los paquetes de JGAP necesarios para poder usar sus clases, como se aprecia en el siguiente grfico

3. ALGORITMOS GENTICOS Los algoritmos genticos se basan en la teora de la evolucin de Charles Darwin. Se tiene una poblacin, donde cada individuo posee diferentes caractersticas. Esas caractersticas se muestran favorables o no frente a un mtodo de seleccin al que se enfrentan todos los individuos. As se van identificando los que poseen las mejores caractersticas. Las caractersticas de los individuos estn dadas por sus cromosomas. Un cromosoma es un conjunto de genes. Cada gen es responsable de indicar el tipo de una sola caracterstica del individuo. El valor que toma el gen se llama alelo. En la biologa, los individuos mejor adaptados al medio donde se encuentran son los que sobreviven. De esa forma se reproducen, dando lugar a una descendencia que hereda sus caractersticas ventajosas. Tambin se dan variaciones en los genes por medio de la combinacin (reproduccin sexual) o por cambios aleatorios (mutaciones). As surgen de forma natural ms caractersticas que a su vez son puestas a prueba y permiten a sus portadores sobrevivir y reproducirse si son las ms adecuadas para el ambiente que les rodea. Los algoritmos genticos son una analoga de lo que ocurre biolgicamente, pero aplicada a encontrar la mejor solucin a un problema. Cada solucin es un individuo. El mtodo de seleccin se llama funcin de ajsute, e indica la aptitud de cada individuo para resolver el problema. Tambin existen cromosomas con genes y sus respectivos alelos. A los cromosomas se les aplican operadores genticos, equivalentes a la mutacin y la reproduccin sexual, de forma que se generan y ponen a prueba nuevas soluciones. De ese modo, los algoritmos genticos son un mtodo para probar mltiples soluciones autogeneradas a un problema. Funcionamiento de un algoritmo gentico bsico Un algoritmo gentico puede presentar diversas variaciones, dependiendo de cmo se aplican los operadores genticos (cruzamiento, mutacin), de cmo se realiza la seleccin y de cmo se decide el reemplazo de los individuos para formar la nueva poblacin. En general, el pseudocdigo consiste de los siguientes pasos:

y y

Inicializacin: Se genera aleatoriamente la poblacin inicial, que est constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la poblacin inicial, se tenga la diversidad estructural de estas soluciones para tener una representacin de la mayor parte de la poblacin posible o al menos evitar la convergencia prematura. Evaluacin: A cada uno de los cromosomas de esta poblacin se aplicar la funcin de aptitud para saber qu tan "buena" es la solucin que se est codificando. Condicin de trmino El AG se deber detener cuando se alcance la solucin ptima, pero sta generalmente se desconoce, por lo que se deben utilizar otros criterios de detencin. Normalmente se usan dos criterios: correr el AG un nmero mximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la poblacin. Mientras no se cumpla la condicin de trmino se hace lo siguiente: o Seleccin: Despus de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que sern cruzados en la siguiente generacin. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados. o Sobre-cruzamiento: El cruzamiento es el principal operador gentico, representa la reproduccin sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las caractersticas de ambos cromosomas padres. o Mutacin: modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de bsqueda que no estaban cubiertas por los individuos de la poblacin actual. o Reemplazo: una vez aplicados los operadores genticos, se seleccionan los mejores individuos para conformar la poblacin de la generacin siguiente

4. EJEMPLODE APLICACIN Para poder entender como funciona el framework y poder manejarlo, un ejemplo de aplicacin simple es lo indicado. Supongamos que es necesario descomponer un cierto monto de dinero en la menor cantidad posible de monedas. Por ejemplo si se tienen 101 CENTAVOS puede descomponerse de la siguiente forma: 1 Moneda de 1 dlar 1 Moneda de 1 centavo 2 monedas en total Pero tambin puede descomponerse de la siguiente forma: 101 Monedas de 1 centavo. 101 monedas en total. O a su vez: 10 Monedas de 10 centavos 1 Moneda de 1 centavo 11 monedas en total Hay muchas formas de descomponer este monto en monedas cada una de ellas es una solucin posible al problema (cromosoma) y tiene un valor de aptitud asociado, que deber depender de la cantidad de monedas totales de ese cromosoma. Cuantas menos monedas se necesiten msapta ser la solucin ya que lo que se busca es lograr la menor cantidad de monedas posibles. Cada cromosoma tendr 6 genes. Los genes en este problema son nmeros enteros que representan la cantidad de monedas de cada tipo Moneda de un dolar (100 centavos) Moneda de 50 centavos Moneda de 25 centavos Moneda de 10 centavos Moneda de 5 centavos Moneda de 1 centavo

5. IMPLEMENTACIN DEL EJEMPLO Para poder implementar una solucin a este problema utilizando jgap es necesario indicarle al framework una serie de parmetros y codificar la funcin de aptitud. Para este caso la clase principal se llamar CambioMinimo y la funcin aptitud se codificar en la clase CambioMinimoFuncionAptitud En primer lugar se debe modelar el problema, es decir definir como se compone cada gen de los cromosomas (soluciones posibles). Para este problema puntual cada gen ser un nmero entero y representar la cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cada cromosoma tendr 6 genes porque existen seis tipos de moneda posible en el Ecuador. Ejemplo: Cantidad de Monedas de 1 dolar 1 Cantidad de Monedas de 50 centavos 1 Cantidad de Monedas de 25 centavos 0 Cantidad de Monedas de 10 centavos 0 Cantidad de Monedas de 5 centavos 0 Cantidad de Monedas de centavo 1

Este cromosoma sumara 151 centavos en 3 monedas. Una vez definido el modelo se puede comenzar a codificar la solucin. A continuacin se explica a como se implement el ejemplo de aplicacin y que clases y funciones principales se utilizaron.. Primero se debe crear una configuracin con valores predeterminados que luego se irn modificando Configurationconf = new DefaultConfiguration(); Luego se le indica que el mejor elemento 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 FitnessFunctionmyFunc = new CambioMinimoFuncionAptitud(Monto); conf.setFitnessFunction(myFunc); Tambin se debe crear un cromosoma de ejemplo para que el framework conozca su estructura Gene[] sampleGenes = new Gene[6]; sampleGenes[0] = new IntegerGene(conf, 0, Math.round(CambioMinimoFuncionAptitud.MAX_MONTO/100));//Moned a 1 usd

sampleGenes[1] = new IntegerGene(conf, 0, 10); // Moneda 50 ctvs sampleGenes[2] = new IntegerGene(conf, 0, 10); // Moneda 25 ctvs sampleGenes[3] = new IntegerGene(conf, 0, 10); // Moneda 10 ctvs sampleGenes[4] = new IntegerGene(conf, 0, 10); // Moneda 5 ctvs sampleGenes[5] = new IntegerGene(conf, 0, 10); // Moneda 1 ctvs IChromosomesampleChromosome = new Chromosome(conf, sampleGenes); conf.setSampleChromosome(sampleChromosome); Es importante tener en cuenta los valores mximos y mnimos ya que si se cargan mal, podra eliminar muchas soluciones que podran ser las mejores o si son muy amplios llevar ms tiempo de procesamiento llegar a soluciones optimas Se puede configurar el tamao que tendr la poblacin (Cantidad de cromosomas de una generacin) conf.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(); El mtodo guardar poblacin creado para este manual guarda todos los datos de la poblacin en un xml llamado PoblacionCaminoMinimo.xml para demostrar como trabaja el Framework con las poblaciones y los xml. guardarPoblacion(Poblacion); De esta forma se obtiene el cromosoma ms apto de la poblacin IChromosomecromosomaMasApto = Poblacion.getFittestChromosome();

FUNCIN APTITUD La clase que implementar la funcin aptitud debe heredar de FitnessFunction y redefinir el mtodo: public double evaluate(IChromosomecromosoma) Este mtodo le permite al framework determinar que cromosoma es ms apto que otro. El valor devuelto debe ser un double positivo. Por defecto, se entiende que un valor ms alto devuelto corresponde a un cromosoma ms apto pero esto puede no ser as, depende del evaluador que se haya utilizado. En el ejemplo se tiene en cuenta esto antes de devolver el valor deaptitud.

6. ANEXO I: VARIOS EJEMPLOS DE EJECUCIONES Y RESULTADOS

PARA 1426 CENTAVOS Tiempo total de evolucion: 10046 milisegundos El cromosoma mas factible encontrado tiene un valor de aptitud de: 1982.0 Y esta formado por la siguiente distribucion de monedas: 14 Moneda 1 USD 0 Moneda 50 CTVS 1 Moneda 25 CTVS 0 Moneda 10 CTVS 0 Moneda 5 CTVS 1 Moneda 1 CTVS Para 1426 centavos, se requiere 16 monedas PARA 90 CENTAVOS Tiempo total de evolucion: 9023 milisegundos El cromosoma mas factible encontrado tiene un valor de aptitud de: 1995.0 Y esta formado por la siguiente distribucion de monedas: 0 Moneda 1 USD 1 Moneda 50 CTVS 0 Moneda 25 CTVS 4 Moneda 10 CTVS 0 Moneda 5 CTVS 0 Moneda 1 CTVS Para 90 centavos, se requiere 5 monedas. PARA 800 CENTAVOS Tiempo total de evolucion: 8966 milisegundos El cromosoma mas factible encontrado tiene un valor de aptitud de: 1992.0 Y esta formado por la siguiente distribucion de monedas: 8 Moneda 1 USD 0 Moneda 50 CTVS 0 Moneda 25 CTVS 0 Moneda 10 CTVS 0 Moneda 5 CTVS 0 Moneda 1 CTVS Para 800 centavos, se requiere 8 monedas. 7. ANEXO II: LICENCIA

JGAP es software libre y se puede distribuir bajo la GNU LesserPublicLicense 2.1 o posterior. Las aplicaciones comerciales que no publiquen su cdigo fuente deben distribuirse bajo la Mozilla PublicLicense. En ese caso deben donarse 50 Euros al proyecto.

Obtenido en: http://soloeduca.org/inteligencia-artificial/files/2011/01/Laboratorio-de-AG-con-JGAPAlgoritmos-geneticos.pdf

S-ar putea să vă placă și