Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCION.
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
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.
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.
Se trata de una solución genérica, sin relación alguna con un problema particular. Por esa
razón se deben crear nuevas clases que heredan o implementan las clases e interfaces
mencionadas. Así se adapta JGAP al problema específico que se quiere solucionar.
MOTOR GENÉTICO.
randomInitialGenotype().
Aplica operadores genéticos (mutación y combinación) para que surjan nuevas soluciones con
el 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.
Para poder instalar y configurar el framework JGAP es necesario tener instalado los siguientes
programas.
Qué es?
Un compilador.
Un intérprete de aplicaciones.
Un depurador en línea de comandos.
Un visualizador de applets entre otros elementos.
http://www.oracle
.com/technetwork
/java/javase/dow
nloads/index.html
En este caso se utiliza NetBeans la versión que mejor te convenga y para esta práctica
utilizare NetBeans 6.9.1, si no lo tienes instalado en tu equipo podemos descargar desde la
siguiente página.
http://netbeans.org/
QUE ES NETBEANS?
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una
comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo.
Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las
APIs 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 nuevos
módulos.
Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones
basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros
desarrolladores de software.
http://sourceforge.net/projects/jgap/files/
El archivo se llama jgap_3.5_full.zip. Se recomienda descargar el de instalación completa si no
se desea compilar el código.
Luego de tener todos los programas necesarios ahora si procedemos a instalar y configurar a
continuación se explicara cuáles son los pasos a seguir para lograr el resultado deseado:
VAMOS A LA PARTE
DE LIBRERÍAS
Es incluido dentro de los algoritmos evolutivos, que incluyen también las estrategias
evolutivas, la programación evolutiva y la programación genética. Dentro de esta última se
han logrado avances curiosos:
En 1999, por primera vez en la historia, se concedió una patente a un invento no realizado
directamente por un ser humano: se trata de una antena de forma extraña, pero que funciona
perfectamente en las condiciones a las que estaba destinada. No hay, sin embargo, nada
injusto en el hecho de que el autor del algoritmo genético del que salió la forma de la antena
se haya atribuido la autoría de la patente, pues él escribió el programa e ideó el criterio de
selección que condujo al diseño patentado.
Además se requiere una función de ajuste o adaptación al problema, la cual asigna un número
real a cada posible solución codificada.
Durante la ejecución del algoritmo, los padres deben ser seleccionados para la reproducción, a
continuación dichos padres seleccionados se cruzaran generando dos hijos, sobre cada uno de
los cuales actuara un operador de mutación.
Rueda de ruleta.
Este método consiste en construir una ruleta particionada en ranuras de igual tamaño, las
cuales se numeran. A cada individuo de la población se le asigna una cantidad de ranuras
proporcional a su aptitud.
En este caso dos individuos son elegidos al azar de la población actual y el mejor o más apto
de los dos se coloca en la generación siguiente. Esto continúa hasta que se complete la nueva
población.
Basado en el rango.
Se coloca toda la población por orden de aptitud, y los M menos dignos son eliminados y
sustituidos por la descendencia de alguno de los M mejores con algún otro individuo de la
población.
Método estocástico.
Cruza simple.
Los dos cromosomas padres se cortan por un punto, y el material genético situado entre ellos
se intercambia.
Cruza Multipunto.
Cruza binomial.
Para generar un cromosoma hijo por cruza binomial, se define la probabilidad P0 como la
probabilidad 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 generar
un segundo hijo como complemento del primero.
Cuando existe igual probabilidad de heredar del padre como de la madre, P0=0.5 la cruza se
denomina uniforme.
IMPLEMENTACIÓN.
Para poder implementar una solución a este problema utilizando jgap es necesario indicarle al
framework 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á 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 número
entero y representará la cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cada
cromosoma tendrá 6 genes.
Este cromosoma sumaría 275 centavos en 4 monedas. Una vez definido el modelo se puede
comenzar a codificar la solución.
Primero se debe crear una configuración con valores predeterminados que luego se irán
modificando.
CÓDIGO FUENTE CAMBIO MÍNIMO.
EJECUCIÓN Y RESULTADOS.
LICENCIA.
Este fragmento esta publicado en la página principal de JGAP donde explica que es un
software libre. Pero si se quiere utilizar de forma comercial es necesario donar al menos 20
euros a JGAP.
JGAP is free software; you can redistribute it and/or modify it under the terms of the
GNU Lesser Public License as published by the Free Software Foundation; either version
2.1 of the License, or (at your option) any later version. Instead, you could choose to use the
Mozilla Public License to use JGAP in commercial applications without the need of publishing
your source code or make it reverse engineerable (as is required with the GNU License). For
using the MPL you have to donate at least 20 Euros to JGAP. Maybe you would like to
browser further information about using JGAP commercially.
JGAP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even 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 more
details. But we offer really a lot of unit tests which help assure a very high probability for a
correct piece of software!