Vous êtes sur la page 1sur 23

Ao de la Diversificacin Productiva y del Fortalecimiento de la Educacin

Universidad Nacional de Piura


Facultad de Ingeniera Industrial
Escuela Profesional de Ingeniera Informtica

ALGORITMOS GENETICOS
Anlisis de un Algoritmo gentico simple o Cannico
Curso: Introduccin a la Inteligencia Artificial
Docente: Ing. Vctor Hugo Valle Ros

Alumnos:

Dosantos Ocmin Jecri Rey


Lozada Madrid Cesar Bismark
Villegas Farfn Leonardo Manuel
2015
Piura - Per

Contenido
1. Introduccin ............................................................................................... 2
2. Objetivos del Trabajo ................................................................................ 3
2.1.

Objetivo General.................................................................................. 3

2.2.

Objetivos Especficos ......................................................................... 3

3. Marco Terico ............................................................................................ 4


3.1.

Historia ................................................................................................. 4

3.2.

Algoritmo gentico.............................................................................. 5

3.3.

Algoritmo gentico simple ................................................................. 5

3.4.

Funcin de Adaptacin ....................................................................... 6

3.5.

Seleccin ............................................................................................. 6

3.5.1.

Seleccin por ruleta ..................................................................... 7

3.5.2.

Seleccin por torneo .................................................................... 7

3.7.

Operador de Cruce .............................................................................. 8

3.7.1.

Cruce de 1 punto .......................................................................... 9

3.7.2.

Cruce de 2 puntos ........................................................................ 9

3.7.3.

Cruce uniforme ........................................................................... 10

3.8.

Fase Reproductiva ............................................................................ 10

3.9.

Mutacin ............................................................................................ 11

3.10.

Convergencia ................................................................................. 11

4. Desarrollo ................................................................................................. 12
4.1.

Descripcin inicial............................................................................. 12

4.2.

Valores iniciales ................................................................................ 13

4.3.

Ejecucin ........................................................................................... 15

4.3.1.

Poblacin inicial: ........................................................................ 15

4.3.2.

Seleccin ..................................................................................... 16

4.3.3.

Cruce ........................................................................................... 16

4.3.4.

Mutacin ...................................................................................... 17

4.3.5.

Resultados de convergencia ..................................................... 19

5. Conclusiones ........................................................................................... 21
6. Bibliografa ............................................................................................... 22

1. Introduccin
Los Algoritmos Genticos son mtodos adaptativos que pueden usarse para
resolver problemas de bsqueda y optimizacin. Estos algoritmos estn
basados en el proceso gentico de los organismos vivos.
A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza
de acorde con los principios de la seleccin natural y la supervivencia de los
ms fuertes, postulados por Darwin (1859). Imitando este proceso, los
algoritmos genticos son capaces de ir creando soluciones para problemas
del mundo real.
Este trabajo se centrar de manera especfica en los algoritmos genticos
simples o cannicos, de tal manera que se pueda analizar el funcionamiento
de los mismos de acuerdo a los elementos que participan en el mismo
permitindonos conocer como varan las adaptaciones promedio de cada
generacin respecto a la solucin de convergencia, as como el
comportamiento del mismo.
Para ello se desarrollar una pequea aplicacin que nos facilitar estas
tareas, as como el anlisis del mismo.

2. Objetivos del Trabajo


2.1. Objetivo General
Analizar el comportamiento de un algoritmo gentico simple
2.2. Objetivos Especficos

Definir los conceptos bsicos de un algoritmo gentico simple

Definir los elementos y operadores que componen un algoritmo


gentico.

Comprender la teora de convergencia en un algoritmo gentico


simple.

Disear un algoritmo gentico simple

3. Marco Terico
3.1. Historia
Los primeros ejemplos de lo que hoy podramos llamar algoritmos
genticos aparecieron a finales de los 50 y principios de los 60,
programados por bilogos evolutivos que buscaban realizar modelos de
aspectos de la evolucin natural. A ninguno de ellos se le ocurri que
esta estrategia podra aplicarse de manera ms general a los problemas
artificiales, pero ese hecho no tardara en llegar.
John Holland se preguntaba cmo lograba la naturaleza, crear seres
cada vez ms perfectos. No saba la respuesta, pero tena una cierta idea
de cmo hallarla: tratando de hacer pequeos modelos de la naturaleza,
que tuvieran alguna de sus caractersticas, y ver cmo funcionaban, para
luego extrapolar sus conclusiones a la totalidad.
Fue a principios de los 60, en la Universidad de Michigan en Ann Arbor,
donde, dentro del grupo Logic of Computers, sus ideas comenzaron a
desarrollarse y a dar frutos. Y fue, adems, leyendo un libro escrito por
un bilogo evolucionista, R. A. Fisher, titulado La teora gentica de la
seleccin natural, como comenz a descubrir los medios de llevar a cabo
sus propsitos de comprensin de la naturaleza. De ese libro aprendi
que la evolucin era una forma de adaptacin ms potente que el simple
aprendizaje, y tom la decisin de aplicar estas ideas para desarrollar
programas bien adaptados para un fin determinado.
En esa universidad, Holland imparta un curso titulado Teora de sistemas
adaptativos. Dentro de este curso, y con una participacin activa por
parte de sus estudiantes, fue donde se crearon las ideas que ms tarde
se convertiran en los algoritmos genticos.
Por tanto, cuando Holland se enfrent a los algoritmos genticos, los
objetivos de su investigacin fueron dos:

