Vous êtes sur la page 1sur 3

25

Elaboración de Herramientas para la


Programación de Algoritmos Genéticos en Java

Sergio Enrique Morel Peralta


Facultad Politécnica, Universidad Nacional del Este
Ciudad del Este, Paraguay
sergiomorel@fpune.edu.py

Resumen. Este trabajo consiste en un proyecto que busca crear herramientas que sirvan para la elaboración de
programas utilizando Algoritmos Genéticos en JAVA. Estas herramientas consisten en clases genéricas que
implementan correctamente los métodos de la clase Object y permiten la utilización de la herencia para crear las
clases que contendrán los códigos específicos para cada utilización particular de los Algoritmos Genéticos. Se
pretende que estas herramientas además de contener el código para la creación de Algoritmos Genéticos, también
contengan clases que ayuden a encontrar el valor óptimo de los parámetros que influyen en la forma en que se
realizan las técnicas evolutivas para cada caso individual.

Palabras Claves: Algoritmos genéticos, inteligencia artificial, JAVA.

Abstract. This project aims to create tools that would help developing programs using Genetic Algorithms in
JAVA. These tools consist of generic classes that implement the methods of the class Object correctly; therefore
they can be inherited to create more specific classes that would contain codes for using in particular Genetic
Algorithms implementations. It’s intended that these tools would also contain classes to help find the ideal values of
the parameters that have influence in the way evolutionary techniques are performed for each individual case.

Keywords: Genetic algorithms, Artificial Intelligence, JAVA.

1. Introducción herramientas podrán concentrarse mejor en el código


del problema específico que se quiera resolver.
Los Algoritmos Genéticos son técnicas utilizadas en la
computación para encontrar soluciones exactas o
aproximadas para los problemas de optimización y
2. Objetivos
búsqueda [1]. Una de las grandes ventajas de este 2.1. General
algoritmo es que la solución encontrada no se limita a Crear clases genéricas que sirvan como base y guía
un solo resultado, sino que podemos obtener un para la programación en JAVA de Algoritmos
conjunto de resultados según el problema lo permita. Genéticos.
Para comenzar a programar utilizando los Algoritmos
Genéticos debemos primero definir la forma de 2.2. Específicos
representar las posibles soluciones del problema, y - Definir y crear las clases que serán necesarias para
luego definir una función de evaluación que califique los algoritmos evolutivos.
esas soluciones [1]. Esto es necesario realizar para cada
problema que se quiera resolver. - Crear clases que contengan métodos de utilización
frecuente para simplificar la programación.
Una vez que esto esté definido, se procede a aplicar las
técnicas evolutivas que nos ayuden a encontrar la - Crear un programa simple de prueba para
mejor solución. comprobar el funcionamiento de la herramienta.

El objetivo de este proyecto es crear herramientas que - Definir y crear las clases necesarias para encontrar
apliquen las técnicas evolutivas sin necesidad de estar los mejores valores de los parámetros que influyen
programándolas, pero que nos permita controlar el en los algoritmos evolutivos para cada problema
valor de los parámetros que se utilizan para realizar en forma individual.
estas operaciones si fuese necesario. - Comparar la velocidad de convergencia de los
Debido a que gran parte del código se queda aislado algoritmos.
dentro de las clases más generales, los que utilicen las

INFORMÁTICA – Nº 5 – AÑO 2009


26

3. Materiales que se trabajará, como también el dominio o


