Sunteți pe pagina 1din 20

JGAP

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

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.
De ese modo, los algoritmos genéticos son un método para probar múltiples

¿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 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.

JGAP es software libre y se puede distribuir bajo la GNU Lesser Public


License 2.1 o posterior. Las aplicaciones comerciales que no publiquen su
código fuente deben distribuirse bajo la Mozilla Public License.
INSTALACION Y CONFIGURACION DE JGAP.

Para poder instalar y configurar el framework JGAP es necesario tener instalado los siguientes
programas.

MÁQUINA VIRTUAL DE JAVA.

Qué es?

El JDK (Java Development Kit) es un software que provee


herramientas 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
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?

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, una
comunidad 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 un


conjunto de componentes de software llamados módulos.

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.

Luego de tener estos programas procedemos a descargar el framework JGAP

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 descargar el archivo se extrae su contenido. Esto puede hacerse en cualquier


directorio. Por último sólo es necesario incluir el archivo jgap.jar como una biblioteca para
poder usar las clases de JGAP.

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:

Primeramente abrimos nuestro entorno de desarrollo.


Luego abrimos nuestro proyecto y nos vamos a propiedades de nuestro proyecto y deberemos
agregar a jgap como biblioteca para esto se puede hacer desde las propiedades del proyecto,
en el nodo Como nos muestra la imagen la ventana de propiedades del proyecto.

VAMOS A LA PARTE
DE LIBRERÍAS

Damos click en ADD JAR/FOLDER


Luego de agregamos la librería o el jar de jgap.jar en nuestro proyecto
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 acciones


aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y
recombinaciones 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, y
cuáles los menos aptos, que son descartados.

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.

Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una


condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor
elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo
converge 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).
ALGORITMO GENÉTICO SIMPLE.

El Algoritmo Genético Simple, también denominado Canónico, se representa en la Como se


verá a continuación, se necesita una codificación o representación del problema, que resulte
adecuada al mismo.

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.

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ían
parte de la siguiente población.
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, las
cuales se numeran. A cada individuo de la población se le asigna una cantidad de ranuras
proporcional a su aptitud.

El proceso se repite hasta completar la cantidad de individuos deseados. Este método de


selección otorga mayor probabilidad de contribuir a la siguiente generación a los individuos
con 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 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.

En este esquema se mantiene un porcentaje de la población, generalmente la mayoría, para la


siguiente generación.

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.

Para cada individuo se calcula la aptitud relativa al promedio de aptitudes de la población, y


en función de esto se asignan las copias.
MÉTODOS DE REPRODUCCIÓN.

Cruza simple.

Los dos cromosomas padres se cortan por un punto, y el material genético situado entre ellos
se intercambia.

Cruza de dos puntos.

Se seleccionan dos puntos aleatoriamente a lo largo de la longitud de los cromosomas y los


dos 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 la


cantidad de puntos de cruza es par, se intercambian las porciones de cromosomas definidas
entre cada par de puntos consecutivos, si es impar se asume un punto de cruza adicional en la
posición cero y se procede de igual modo.

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.

A continuación se explica a grandes rasgos como se implementó el ejemplo de aplicación y


que clases y funciones principales se utilizaron. Pero para más detalle se encuentra el anexo
con el código fuete explicado instrucción por instrucció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!

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