Imitar los procesos adaptativos de los sistemas naturales, y

Disear sistemas artificiales (normalmente programas) que


retengan los mecanismos importantes de los sistemas naturales.

Unos 15 aos ms adelante, David Goldberg conoci a Holland, y se


convirti en su estudiante. Goldberg, ingeniero industrial, fue uno de los
primeros que trat de aplicar los algoritmos genticos a problemas
industriales. Aunque Holland trat de disuadirle, Goldberg consigui lo
que quera, escribiendo un algoritmo gentico en un ordenador personal
Apple II. Estas y otras aplicaciones creadas por estudiantes de Holland
convirtieron a los algoritmos genticos en un campo con base suficiente
como para celebrar la primera conferencia en 1985, ICGA85.
3.2. Algoritmo gentico
A grandes rasgos un Algoritmo Gentico consiste en una poblacin de
soluciones codificadas de forma similar a cromosomas. Cada uno de
estos cromosomas tendr asociado un ajuste, valor de bondad o fitness,
que cuantifica su validez como solucin al problema. En funcin de este
valor se le darn ms o menos oportunidades de reproduccin. Adems,
con cierta probabilidad se realizarn mutaciones de estos cromosomas.
3.3. Algoritmo gentico simple
El Algoritmo Gentico Simple, tambin denominado Cannico, se
necesita una codificacin o representacin del problema, que resulte
adecuada al mismo. Adems, se requiere una funcin de ajuste o
adaptacin al problema, la cual asigna un nmero real a cada posible
solucin codificada.
El Pseudocdigo utilizado en el cual se bas la aplicacin que se ha
realizado en este trabajo se puede ver en la Figura 1.

Figura 1. Pseudocdigo Algoritmo Gentico Simple

3.4. Funcin de Adaptacin


La funcin de adaptacin debe ser diseada para cada problema de
manera especfica. Dado un cromosoma particular, la funcin de
adaptacin le asigna un nmero real, que se supone refleja el nivel de
adaptacin al problema del individuo representado por el cromosoma.

3.5. Seleccin
Los algoritmos de seleccin sern los encargados de escoger qu
individuos van a disponer de oportunidades de reproducirse y cules no.
Puesto que se trata de imitar lo que ocurre en la naturaleza, se ha de
otorgar un mayor nmero de oportunidades de reproduccin a los
individuos ms aptos. Por lo tanto, la seleccin de un individuo estar
relacionada con su valor de ajuste.

No se debe, sin embargo, eliminar por completo las opciones de


reproduccin de los individuos menos aptos, pues en pocas
generaciones la poblacin se volvera homognea.
3.5.1. Seleccin por ruleta
Propuesto por DeJong, es posiblemente el mtodo ms utilizado
desde los orgenes de los Algoritmos Genticos.
A cada uno de los individuos de la poblacin se le asigna una parte
proporcional a su ajuste de una ruleta, de tal forma que la suma de
todos los porcentajes sea la unidad. Los mejores individuos
recibirn una porcin de la ruleta mayor que la recibida por los
peores. Generalmente, la poblacin est ordenada en base al
ajuste, por lo que las porciones ms grandes se encuentran al inicio
de la ruleta.
Para seleccionar un individuo basta con generar un nmero
aleatorio del intervalo [0...1] y devolver el individuo situado en esa
posicin de la ruleta. Esta posicin se suele obtener recorriendo los
individuos de la poblacin y acumulando sus proporciones de ruleta
hasta que la suma exceda el valor obtenido.
Es un mtodo muy sencillo pero ineficiente a medida que aumenta
el tamao de la poblacin.

3.5.2. Seleccin por torneo