restricciones de los valores válidos, etc.
El lenguaje de programación que se decidió utilizar es
JAVA debido a su gran portabilidad y por las ventajas En caso de que se quiera realizar cualquier función de
que ofrece la programación orientada a objetos. Para forma diferente a lo codificado en estas clases, se
programar en JAVA se necesita tener instalado el JDK puede realizar un override de los métodos
(Java Development Kit) para el sistema operativo a correspondientes.
utilizar. El JDK es la herramienta que permitirá Esta herramienta realiza las operaciones de cruce y
compilar el programa a “bytecodes”. Los “bytecodes” mutación; pero como la forma de realizar la
después pueden ser ejecutados en cualquier máquina representación de datos, la generación de datos
que disponga de una máquina virtual java JVM (Java iniciales y la calificación de resultados es específica de
Virtual Machine). El software necesario se puede cada problema en particular, estas tareas quedan en
conseguir en la página http://www.java.com/. manos de quién utilice las herramientas.
Como ayuda para la programación se decidió utilizar el 4.1. Cruce
entorno de desarrollo integrado Eclipse. El entorno de
desarrollo integrado (IDE por sus siglas en inglés) La operación de cruce consiste en combinar los genes
permite acelerar la programación gracias a la ayuda de dos individuos para generar un nuevo individuo. La
que proporciona en el momento de detectar errores, en herramienta realiza el cruce de forma que el tamaño de
el seguimiento de variables, etc. El IDE Eclipse se la población se mantenga constante, y que la totalidad
puede conseguir en la página http://www.eclipse.org/. de los individuos de la nueva generación sea resultado
de los cruces con los individuos de la generación
anterior [2].
4. Métodos Para la selección de los individuos que participarán en
Para realizar la programación de los Algoritmos el cruce, antes es necesario determinar la calificación
Genéticos, se debe crear 3 clases, las cuales deben relativa de cada individuo. Esta se calcula según la
heredar de las clases generales que contiene la siguiente formula.
herramienta. El nombre de estas clases generales son:
Población, Individuo y Gen. Estas clases no pueden
ser instanciadas.
La clase que herede de Población es la que se
encargará de manejar al conjunto de soluciones del
problema, contendrá un array de soluciones del tipo En donde N es la cantidad de individuos de la
Individuo. En esta clase se definirán los parámetros población. La Tabla 1, nos muestra un ejemplo de los
tales como: el tamaño de la población, la cantidad de resultados obtenidos con una población de 5
resultados que se obtendrán, la probabilidad de que individuos.
ocurran las mutaciones y cruces. Además se encargará
de seleccionar los individuos que participarán de las
operaciones evolutivas de acuerdo a su calificación Individuo Cal. Absoluta Cal. Relativa
relativa (calificación con respecto a los demás
A 300 25,00
individuos de la población). La clase hija solo
necesitará definir que subclase de Individuo se utilizará B 100 8,33
para el programa; el resto del código se encuentra en la C 250 20,83
clase padre.
D 50 4,17
La clase que herede de Individuo es la que se utilizará
para representar a una solución. Esta clase contendrá el E 500 41,67
genotipo de la solución, el cual consiste en un array del Tabla 1. Población de 5 Individuos
tipo Gen. En esta clase se definirá la forma de
representar la solución, la forma en que se realizarán Luego, la clase Poblacion selecciona los individuos
las operaciones de cruce y mutación, y la función de que participarán del cruce, para ello se crea una tabla
calificación de las soluciones. La clase hija necesitará de cruce de N filas y 2 columnas [2].
definir que subclase de Gen se utilizará para la
representación y también deberá implementar la Los individuos son cargados en la tabla de tal forma
función de calificación. que los individuos con mayor calificación relativa
tengan mayores probabilidades de ser sorteados. Para
Estrictamente hablando Gen es una interfase en el realizar el sorteo, se asigna un área de una ruleta a cada
lenguaje de programación JAVA, por lo tanto no individuo de acuerdo con su calificación relativa, y
contiene ninguna codificación. La clase que luego se procede a generar en forma aleatoria números
implemente la interfaz Gen será la más específica de del 0 al 100. Luego, el individuo cuya área salió
las 3. Su contenido será diferente para cada problema sorteada es agregado a la tabla de cruce [2].
en particular. Esta clase definirá el tipo de dato con el

INFORMÁTICA – Nº 5 – AÑO 2009


27

Una vez creada la tabla de cruces, se realiza el cruce 6. Trabajos Anteriores


