Tutorial jgap

5,562 views
5,341 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,562
On SlideShare
0
From Embeds
0
Number of Embeds
310
Actions
Shares
0
Downloads
292
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tutorial jgap

  1. 1. ALGORÍTMOS GENÉTICOSTEMA: JGAP.ALUMNA: Silvia Maribel michay p.MÓDULO: X”B”DOCENTE: Ing. Luis Antonio Chamba. Loja – ecuador. 2011
  2. 2. JGAPINTRODUCCION.  JGAP son las siglas de Java Genetic Algorithms Package (paquete de algoritmos genéticos para Java). Es un componente de programación de algoritmos genéticos que se utiliza como un framework  Los algoritmos genéticos se basan en la teoría de la evolución de Charles Darwin. Se tiene una población, donde cada individuo posee diferentes características. Esas características se muestran favorables o no frente a un método de selección al que se enfrentan todos los individuos. Así se van identificando los que poseen las mejores características.  Las características de los individuos están dadas por sus cromosomas. Un cromosoma es un conjunto de genes. Cada gen es responsable de indicar el tipo de una sola característica del individuo. El valor que toma el gen se llama alelo.  En la biología, 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 características ventajosas.  También se dan variaciones en los genes por medio de la combinación (reproducción sexual) o por cambios aleatorios (mutaciones). Así surgen de forma natural más características que a su vez son puestas a prueba y permiten a sus portadores sobrevivir y reproducirse si son las más adecuadas para el ambiente que les rodea.  Los algoritmos genéticos son una analogía de lo que ocurre biológicamente, pero aplicada a encontrar la mejor solución a un problema. Cada solución es un individuo. El método de selección se llama función de ajsute, e indica la aptitud de cada individuo para resolver el problema. También existen cromosomas con genes y sus respectivos alelos.  A los cromosomas se les aplican operadores genéticos, equivalentes a la mutación y la reproducción sexual, de forma que se generan y ponen a prueba nuevas soluciones.
  3. 3. De ese modo, los algoritmos genéticos son un método para probar múltiples soluciones “autogeneradas” a un problema.¿QUÉ OFRECE JGAP?JGAP tiene clases e interfaces para representar:  Genes (Gene).  Cromosomas (Chromosome).  Individuos (IChromosome).  La población (Genotype).  La función de ajuste (FitnessFunction).  Operadores genéticos.Se trata de una solución genérica, sin relación alguna con un problema particular. Por esarazón se deben crear nuevas clases que heredan o implementan las clases e interfacesmencionadas. Así se adapta JGAP al problema específico que se quiere solucionar.MOTOR GENÉTICO.El “motor genético” crea varias soluciones (individuos) aleatoriamente con el métodorandomInitialGenotype().Aplica operadores genéticos (mutación y combinación) para que surjan nuevas soluciones conel método evolve (). Pone a prueba cada solución con la función de ajuste evaluate(). Y porúltimo retorna el cromosoma del individuo mejor adaptado con getFittestChromosome().LICENCIA.JGAP es software libre y se puede distribuir bajo la GNU Lesser PublicLicense 2.1 o posterior. Las aplicaciones comerciales que no publiquen sucódigo fuente deben distribuirse bajo la Mozilla Public License.
  4. 4. INSTALACION Y CONFIGURACION DE JGAP.Para poder instalar y configurar el framework JGAP es necesario tener instalado los siguientesprogramas.MÁQUINA VIRTUAL DE JAVA.Qué es?El JDK (Java Development Kit) es un software que proveeherramientas de desarrollo para la creación de programas en java.Puede instalarse en una computadora local o en una unidad de red.El JDK suministrado por Sun Microsystems incluye:  Un compilador.  Un intérprete de aplicaciones.  Un depurador en línea de comandos.  Un visualizador de applets entre otros elementos. En la unidad de red se puede tener la aplicación distribuida en varias computadoras y trabajar como una sola aplicación. En los sistemas Windows sus variables de entorno son:  JAVAPATH: es un path completo del directorio donde está instalado el JDK.  CLASSPATH: son las librerías o clases de usuario.  PATH: variable donde se agrega la ubicación de JDK Los programas más importantes que se incluyen son:El mismo que podemos descargarlo desde la siguiente pagina. http://www.oracle .com/technetwork /java/javase/dow nloads/index.html
  5. 5. En este caso se utiliza NetBeans la versión que mejor te convenga y para esta prácticautilizare NetBeans 6.9.1, si no lo tienes instalado en tu equipo podemos descargar desde lasiguiente página.http://netbeans.org/QUE ES NETBEANS? Es un entorno de desarrollo, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extender el NetBeans IDE.NetBeans IDE es un producto libre y gratuito sin restricciones de uso.NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, unacomunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos.La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de unconjunto de componentes de software llamados módulos.Un módulo es un archivo Java que contiene clases de java escritas para interactuar con lasAPIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo.Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevosmódulos.Debido a que los módulos pueden ser desarrollados independientemente, las aplicacionesbasadas en la plataforma NetBeans pueden ser extendidas fácilmente por otrosdesarrolladores de software.Luego de tener estos programas procedemos a descargar el framework JGAPhttp://sourceforge.net/projects/jgap/files/
  6. 6. El archivo se llama jgap_3.5_full.zip. Se recomienda descargar el de instalación completa si nose desea compilar el código.Luego de descargar el archivo se extrae su contenido. Esto puede hacerse en cualquierdirectorio. Por último sólo es necesario incluir el archivo jgap.jar como una biblioteca parapoder usar las clases de JGAP.Luego de tener todos los programas necesarios ahora si procedemos a instalar y configurar acontinuación se explicara cuáles son los pasos a seguir para lograr el resultado deseado:  Primeramente abrimos nuestro entorno de desarrollo.
  7. 7. Luego abrimos nuestro proyecto y nos vamos a propiedades de nuestro proyecto y deberemosagregar a jgap como biblioteca para esto se puede hacer desde las propiedades del proyecto,en el nodo “Libraries”. Como nos muestra la imagen la ventana de propiedades del proyecto. VAMOS A LA PARTE DE LIBRERÍAS Damos click en ADD JAR/FOLDER
  8. 8. Luego de agregamos la librería o el jar de jgap.jar en nuestro proyecto
  9. 9. INTRODUCCION A ALGORITMOS GENETICOS. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. En los años 1970, de la mano de John Henry Holland, surgió una de las líneas más prometedoras de la inteligencia artificial, la de los algoritmos genéticos. Son llamados así porque se inspiran en la evolución biológica y su base genético-molecular.Estos algoritmos hacen evolucionar una población de individuos sometiéndola a accionesaleatorias semejantes a las que actúan en la evolución biológica (mutaciones yrecombinaciones genéticas), así como también a una Selección de acuerdo con algún criterio,en función del cual se decide cuáles son los individuos más adaptados, que sobreviven, ycuáles los menos aptos, que son descartados.Es incluido dentro de los algoritmos evolutivos, que incluyen también las estrategiasevolutivas, la programación evolutiva y la programación genética. Dentro de esta última sehan logrado avances curiosos:En 1999, por primera vez en la historia, se concedió una patente a un invento no realizadodirectamente por un ser humano: se trata de una antena de forma extraña, pero que funcionaperfectamente en las condiciones a las que estaba destinada. No hay, sin embargo, nadainjusto en el hecho de que el autor del algoritmo genético del que salió la forma de la antenase haya atribuido la autoría de la patente, pues él escribió el programa e ideó el criterio deselección que condujo al diseño patentado.Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo unacondición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejorelemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmoconverge en probabilidad al óptimo. En otras palabras, al aumentar el número de iteraciones,la probabilidad de tener el óptimo en la población tiende a 1 (uno).
  10. 10. ALGORITMO GENÉTICO SIMPLE.El Algoritmo Genético Simple, también denominado Canónico, se representa en la Como severá a continuación, se necesita una codificación o representación del problema, que resulteadecuada al mismo.Además se requiere una función de ajuste o adaptación al problema, la cual asigna un númeroreal a cada posible solución codificada.Durante la ejecución del algoritmo, los padres deben ser seleccionados para la reproducción, acontinuación dichos padres seleccionados se cruzaran generando dos hijos, sobre cada uno delos cuales actuara un operador de mutación.El resultado de la combinación de las anteriores funciones será un conjunto de individuos(posibles soluciones al problema), los cuales en la evolución del Algoritmo Genético formaríanparte de la siguiente población.
  11. 11. MÉTODOS DE SELECCIÓN.A continuación se muestran algunas de las técnicas de selección más conocidas:  Rueda de ruleta.Este método consiste en construir una ruleta particionada en ranuras de igual tamaño, lascuales se numeran. A cada individuo de la población se le asigna una cantidad de ranurasproporcional a su aptitud.El proceso se repite hasta completar la cantidad de individuos deseados. Este método deselección otorga mayor probabilidad de contribuir a la siguiente generación a los individuoscon mayor aptitud.  Selección por torneo.En este caso dos individuos son elegidos al azar de la población actual y el mejor o más aptode los dos se coloca en la generación siguiente. Esto continúa hasta que se complete la nuevapoblación.  Basado en el rango.En este esquema se mantiene un porcentaje de la población, generalmente la mayoría, para lasiguiente generación.Se coloca toda la población por orden de aptitud, y los M menos dignos son eliminados ysustituidos por la descendencia de alguno de los M mejores con algún otro individuo de lapoblación.  Método estocástico.Para cada individuo se calcula la aptitud relativa al promedio de aptitudes de la población, yen función de esto se asignan las copias.
  12. 12. MÉTODOS DE REPRODUCCIÓN.  Cruza simple.Los dos cromosomas padres se cortan por un punto, y el material genético situado entre ellosse intercambia.  Cruza de dos puntos.Se seleccionan dos puntos aleatoriamente a lo largo de la longitud de los cromosomas y losdos padres intercambian los segmentos entre los puntos.  Cruza Multipunto.El cromosoma es considerado un anillo, y se eligen n puntos de cruza en forma aleatoria. Si lacantidad de puntos de cruza es par, se intercambian las porciones de cromosomas definidasentre cada par de puntos consecutivos, si es impar se asume un punto de cruza adicional en laposición cero y se procede de igual modo.  Cruza binomial.Para generar un cromosoma hijo por cruza binomial, se define la probabilidad P0 como laprobabilidad de que el Alelo de cualquier posición del descendiente se herede del padre, y 1-P0 como la probabilidad de que lo herede de la madre.En este caso se puede construir un único hijo por cada aplicación del operador, o bien generarun segundo hijo como complemento del primero.Cuando existe igual probabilidad de heredar del padre como de la madre, P0=0.5 la cruza sedenomina uniforme.
  13. 13. IMPLEMENTACIÓN.Para poder implementar una solución a este problema utilizando jgap es necesario indicarle alframework una serie de parámetros y codificar la función de aptitud.Para este caso la clase principal se llamará CambioMinimo y la función aptitud se codificará enla clase CambioMinimoFuncionAptitud.En primer lugar se debe modelar el problema, es decir definir como se compone cada gen delos cromosomas (soluciones posibles). Para este problema puntual cada gen será un númeroentero y representará la cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cadacromosoma tendrá 6 genes.Este cromosoma sumaría 275 centavos en 4 monedas. Una vez definido el modelo se puedecomenzar a codificar la solución.A continuación se explica a grandes rasgos como se implementó el ejemplo de aplicación yque clases y funciones principales se utilizaron. Pero para más detalle se encuentra el anexocon el código fuete explicado instrucción por instrucción.Primero se debe crear una configuración con valores predeterminados que luego se iránmodificando.
  14. 14. CÓDIGO FUENTE CAMBIO MÍNIMO.
  15. 15. EJECUCIÓN Y RESULTADOS.
  16. 16. LICENCIA.Este fragmento esta publicado en la página principal de JGAP donde explica que es unsoftware libre. Pero si se quiere utilizar de forma comercial es necesario donar al menos 20euros a JGAP.JGAP is free software; you can redistribute it and/or modify it under the terms of theGNU Lesser Public License as published by the Free Software Foundation; either version2.1 of the License, or (at your option) any later version. Instead, you could choose to use theMozilla Public License to use JGAP in commercial applications without the need of publishingyour source code or make it reverse engineerable (as is required with the GNU License). Forusing the MPL you have to donate at least 20 Euros to JGAP. Maybe you would like tobrowser further information about using JGAP commercially.JGAP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the above mentioned GNU Lesser Public License and the Mozilla Public License for moredetails. But we offer really a lot of unit tests which help assure a very high probability for acorrect piece of software!

×