La idea principal de este mtodo de seleccin consiste en escoger
a los individuos genticos en base a comparaciones directas entre
sus genotipos.
Existen dos versiones de seleccin mediante torneo, el torneo
determinstico y el torneo probabilstico, que a continuacin pasan
a detallarse.

En la versin determinstica se selecciona al azar un nmero p de


individuos (generalmente se escoge p=2). De entre los individuos
seleccionados se selecciona el ms apto para pasarlo a la siguiente
generacin.
La versin probabilstica nicamente se diferencia en el paso de
seleccin del ganador del torneo. En vez de escoger siempre el
mejor se genera un nmero aleatorio del intervalo [0...1], si es
mayor que un parmetro p (fijado para todo el proceso evolutivo)
se escoge el individuo ms alto y en caso contrario el menos apto.
Generalmente p toma valores en el rango 0.5 < p 1.
3.6. Seleccin de Padres
La seleccin de padres se efecta al azar usando un procedimiento que
favorezca a los individuos mejor adaptados, ya que a cada individuo se
le asigna una probabilidad de ser seleccionado que es proporcional a su
funcin de adaptacin. Este procedimiento se dice que est basado en
la ruleta sesgada.
Segn dicho esquema, los individuos bien adaptados se escogern
probablemente varias veces por generacin, mientras que los
pobremente adaptados al problema, no se escogern ms que de vez
en cuando.
3.7. Operador de Cruce
El operador de cruce, coge dos padres seleccionados y corta sus ristras
de cromosomas en una posicin escogida al azar, para producir dos
subristras iniciales y dos subristras finales. Despus se intercambian las
subristras finales, producindose dos nuevos cromosomas completos.
(Figura 2).

Figura 2. Operador de cruce basado en un punto

Existen multitud de algoritmos de cruce. Sin embargo, los ms empleados


son los que se detallarn a continuacin:

Cruce de 1 punto

Cruce de 2 puntos

Cruce uniforme

3.7.1. Cruce de 1 punto


Es la ms sencilla de las tcnicas de cruce. Una vez seleccionados
dos individuos se cortan sus cromosomas por un punto
seleccionado

aleatoriamente

para

generar

dos

segmentos

diferenciados en cada uno de ellos: la cabeza y la cola. Se


intercambian las colas entre los dos individuos para generar los
nuevos descendientes. De esta manera ambos descendientes
heredan informacin gentica de los padres.

Figura 3. Cruce de un punto


3.7.2. Cruce de 2 puntos
Se trata de una generalizacin del cruce de 1 punto. En vez de
cortar por un nico punto los cromosomas de los padres, como en
el caso anterior, se realizan dos cortes. Deber tenerse en cuenta
que ninguno de estos puntos de corte coincida con el extremo de
los cromosomas para garantizar que se originen tres segmentos.
Para generar la descendencia se escoge el segmento central de
uno de los padres y los segmentos laterales del otro padre.

Figura 4. Cruce de 2 puntos

3.7.3. Cruce uniforme


El cruce uniforme es una tcnica completamente diferente de las
vistas hasta el momento. Cada gen de la descendencia tiene las
mismas probabilidades de pertenecer a uno u otro padre.

Figura 5. Cruce Uniforme


Aunque se puede implementar de muy diversas formas, la tcnica
implica la generacin de una mscara de cruce con valores
binarios. Si en una de las posiciones de la mscara hay un 1, el gen
situado en esa posicin en uno de los descendientes se copia del
primer padre. Si por el contrario hay un 0 el gen se copia del
segundo padre. Para producir el segundo descendiente se
intercambian los papeles de los padres, o bien se intercambia la
interpretacin de los unos y los ceros de la mscara de cruce.
3.8. Fase Reproductiva
Durante la fase reproductiva se seleccionan los individuos de la poblacin
para cruzarse y producir descendientes, que constituirn, una vez
mutados, la siguiente generacin de individuos.

10

3.9. Mutacin
El operador de mutacin se aplica a cada hijo de manera individual, y
consiste en la alteracin aleatoria (normalmente con probabilidad
pequea) de cada gen componente del cromosoma. La Figura 6 muestra
la mutacin del quinto gen del cromosoma.

Figura 6. Operador de mutacin

3.10. Convergencia
El concepto de convergencia est relacionado con la progresin hacia la
uniformidad: un gen ha convergido cuando al menos el 95 % de los
individuos de la poblacin comparten el mismo valor para dicho gen. Se
dice que la poblacin converge cuando todos los genes han convergido.
Se puede generalizar dicha definicin al caso en que al menos un % de
los individuos de la poblacin hayan convergido.

11

4. Desarrollo
4.1. Descripcin inicial
Como parte final del presente trabajo desarrollamos una aplicacin en el
lenguaje

