Logo Studenta

PerezEscuderoAlexis

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD VERACRUZANA
Maestŕıa en Inteligencia Artificial
Implementación de un esquema robótico para la optimización de
comportamientos en ambientes no estructurados utilizando algoritmos
bioinspirados
TESIS QUE PRESENTA:
Alexsi Adad Pérez Escudero
PARA OBTENER EL TÍTULO DE Maestro en Inteligencia Artificial
DIRECTOR DE TESIS: Dr. Fernando M. Montes González
CO-DIRECTOR: Dr. Efrén Mezura Montes
REVISOR: Dr. Carlos Alberto Ochoa Ort́ız Zezzatti
Xalapa, Veracruz, México NOVIEMBRE DE 2014
ii
iii
AGRADECIMIENTOS
Es imposible nombrar a todas las personas a las que le estoy agradecido, ya que he
tenido muy bueno compañeros amigos y personas muy queridas que dejan huella en tu
vida, aśı que a todas esas personas les estoy muy agradecido por haber formado parte
de mi vida.
A mi madre por apoyarme incondicionalmente en las buenas y en las malas, por
enseñarme a ser una mejor persona cada d́ıa, por enseñarme a nunca rendirme y sobre
todo por estar conmigo en cada momento de mi vida, y escucharme cuando lo necesito,
y acercarme a Dios para aprender a creer en él y sentir su apoyo cuando más lo necesito.
A mi hermano con acompañarme en los bueno y en los malos momentos, y distraerme
en los momentos necesarios.
A mis t́ıos que se enorgullecen de mı́ por ver todos los logros y metas que he alcan-
zado.
Y a todos mis familiares que han créıdo en mı́ y que saben que puedo lograr esto y
mucho más, gracias por su apoyo.
A mis directores de tesis los Drs. Fernando Montes y Efrén Mezura por ayudarme
y orientarme en los problema presentandos, por su paciencia y tiempo.
A todos los maestros de la MIA por compartir su conocimiento y tener la paciencia
de enseñarme nuevas cosas.
A todos mis amigos de la MIA especialmente a Paty y a Miguel por su apoyo
incondicional, también a Adán a Elva y a Javier que me ayudaron en estos años en que
cursamos la maestŕıa.
A todos mis amigos de la PANA por apoyarme en los momentos dificiles, Kuter,
Marcos, Ever, Pocho, Clark, Fercho.
♡
iv
ÍNDICE GENERAL
AGRADECIMIENTOS iii
ÍNDICE GENERAL v
ÍNDICE DE TABLAS ix
ÍNDICE DE FIGURAS xi
1 Motivo de la Investigación 1
1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Aproximación basada en el conocimiento . . . . . . . . . . . . . . . . . 3
1.2.1 Robótica basada en comportamientos . . . . . . . . . . . . . . . 4
1.3 Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Justificación e Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.2 Objetivos Espećıficos . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Alcances y limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Robótica Evolutiva 13
2.1 Introducción a la robótica evolutiva . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Inicio de la robótica evolutiva . . . . . . . . . . . . . . . . . . . 13
2.1.2 Perspectiva Ingenieril de la RE . . . . . . . . . . . . . . . . . . 15
2.1.3 Diferentes enfoques de la RE . . . . . . . . . . . . . . . . . . . . 17
2.2 Neuro-controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
v
vi ÍNDICE GENERAL
2.3 Proceso de evolución de la RNA . . . . . . . . . . . . . . . . . . . . . . 23
3 Algoritmos Bioinspirados 27
3.1 Introducción a los algoritmos bioinspirados . . . . . . . . . . . . . . . . 27
3.1.1 Inteligencia Colectiva . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.2 Espacio de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2 Algoritmo Genético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Evolución Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.1 Operadores de la ED . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4 MBFOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.1 Operadores del MBFOA . . . . . . . . . . . . . . . . . . . . . . 45
3.5 CDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4 Metodoloǵıa 51
4.1 Robots utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.1 Robot E-puck . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.2 Robot Pioneer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.3 Simulador Player-Stage . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.4 Simulación de robot en Player-Stage . . . . . . . . . . . . . . . 58
4.1.5 Adaptación del comportamiento en las RNA’s . . . . . . . . . . 58
4.1.6 Evaluación/Evolución del comportamiento de seguir paredes . . 60
4.1.7 Pruebas estad́ısticas utilizadas . . . . . . . . . . . . . . . . . . . 63
5 Resultados 65
5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.1 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2 Comportamiento de los Algoritmos . . . . . . . . . . . . . . . . . . . . 72
5.2.1 Algoritmo Genético . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.2 M.B.F.O.A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2.3 Evolución Diferencial . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 CDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
ÍNDICE GENERAL vii
6 Conclusiones y Trabajo Futuro 79
6.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.1 Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
BIBLIOGRAFÍA 83
viii ÍNDICE GENERAL
ÍNDICE DE TABLAS
4.1 Elementos del Pioneer . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Parámetros de los AB’s . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.1 Resultados Pioneer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Resultados del robot E-puck . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3 Estad́ısticas Obtenidas . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4 Prueba de Wilcoxon para el robot pioneer . . . . . . . . . . . . . . . . 70
5.5 Prueba de Wilcoxon par el robot e-puck . . . . . . . . . . . . . . . . . 71
ix
x ÍNDICE DE TABLAS
ÍNDICE DE FIGURAS
1.1 Modelo de la estructura basada en conocimiento . . . . . . . . . . . . . 3
1.2 Modelo de la estructura basada en comportamiento . . . . . . . . . . . 5
1.3 Modelo de la robótica evolutiva . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Proceso de evolución del neuro-controlador . . . . . . . . . . . . . . . . 11
2.1 Metodoloǵıa de la robótica evolutiva . . . . . . . . . . . . . . . . . . . 15
2.2 Esquema de neurona biológica . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Modelo de neurona artificial . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Modelo de RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1 Representación artificial del algoritmo ACO . . . . . . . . . . . . . . . 31
3.2 Representación del espacio de búsqueda . . . . . . . . . . . . . . . . . . 32
3.3 representación genot́ıpica . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Método selección por Ruleta . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5 Método de cruza AG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.6 Método de mutación AG . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.7 Elección de 3 vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8 Obtención vector mutante . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9 Ejemplo de vectores generados . . . . . . . . . . . . . . . . . . . . . . . 43
3.10 Ejemplo de nado y tambaleo de bacteria . . . . . . . . . . . . . . . . . 45
3.11 Convergencia de MBFOA . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.12 Proceso de swarming MBFOA . . . . . . .. . . . . . . . . . . . . . . . 47
4.1 E-Puck Básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
xi
xii ÍNDICE DE FIGURAS
4.2 E-puck con torreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3 Robot Pioneer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4 Entorno Player-Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5 Robots Simulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.6 RNA del robot epuck . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7 RNA del robot Pioneer . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.8 Arena de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1 Gráfica de convergencia robot Pioneer . . . . . . . . . . . . . . . . . . . 69
5.2 Gráfica de convergencia robot E-puck . . . . . . . . . . . . . . . . . . . 70
5.3 Gráfica de convergencia AG robot Pioneer . . . . . . . . . . . . . . . . 72
5.4 Gráfica de convergencia AG robot E-puck . . . . . . . . . . . . . . . . 73
5.5 Gráfica de convergencia MBFOA robot Pioneer . . . . . . . . . . . . . 74
5.6 Gráfica de convergencia MBFOA robot E-puck . . . . . . . . . . . . . . 74
5.7 Gráfica de convergencia ED robot Pioneer . . . . . . . . . . . . . . . . 75
5.8 Gráfica de convergencia ED robot E-puck . . . . . . . . . . . . . . . . . 76
5.9 Gráfica de convergencia CDE robot pioneer . . . . . . . . . . . . . . . . 77
5.10 Gráfica de convergencia CDE robot E-puck . . . . . . . . . . . . . . . . 77
CAPITULO 1
Motivo de la Investigación
1.1 Introducción
El buscar la forma de que los robots sean cada vez más autónomos es una de las
principales tareas de los investigadores en la actualidad [Nolfi and Floreano, 2000] ,
debido a esto cada vez se buscan nuevas técnicas para que los robots puedan realizar
funciones más complejas que generalmente pueden resultar dif́ıciles o muy repetitivas
para los humanos. Es por esto que la Inteligencia Artificial (IA) nace como un campo
de estudio a partir de la robótica, ya que en esta última existen muchas vertientes como
pueden ser redes neuronales, teoŕıa de control, teoŕıa de la complejidad, visión artificial,
entre otras. Marvin Minsky [Marvin, 2006] argumentó que:
“La máquina inteligente podŕıa construir dentro de śı misma, un modelo
abstracto del entorno y entonces intentar experimentos externos”
a partir de esta postura se incrementan las investigaciones en la robótica. Durante
muchos años los robots que más desarrollo tuvieron fueron los robots industriales, ha-
ciendo ensamblajes y maximizando las lineas de producción, realizando estas labores
mucho más rápido y automatizando tareas que antes no se pod́ıan, no obstante este
tipo de robots casi siempre trabajan en ambientes estructurados, es decir ambientes
que no presentan algún tipo de cambio significativo con el paso del tiempo, son ambi-
entes predecibles en donde sus cambios, si es que se llegan a presentar, son cambios que
1
2 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
pueden ser incluidos en la programación de dichos robots. Pero esto ha dado un giro
muy importante en los últimos años, dando cabida a nuevos tipos de robots autónomos,
los cuales tienen que desempeñar tareas más complejas que una linea de producción,
en otras palabras estos robots tienen que ser lo más autónomos posible porque las
funciones que tienen que realizar serán dentro de ambientes no estructurados, es decir
ambientes dinámicos que no pueden ser predichos, esto hace imposible que el robot este
programado para todas las situaciones que se puedan presentar al momento de llevar a
cabo sus instrucciones [Santos and Duro, 2005].
La robótica autónoma se considera un sub-campo de la inteligencia artificial debido
a que el realizar algunas labores o aprender diversos comportamientos requiere de cierto
grado de inteligencia, pero además de esto el trabajar con robots implica varios retos
más, como por ejemplo, no solamente hacer que el robot realice con éxito las tareas que
le son encomendadas y producir una respuesta sino que esta debe ser reflejada en el
mundo real. Para aclarar esto el término “robot autónomo” suele confundirse con “robot
móvil” pero realmente son términos diferentes. Un robot autónomo suele ser móvil, es
decir es aquel que no esta fijado en alguna posición sino más bien que puede desplazarse
por su entorno e interactuar con él con la menor intervención humana posible o en el
mejor de los casos con completa ausencia de ésta. Por el contrario un robot móvil no
es necesariamente autónomo ya que existen muchos robots que son tele-operados como
por ejemplo los robots que se usan para desarmar bombas [Nolfi and Floreano, 2000].
Para considerar que un robot es autónomo, es necesario que sea capaz de reaccionar
e interactuar con su entorno aśı como también lidiar con situaciones que no estén
consideradas en su programación y pueda resolver de una manera satisfactoria la tarea
que le fue encomendada o por lo menos encontrar a una solución factible de acuerdo
a las condiciones presentadas, todo esto sin que alguna supervisión venga del exterior
[Murphy, 2000].
Sin embargo para que todo esto sea posible es necesario que el robot cuente con
una estructura cognitiva de control que le permita vincular los est́ımulos que recibe del
mundo exterior gracias a su sensores, y las acciones que deberá ejecutar por medio de
sus actuadores, esta vinculación sensor-actuador es lo que hace posible que el robot
pueda sobrevivir en ambientes no estructurados y aśı pueda alcanzar sus metas, al
1.2. APROXIMACIÓN BASADA EN EL CONOCIMIENTO 3
Figura 1.1: Modelo de la estructura basada en conocimiento
mismo tiempo la retroalimentación hace que cada vez realice mejor sus tareas, como
por ejemplo que aprenda de sus errores [Santos and Duro, 2005].
Existen varias maneras de atacar los problemas de autonomı́a de los robots, la IA
propone varias opciones de entre las cuales se encuentran, la tradicional aproximación
basada en conocimiento que tiene sus oŕıgenes en la relación con la Inteligencia Artificial
simbólica y una más actual que es la robótica basada en comportamientos la cual esta
inspirada en la naturaleza y rompe con algunas de las bases de la IA tradicional.
1.2 Aproximación basada en el conocimiento
Las arquitecturas que siguen la aproximación basada en el conocimiento o tradicional
surgen de la descomposición de los procesos que el robot debe realizar en tareas inde-
pendientes para posteriormente unirlos, como lo ilustra la Figura 1.1, donde se puede
apreciar que primero el robot recibe est́ımulos a través de sus sensores para interpretar
los datos, con estos el robot hace un modelado del entorno en el que se desenvuelve,
modelo sobre el cual hace una planificación del conjunto de acciones que puede llegar a
realizar, finalmente pasa por un proceso de ejecución de las acciones determinadas que
indican a los actuadores que valores deben de tomar para cada situación.
Dentro de este enfoque la parte de la planificación se basa en un sistema de res-
olución de problemas llamado STRIPS (Stanford Research Institute Problem Solver,
4 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
por sus siglas en ingles) sobre un modelo de entorno simbólico es decir mediante
lógica de predicados de primer orden para tareas como mover objetos o desplazarse
[Fikes and Nilsson, 1971].
Uno de los problemas que tiene esta aproximación es que algunos procesos como
lo son la obtención de datos y la planificación, se realizan mediante módulos desarrol-
lados, sin tener en cuenta el resto de los módulos que participan en la arquitectura.
Otro problema que también presenta es como representar el mundo real, ya que es ex-
tremadamente dif́ıcil debido a que el mundo se encuentra en constante cambio y este
cambio es muy dif́ıcil de representar por el diseñador. Porotro lado algunas de las
desventajas que menciona Harvey I. son [Harvey, 1997]:
• La descomposición del sistema de control de un robot en sub-partes no siempre
es evidente.
• Las interacciones entre los módulos son más complejas que unos simples enlaces
entre ellos, dado que muchas de ellas las determina el propio entorno.
• A medida que la complejidad del sistema crece, las interacciones entre los módulos
crecen de modo exponencial.
Debido a las debilidades que presentaba este enfoque los investigadores del área
comenzaron a buscar otras formas de arquitecturas cognitivas, en las cuales sus diversos
módulos se desarrollen e interactúen de una manera coordinada y simultanea, esto dio
origen a la aproximación basada en comportamientos.
1.2.1 Robótica basada en comportamientos
La falta de robustez que presenta la robótica basada en conocimiento es debido, en gran
parte, a la ausencia en la estrategia de las interacciones entre los diferentes módulos al
momento de diseñarlos. Es por esto que el enfoque de la Robótica Basada en Compor-
tamiento parte de la idea de proveer al robot con una colección de comportamientos
simples y básicos [Nolfi and Floreano, 2000].
1.2. APROXIMACIÓN BASADA EN EL CONOCIMIENTO 5
Figura 1.2: Modelo de la estructura basada en comportamiento
Los comportamientos son implementados en sub-partes separadas del sistema de
control y un mecanismo de coordinación es el encargado de determinar la fuerza rel-
ativa de cada comportamiento en un momento en particular. La coordinación puede
ser llevada a cabo por medio de métodos competitivos o cooperativos. En los métodos
competitivos sólo un comportamiento afecta la salida del motor del robot en un mo-
mento en particular. En los métodos cooperativos diferentes comportamientos pueden
contribuir a una acción sencilla del motor aunque con diferente intensidad.
El comportamiento global del robot debe emerger de la interacción entre estos com-
portamientos simples y el ambiente que lo rodea [Brooks, 1986]. La selección del com-
portamiento que debe emerger se basa en la jerarqúıa de subsunción donde los com-
portamiento están ordenados por capas, y los comportamientos de las capaz más bajas
tienen prioridad sobre los comportamientos de las capaz más altas, es decir las capas
más bajas inhiben a las capas superiores como se muestra en la Figura 1.2.
Partiendo de esta postura [Brooks, 1991] menciona que para poder tener un sistema
robótico robusto hay que tomar en cuenta los siguientes puntos al momento de diseñar
dicho sistema:
• El robot se encuentra en el mundo real y no requiere operar con representaciones
abstractas del mundo, al contrario debe operar con el mundo mismo.
• El robot presenta caracteŕısticas f́ısicas, las cuales se deben considerar en las
acciones que el robot realiza en el mundo.
6 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
• La inteligencia del robot debe surgir a ráız de la interacción con el mundo.
• Toda la información que el robot recibe debe ser directamente del ambiente y no
a través de śımbolos.
• El sistema robótico debe ser escalable.
Investigadores como [Brooks, 1986], [Maes, 1990], [Sharkey, 1997] empezaron a es-
tablecer las bases de una nueva tendencia en robótica, la cual está situada entre la
planificación de alto nivel de la inteligencia deliberativa y la teoŕıa de control de bajo
nivel. Posteriormente debido a los buenos resultados arrojados por la robótica basada
en comportamiento Sharkey menciono que esta aproximación:
“Creció como una tendencia a la simplicidad, adaptabilidad y como actitud
de lo que la naturaleza conoce mejor: la estupidez natural es mejor que la
inteligencia artificial”
Por otro lado es importante mencionar que este enfoque no sólo se aplica en robótica
sino que también se puede aplicar en casos en los que se requiera un sistema que
realice varias tareas en un entorno dinámico, dado que estos sistemas deben aprender
a reaccionar dependiendo de la situación, esto es lo que afirma [Maes, 1990]
La mayoŕıa de los sistemas basados en el comportamiento también son reactivos, lo
que significa que no necesitan de una programación de representaciones internas de por
ejemplo como luce una silla, o en que tipo de superficie el robot se mueve. En cambio
toda esa información se obtiene de la entrada de los sensores del robot. El robot utiliza
esa información para corregir gradualmente sus acciones de acuerdo a los cambios en el
entorno inmediato.
El hecho de trabajar con la robótica basada en comportamiento indica que el
diseñador/programador, es el responsable de dividir los comportamientos, lo cual en
algunos casos puede llegar a ser demasiado complejo y siempre dependerá de la per-
spectiva que el diseñador le quiera dar al problema, esto implica que un mismo compor-
tamiento complejo puede llegar a emerger a partir de diferentes diseños/configuraciones
de sub-comportamientos [Nolfi and Floreano, 2000]. En estos casos es dif́ıcil descom-
poner modularmente cada uno de los elementos que conforman el comportamiento final,
1.2. APROXIMACIÓN BASADA EN EL CONOCIMIENTO 7
Figura 1.3: Modelo de la robótica evolutiva, donde el diseñador no tiene que decidir
como dividir el comportamiento deseado. La forma en que se divide un comportamiento
deseado en distintos módulos es el resultado un proceso de auto-organización
esto es una gran desventaja que presenta esta aproximación debido a que muchas veces
se depende de la prueba y error para dotar al robot con los comportamientos necesar-
ios para su tarea final. Estas desventajas presentadas fueron el catalizador para que
surgiera un nuevo tipo de robótica: la Robótica Evolutiva (RE).
La RE es un área de la robótica autónoma, la cual se basa en el uso de algorit-
mos bio-inspirados (AB), como lo son las redes neuronales artificiales (RNA), algo-
ritmos evolutivos (AE) y de inteligencia colectiva (IC), para el desarrollo de compor-
tamientos robóticos. La RE intenta relacionar la bioloǵıa con ciencias cognitivas y la
inteligencia artificial, y está basada en el principio Darwiniano de reproducción selec-
tiva del más apto, esto último es conocido mayormente como evolución artificial (EA)
[Nolfi and Floreano, 2000].
Cabe mencionar que la evolución artificial esta inspirada en la evolución natural,
pero presenta ciertas diferencias con ésta, como por ejemplo, la evolución natural no
tiene un objetivo en especifico es básicamente un proceso de adaptación constante,
mientras que la evolución artificial simplemente es un proceso de optimización de solu-
ciones para problemas determinados, otra diferencia es que en la evolución natural los
individuos más aptos son aquellos que logran adaptarse mejor a su ambiente, por el
contrario en la evolución artificial la calidad de los individuos o más aptos son deter-
minados por una función de aptitud (fitness) que mide su desempeño de acuerdo al
problema dado.
8 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
Este principio hizo que varios investigadores empezaran a implementar la EA para
obtener controladores de robots con el objetivo de que pudieran ser lo más autónomos
posible, y propusieron a la EA como un medio para automatizar la obtención de éste
tipo de controladores [Beer and Gallagher, 1992], [Husbands et al., 1994].
A grandes rasgos en la robótica evolutiva definimos los componentes del sistema
de control (sensores y actuadores) y un criterio de selección, y dejamos a la evolución
artificial descubrir a los individuos más adecuados con el paso de generaciones, mientras
el robot interactúa con el entorno, es decir con cada nueva generación los individuos
serán más aptos para realizar la tarea que se les ha programado, sin tener intervención
humana o muy poca [Santos and Duro, 2005]. Después de la evolución, el resultado
es un agente cognitivo simulado pero situado en un ambiente real y cuyos mecanismos
de controlneuronal (redes neuronales, sensores y actuadores), son capaces de producir
conductas cognitivas (ver Figura 1.3 ). Generalmente el sistema de control de los robots
es una o varias RNAs, razón por lo que se le conoce como neuro-controlador, este neuro-
controlador es el que generalmente se somete al proceso de evolución. Éste tema será
tratado con mayor profundidad en los siguientes caṕıtulos.
En este trabajo se tiene por objetivo evolucionar una red neuronal (neuro-controlador),
es decir encontrar los pesos óptimos para las interconexiones de las neuronas, utilizando
el algoritmo de inteligencia colectiva M.B.F.O.A. (Modified Bacterial Foraging Opti-
mization Algorithm), el cúal a su vez esta basado en el algoritmo B.F.O.A (Bacterial
Foraging Optimization Algorithm) propuesto por Passino en 2002, y aśı obtener un buen
neuro-controlador para el robot para el comportamiento de seguir paredes y además ver
qué tan eficiente es el M.B.F.O.A. realizando esta tarea al compararlo con el algoritmo
genetico (AG) (el más usado tradicionalmente en esta área) y contra la Evolución Difer-
encial (ED), algoritmo que por su forma de trabajar ha demostrado tener muy buenos
resultados en problemas de busqueda y optimización, a su vez también se prueba contra
un algoritmo reciente que incorpora los puntos más fuertes del B.F.O.A. y de la E.D.
llamado Chemotaxis Diferential Evolution (C.D.E.) .
1.3. PROBLEMÁTICA 9
1.3 Problemática
En robótica evolutiva desde que se comprobó que los algoritmos genéticos resolv́ıan de
una manera eficiente la obtención de neuro-controladores para el robot, se ha dejado de
probar con nuevas técnicas, por consecuencia es un área poco explorada en la actualidad
pero con mucho potencial por delante, es por esto que en éste trabajo se implementarán
el M.B.F.O.A., la E.D. y la C.D.E para obtener dichos neuro-controladores para poder
comprarlos contra el A.G. y proponer otro algoritmo para estos usos.
1.4 Justificación e Hipótesis
El explorar nuevas técnicas para la obtención de neuro-controladores es muy impor-
tante dentro de la robótica evolutiva ya que aśı se podŕıan encontrar mejores maneras
de obtener estos neuro-controladores que las tradicionales (algoritmos genéticos) y el
M.B.F.O.A. puede ser una de estas técnicas que podŕıa llegar a suplantar a los algorit-
mos tradicionales, por esto para saber qué tan eficiente puede llegar a ser el M.B.F.O.A.
para obtener neuro-controladores se plantea la siguiente hipótesis, el M.B.F.O.A. no
debeŕıa presentar diferencia significativa con respecto a otros algoritmos (algoritmo
genético, evolución diferencial y C.D.E. ), al evolucionar comportamientos.
Para comprobar esta hipótesis se implementará el comportamiento de seguir pare-
des en un robot e-puck y un robot poineer mediante el simulador Player-Stage, y se
evolucionaran sus respectivas redes neuronales. El probarlo en ambos robots representa
un reto también para el algoritmo puesto que los espacios de búsqueda no son iguales
en ambos robots ya que en el pioneer serán individuos de 144 variables mientras que en
el e-puck son individuos de 40 variables, se hablará de esto más adelante.
1.5 Objetivos
En este trabajo se tiene por objetivo evolucionar una red neuronal (neu-rocontrolador),
es decir encontrar los pesos óptimos para las interconexiones de las neuronas, utilizando
los algoritmos de inteligencia colectiva M.B.F.O.A. (Modified Bacterial Foraging Op-
10 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
timization Algorithm), E.D. (Evolución Diferencial) y C.D.E. (Chemotaxis Diferential
Evolution),y aśı obtener un buen neurocontrolador para el robot para los comportamien-
tos de seguir paredes y además ver qué tan eficiente es el M.B.F.O.A. realizando esta
tarea.
1.5.1 Objetivo General
• Comparar el rendimiento de M.B.F.O.A. con el de los algoritmos de Evolución
Diferencia, Algoritmo Genético y C.D.E..
1.5.2 Objetivos Espećıficos
• Implementar el comportamiento de seguir paredes, utilizando M.B.F.O.A., evolución
diferencial (ED), Chemotaxis Diferential Evolution (CDE) y el algoritmo genetico
(AG)
• Comprobar que no exista diferencia significativa entre dichos algoritmos, es-
pećıficamente con el M.B.F.O.A.
• Implementar dicho comportamiento en el robot e-puck y pionner.
1.6 Alcances y limitaciones
• Se usara el simulador player stage para evolucionar los neuro-controladores
• Se utilizaran los algoritmos geneticos:
– Algoritmo Genético (AG)
– Modified Bacterial Foraging Optimization Algorithm (MBFOA)
– Evolución Diferencial (ED)
– Chemotaxis Diferential Evolution (CDE)
• Esto algoritmos se usaran para evolucionar una red neuronal artificial, que cumple
la función de neuro-controlador del robot
1.6. ALCANCES Y LIMITACIONES 11
Figura 1.4: Ejemplo del modelo del proceso de evolución del neuro-controlador, donde
se puede observar que para medir la aptitud del robot es necesario probarlo primero en
el ambiente simulado
• El comportamiento de seguir paredes es una función mono-objetivo y sin restric-
ciones, por lo cual se usaran los algoritmos mencionados adecuados a estas carac-
teŕısticas.
El proceso de evolución del neuro-controlador será para buscar los pesos de las
conexiones que existen en las redes neuronales, estos pesos son los encargados de guardar
el conocimiento del robot y de acuerdo a estos será la respuesta que muestre el robot
para el comportamiento de seguir paredes, el proceso puede ser visto más gráficamente
en la Figura 1.4.
12 CAPITULO 1. MOTIVO DE LA INVESTIGACIÓN
CAPITULO 2
Robótica Evolutiva
2.1 Introducción a la robótica evolutiva
2.1.1 Inicio de la robótica evolutiva
Existen diferentes arquitecturas para crear controladores de un robot, generalmente
la más usada es la arquitectura de subsumción [Brooks, 1986], sin embargo como se
menciono en el capitulo anterior la RE nace a partir de las desventajas que presentaba
la robótica basada en comportamiento, el termino fue introducido por los investigadores
Cliff, Harvey y Husbands en la Universidad de Sussex a principios de los 90’s, pero sus
investigaciones comenzaron a finales de los 80’s cuando Husbands se dio cuenta que
era necesario crear una solución que fuera completamente automática para la creación
de sistemas autónomos robóticos, que les permitiera sobrevivir en el entorno con la
menor intervención humana posible. Es aqúı que junto con otros cient́ıficos como Beer
y Gallager, eligieron a la evolución artificial como herramienta para poder obtener una
solución automática, y agregaron que lo más importante dentro de la robótica evolutiva
era conocer cómo se deb́ıan generar los comportamientos adecuados para que un robot
pueda solucionar una tarea o actividad.
Es debido a esto que según [Husbands et al., 1994], la RE nace como una nueva
alternativa para generar automáticamente neuro-controladores robóticos, atacando dos
problemas primordiales que aparecen principalmente en la robótica basada en compor-
13
14 CAPITULO 2. ROBÓTICA EVOLUTIVA
tamientos:
• Disminuir la complejidad que representa el diseño de mecanismos de interacción
entre los comportamientos, aśı como la interacción de los comportamientos con
la información que proviene del medio donde el robot se encuentra inmerso.
• Evitar el desarrollo de los comportamientos por parte del programador; lo que se
busca es que el robot desarrolle de alguna manera, los comportamientos necesarios
para cumplir una actividad o tarea.
Posteriormente en 1992 [Cliff et al., 1992] optaron por cambiar la visión con la que
la RE hab́ıa nacido, decidiendo que lo mas importante no era conocer cómo se deb́ıan
generar los comportamientos adecuados para una tarea determinada, sino más bien qué
comportamientos necesita el robot para cumplir con su propósito, pero conservando la
premisa básica de la robótica evolutiva y reduciendo al mı́nimo las decisiones humanas
de laprogramación, dejándole toda la responsabilidad al proceso evolutivo.
Hasta ahora se ha hablado sobre como nació la RE, pero en la literatura hay difer-
entes definiciones para describir a la RE de las cuales se resaltan las siguientes 3:
• Floreano y Mondana definen a la robótica evolutiva como: la investigación en
robótica que ve la vida tal y como es; la vida tal como podŕıa ser, entendiéndose
como concepto de vida aplicado a todo ser vivo y no únicamente al ser humano
[Floreano and F., 1998].
• Una definición un poco mas especifica es la de Santos y Duro quienes dicen que
la robótica evolutiva es una rama de la robótica que intenta obtener de un modo
automático tanto los niveles de comportamiento como la relación entre ellos, en
donde el humano decide a un nivel mı́nimo que comportamientos son necesarios
para cumplir una tarea o función, y de una manera reducida la manera en cómo
se generan dichos comportamientos, todo ello tratando de llevar al mı́nimo la
intervención del programador [Santos and Duro, 2005].
• Por último Nolfi y Floreano dicen que el resultado de la robótica evolutiva es
un agente cognitivo simulado o corpóreo, situado en un entorno sensorio-motor
2.1. INTRODUCCIÓN A LA ROBÓTICA EVOLUTIVA 15
Figura 2.1: Metodoloǵıa de la robótica evolutiva
y cuyos mecanismos de control son capaces de producir conductas cognitivas
[Nolfi and Floreano, 2000].
La robótica evolutiva buscar generar elementos de control y/o morfoloǵıa del robot
que le permitan cumplir con sus tareas asignadas, pero utilizando un proceso evolu-
tivo que artificialmente replique todo lo que ese proceso implica y todo ello con la
menor intervención humana posible [Nolfi and Floreano, 2000] [Husbands et al., 1994].
La metodoloǵıa en la que se basa la robótica evolutiva puede tener varios esquemas
dependiendo de que tan detallado se quiera ser al momento de explicarla, pero una
buena explicación de esta metodoloǵıa se puede apreciar en la Figura 2.1:
2.1.2 Perspectiva Ingenieril de la RE
En la actualidad los investigadores están de acuerdo en que es muy dif́ıcil diseñar sis-
temas de comportamiento tal como robots autónomos. Podemos observar que existen
programas de computadora eficaces que pueden jugar ajedrez o resolver problemas for-
males pero todav́ıa no hay robots móviles inteligentes en nuestros hogares o ciudades.
La razón principal de porque los robots móviles son dif́ıciles de diseñar, es que su com-
portamiento debe ser una propiedad emergente de la interacción de sus actuadores con
16 CAPITULO 2. ROBÓTICA EVOLUTIVA
el entorno. El robot y el ambiente se pueden describir como un sistema dinámico de-
bido a que el estado del sensor del robot en cualquier momento dado es una función de
ambas: el ambiente y las acciones previas del robot. Como el comportamiento del robot
es una propiedad emergente de la interacción entre el robot y el ambiente, tiene como
consecuencia que robots simples puedan producir comportamientos complejos. Sin em-
bargo al ser un sistema dinámico, las propiedades del comportamiento no pueden ser
inferidas o predichas a partir de reglas de conocimiento que gobiernen las interacciones.
Lo inverso también es verdad: es dif́ıcil predecir cuales reglas producirán un compor-
tamiento dado, ya que éste es el resultado emergente de la interacción dinámica entre
el robot y el ambiente [Nolfi and Floreano, 2000].
La estrategia que se ha venido siguiendo para resolver estos problemas ha sido la de
“divide y vencerás”, donde la solución viene dada de dividir el problema principal en
una serie de problemas más simples. Los enfoques clásicos de la robótica han asumido
a menudo una ruptura primaria entre percepción, planeación y acción. Los resultados
que ha producido esta forma de dividir los problemas son limitados y ha sido criticado
por un buen número de investigadores.
[Brooks, 1986], propone un enfoque radicalmente diferente en el cual la división
se lleva a cabo al nivel del comportamiento. El comportamiento deseado se separa
en un conjunto de comportamientos básicos más simples, los cuales son modulados
a través de un mecanismo de coordinación. En este último enfoque, el sistema de
control es construido incrementalmente nivel por nivel, donde cada nivel es responsable
de un sólo comportamiento básico ligando directamente sensores a motores. Primero
se implementan los comportamientos básicos simples, a continuación nuevos niveles
que implementan otros comportamientos básicos, son adheridos una a la vez después
de intensas pruebas y depuraciones. Este enfoque ha demostrado que ambos niveles
(módulos) responsables de los comportamientos básicos simples y el mecanismo de
coordinación puede ser obtenido de un proceso de auto-organización más que de un
diseño explicito.
En enfoques de descomposición basados en el comportamiento, el diseñador es el en-
cargado de romper el comportamiento deseado en varios comportamientos básicos más
simples. Desafortunadamente, no dejan claro cómo es que el comportamiento deseado
2.1. INTRODUCCIÓN A LA ROBÓTICA EVOLUTIVA 17
debeŕıa ser descompuesto, y es muy dif́ıcil llevar tal descomposición a mano. Incluso
investigadores que adoptaron exitosamente la descomposición de comportamientos e in-
tegración sienten que este es un problema crucial. Rodney Brooks, por ejemplo, anota:
“En cambio, dados muchos comportamientos presentes en un sistema basado
en el comportamiento, y sus dinámicas individuales de interacción con el
mundo, es a menudo dif́ıcil decir que una serie particular de acciones fue pro-
ducida por un comportamiento particular. Algunas veces muchos compor-
tamientos están operando simultáneamente, o están alternando rápidamente”.
[Brooks, 1991]
2.1.3 Diferentes enfoques de la RE
Tradicionalmente y de acuerdo con los oŕıgenes en Inteligencia Artificial la robótica
empleaba planificación la cual inicialmente proporcionaba soluciones lentas al problema
de controlar un robot en un ambiente poco estructurado. A partir de esto surgió la
propuesta de la robótica reactiva y que cobró su mayor importancia a través de los
trabajos de Brooks [Brooks, 1986] que empleaban sistemas codificados por un diseñador
humano. Posteriores trabajos [Maes, 1994], [Minsky, 1988], entre otros, ofrecieron la
alternativa de descomponer las acciones en conductas haciendo de la selección de acción
un sistema reactivo.
Mucho de este enfoque se preserva hasta ahora resumiendo el problema de selección
de acción en cómo integrar los distintos módulos para producir comportamientos co-
herentes. Sin embargo muchos investigadores consideran que esta división es artificial y
depende del punto de vista del diseñador humano, aśı como la identificación de conduc-
tas en un animal dependen de un etólogo. Sin embargo, existe considerable evidencia
de que en los vertebrados existen mecanismos de selección de acción centralizados que
permiten la integración de módulos que pueden representar bloques de movimientos
previamente memorizados [Nolfi and Floreano, 2000].
Por otra parte, un sistema completamente autónomo debeŕıa ser capaz de desple-
gar diferentes tipos de conductas para poder sobrevivir y contender con las diferentes
vicisitudes ambientales. Algunas de estas conductas serán compatibles y algunas otras
18 CAPITULO 2. ROBÓTICA EVOLUTIVA
serán mutuamente exclusivas. Debido a que no todas las conductas son compatibles,
el sistema debe ser capaz de activar la conducta adecuada en el momento oportuno
(una selección adecuada entre las distintas conductas). Para llevar a cabo lo anterior
distintas metodoloǵıas han sido propuestas para diseñar sistemas que sean capaces de
exhibir distintos comportamientos con un correcto arbitraje.
Estas metodoloǵıas dependen en gran parte en una organización de comportamien-
tos implementados por un diseñador humano. Además estos modelosdependen de
una propuesta que no es completamente escalable debido a que el desarrollo de estos
sistemas se ha enfocado en un diseño espećıfico para desplegar una gran cantidad de
conductas. En lugar de lidiar con pequeñas variaciones en el medio ambiente de de-
sempeño y en la tarea de modelar. De este modo un reto actual en la robótica consiste
en desarrollar metodoloǵıas que sirvan de base a sistemas que sean capaces de desar-
rollar autónomamente sus propias habilidades conductuales. Aśı como de arbitraje a
través de un proceso interactivo con una genuina interacción con el medio ambiente.
2.2 Neuro-controladores
Una red neuronal artificial es una estructura de procesamiento distribuido inspirado
biológicamente en la redes neuronales del cerebro.
Es importante mencionar que biológicamente las neuronas se comunican a través de
conexiones llamadas sinapsis. Cada neurona esta compuesta por tres partes fundamen-
tales: el soma, dendritas y axón (ver Figura 2.2). El soma en su capa externa tiene la
capacidad única de generar impulsos nerviosos. Las dendritas que son como las ramas
que salen del soma, poseen algunas conexiones sinápticas en donde se reciben señales
que generalmente vienen de otros axones. El soma realiza la sumatoria de todas las
señales provenientes de las dendritas, cuando en el soma se llega a una suma suficiente,
se dispara la célula, o en su defecto, transmite mediante el axón, una señal hacia otras
neuronas [Russell and Norvig, 2004]. El funcionamiento de una neurona artificial esta
basado en éste diseño.
Para poder dotar al robot de una estructura de control que le permita aprender con
el paso del tiempo, las redes neuronales artificiales son generalmente las más utilizadas
2.2. NEURO-CONTROLADORES 19
Figura 2.2: Esquema de neurona biológica
para éste propósito, sin embargo su uso no sólo se limita a éste tipo de estructuras
sino que en general son muy utilizadas dentro del campo de la inteligencia artificial. El
primer modelo de una Red Neuronal Artificial fue desarrollado por McCulloch y Pitts
en 1943, consist́ıa en dos estados lógicos como salida: encendido y apagado.
Sin embargo ésta primera aproximación no fue muy popular debido en gran parte a
que sólo funcionaba con problemas que eran linealmente separables, debido a esto las
investigaciones sobre RNA’s fueron apartadas por mucho tiempo. No fue sino hasta
la década de los 80’s que el campo recobro fuerzas, gracias a la aparición de RNA’s
multicapas que permit́ıan resolver problema linealmente no separables mediante la re-
gionalización del problema y con ayuda del algoritmo de retroalimentación del error
(del inglés backpropagation) propuesto por Rumelhart, Hinton y Williams.
Estas RNA’s pueden llegar a ser tan robustas debido a las caracteŕısticas que pre-
sentan que según [Hilera González and Mart́ınez Hernando, 1995] seŕıan las siguientes:
• Aprendizaje adaptativo: Esta quizás sea la mejor caracteŕıstica que presentan
las RNA’s, se refiere a la capacidad que tienen para aprender a realizar tareas
basadas en un experimento o entrenamiento inicial. De esta forma, no es necesario
elaborar un modelo a priori, ni establecer funciones probabiĺısticas. Una red
neuronal artificial es adaptativa porque puede modificarse constantemente con el
20 CAPITULO 2. ROBÓTICA EVOLUTIVA
fin de adaptarse a nuevas condiciones de trabajo.
• Autoorganización: Mediante su aprendizaje adaptativo las RNA’s pueden
organizar toda la información que reciben durante el aprendizaje. Consiste en la
modificación de la red completa con el fin de llevar a cabo un objetivo especifico, es
aśı como la red puede responder a datos o situaciones no experimentadas antes,
pero puede hacer inferencias sobre su base de conocimiento. Esto es muy útil
sobre todo cuando la información de entrada no esta completa o es poco clara.
• Tolerancia a fallos: Mientras que en la computación tradicional la inconsisten-
cia o perdida de datos pueden causar un colapso total del sistema en las RNA’s
esto no sucede debido a que poseen una gran tolerancia a fallos, esto es debido a
que las RNA’s guardan su información de una manera distribuida y muy redun-
dante, de este modo las redes pueden seguir trabajando aunque se destruya una
parte de la red, si esto llega a suceder probablemente el comportamiento de la red
se vea afectado, pero de ningún modo colapsara, y se podrá adaptar a la nueva
situación.
• Operación en tiempo real: Si se quiere hacer un reconocimiento de patrones
en tiempo real las RNA’s son las más indicadas para hacer esta labor, debido a
que trabajan en paralelo actualizando sus instancias simultáneamente. Cabe re-
saltar que está caracteŕıstica sólo se aprecia cuando se trabaja con algún hardware
especializado en procesos paralelos.
• Fácil inserción dentro de la tecnoloǵıa existente: Debido a que una RNA
puede ser fácil y rápidamente entrenada y verificada ésta puede ser trasladada
a chips especializados para RNA’s y de esta manera integrarlos en sistemas es-
pećıficos ya existentes.
Una red neuronal consiste en un conjunto de elementos de procesamiento, llamados
neuronas, los cuales se conectan entre śı. La organización y disposición de las neuronas
dentro de una red neuronal se denomina topoloǵıa, y viene dada por el número de capas,
la cantidad de neuronas por capa, el grado de conectividad, y el tipo de conexión entre
neuronas. Una vez determinada la topoloǵıa de la red neuronal, es necesario entrenarla.
2.2. NEURO-CONTROLADORES 21
Figura 2.3: Modelo de neurona artificial, la Wi representa los pesos sinápticos entre las
conexiones
En la etapa de entrenamiento la red es capaz de aprender relaciones complejas entre
entradas y salidas mediante el ajuste de los pesos de las conexiones entre neuronas.
Por lo tanto, los elementos que constituyen la neurona son: conjunto de entradas,
pesos sinápticos, regla de propagación, función de activación, y función de salida, estos
elementos se muestran con gráficamente en la figura 2.3
Para [Russell and Norvig, 2004] una RNA está compuesta por nodos que se conectan
a través de unidades llamadas conexiones, asociadas con unos pesos numéricos, que rep-
resentan una memoria de largo plazo y que se ajusta en un proceso de aprendizaje. Otra
definición seŕıa la de [Santos and Duro, 2005] que dice que una RNA es una estructura
de procesamiento distribuida compuesta de nodos o neuronas que calculan una función
matemática generalmente no lineal y con conexiones o pesos que simulan la conexión
sináptica de las dendritas y los axones. Estas conexiones pueden ser excitadoras si
incrementan su nivel de activación o inhibidoras en el caso contrario, en general una
red neuronal según estos autores, trata de imitar a un nivel básico, el funcionamiento
de las neuronas biológicas.
Las conexiones que existen entre estas neuronas se llaman conexiones sinapticas y
son direccionales, es decir la información sólo puede propagarse en un único sentido,
desde la neurona presináptica a la postsináptica. Cuando varias neuronas se agrupan
22 CAPITULO 2. ROBÓTICA EVOLUTIVA
Figura 2.4: Modelo de una RNA, donde se pueden apreciar las capas que la constituyen
a un mismo nivel se les llama capas, dependiendo de la estructura de la propia red se
pueden encontrar varias capas, pero en general se distinguen 3 tipos de capas: de en-
trada, de salida y ocultas [Hilera González and Mart́ınez Hernando, 1995], al conjunto
de una o más capas se le denomina red neuronal.
La capa de entrada esta constituida por neuronas que reciben datos o señales del
exterior, en el caso de la robótica generalmente esta capa esta constituida por los
sensores del robot. La capa de salida es aquella donde las neuronas proporcionan la
respuesta de la red neuronal, de igual manera en robótica esta capa de salida suele ser
la capa que contiene los actuadores del robot. Porúltimo la capa oculta es la que no
tiene una conexión directa con el entorno, es decir las entradas de estas neuronas son
las salidas de las neuronas provenientes de la capa anterior y su salida no es directa al
exterior sino que mandan su respuesta hacia otra capa de la red, esto se muestra en la
figura 2.4.
Las conexiones entre las neuronas pueden ser excitatorias o inhibitorias: un peso
sináptico negativo define una conexión inhibitoria, mientras que uno positivo determina
una conexión excitatoria. Habitualmente, no se suele definir una conexión como de un
tipo o de otro, sino que por medio del aprendizaje se obtiene un valor para el peso, que
incluye signo y magnitud [Russell and Norvig, 2004].
En el contexto de las redes neuronales, puede definirse el aprendizaje como el proceso
por el que se produce el ajuste de los parámetros libres de la red a partir de un proceso de
2.3. PROCESO DE EVOLUCIÓN DE LA RNA 23
estimulación por el entorno que rodea la red. El proceso de aprendizaje de una RNA está
dividido en dos fases: entrenamiento y clasificación. Durante la etapa de entrenamiento
los pesos sinápticos entre las conexiones de la red son ajustados, utilizando t́ıpicamente
algún algoritmo de aprendizaje supervisado y no supervisado. Posteriormente la etapa
de clasificación ocurre una vez que los pesos de la red han sido ajustados y es cuando
la red comienza a realizar la tarea para la que fue diseñada [Russell and Norvig, 2004].
En el caso de la Robótica Evolutiva estos mismos procesos están presentes, con la
diferencia de que en la primera etapa no se utilizan algoritmos clásicos de las redes
neuronales para el aprendizaje, sino que se utilizan algoritmos diseñados para la com-
putación evolutiva, generalmente AG, que intentan optimizar los pesos de la red neu-
ronal mediante un proceso de evolución. El proceso de clasificación de la red neuronal
en robótica evolutiva se realiza de la manera t́ıpica, presentando entradas y obteniendo
salidas a partir de las funciones de entrada y activación utilizadas.
2.3 Proceso de evolución de la RNA
Una red neuronal aprende a través de un proceso de entrenamiento donde la RNA
asimila como ejecutar un conjunto de datos por toda su estructura, debido a esto el
sistema puede ajustar los pesos sinápticos (ver imagen 2.3) al comparar los resultados
parciales con el resultado final, después de ejecutar un gran numero de muestras, un
peso aleatoriamente seleccionado se puede ajustar para representar el peso exacto, al
aprender como se repiten estos patrones y secuencias, entonces la red podrá realizar
predicciones exactas cuando datos con resultados desconocidos sean procesados.
Cabe mencionar que existen dos tipos de entrenamientos, el supervisado y no su-
pervisado cuya distinción proviene en origen del campo de reconocimiento de patrones.
Dentro del entrenamiento supervisado se sabe de antemano la salida u objetivo deseado,
y se le presenta a la red un conjunto de patrones para que iterativamente vaya ajustando
sus pesos hasta que la salida tienda a ser la deseada, utilizando para ello información
detallada del error cometido a cada paso. Por otro lado el aprendizaje no supervisado
se le puede presentar a la red la misma serie de patrones, sin embargo esta vez sin
adjuntar la salida esperada, de esta manera por medio de la regla de aprendizaje la red
24 CAPITULO 2. ROBÓTICA EVOLUTIVA
estima la función de densidad de probabilidad a partir de lo cual se pueden reconocer
regularidades en el conjunto de entrada, extraer rasgos o agrupar patrones (clustering)
[Russell and Norvig, 2004]
Las caracteŕısticas más fuertes que presentan las RNA’s y que gracias a estas son
muy utilizadas en la robótica autónoma son la tolerancia a fallos, tolerancia a ruido (car-
acteŕıstica muy importante a considerar cuando se trabaja con robótica autónoma sobre
todo en entornos reales), y por último la posibilidad de usar algoritmos de aprendizaje
conexionistas tradicionales, esto hace posible hacer uso del aprendizaje conexionista
tradicional en conjunto con la evolución artificial [Nolfi, 1997].
El proceso de evolución es el medio artificial por el cual se trata de alcanzar un
objetivo en especifico o de optimizar aquello que se desea, que generalmente puede
ser: el elemento de control, la morfoloǵıa, o ambos. Dentro de la robótica evolutiva
existen diferentes herramientas o métodos que permiten alcanzar los óptimos buscados,
todos ellos forman parte de la computación evolutiva, tratando de imitar el proceso de
evolución natural en el cual se les da prioridad a los individuos más aptos para para
resolver la tarea encomendada, y aśı de esta manera los individuos más aptos puedan
pasar sus genes a las siguientes generaciones. [Nolfi and Floreano, 2000]
Para saber que individuos son los más aptos para resolver la tarea encomendada
se hace uso de una función de calidad, o función de aptitud (del ingles fitness), esta
función se encarga de evaluar que tan bien esta realizando la tarea cada individuo, es
decir es el medio a partir del cual se califica si un individuo es más o menos apto que
otro para realizar la tarea asignada, todo mediante una función matemática que califica
las aptitudes de los individuos. El resultado de esta función de calidad nos dirá que tan
bien se desenvolvió el robot en dicho ambiente.
Al evolucionar los neuro-controladores lo que se busca, en esté caso, es una con-
figuración adecuada de los pesos de las conexiones de la red para que el robot pueda
desenvolverse dentro de un ambiente, ya sea simulado o real, posteriormente la con-
figuración de estos pesos hará que el robot muestre ciertos comportamientos, compor-
tamientos que serán evaluados con la función de aptitud, la cual indicará que robots
desempeñaron mejor su función.
Si se evalúa el neuro-controlador obtenido durante un tiempo determinado (un
2.3. PROCESO DE EVOLUCIÓN DE LA RNA 25
parámetro para el proceso de evolución) y la función de calidad de cada neuro-controlador
durante un determinado tiempo T, se obtiene una curva de calidad que representa el
desempeño del proceso evolutivo, esto es crucial si se pretende analizar el proceso de
evolución porque permite detectar si ya se alcanzó el objetivo buscado o en su defecto si
ya se ha estancado en algún óptimo local, e incluso determinar si la función de aptitud
utilizada es la adecuada para el problema planteado.
El proceso de evolución del neuro-controlador del robot puede tomar un tiempo
considerable para obtener las aptitudes de cada individuo (robot), porque se tienen
que probar a los individuos dentro del entorno por un tiempo determinado para saber
que tan buena aptitud tienen, éste proceso se repetira por cada individuo dentro de
la población.[Nolfi and Floreano, 2000] Es por esto que cuando se tiene por objetivo
evolucionar los neuro-controladores de un robot de deben tomar las siguientes consid-
eraciones:
• Robustez mecánica: Generalmente las primeras generaciones de un pobla-
cion suelen producir comportamientos muy diferentes al deseado, y estos com-
portamientos pueden llegar a dañar al robot, como por ejemplo colisiones a alta
velocidad contra objetos o sobrepasar el limite de los servo-motores, etc.
• Suministro de enerǵıa: Los experimentos evolutivos generalmente son más
largos que la duración de las bateŕıas del robot, por ellos es necesario encon-
trar alguna fuente de alimentación alterna o usar simuladores para encontrar la
solución óptima que posteriormente se probará en el robot real.
• Análisis: El sistema de control de robots evolucionados puede ser muy complejo,
lo cual se traduce en la dificultad de análisis. Esto esta ı́ntimamente relacionado
con el ambiente por tal motivo a veces es dif́ıcil entender el comportamiento del
robot por simple análisis.
• Tiempo de eficiencia: Una ejecución evolutiva puede durar horas, d́ıas o
inclusohasta semanas. En algunos casos este numero puede ser reducido sin
reducir el número de pruebas de aptitud, a veces también depende de como este
planteado el problema.
26 CAPITULO 2. ROBÓTICA EVOLUTIVA
• Diseño de funciones de aptitud: El criterio de selección puede tener una
mayor influencia sobre los resultados de una ejecución evolutiva, pero puede ser
dif́ıcil el poder diseñar a priori una función efectiva para robots autónomos que
operen en ambientes parcialmente desconocidos.
En resumen en un inicio se cuenta con una población con determinado numero
de individuos y mediante el proceso de evolución el neuro-controlador dictará el com-
portamiento de cada individuo dentro del entorno, aśı mediante la función de aptitud
sabremos que tan bien realizo la tarea cada individuo de la población, posteriormente
se les dará prioridad a los individuos que hayan tenido un mejor desempeño para que
sus genes o caracteŕısticas sean heredados a las generaciones posteriores.
CAPITULO 3
Algoritmos Bioinspirados
3.1 Introducción a los algoritmos bioinspirados
Se sabe que la naturaleza es por excelencia una gran fuente de inspiración para re-
solver problemas dif́ıciles y complejos en ciencias de la computación, sin embargo la
naturaleza también ha servido como soporte para otras ciencias, como por ejemplo la
psicoloǵıa, la socioloǵıa, entre otras. Siempre encuentra la solución óptima para re-
solver su problema de mantener el equilibrio perfecto entre sus componentes, esto es
debido a que la naturaleza lleva miles de años trabajando en encontrar soluciones, es
aśı como la naturaleza toma ventaja sobre cualquier ciencia humana, y es debido a esto
que muchas veces los cient́ıficos al enfrentarse a algún problema “x” primero investigan
si la naturaleza ya ha resuelto problemas de tipo “x” para poder inspirarse de eso y
aśı llegar a una posible solución del problema presentado. Ésta es la idea detrás del
computo bioinspirado. Los algoritmos bioinspirados son una metaheuŕıstica que imitan
a la naturaleza para resolver problemas de optimización, esto es una apertura para una
nueva era en la computación [Binitha and S Siva, 2012].
Con base en esto nacen los algoritmo evolutivos los cuales están inspirados en los
principios de Darwin de la supervivencia del más apto y la teoŕıa de la evolución. Este
paradigma sostiene que los procesos que utiliza la naturaleza para mantener la vida
y equilibrio en el planeta es basicamente aplicar sobre las poblaciones cuatro procesos
estad́ısticos que son: reproducción, mutación, competencia y selección. Al resultado de
27
28 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
aplicar estos procesos por varias generaciones se le conoce como evolución.
Como se menciono anteriormente la evolución artificial esta basada en la evolución
natural, para llevar a cabo esta emulación la evolución artificial simula poblaciones de
individuos los cuales son sometidos a diversas operaciones para poder calificar y obtener
a los individuos mejor adaptados, estas operaciones generalmente son: selección, cruza
y mutación, que de igual manera intentan emular estas mismas acciones en su análogo
natural. Este tipo de enfoque es utilizado para resolver principalmente problemas de
optimización, ya que no es necesario tener conocimiento alguno del problema para que
la evolución artificial alcance una solución satisfactoria.
En los años 30’s Wright hizo los primeros intentos para implementar la evolución
artificial tratando de resolver problemas de optimización, sugiriendo la utilidad de vi-
sualizar un sistema evolutivo que explora los picos de funciones multimodales mediante
clusters alrededor de los picos.
Desde entonces diferentes versiones de algoritmos bioinspirados han sido implemen-
tadas, por ejemplo en 1956 George J. Friedman propone una aplicación de técnicas
evolutivas en la robótica. Posteriormente en el año 1958 [Bremermann, 1958] fue el
primero en considerar a la evolución como un proceso de optimización y utilizó cade-
nas binarias que se combinaban por medio de operadores de reproducción, selección y
mutación.
Posteriormente gracias a la necesidad de solucionar problemas numéricos complejos
nacen las estrategias evolutivas. Un grupo de investigadores liderados por Rechemberg
en la Technische Universität de Berĺın son los responsables de proponer esta solución,
donde en su primera versión, se utiliza sólo el operador de mutación y sólo con un
individuo en la población, que posteriormente recibió algunos cambios para mejorar
esta primera aproximación [Rechenberg, 1973].
Los intentos por alcanzar diversas metas en IA hacen que un grupo de investi-
gadores ubicado en Los Ángeles en la Universidad de California, propongan la evolución
de agentes inteligentes representados como máquinas de estado finito, este enfoque lo
sugiere [Fogel et al., 1966] y es conocido como programación evolutiva.
Años más tarde en 1975 John Henry Holland en la University of Michigan decidió
que para poder hacer sistemas adaptativos más robustos, que se desenvuelvan en ambi-
3.1. INTRODUCCIÓN A LOS ALGORITMOS BIOINSPIRADOS 29
entes cambiantes e inciertos y que sobre todo pudieran autoadaptarse a estos cambios,
propuso el proceso evolutivo como solución para estas problemáticas, es aśı que se
expone el enfoque de los algoritmos genéticos (AG) [Holland, 1975].
La década de los 70’s fue muy importante para el avance de los algoritmos evolutivos
ya que se logró avanzar en los estudios emṕıricos y en la teoŕıa, mejorando el desempeño
y aplicabilidad de los paradigmas mencionados anteriormente. Posteriormente en los
años en los años 80’s se esforzaron por mejorar todo lo relacionado a estos paradigmas, se
amplio la diversidad de aplicaciones y se generaron nuevas variantes de estos enfoques.
A partir de los años 90’s, surgen los primeros congresos de esta área, lo que permitió
aportaciones en conjunto, colaboraciones y discusiones sobre los nuevos temas, también
se acuña el término de Computo Evolutivo para darle una imagen a todos estos nuevos
paradigmas y surge el primer journal Evolutionary Computation del MIT press.
Siguiendo con las investigaciones en esta nueva rama de la IA en 1997 Rainer Storn
y Kenneth Price presentan el algoritmo de Evolución Diferencial (ED), el cual es un
algoritmo sencillo de implementar pero muy potente para buscar soluciones, este al-
goritmo se basa en obtener las diferencias entre los vectores de solución para guiar la
búsqueda y generar nuevos individuos utilizando la población actual aplicando dicha
diferencia [Price et al., 2005].
Posteriormente en el año 2002 [Passino, 2002] propone una nuevo algoritmo evolu-
tivo llamado B.F.O.A (Bacterial Foraging Optimization Algorithm), el cual trata de im-
itar el comportamiento de la bacteria E. Coli en el proceso de búsqueda, éste mismo algo-
ritmo posteriormente fue modificado en 2009 por [Mezura M. and Hernández O., 2009]
llamándolo M.B.F.O.A (Modified Bacterial Foraging Optimization Algorithm), cabe
menciar que esta última modificación es la que se implemento en este trabajo.
3.1.1 Inteligencia Colectiva
La inteligencia colectiva se basa en la teoŕıa colectiva la cual dice que un comportamiento
o una tarea espećıfica puede ser alcanzada gracias a la interacción de varios individuos,
es por esto que si se examina a una hormiga individualmente puede parecer torpe,
sin embargo al ver como interactúa una colonia de hormigas se puede percibir cierta
inteligencia, ya que responden rápida y efectivamente a su entorno. También se cree
30 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
que un punto clave para que las colonias tengan este existo es que nadie se encuentra
a cargo, sino que todos cooperan por el bien común, inclusive cuando existen reinas
dentro de las colonias su función está limitada a poner huevos y no a dar órdenes a los
demásmiembros de las colonias [Miller, 2007].
A partir de observar este tipo de comportamientos Gerardo Beni, Suzanne Hack-
wood and Jing Wang, introducen el término de inteligencia colectiva en 1989 en el
contexto de sistemas robóticos celulares. Esto llevado al campo de la informática y
más espećıficamente al de la IA, la inteligencia colectiva se usa más para problemas
de optimización dónde la solución es no lineal o dif́ıcil de encontrar, es ah́ı donde este
tipo de algoritmos encuentran un lugar perfecto para ser utilizados. Una definición más
formal de inteligencia colectiva seŕıa la siguiente:
Los algoritmos de inteligencia colectiva con técnicas metaheuŕısticas de inteligen-
cia artificial, basadas en el estudio de los comportamientos colectivos observados
en la naturaleza. [Beni, 2005]
Algunos algoritmos de inteligencia colectiva son:
• 1. Ant Colony Optimization (ACO). Propuesto por Marco Dorigo en 1992.
• 2. Particle Swarm Optimization (PSO). Propuesto por Kennedy Eberhart en
1995.
• 3. Artificial Bee Colony (ABC) Algorithm . Propuesto por D. Karaboga en 2005
• 4. Bacterial Foraging Optimization Algorithm (BFOA). Propuesto por Passino
en 2002
El Ant Colony Optimization (ACO) se baso en en el comportamiento de una colo-
nia de hormigas para buscar caminos entre el hormiguero y la fuente de comida más
cercana, [Dorigo, 1992] propuso esta técnica para resolver problemas computacionales
relacionados con la búsqueda de caminos en grafos (ver Figura 3.1).
Cabe señalar que el algoritmo que se usa en éste trabajo (MBFOA) pertenece a esta
categoŕıa
3.1. INTRODUCCIÓN A LOS ALGORITMOS BIOINSPIRADOS 31
Figura 3.1: Representación artificial del algoritmo ACO, dónde se intenta emular la
forma en que las hormigas trazan los caminos entre el hormiguero y la comida.
3.1.2 Espacio de búsqueda
El espacio de búsqueda en problemas de optimización se refiere al dominio de la función
a ser optimizada 3.2. En otras palabras el espacio de búsqueda es un lugar geométrico
en un plano donde se pueden apreciar las posibles soluciones para un problema uti-
lizando una codificación dada. Cada punto en el espacio de búsqueda representa una
posible solución. A cada posible solución se le puede asociar un fitness o aptitud que
indicará que tan buena es la solución encontrada para el problema. Por ejemplo un
algoritmo genético (AG) devolverá la mejor solución de entre todas las posibles que
tenga en un momento dado [Santos and Duro, 2005].
Si suponemos que en el espacio de búsqueda presentado en la figura 3.2 la variables
de los ejes ”‘x”’ y ”‘y”’ son discretos y que sólo pueden tomar valores entre 1 y 40
quiere decir que por cada variable puede haber 40 valores que combinándolos con la
segunda variable seŕıan 1,600 posibles soluciones, de las cuales algunas tendrán una
mejor aptitud que otras.
Los algoritmos evolutivos son algoritmos de búsqueda en paralelo donde toda la
población explora al mismo tiempo el paisaje de calidad buscando el óptimo, es decir
cada individuo de la población será responsable de explorar un pequeño punto dentro
32 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
Figura 3.2: Representación de un espacio de búsqueda para un problema bidimensional,
donde los ejes ”‘x”’ y ”‘y”’ representan la combinación de los genes y el eje ”‘z”’
representa la aptitud alcanzada
del paisaje de búsqueda, de esta manera es posible explorar más zonas dentro del
espacio de soluciones, pero simultáneamente a esto también trabaja la explotación del
espacio de búsqueda que se encarga de realizar evaluaciones en las proximidades de una
buena solución para encontrar una mejor posición del óptimo. Es por eso que cuando
se utilizan este tipo de algoritmos es importante equilibrar la exploración y explotación
del espacio de búsqueda.
A continuación se describen con más detalle los algoritmo a utilizar en este trabajo
que son: algoritmo genético, evolución diferencial y MBFOA.
3.2. ALGORITMO GENÉTICO 33
3.2 Algoritmo Genético
Como se ha mencionado anteriormente los AG’s están inspirados en la evolución natural
y fueron implementados por primera vez por Holland en 1975, con la finalidad de
abstraer y explicar los procesos adaptativos de los sistemas naturales y de esta manera
diseñar sistemas que contengan los mecanismos más importantes de su contra-parte
natural.
Algunas definiciones más formales sobre los AG seŕıan las siguientes:
Es un algoritmo matemático altamente paralelo que transforma un conjunto de
objetos matemáticos individuales con respecto al tiempo usando operaciones mod-
eladas de acuerdo al principio Darwiniano de reproducción y supervivencia del
más apto, y tras haberse presentado de forma natural una serie de operaciones
genéticas de entre las que destaca la recombinación sexual. Cada uno de estos
objetos matemáticos suele ser una cadena de caracteres (letras o números) de lon-
gitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia
con una cierta función matemática que refleja su actitud [Koza R., 1992].
Los algoritmos genéticos son algoritmos de búsqueda basados mecanismos de
selección natural y la genética, que combinan la supervivencia del más apto entre
estructuras en forma de cadenas de información, que intercambian información de
manera estructurada, pero también azarosa para buscar enriquecer la búsqueda.
En cada generación, un conjunto nuevo de individuos o cadenas de información es
creado a partir de pequeños cambios en ellos respecto a los individuos anteriores
o mediante la combinación de individuos anteriores [Goldberg, 1989].
Un algoritmo genético es aquel que empieza con un conjunto de uno o varios
individuos, a quienes les son aplicados operadores de selección y reproducción para
que evolucionen satisfactoriamente, mediante una cuantificación de su aptitud
conocida como función de adaptación que depende totalmente del problema que
se intenta atacar[Russell and Norvig, 2004].
Dentro de este enfoque se cuenta con 4 elementos principales que son: selección
de padres, cruza, mutación y reemplazo. El factor dominante es la cruza, en la que se
seleccionan a 2 o más individuos de la población (según sea el caso) a los que se les llama
34 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
Figura 3.3: Ejemplo de representación genot́ıpica con su decodificación equivalente en
fenotipo
padres, para que intercambien sus materiales genéticos y aśı crear nuevos individuos
que serán los hijos.
Como se menciono en la sección anterior debe existir un balance entre la explotación
y la exploración del espacio de búsqueda, en el caso de los AG la exploración se asocia
con el operador de mutación, que generalmente tiene una baja probabilidad de ocurren-
cia, mientras que la explotación esta relacionada con la cruza y ésta ocurre con mucha
más frecuencia. Por lo que a la cruza se le considera un operador primario y la mutación
un operador secundario de los AG’s.
Además de esto otra cosa que es importante considerar es la manera de representar
las soluciones ya que puede ser a nivel genot́ıpico o a nivel fenot́ıpico. En la primera
representación los genes sólo pueden tomar valores de 0 y 1, mientras que en la repre-
sentación fenot́ıpica es la representación decimal del genotipo (generalmente para casos
de espacios continuos), esto puede apreciarse mejor en la figura 3.3, donde la repre-
sentación genot́ıpica se somete a un proceso de decodificación para obtener su valor
equivalente dentro del dominio de los números enteros [Nolfi and Floreano, 2000].
El algoritmo 1 muestra en pseudocódigo el funcionamiento general de un AG, los
mecanismos de selección son importantes porque estos elegirán a los individuos que
se les aplicará el proceso de reproducción. En un AG, existen diversos métodos para
aplicar este proceso de selección, uno de los más populares es el método de ruletaen
donde la probabilidad de selección es proporcional a la aptitud de cada individuo, de
esta manera los individuos más aptos tienen una mayor probabilidad de ser elegidos,
la probabilidad de elegir individuos menos aptos es lo que mantiene la diversidad de la
población ver figura 3.4. Otra opción es el llamado método por torneo que consiste
3.2. ALGORITMO GENÉTICO 35
Algoritmo 1 Algoritmo Genético Simple
Iniciar la población aleatoriamente
para Cada individuo de la población hacer
Calcular aptitud
fin para
repetir
Selección de padres
Cruza
Mutación
para Cada individuo de la población hacer
Calcular aptitud
fin para
Remplazo
Elitismo
hasta que Alcanzar una condición de paro
en elegir aleatoriamente un conjunto de posibles padres, de los cuales se elegirá al más
apto para reproducirse [Goldberg, 1989].
[Santos and Duro, 2005] dicen que los mecanismos de selección pueden clasificarse
a partir de la presión selectiva del mecanismo, ya que por ejemplo, si un mecanismo
tiene una alta presión selectiva, los individuos con una mayor aptitud serán selecciona-
dos, entonces los individuos más aptos terminaran dominando el proceso de selección,
provocando que los individuos con baja aptitud desaparezcan en unas cuantas gen-
eración, que puede representar una disminución importante en la riqueza selectiva de
los individuos, llevando al procesos evolutivo a caer en mı́nimos locales.
Otros operadores básicos de un AG son la cruza y la mutación. El operador de cruza
busca combinar los genes de los individuos seleccionados como padres, para generar hijos
que sean mejores soluciones que los padres, y aśı con el paso de generaciones hacer que
la población converja hacia las mejores soluciones. La cruza consiste en seleccionar uno
o más puntos de los padres y copiar los segmentos seleccionados en los hijos combinando
segmentos de ambos padres como lo ilustra la figura 3.9
36 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
Figura 3.4: Ejemplo del método de selección por ruleta. (b) Ruleta que representa los
valores de la tabla (a).
Para el caso de la mutación existe un parámetro de probabilidad mutación que
indica el porcentaje con el que se aplicará éste operador a los nuevos individuos creados.
Aplicar éste operador consiste en cambiar aleatoriamente un gen del nuevo individuo,
cuando la cadena de genes es en genotipo lo que hace es cambiar el valor del gen por
su contraparte es decir si el valor del gen al que se le aplicará la mutación es 1 se
cambia por 0 y viceversa, en el caso de aplicar éste operador de manera fenot́ıpica de
igual manera se elige un gen al azar y cambia por un valor igualmente aleatorio que se
encuentre dentro de los limites permitidos [Nolfi and Floreano, 2000], como lo muestra
la figura 3.6
Por último para en el remplazo es donde se sustituyen los individuos de la generación
pasada por los nuevos individuos creados gracias a los operadores anteriores, este rem-
plazo es generacional lo que quiere decir que lo hijos recién creados reemplazaran por
completo a los padres sin importar si tienen un mejor aptitud o no, sin embargo dentro
de este proceso se puede aplicar un operador más el cual es el elitismo, que consiste
en conservar intacto al mejor o mejores (según sea el caso) individuos de cada gen-
eración e incluirlos en la generación siguiente. Esto es para que la población pueda
3.2. ALGORITMO GENÉTICO 37
Figura 3.5: Ejemplo del método de cruza para generar nuevos individuos.
Figura 3.6: Ejemplo del método de mutación aplicado en un nuevo individuo
38 CAPITULO 3. ALGORITMOS BIOINSPIRADOS
converger hacia el óptimo, es decir ayuda al algoritmo para encontrar el óptimo de una
mejor manera. [Rudolph, 1994] sugiere que el porcentaje de elitismo sea 1 por cada 100
individuos dentro de la población.
En el campo de la Robótica Evolutiva, los algoritmos genéticos son la herramienta
de optimización más popular, posiblemente por la facilidad en su implementación y
flexibilidad debido a que pueden trabajar tanto en fenotipo como en genotipo con una
sencillez moderada, esto es útil al trabajar con neuro-controladores más espećıficamente
con RNA’s porque dependiendo el caso se puede usar una codificación u otra. Otra
razón por la cual estos algoritmos son tan populares puede ser porque presentan un
buen desempeño al trabajar con neuro-controladores encontrado siempre una solución
adecuada al problema.
3.3 Evolución Diferencial
El algoritmo de evolución diferencial fue creado para la optimización en espacios contin-
uos. Nace de la idea de [Storn and Price, 1997] en su intento por resolver el polinomio
de Chebyshev. En la ED las variables se representan mediante números reales debido
a que fue propuesto para optimización con parámetros reales.
Desde su creación, gracias a su fácil implementación y robustez de búsqueda, la
ED ha destacado en diferentes competencias como por ejemplo la IEEE’s International
Contest on Evolutionary Optimization (ICEO) en los años 1996 y 1997. Es un método
de búsqueda directa en paralelo que utiliza vectores de parámetros NP D-dimensionales
como población por cada generación G. Al ser un algoritmo evolutivo éste también
trabaja con una población inicial generada aleatoriamente (cuando no se conoce nada
acerca del problema) sin embargo su mayor diferencia es que enfatiza la mutación, utiliza
un operador de cruce/recombinación a posteriori de la mutación, y la distribución de
éste operador no depende de una distribución de probabilidad predefinida, sino más
bien depende de la distribución de las soluciones actuales, lo cual parece ser una de sus
principales ventajas [Price, 1999].
3.3. EVOLUCIÓN DIFERENCIAL 39
3.3.1 Operadores de la ED
En la ED a los individuos dentro de una población se les conoce mayormente como
vectores, los pasos con los que trabaja este algoritmo son inicialización, mutación,
recombinación o cruza y selección.
Para inicializar la población primero se deben establecer los limites superior e infe-
rior para cada parámetro. Una vez especificados estos limites el dominio de las variables
del problema estará restringido entre valores mı́nimos y máximos. Los valores son rep-
resentados con las variable “b”, el sub́ındice “U” representa el valor mı́nimo que puede
tomar el parámetro y el sub́ındice “L” el mayor valor que puede tomar. Por ejemplo,
el valor inicial (g=0) del j-esimo parámetro del i-esimo vector seŕıa:
Xj ,i,0= randj(0, 1) ∗ (bj ,U − bj,L ) + bL
Donde “randj(0, 1)” devuelve un número aleatorio distribuido de manera uniforme
dentro del rango [0, 1), es decir 0 ≤ randj(0, 1) < 1. El sub́ındice, j, indica que un nuevo
valor aleatorio se genera para cada parámetro, y el sub́ındice i representa el ı́ndice de
la población, esto generará una población de NP individuos [Storn and Price, 1997].
La ED genera nuevos vectores de parámetros mediante la adición de la diferencia
entre dos vectores de la población a un tercer vector. A este paso se le conoce como
mutación. El algoritmo general para la ED se puede observar en el algoritmo 3
Una vez inicializada la población, la ED aplica la mutación. Primero se debe hacer
un proceso de selección, el cual es determinista, es decir cada vector “target” (padre)
generará un vector “trial” (hijo), y la selección de sobrevivientes también será determin-
ista puesto que sobrevive el individuo con mejor aptitud entre el “target” y el “trial”’.
De esta manera por cada vector “target”’ ( xi,G ,i = 1, 2, 3...NP ) se elegirán aleato-
riamente otros 3 vectores (ver figura 3.7) para generar un vector mutuante, es decir
es una diferencia aritmética entre un par de vectores (xr2, xr3), a esta diferencia se le
conoce como vector de perturbación. Una vez obtenido el vector de perturbación, un
tercer vector es seleccionado (xr1) también aleatoriamente y se le suma el vector de
perturbación escalado,

Continuar navegando