Algoritmo Genetico - Inteligencia Artificial
-
Upload
jecri-dosantos-ocmin -
Category
Documents
-
view
28 -
download
3
description
Transcript of Algoritmo Genetico - Inteligencia Artificial
ALGORITMOS GENETICOS Análisis de un Algoritmo genético simple o Canónico
Curso: Introducción a la Inteligencia Artificial Docente: Ing. Víctor Hugo Valle Ríos
Alumnos:
Dosantos Ocmin Jecri Rey
Lozada Madrid Cesar Bismark
Villegas Farfán Leonardo Manuel
2015
Piura - Perú
“Año de la Diversificación Productiva y del Fortalecimiento de la Educación”
Universidad Nacional de Piura
Facultad de Ingeniería Industrial
Escuela Profesional de Ingeniería Informática
1
Contenido
1. Introducción ............................................................................................... 2
2. Objetivos del Trabajo ................................................................................ 3
2.1. Objetivo General.................................................................................. 3
2.2. Objetivos Específicos ......................................................................... 3
3. Marco Teórico ............................................................................................ 4
3.1. Historia ................................................................................................. 4
3.2. Algoritmo genético .............................................................................. 5
3.3. Algoritmo genético simple ................................................................. 5
3.4. Función de Adaptación ....................................................................... 6
3.5. Selección ............................................................................................. 6
3.5.1. Selección por ruleta ..................................................................... 7
3.5.2. Selección 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. Mutación ............................................................................................ 11
3.10. Convergencia ................................................................................. 11
4. Desarrollo ................................................................................................. 12
4.1. Descripción inicial............................................................................. 12
4.2. Valores iniciales ................................................................................ 13
4.3. Ejecución ........................................................................................... 15
4.3.1. Población inicial: ........................................................................ 15
4.3.2. Selección ..................................................................................... 16
4.3.3. Cruce ........................................................................................... 16
4.3.4. Mutación ...................................................................................... 17
4.3.5. Resultados de convergencia ..................................................... 19
5. Conclusiones ........................................................................................... 21
6. Bibliografía ............................................................................................... 22
2
1. Introducción
Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para
resolver problemas de búsqueda y optimización. Estos algoritmos están
basados en el proceso genético de los organismos vivos.
A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza
de acorde con los principios de la selección natural y la supervivencia de los
más fuertes, postulados por Darwin (1859). Imitando este proceso, los
algoritmos genéticos son capaces de ir creando soluciones para problemas
del mundo real.
Este trabajo se centrará de manera específica en los algoritmos genéticos
simples o canónicos, de tal manera que se pueda analizar el funcionamiento
de los mismos de acuerdo a los elementos que participan en el mismo
permitiéndonos conocer como varían las adaptaciones promedio de cada
generación respecto a la solución de convergencia, así como el
comportamiento del mismo.
Para ello se desarrollará una pequeña aplicación que nos facilitará estas
tareas, así como el análisis del mismo.
3
2. Objetivos del Trabajo
2.1. Objetivo General
Analizar el comportamiento de un algoritmo genético simple
2.2. Objetivos Específicos
Definir los conceptos básicos de un algoritmo genético simple
Definir los elementos y operadores que componen un algoritmo
genético.
Comprender la teoría de convergencia en un algoritmo genético
simple.
Diseñar un algoritmo genético simple
4
3. Marco Teórico
3.1. Historia
Los primeros ejemplos de lo que hoy podríamos llamar algoritmos
genéticos aparecieron a finales de los 50 y principios de los 60,
programados por biólogos evolutivos que buscaban realizar modelos de
aspectos de la evolución natural. A ninguno de ellos se le ocurrió que
esta estrategia podría aplicarse de manera más general a los problemas
artificiales, pero ese hecho no tardaría en llegar.
John Holland se preguntaba cómo lograba la naturaleza, crear seres
cada vez más perfectos. No sabía la respuesta, pero tenía una cierta idea
de cómo hallarla: tratando de hacer pequeños modelos de la naturaleza,
que tuvieran alguna de sus características, y ver cómo 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, además, leyendo un libro escrito por
un biólogo evolucionista, R. A. Fisher, titulado La teoría genética de la
selección natural, como comenzó a descubrir los medios de llevar a cabo
sus propósitos de comprensión de la naturaleza. De ese libro aprendió
que la evolución era una forma de adaptación más potente que el simple
aprendizaje, y tomó la decisión de aplicar estas ideas para desarrollar
programas bien adaptados para un fin determinado.
En esa universidad, Holland impartía un curso titulado Teoría de sistemas
adaptativos. Dentro de este curso, y con una participación activa por
parte de sus estudiantes, fue donde se crearon las ideas que más tarde
se convertirían en los algoritmos genéticos.
Por tanto, cuando Holland se enfrentó a los algoritmos genéticos, los
objetivos de su investigación fueron dos:
Imitar los procesos adaptativos de los sistemas naturales, y
Diseñar sistemas artificiales (normalmente programas) que
retengan los mecanismos importantes de los sistemas naturales.
5
Unos 15 años más 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 genéticos a problemas
industriales. Aunque Holland trató de disuadirle, Goldberg consiguió lo
que quería, escribiendo un algoritmo genético en un ordenador personal
Apple II. Estas y otras aplicaciones creadas por estudiantes de Holland
convirtieron a los algoritmos genéticos en un campo con base suficiente
como para celebrar la primera conferencia en 1985, ICGA´85.
3.2. Algoritmo genético
A grandes rasgos un Algoritmo Genético consiste en una población 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 solución al problema. En función de este
valor se le darán más o menos oportunidades de reproducción. Además,
con cierta probabilidad se realizarán mutaciones de estos cromosomas.
3.3. Algoritmo genético simple
El Algoritmo Genético Simple, también denominado Canónico, 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.
El Pseudocódigo utilizado en el cual se basó la aplicación que se ha
realizado en este trabajo se puede ver en la Figura 1.
6
Figura 1. Pseudocódigo Algoritmo Genético Simple
3.4. Función de Adaptación
La función de adaptación debe ser diseñada para cada problema de
manera específica. Dado un cromosoma particular, la función de
adaptación le asigna un número real, que se supone refleja el nivel de
adaptación al problema del individuo representado por el cromosoma.
3.5. Selección
Los algoritmos de selección serán los encargados de escoger qué
individuos van a disponer de oportunidades de reproducirse y cuáles no.
Puesto que se trata de imitar lo que ocurre en la naturaleza, se ha de
otorgar un mayor número de oportunidades de reproducción a los
individuos más aptos. Por lo tanto, la selección de un individuo estará
relacionada con su valor de ajuste.
7
No se debe, sin embargo, eliminar por completo las opciones de
reproducción de los individuos menos aptos, pues en pocas
generaciones la población se volvería homogénea.
3.5.1. Selección por ruleta
Propuesto por DeJong, es posiblemente el método más utilizado
desde los orígenes de los Algoritmos Genéticos.
A cada uno de los individuos de la población 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
recibirán una porción de la ruleta mayor que la recibida por los
peores. Generalmente, la población está ordenada en base al
ajuste, por lo que las porciones más grandes se encuentran al inicio
de la ruleta.
Para seleccionar un individuo basta con generar un número
aleatorio del intervalo [0...1] y devolver el individuo situado en esa
posición de la ruleta. Esta posición se suele obtener recorriendo los
individuos de la población y acumulando sus proporciones de ruleta
hasta que la suma exceda el valor obtenido.
Es un método muy sencillo pero ineficiente a medida que aumenta
el tamaño de la población.
3.5.2. Selección por torneo
La idea principal de este método de selección consiste en escoger
a los individuos genéticos en base a comparaciones directas entre
sus genotipos.
Existen dos versiones de selección mediante torneo, el torneo
determinístico y el torneo probabilístico, que a continuación pasan
a detallarse.
8
En la versión determinística se selecciona al azar un número p de
individuos (generalmente se escoge p=2). De entre los individuos
seleccionados se selecciona el más apto para pasarlo a la siguiente
generación.
La versión probabilística únicamente se diferencia en el paso de
selección del ganador del torneo. En vez de escoger siempre el
mejor se genera un número aleatorio del intervalo [0...1], si es
mayor que un parámetro p (fijado para todo el proceso evolutivo)
se escoge el individuo más alto y en caso contrario el menos apto.
Generalmente p toma valores en el rango 0.5 < p ≤ 1.
3.6. Selección de Padres
La selección de padres se efectúa 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
función de adaptación. Este procedimiento se dice que está basado en
la ruleta sesgada.
Según dicho esquema, los individuos bien adaptados se escogerán
probablemente varias veces por generación, mientras que los
pobremente adaptados al problema, no se escogerán más 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 posición escogida al azar, para producir dos
subristras iniciales y dos subristras finales. Después se intercambian las
subristras finales, produciéndose dos nuevos cromosomas completos.
(Figura 2).
Figura 2. Operador de cruce basado en un punto
9
Existen multitud de algoritmos de cruce. Sin embargo, los más empleados
son los que se detallarán a continuación:
Cruce de 1 punto
Cruce de 2 puntos
Cruce uniforme
3.7.1. Cruce de 1 punto
Es la más sencilla de las técnicas 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 información genética de los padres.
Figura 3. Cruce de un punto
3.7.2. Cruce de 2 puntos
Se trata de una generalización 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
10
3.7.3. Cruce uniforme
El cruce uniforme es una técnica 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 técnica
implica la generación de una máscara de cruce con valores
binarios. Si en una de las posiciones de la máscara hay un 1, el gen
situado en esa posición 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
interpretación de los unos y los ceros de la máscara de cruce.
3.8. Fase Reproductiva
Durante la fase reproductiva se seleccionan los individuos de la población
para cruzarse y producir descendientes, que constituirán, una vez
mutados, la siguiente generación de individuos.
11
3.9. Mutación
El operador de mutación se aplica a cada hijo de manera individual, y
consiste en la alteración aleatoria (normalmente con probabilidad
pequeña) de cada gen componente del cromosoma. La Figura 6 muestra
la mutación del quinto gen del cromosoma.
Figura 6. Operador de mutación
3.10. Convergencia
El concepto de convergencia está relacionado con la progresión hacia la
uniformidad: un gen ha convergido cuando al menos el 95 % de los
individuos de la población comparten el mismo valor para dicho gen. Se
dice que la población converge cuando todos los genes han convergido.
Se puede generalizar dicha definición al caso en que al menos un % de
los individuos de la población hayan convergido.
12
4. Desarrollo
4.1. Descripción inicial
Como parte final del presente trabajo desarrollamos una aplicación en el
lenguaje de programación java que nos permite simular el
comportamiento de un algoritmo genético simple basado en el algoritmo
mostrado en el marco teórico, manejando los parámetros de entrada
como:
Tamaño de la población (m)
Fenotipo de cromosoma
Número de competidores para el torneo (El torneo es utilizado
como método de selección de parejas) (c)
Probabilidad de cruce
Probabilidad de mutación
Convergencia
Este ejemplo sencillo será trabajado con una función de la forma 𝑓(𝑥) =
𝑥2 . para poder entender básicamente el funcionamiento de este
algoritmo.
13
4.2. Valores iniciales
El primer paso de la ejecución de este algoritmo consiste en determinar
el tamaño de la población inicial ‘m’ para así generar aleatoriamente el
valor de los individuos de la población. Los valores de los individuos de
la población varían entre 0 y 2n-1 donde n es el número de genes del
cromosoma del individuo al cual se le conoce como fenotipo de
cromosoma, los cuales serán representados en forma binaria.
M=100, N=5 (En este caso como el valor de ‘n’ es 5 el máximo valor que
encontraremos es 11111=31 en sistema decimal).
Luego de generar la población inicial, se realiza la selección de parejas
para la reproducción, en este caso utilizamos el método del torneo, que
consiste en seleccionar un grupo aleatorio de ‘C’ (Número de
competidores menor que tamaño de la población) individuos que
competirán entre sí, siendo el más adaptado el ganador que pase a la fila
de reproducción. Existen muchas teorías y métodos de selección, el
método de torneo que aplicamos es determinista, en este caso se escoge
aleatoriamente a los competidores, el número de competidores ‘C’ que
ingresemos no debe ser ni 1 ni muy elevado, mientras más grande sea
el número de competidores más probabilidades hay de escoger siempre
a los mejores adaptados dejando sin variedad a la población a no escoger
individuos con menor adaptación.
El valor que le daremos a ‘C’ en esta demostración será 2.
Este proceso de selección continuará hasta contar con m/2 parejas, que
serán los padres de la siguiente generación.
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
14
probabilidad de cruce sea mayor o igual a 0.5 se le aplicarán el cálculo
de un punto de cruce aleatoriamente. Este punto de cruce determinara la
posición 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 según 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 serán copias idénticas de los padres, de esta manera
se mantiene el tamaño de la población en todas las generaciones. Hasta
este punto, a la nueva generación se le aplicara aleatoriamente una
probabilidad de mutación 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 mutación se escogerá aleatoriamente uno de sus genes
para ser mutado, esto consiste en cambiar el valor de 0 a 1 o viceversa
según corresponda. (Ya que nuestro ejemplo trabaja con una codificación
binaria).
Estos procesos de cruce y mutación permitirán tener una población más
variada para lograr el camino de convergencia.
Una vez teniendo lista esta nueva generación, esta reemplazara a la
población inicialmente generada para llevar a cabo nuevamente el
proceso.
Para llegar a la solución de un algoritmo genético se buscará una
convergencia de la población la cual consiste en que el 95% de los genes
sea compartido por toda la población.
Valores iniciales con las que trabajara el programa
15
4.3. Ejecución
4.3.1. Población inicial:
Como nuestra función es de la forma 𝑓(𝑥) = 𝑥2, y nuestra población
tiene un número de genes binarios de N=5, seria sencillo llegar al
valor optimo con cálculos simples, siendo este 31 con una función de
adaptación de 961. Pero por fines de ejemplo, diseñamos de este
modo el problema para observar el comportamiento del algoritmo
genético.
Este es el valor máximo de
la población, como parte
de la solución este debe
aumentar
16
Nuestra población de 100 individuos inicial fue generada
aleatoriamente, teniendo un valor total de 35290 y promedio de
359.2.
4.3.2. Selección
Una vez realisado el metodo del torneo se obtiene las parejas
para la reproduccion:
Podemos observar las 10 primeras parejas, cada individuo de la
población dividida A será pareja en la misma posición de un
individuo de la población 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.
17
Genotipo Valor del individuo Punto de cruce =
4
Hijos
cruzados
11000 24 1100|0 1100|1
10111 23 1011|1 1011|0
Primeros 20 hijos cruzados
4.3.4. Mutación
En la imagen podemos observar como el individuo hijo numero 84
logro una probabilidad de mutación, tenemos un punto de mutacion
en la posición 3, los individuos que tengan punto de mutacion -1
son los que no lograron probabilidad de mutacion.
18
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 población.
19
4.3.5. Resultados de convergencia
Lo que podemos observar es que la población convergió en 9
generaciones y con un valor total de 95795, lo que quiere decir
que la población aumento su valor en 60505 (restando del valor
de la población inicial).
Observamos el valor de la
generación solución y el
número de generación
por las que se pasó
20
Estadísticas de solución
Aquí podemos identificar por cada generación el individuo mejor
adaptado y la adaptación promedio de la población, Esto nos
permite observar el trabajo del algoritmo genético como va
encontrando la solución, como mencionamos en este ejemplo es
fácil llegar a la solución que seria 961 por las restricciones ya
mencionadas. A medida que el número de generaciones aumenta
se observa que la adaptación media de la población se aproxime a
la del mejor individuo.
0
200
400
600
800
1000
1200
1 2 3 4 5 6 7 8 9 10
Ad
aptc
ion
Numero de generaciones
Medidas de adaptacion de un Algoritmo Genético SImple
Mejor Media
21
5. Conclusiones
Los algoritmos genéticos son una rama de la inteligencia artificial que
busca optimizar distintos tipos de funciones en diversas aplicaciones,
por lo que constituyen herramientas de amplia aplicación, esta
metodología puede ser muy generalizada adaptándolo a diversos
problemas e incluso a otras herramientas de inteligencia artificial como
lógica difusa, sistemas expertos y redes neuronales, formando nuevos
campos muy prometedores en la inteligencia artificial. Por otro lado, la
programación de un algoritmo genético resulta sencilla al tratar de
imitar el proceso de selección natural propuesto por Darwin, radicando
su complejidad en la correcta adaptación al problema y la correcta
aplicación de los operadores que la constituyen.
En este trabajo logramos desarrollar un programa en el lenguaje de
programación Java con IDE NetBeans, que se puede adaptar a
cualquier función expresado sus individuos en forma binaria. En este
caso como medio practico optamos por una función de la forma 𝑓(𝑥) =
𝑥2 en un algoritmo genético 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
población comparta el mismo gen.
Los elementos que forman parte de un algoritmo genético son Tamaño
de la población, Fenotipo de cromosoma, Número de competidores
para el torneo, Probabilidad de cruce, Probabilidad de mutación,
Convergencia, los cuales deben ser aplicados correctamente según
sea el problema a resolver.
La convergencia en un algoritmo genético es la aproximación del valor
medio de la población al valor óptimo de la solución.
22
6. Bibliografía
Gestal, M., Rivero, D., Ramón Rabuñal, J., Dorado, J., & Pazos, A. (2010).
Introducción a los Algoritmos Genéticos y a la Programación Genética.
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