entre los individuos de la misma fila. La clase
Individuo es la que se encarga de realizar el cruce. Este trabajo está basado en un trabajo titulado
La clase Individuo puede realizar el cruce de varias Optimización de horarios de Examen Utilizando
formas dependiendo de los puntos de cruce. Estos algoritmos genéticos; el cual consiste en la creación de
puntos se pueden definir en forma manual, o dejar que un algoritmo que permita optimizar el horario de
la clase Individuo los genere en forma aleatoria. exámenes de la facultad Politécnica.
El trabajo tiene en cuenta el horario en el que se puede
4.2. Mutación rendir cada examen, y aplica estas restricciones en el
momento de generar los horarios iniciales.
La clase Población utiliza el valor de un parámetro
denominado porcentaje de mutación, el cual La función de calificación utilizada está basada en la
determinará con que probabilidad un individuo será Ley de Coulomb, que fue utilizada para separar los
modificado. Para la selección se procede a recorrer los exámenes (como si hubiera una fuerza de repulsión
individuos de la población; para cada individuo se entre cargas del mismo signo).
genera un valor aleatorio desde 1 hasta 100, si el valor Los algoritmos de mutación y cruce son similares a los
generado es menor o igual que el porcentaje de utilizados en esta herramienta, con la diferencia que los
mutación, entonces ese individuo será seleccionado puntos de cruce son siempre aleatorios, o sea, no se
para la mutación [2]. pueden elegir los puntos de cruce.
Una vez un individuo haya seleccionado, la clase
Individuo se encarga de realizar la mutación. La clase 7. Conclusión
Individuo utiliza el valor de un parámetro denominado
intensidad de mutación. Para realizar la mutación se Utilizando esta herramienta se puede agilizar mucho la
procede a recorrer cada gen; se vuelve a generar un programación de algoritmos genéticos, debido a que
valor aleatorio entre 1 y 100, y en caso de que el valor contiene gran parte del código, que es constante para la
generado sea menor o igual a la intensidad de mutación mayoría de los problemas. También se puede destacar
la clase Gen generará un nuevo valor para dicho gen el hecho de que sirve como guía de programación, por
[2]. que define cuales son los métodos generales que serán
necesarios para la realización del código; lo que
permite su utilización para fines didácticos.
3. Discusión
Actualmente la herramienta cuenta con las 3 clases
discutidas anteriormente y también con una clase
funciones que contiene funciones varias, como generar Referencias
números aleatorios entre 2 números, funciones para
desordenar el orden de elementos de un vector, y otras [1] Wikipedia, the free enciclopedia. Genetic
más que se utilizan dentro de la programación. Estas algorithm [en linea]
funciones también pueden ser aprovechadas por quién <http://en.wikipedia.org/wiki/Genetic_algorithm>
utilice las herramientas. [16 – 06 – 2009].
Un objetivo adicional, es el de agregar clases que [2] Morel, S. Optimización de Horarios de Examen
permitan hallar el mejor valor para los parámetros que Utilizando Algoritmos Genéticos. XVI Jornadas
influyen en las operaciones arriba mencionadas; puesto de Jóvenes Investigadores AUGM, página 188.
que estos valores pueden ser distintos para cada [3] Roulo, M. How to avoid traps and correctly
problema en particular. Encontrar los valores óptimos override methods from java.lang.Object
ayudará a aumentar la velocidad de convergencia a un [en linea] <http://www.javaworld.com/javaworld/
resultado óptimo. jw-01-1999/jw-01-object.html> [05 – 03 – 2009].
Estos valores pueden ser diferentes para cada etapa de
la resolución de un problema, por ejemplo, durante la
etapa inicial es probable que sea mejor tener un
porcentaje de cruce alto, y uno de mutación bajo,
mientras que en la etapa final es probable que sea
mejor tener un mayor porcentaje de mutación para salir
de estancamientos.

INFORMÁTICA – Nº 5 – AÑO 2009

Vous aimerez peut-être aussi