de

programacin

java

que

nos

permite

simular

el

comportamiento de un algoritmo gentico simple basado en el algoritmo


mostrado en el marco terico, manejando los parmetros de entrada
como:

Tamao de la poblacin (m)

Fenotipo de cromosoma

Nmero de competidores para el torneo (El torneo es utilizado


como mtodo de seleccin de parejas) (c)

Probabilidad de cruce

Probabilidad de mutacin

Convergencia

Este ejemplo sencillo ser trabajado con una funcin de la forma () =


2 . para poder entender bsicamente el funcionamiento de este
algoritmo.

12

4.2. Valores iniciales


El primer paso de la ejecucin de este algoritmo consiste en determinar
el tamao de la poblacin inicial m para as generar aleatoriamente el
valor de los individuos de la poblacin. Los valores de los individuos de
la poblacin varan entre 0 y 2n-1 donde n es el nmero de genes del
cromosoma del individuo al cual se le conoce como fenotipo de
cromosoma, los cuales sern representados en forma binaria.

M=100, N=5 (En este caso como el valor de n es 5 el mximo valor que
encontraremos es 11111=31 en sistema decimal).
Luego de generar la poblacin inicial, se realiza la seleccin de parejas
para la reproduccin, en este caso utilizamos el mtodo del torneo, que
consiste en seleccionar un grupo aleatorio de C (Nmero de
competidores menor que tamao de la poblacin) individuos que
competirn entre s, siendo el ms adaptado el ganador que pase a la fila
de reproduccin. Existen muchas teoras y mtodos de seleccin, el
mtodo de torneo que aplicamos es determinista, en este caso se escoge
aleatoriamente a los competidores, el nmero de competidores C que
ingresemos no debe ser ni 1 ni muy elevado, mientras ms grande sea
el nmero de competidores ms probabilidades hay de escoger siempre
a los mejores adaptados dejando sin variedad a la poblacin a no escoger
individuos con menor adaptacin.
El valor que le daremos a C en esta demostracin ser 2.
Este proceso de seleccin continuar hasta contar con m/2 parejas, que
sern los padres de la siguiente generacin.
El siguiente paso consiste en determinar la probabilidad de cruce de cada
pareja, esta probabilidad est fijada en 0.5 y se aplicara aleatoriamente
a cada pareja. Una vez terminado este proceso, las parejas cuya

13

probabilidad de cruce sea mayor o igual a 0.5 se le aplicarn el clculo


de un punto de cruce aleatoriamente. Este punto de cruce determinara la
posicin a partir de la cual la pareja cruce sus genes que posteriormente
formaran los hijos (En este caso aplicamos solo un punto de cruce, pero
se pueden aplicar segn el criterio y el problema a resolver).
En caso de que la probabilidad de cruce de una pareja sea menor a 0.5
los hijos generados sern copias idnticas de los padres, de esta manera
se mantiene el tamao de la poblacin en todas las generaciones. Hasta
este punto, a la nueva generacin se le aplicara aleatoriamente una
probabilidad de mutacin entre {0,1}, esta probabilidad la fijaremos en 2%
(por lo que el individuo deber tener una probabilidad menor a 0.02 para
ser mutado), de este modo cada individuo si es que obtiene la
probabilidad de mutacin se escoger aleatoriamente uno de sus genes
para ser mutado, esto consiste en cambiar el valor de 0 a 1 o viceversa
segn corresponda. (Ya que nuestro ejemplo trabaja con una codificacin
binaria).
Estos procesos de cruce y mutacin permitirn tener una poblacin ms
variada para lograr el camino de convergencia.
Una vez teniendo lista esta nueva generacin, esta reemplazara a la
poblacin inicialmente generada para llevar a cabo nuevamente el
proceso.
Para llegar a la solucin de un algoritmo gentico se buscar una
convergencia de la poblacin la cual consiste en que el 95% de los genes
sea compartido por toda la poblacin.

Valores iniciales con las que trabajara el programa

14

4.3. Ejecucin
4.3.1. Poblacin inicial:

Este es el valor mximo de


la poblacin, como parte
de la solucin este debe
aumentar

Como nuestra funcin es de la forma () = 2 , y nuestra poblacin


tiene un nmero de genes binarios de N=5, seria sencillo llegar al
valor optimo con clculos simples, siendo este 31 con una funcin de
adaptacin de 961. Pero por fines de ejemplo, diseamos de este
modo el problema para observar el comportamiento del algoritmo
gentico.

15

Nuestra

poblacin

de

100

individuos

inicial

fue

generada

