¿Cuándo usar algoritmos genéticos?

Anuncio
Algoritmos Genéticos
Inteligencia Artificial
Ingeniería Cibernética y en Sistemas Computacionales
8° Semestre
Hernández Reyes Lidy
López Suárez Ricardo
Mendiola Illescas Rosa María
Valdez Moreno Israel
12 de Mayo de 2011
Algoritmos Genéticos y su relación con el movimiento de una pierna robótica.
Índice
Índice ................................................................................................................................................... 1
Objetivos .............................................................................................................................................. 2
Definiciones y conceptos básicos del tema ........................................................................................ 2
Estructura......................................................................................................................................... 4
Tipos de Representación ............................................................................................................. 4
Tamaño de la población ............................................................................................................... 4
Población Inicial ........................................................................................................................... 4
Función Objetivo .......................................................................................................................... 4
Operador de Selección ................................................................................................................ 4
Operador de Cruce ...................................................................................................................... 5
Operador de Mutación ................................................................................................................. 5
Ventajas ........................................................................................................................................... 5
Desventajas ..................................................................................................................................... 5
¿Cuándo usar algoritmos genéticos? .............................................................................................. 6
Antecedentes y desarrollo históricos. ................................................................................................. 6
Fundamentos biológicos. .................................................................................................................... 6
Estado del arte .................................................................................................................................... 7
Áreas de aplicación y clases ........................................................................................................... 7
Desarrollos actuales en el mundo y en México. .................................................................................. 8
Caso Práctico ...................................................................................................................................... 9
Bibliografía consultada ...................................................................................................................... 11
Cuestionario ...................................................................................................................................... 12
1
Objetivos
Explicar el concepto de Algoritmo Genético, así como todos los aspectos que lo rodean.
Mostrar un ejemplo práctico para mejor comprensión del tema.
Definiciones y conceptos básicos del tema
El Algoritmo Genético (AG) es un modelo de aprendizaje que debe su comportamiento a
una metáfora de algunos de los mecanismos de la evolución que se observan en la naturaleza
(como la reproducción sexual y el principio de la supervivencia del más apto), son métodos
adaptativos, generalmente usados en problemas de búsqueda y optimización de parámetros.
Siguiendo la definición dada por Goldberg en 1989:
“Los Algoritmos Genéticos son algoritmos de búsqueda basados en la mecánica de la selección
natural y de la genética natural. Combinan la supervivencia del más apto entre estructuras de
secuencias con intercambio de información estructurado, aunque aleatorizado, para constituir así
un algoritmo de búsqueda que tenga algo de las genialidades de las búsquedas humanas”.
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 o valor de bondad que cuantifica su validez como solución del 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.
El poder de los AG proviene del hecho de que se trata de una técnica robusta, y pueden
tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo
aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el AG
encuentre la solución óptima del problema, existe evidencia empírica de que se encuentran
soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de
optimización combinatoria.
Los algoritmos de optimización combinatoria resuelven instancias de problemas que se
creen ser difíciles en general, explorando el espacio de soluciones (usualmente grande) para estas
instancias. Los algoritmos de optimización combinatoria logran esto reduciendo el tamaño
efectivo del espacio, y explorando el espacio de búsqueda eficientemente. Estos algoritmos se
relacionan frecuentemente con problemas NP.
En el caso de que existan técnicas especializadas para resolver un determinado problema,
lo más probable es que superen al AG, tanto en rapidez como en eficacia. El gran campo de
aplicación de los AG se relaciona con aquellos problemas para los cuales no existen técnicas
especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden
efectuarse mejoras de las mismas hibridándolas con los AG.
Cuando el AG es implementado, se hace de forma que involucre el siguiente ciclo:
1. Generación de una población inicial de manera aleatoria.
2. Evaluar el desempeño de todos los individuos de la población, tomando en cuenta alguna
función objetivo.
3. Crear una nueva población mediante la ejecución de operaciones como el crossover y
mutación sobre individuos cuyo desempeño haya sido evaluado.
2
4. Descartar la población vieja e iterar usando la nueva, hasta que el número de
generaciones alcanza al criterio de terminación.
Generacion=0
Población Inicial Aleatoria
SI
Criterio de
terminación?
?
Resultado Propuesto
NO
Evaluación de cada
individuo en la población
Fin
SI
Generacion++
Individuos=M?
NO
Mutación
Selección de la
operación Genética
Cruce
2 Individuos seleccionados
Individuo seleccionado en
en base a su desempeño
base a su desempeño
Ejecución Crossover
Ejecución Mutación
Inserción de 2 individuos en
Inserción del mutante en la
la nueva población
nueva población
Individuos=Individuos+2
Individuos=Individuos+1
Una iteración de este ciclo constituye una generación. Este comportamiento puntual no se
observa como un todo dentro de las poblaciones en la naturaleza pero si representa un modelo de
3
implementación conveniente.
La primera generación (generación 0) de este proceso opera sobre una población de
individuos generados aleatoriamente. Desde entonces las operaciones genéticas en conjunto con
la medida del desempeño trabajan para mejorar la población.
Estructura
Tipos de Representación
Durante los primeros años el tipo de representación utilizado era siempre binario, debido
a que se adapta perfectamente al tipo de operaciones y el tipo de operadores que se utilizan en un
AG. Sin embargo, las representaciones binarias no son siempre efectivas por lo que se empezaron
a utilizar otro tipo de representaciones.
En general, una representación debe identificar las características constituyentes del
conjunto a estudiar, de forma que distintas representaciones dan lugar a distintas perspectivas y
por tanto distintas soluciones.
Tipos básicos de representaciones:
Representación binaria: Cada gen es un valor 1 ó 0.
Representación entera: Cada gen es un valor entero.
Representación real: Cada gen es un valor real.
Tamaño de la población
Una cuestión que se puede plantear es la relacionada con el tamaño idóneo de la
población. Parece intuitivo que las poblaciones pequeñas corren el riesgo de no cubrir
adecuadamente el espacio de búsqueda, mientras que el trabajar con poblaciones de gran tamaño
puede acarrear problemas relacionados con el excesivo costo computacional.
Población Inicial
Habitualmente la población inicial se escoge al azar. Si los individuos de la población inicial
se obtuviesen como resultado de alguna técnica heurística o de optimización local puede suceder
que se acelere la convergencia del AG. Sin embargo en algunos casos la desventaja resulta ser la
prematura convergencia del algoritmo, queriendo indicar con esto la convergencia hacia óptimos
locales.
Función Objetivo
El resultado al cual se desea llegar.
Operador de Selección
El operador de Selección es el encargado de transmitir y conservar aquellas características
de las soluciones que se consideran valiosas a lo largo de las generaciones. El principal medio para
que la información útil se transmita es que aquellos individuos mejor adaptados tengan más
probabilidades de reproducirse. Sin embargo, es necesario también incluir un factor aleatorio que
permita reproducirse a individuos que aunque no estén muy bien adaptados, puedan contener
alguna información útil para posteriores generaciones, con el objeto de mantener así también
4
cierta diversidad en cada población.
Operador de Cruce
El operador de Cruce permite realizar una exploración de toda la información almacenada
hasta el momento en la población y combinarla para crear mejores individuos.
Operador de Mutación
La mutación se considera un operador básico, que proporciona un pequeño elemento de
aleatoriedad en el entorno de los individuos de la población. Si bien el operador de cruce es el
responsable de efectuar la búsqueda a lo largo del espacio de posibles soluciones, el operador de
mutación va ganando en importancia a medida que la población de individuos va convergiendo.
El objetivo del operador de mutación es producir nuevas soluciones a partir de la
modificación de cierto número de genes de una solución existente, con la intención de fomentar la
variabilidad dentro de la población. Existen muy diversas formas de realizar la mutación, desde la
más sencilla (puntual), donde cada gen muta aleatoriamente con independencia del resto de
genes, hasta configuraciones más complejas donde se tienen en cuanta la estructura del problema
y la relación entre los distintos genes.
Ventajas
Los AG son intrínsecamente paralelos. Ya que los AG tienen descendencia múltiple,
pueden explorar el espacio de soluciones en múltiples direcciones a la vez.
Debido al paralelismo que les permite evaluar implícitamente muchos esquemas a la vez,
los AG funcionan particularmente bien resolviendo problemas cuyo espacio de soluciones
potenciales es realmente grande, demasiado vasto para hacer una búsqueda exhaustiva
en un tiempo razonable.
Poseen la habilidad para manipular muchos parámetros simultáneamente. Muchos
problemas de la vida real no pueden definirse en términos de un único valor que hay que
minimizar o maximizar, sino que deben expresarse en términos de múltiples objetivos.
La virtud de esta técnica es que permite a los AG comenzar con una “mente abierta”, por
así decirlo. Cualquier estrategia de resolución de problemas que dependa de un
conocimiento previo, debe inevitablemente comenzar descartando muchos caminos a
priori, perdiendo así cualquier solución novedosa que pueda existir.
Desventajas
La primera y más importante consideración al crear un AG es definir una representación
del problema. El lenguaje utilizado para especificar soluciones candidatas debe ser
robusto; es decir, debe ser capaz de tolerar cambios aleatorios que no produzcan
constantemente errores fatales o resultados sin sentido.
El problema de cómo escribir la función objetivo debe considerarse cuidadosamente para
que se pueda alcanzar una mayor aptitud y verdaderamente se dé una solución mejor
para el problema dado.
Un problema muy conocido que puede surgir con un AG se conoce como convergencia
prematura, esto a raíz de una incorrecta definición de la población inicial.
No utilizar AG en problemas resolubles de manera analítica, pues estos métodos analíticos
tradicionales consumen mucho menos tiempo y potencia computacional que los AG y, a
5
diferencia de los AG, a menudo está demostrado matemáticamente que ofrecen la única
solución exacta.
¿Cuándo usar algoritmos genéticos?
La aplicación más común de los AG ha sido la solución de problemas de optimización, en
donde han mostrado ser muy eficientes y confiables.
Sin embargo, no todos los problemas pudieran ser apropiados para la técnica, y se
recomienda en general tomar en cuenta las siguientes características del mismo antes de intentar
usarla:
Su espacio de búsqueda (sus posibles soluciones) debe de estar delimitado dentro de un
cierto rango.
Debe permitir la definición de una función de aptitud que nos indique que tan buena o
mala es cierta respuesta.
Las soluciones deben programarse de una forma que resulte relativamente fácil de
implementar en el computador.
Antecedentes y desarrollo históricos.
El desarrollo de los Algoritmos Genéticos se debe a gran medida a John Holland,
investigador de la Universidad de Michigan. A finales de la década de los 60 desarrolló una técnica
que imitaba en su funcionamiento a la selección natural. Aunque originalmente esta técnica que
imitaba en su funcionamiento a la selección natural.
Finales de los 59 y principios de los 60.- Algoritmos Genéticos programados en
computadoras por biólogos evolutivos que buscaban explícitamente realizar modelos de
aspectos de la evolución natural.
En 1962, investigadores como G.E.P. Box, G.J. Friedman, W.W. Bledsoe y H.J. Bremermann
habían desarrollado independientemente algoritmos inspirados en la evolución para
optimización de funciones y aprendizaje automático, pero sus trabajos generaron poca
reacción.
En 1965 surgió un desarrollo más exitoso, cuando Ingo Rechenberg, entonces de la
Universidad Técnica de Berlín, introdujo una técnica que llamó estrategia evolutiva.
En 1975 apareció el trabajo fundamental en el campo de los algoritmos genéticos con la
publicación del libro “Adaptación en Sistemas Naturales y Artificiales” de John Holland'.
A finales de 1980s la General Electric comenzó a vender el primer producto de Algoritmo
Genético para solucionar problemas de procesos industriales.
En 1989 se creó el producto Evolver que fue el primer producto de Algoritmo Genético
para Computadoras personales.
Fundamentos biológicos.
En la naturaleza, los individuos de una población compiten constantemente con otros por
recursos tales como la comida, agua y refugio. Los individuos que tienen más éxito en la lucha por
los recursos tienen mayores probabilidades de sobrevivir y generalmente una descendencia
mayor. Al contrario, los individuos peor adaptados tienen un menor número de descendientes, o
incluso ninguno. Esto implica que los genes de los individuos mejor adaptados se propagarán a un
número cada vez mayor de individuos de las sucesivas generaciones.
6
La combinación de características buenas de diferentes ancestros puede originar en
ocasiones que la descendencia esté incluso mejor adaptada al medio que los padres. De esta
manera, las especies evolucionan adaptándose más y más al medio a medida que transcurren las
generaciones [Beasley et al., 1993].
Pero la adaptación de un individuo no sólo está determinada por su composición genética.
Influyen otros factores como el aprendizaje, en ocasiones adquirido por el método de prueba y
error, en ocasiones adquirido por imitación del comportamiento de los padres. Para imitar esta
adquisición de conocimiento se han desarrollado variantes como el Ajuste Fino, consistentes en
pequeñas modificaciones de los genes de un cromosoma. Por ejemplo, estas modificaciones
pueden realizarse tomando como resultado e mejor individuo tras la ejecución de varias
generaciones de un Algoritmo Genético cuya población previamente ha sido creada a partir de
ligeras variaciones del individuo al que se desea incorporar el conocimiento.
Estado del arte
En la actualidad los algoritmos genéticos se utilizan para infinidad de cosas, existen trabajos y
proyectos tanto comerciales como no comerciales. Entre ellas tenemos empresas de aplicaciones
como las siguientes:
JGAP: Aplicación hecha en java para generar soluciones a problemas implementando
algoritmos genéticos, tiene diversas funcionalidades como: educativas, de investigación o
simple entretenimiento.
Optimal Synthesis Inc.: Organización que ofrece herramientas para búsqueda genética a
partir de los algoritmos genéticos, abalada por la marina de Estados Unidos, ofrece su
producto para trabajar con MatLab.
Anglo American Chaos: Modelado y análisis de datos no lineales en conjunto con los
algoritmos genéticos y otras tecnologías de la IA como programación genética, predicción
de patrones, estimación de ruidos, etc.
Perfect tablePlan: Programa funcional que ayuda a planear la localización de las personas
en una boda.
RML Technologies Inc.: Programa Discipulus™ 5 que usa la programación genética basada
en los algoritmos genéticos para predecir modelos.
JAGA: Software para crear aplicaciones que funcionen con algoritmos genéticos y
programación genética.
En la actualidad los usos y tecnologías de los algoritmos genéticos van mejorando y creciendo
cada día más. A continuación se mencionan algunas áreas y clases donde se aplican los algoritmos
genéticos.
Áreas de aplicación y clases
Optimización: Se trata de un campo especialmente abonado para el uso de los AG, por las
características intrínsecas de estos problemas. No en vano fueron la fuente de inspiración para los
creadores de estos algoritmos. Los AG se han utilizado en numerosas tareas de optimización,
incluyendo la optimización numérica, y los problemas de optimización combinatoria.
Programación automática: Los AG se han empleado para desarrollar programas para tareas
específicas, y para diseñar otras estructuras computacionales tales como el autómata celular, y las
redes de clasificación.
7
Aprendizaje máquina: Los AG se han utilizado también en muchas de estas aplicaciones, tales
como la predicción del tiempo o la estructura de una proteína. Han servido asimismo para
desarrollar determinados aspectos de sistemas particulares de aprendizaje, como pueda ser el de
los pesos en una red neuronal, las reglas para sistemas de clasificación de aprendizaje o sistemas
de producción simbólica, y los sensores para robots.
Economía: En este caso, se ha hecho uso de estos Algoritmos para modelar procesos de
innovación, el desarrollo de estrategias de puja, y la aparición de mercados económicos.
Sistemas inmunes: Al momento de modelar varios aspectos de los sistemas inmunes naturales,
incluyendo la mutación somática durante la vida de un individuo y el descubrimiento de familias
de genes múltiples en tiempo evolutivo, ha resultado útil el empleo de esta técnica.
Ecología: En el modelado de fenómenos ecológicos tales como las carreras de armamento
biológico, la coevolución de parásito-huesped, la simbiosis, y el flujo de recursos.
Genética de poblaciones: En el estudio de preguntas del tipo "¿Bajo qué condiciones será viable
evolutivamente un gen para la recombinación?".
Evolución y aprendizaje: Los AG se han utilizado en el estudio de las relaciones entre el
aprendizaje individual y la evolución de la especie.
Sistemas sociales: En el estudio de aspectos evolutivos de los sistemas sociales, tales como la
evolución del comportamiento social en colonias de insectos, y la evolución de la cooperación y la
comunicación en sistemas multiagentes.
Desarrollos actuales en el mundo y en México.
1. Aplicación de algoritmos genéticos a un despacho económico: Tesis de Maestria en Grado
de ciencias de la ingeniería eléctrica con especialidad en potencia. UNAM. 2006
2. Una Aplicación de los Algoritmos Genéticos en la Discriminación: Aurora Montano Rivas
Mario Cantú Sifuentes. Departamento de Estadística y Cálculo, Universidad Autónoma
Agraria Antonio Narro. 2004.
3. Actas de los Talleres de las Jornadas de Ingeniería del Software y Bases de Datos, Vol. 2,
No. 4, 2008 Generación de mutantes con algoritmos genéticos Domínguez Jiménez, J. J.,
Estero Botaro, A., Medina Bulo, I.Departamento de Lenguajes y Sistemas Informáticos.
Cádiz, Chile
8
Caso Práctico
Nuestro caso práctico se basa en el modelo cinemático denominado "Strandbeest" creado por
el escultor cinemático Theo Jansen. Este modelo esta formado por múltiples eslabones unidos, a
los cuales se les conecta algún mecanismo actuador, como un motor, y esto provoca que el
modelo reaccione con un movimiento similar a una pierna humana.
20
29 cms.
10
17 cms
0
5 cm
-10
-20
30 cms.
-30
-40
-50
La figura anterior
muestra al modelo con medidas de los eslabones. Con estas medidas se
sigue un paso con la forma marcada con rojo.
-60
-50
-40
-30
-20
-10
0
10
20
Estos parámetros de las longitudes de los eslabones, son introducidos al algoritmo genético
desarrollado en Matlab. Los parámetros son codificados de forma especial para especificar la
función objetivo, la cual en este caso es dar un paso con mayor longitud en X.
Durante las simulaciones, se obtenían resultados muy variados dependiendo de los
parámetros de entrada, por ejemplo:
Parametros:
u=10;
m=.6*u;
d=2*u;
l1=2.9*u;
l2=1.9*u;
l3=3*u;
20
10
0
-10
-20
Resultados:
dx = 25.0118
-30
dy =
4.8270
-40
-50
-60
-50
9
-40
-30
-20
-10
0
10
20
30
40
50
Trayectoria de la pata
Desplazamiento en x
0
-38
-10
-40
-20
-42
-30
-44
-40
0
20
40
60
80
100
120
140
100
120
140
-46
Desplazamientos en y
-48
-42
-50
-44
-46
-52
-48
-54
-50
-30
-25
-20
-15
-10
0
20
40
60
80
Pero también se dieron casos en donde no eran posibles físicamente los resultados obtenidos:
Parametros:
u=10;
m=.6*u;
d=2*u;
l1=2.8*u;
l2=2.0*u;
l3=3*u;
20
10
0
-10
-20
-30
Resultados:
dx = 25.4300
-40
dy = 0.8542
-50
-60
-50
-40
-30
-20
-10
0
10
20
30
40
Trayectoria de la pata
-40
Desplazamiento en x
0
-42
-10
-44
-20
-46
-30
-48
-40
-50
0
20
40
60
80
100
120
140
100
120
140
Desplazamientos en y
-52
-47.5
-54
-48
-56
-48.5
-58
-30
-25
-20
-15
-10
-49
10
0
20
40
60
80
50
En base a estos resultados se obtuvo que las mejores medidas son las siguientes:
U=10
M
D
L1
L2
Dx
Dy
.6
2
2.9
1.9
25.0118
4.8270
6 cm
20 cm
29 cm
19 cm
20
29 cm
10
19 cm
0
6 cm
-10
-20
30 cm
-30
-40
-50
Bibliografía consultada
-60
-50
-40
-30
-20
-10
0
10
20
E. Gómez-Ramírez & F. Mazzanti, Cellular Neural Networks Learning using Genetic Algorithm, 7mo.
Congreso Iberoamericano de Reconocimiento de Patrones, CIARP 2002, Noviembre 19-22, CIC-IPN,
Cd. de México, México. 2002.
A.G. Sánchez de Tagle Horta. Introducción a los algoritmos genéticos. Tesis (ingeniero en
cibernética y en sistemas computacionales)--Universidad La Salle. Escuela de Ingeniería.
C.L., Karr et al. Industrial applications of genetic algorithms. Boca Ratón. 1999
http://www.sistedes.es/TJISBD/Vol-2/No-4/articles/pris-08-dominguez-mutantesGeneticos.pdf
11
Cuestionario
1. ¿Qué son los algoritmos genéticos?
a) Son algoritmos de búsqueda que se basan en iteraciones y buscan resultados óptimos.
b) Son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética
natural que consisten en una población de soluciones codificadas de forma similar a
cromosomas.
c) Son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética
natural que siempre brindan el resultado más óptimo.
d) Son algoritmos basados en matemáticas avanzadas, los cuales son codificados de modo
similar a una ecuación.
2. ¿Cuáles son los tipos que existen para representar las características constituyentes del
conjunto a estudiar?
a) Binario, real y entero
b) Binario, cadenas
c) Números y
d) Entero y
y caracteres.
cadenas.
fracciones.
3. ¿Qué ventajas ofrecen los algoritmos genéticos?
a) Manipulan muchas variables al mismo tiempo y se trabaja con la “mente abierta”.
b) Puede presentarse la convergencia prematura y trabajan de forma paralela.
c) Definir la representación del problema y manipular muchas variables al mismo tiempo.
d) Se trabaja con la “mente abierta” y dan siempre la mejor solución a un problema.
4. ¿Cuáles son los operadores utilizados en algoritmos genéticos?
a) De selección,
b) De selección,
c) De mutación,
mutación y relación.
cruce y crecimiento. selección y cruce.
5. ¿Quién introdujo el término de Algoritmo Genético?
a) John Holland
b) Ingo Rechenberg
c)Charles Darwin
d)Ninguno de los
anteriores.
d) E. Gómez
Ramírez
6. ¿Cuál es el nombre de la técnica que imita la adquisión de conocimiento?
a)Ajuste Genético
b)Ajuste Fino
c)Ajuste Natural
d)Ajuste Biológico
7. ¿En qué año se le dio el nombre de Algoritmo Genético?
a)1972
b)1960
c)1975
d)1869
8. ¿Para qué sirve Perfect Table Plan?
a) Organizar Cocteles
b) Organizar Bodas
d) Organizar clases
c) Organizar cursos
9. Mencione una aplicación de los algoritmos genéticos
a) Optimización
b) Estudio
c) Crear clones
d)Programación
automática
10. Software con el cual podemos hacer modelado de algoritmos genéticos
a) Mat Lab
b) Word
c) Angry Birds
d) Paint
12
Descargar