aleatoriamente, teniendo un valor total de 35290 y promedio de


359.2.
4.3.2. Seleccin
Una vez realisado el metodo del torneo se obtiene las parejas
para la reproduccion:

Podemos observar las 10 primeras parejas, cada individuo de la


poblacin dividida A ser pareja en la misma posicin de un
individuo de la poblacin dividida B.
4.3.3. Cruce
Luego de aplicar la probabilidad de cruce y el punto de cruce
obtenemos los siguientes valores para las primeras 10 parejas:

Ejemplo de cruce:
Pareja 0: tiene una probailidad de cruce mayor de 0.5 por lo que
se le puede aplicar el punto de cruce.

16

Genotipo Valor del individuo

Punto de cruce =

Hijos

cruzados

11000

24

1100|0

1100|1

10111

23

1011|1

1011|0

Primeros 20 hijos cruzados


4.3.4. Mutacin
En la imagen podemos observar como el individuo hijo numero 84
logro una probabilidad de mutacin, tenemos un punto de mutacion
en la posicin 3, los individuos que tengan punto de mutacion -1
son los que no lograron probabilidad de mutacion.

17

Se puede observar como cambia el gen en la posicion 3, en este


caso el individuo disminuyo su valor, esto no perjudica la busqueda
pues agrega variedad a la poblacion, y siempre guardan los genes
de los padres.
Todos estos procesos continuaran hasta que exista convergencia
en la poblacin.

18

4.3.5. Resultados de convergencia


Lo que podemos observar es que la poblacin convergi en 9
generaciones y con un valor total de 95795, lo que quiere decir
que la poblacin aumento su valor en 60505 (restando del valor
de la poblacin inicial).

Observamos el valor de la
generacin solucin y el
nmero de generacin
por las que se pas

19

Estadsticas de solucin

Aqu podemos identificar por cada generacin el individuo mejor


adaptado y la adaptacin promedio de la poblacin, Esto nos
permite observar el trabajo del algoritmo gentico como va
encontrando la solucin, como mencionamos en este ejemplo es
fcil llegar a la solucin que seria 961 por las restricciones ya
mencionadas. A medida que el nmero de generaciones aumenta
se observa que la adaptacin media de la poblacin se aproxime a
la del mejor individuo.

Medidas de adaptacion de un Algoritmo


Gentico SImple
1200

Adaptcion

1000
800
600
400
200
0
1

Numero de generaciones
Mejor

20

Media

10

5. Conclusiones

Los algoritmos genticos son una rama de la inteligencia artificial que


busca optimizar distintos tipos de funciones en diversas aplicaciones,
por lo que constituyen herramientas de amplia aplicacin, esta
metodologa puede ser muy generalizada adaptndolo a diversos
problemas e incluso a otras herramientas de inteligencia artificial como
lgica difusa, sistemas expertos y redes neuronales, formando nuevos
campos muy prometedores en la inteligencia artificial. Por otro lado, la
programacin de un algoritmo gentico resulta sencilla al tratar de
imitar el proceso de seleccin natural propuesto por Darwin, radicando
su complejidad en la correcta adaptacin al problema y la correcta
aplicacin de los operadores que la constituyen.

En este trabajo logramos desarrollar un programa en el lenguaje de


programacin Java con IDE NetBeans, que se puede adaptar a
cualquier funcin expresado sus individuos en forma binaria. En este
caso como medio practico optamos por una funcin de la forma () =
2 en un algoritmo gentico simple. Esto nos permite comprender el
funcionamiento de este tipo de algoritmos conociendo al mismo tiempo
sus partes y operadores hasta alcanzar un punto de convergencia, en
este caso nuestra convergencia requiere que al menos el 95% de la
poblacin comparta el mismo gen.

Los elementos que forman parte de un algoritmo gentico son Tamao


de la poblacin, Fenotipo de cromosoma, Nmero de competidores
para el torneo, Probabilidad de cruce, Probabilidad de mutacin,
Convergencia, los cuales deben ser aplicados correctamente segn
sea el problema a resolver.

La convergencia en un algoritmo gentico es la aproximacin del valor


medio de la poblacin al valor ptimo de la solucin.

21

6. Bibliografa

Gestal, M., Rivero, D., Ramn Rabual, J., Dorado, J., & Pazos, A. (2010).
Introduccin a los Algoritmos Genticos y a la Programacin Gentica.
Madrid: Digitalia.
Vasco, U. d. (Setiembre de 2008). Campus de Gipuzkoa - Universidad del
Pais Vasco. Obtenido de
http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t2geneticos.pdf

22

Vous aimerez peut-être aussi