Las
de
DE
BELGRANO
tesinas
Belgrano
Facultad de Ingeniera y Tecnologa Informtica
Licenciatura en Sistemas
N 203
Departamento de Investigacin
Noviembre 2005
Tesinas
Tesinas
Resumen
La generacin de una estrategia de control ptimo para controlar adecuadamente un determinado sistema es usualmente una tarea compleja. Este trabajo propone generar automticamente una estrategia de
control para un problema especfico del rea de control haciendo uso de tcnicas que simulan los principios
que rigen la evolucin de los seres vivos en la naturaleza. El problema mencionado se refiere al centrado de
un carro en movimiento. Las tcnicas mencionadas provienen de la computacin evolutiva, ms precisamente del campo de la programacin gentica.
Los resultados obtenidos demuestran que, a travs de una adecuada parametrizacin del algoritmo que
implementa el paradigma de la programacin gentica, es posible la obtencin automtica de programas
que constituyen estrategias de control subptimas para el problema mencionado, sin que en este proceso
intervenga la inteligencia humana.
Palabras clave: inteligencia artificial; sistemas inteligentes; computacin evolutiva; programacin gentica; control ptimo.
Abstract
The generation of an optimal control strategy to adequately control a specified system is usually a
complex task. This work proposes the automatic creation of a control strategy for a specified problem of the
control area by means of techniques that simulate the principles that command evolution of living entities in
nature. The mentioned problem refers to the cart centering problem. The mentioned techniques come from
evolutionary computing, more precisely form the field of genetic programming.
The obtained results show that, by means of an adequate parametrization of the algorithm that implements the genetic programming paradigm, it is possible to automatically create programs that constitute
suboptimal control strategies for the specified problem, without any intervention of human intelligence in this
process.
Keywords: artificial intelligence; intelligent systems; evolutionary computing; genetic programming; optimal control.
ndice
1. Introduccin. ................................................................................................................................ 7
2. Estado del arte. ........................................................................................................................... 8
2.1 Computacin evolutiva ............................................................................................................. 8
2.1.1 Introduccin .................................................................................................................. 8
2.1.2 Qu es la computacin evolutiva? ................................................................................ 8
2.1.3 Algoritmo evolutivo......................................................................................................... 9
2.1.4 La computacin evolutiva y las caractersticas de su proceso de bsqueda
de posibles soluciones ................................................................................................ 10
2.1.5 Modelos de computacin evolutiva ............................................................................... 11
2.2 Computacin evolutiva tradicional ........................................................................................... 11
2.2.1 Campos de aplicacin y trabajos realizados ................................................................. 11
2.3 Programacin gentica .......................................................................................................... 13
2.3.1 Resultados automatizados competitivos con los de seres humanos .............................. 14
2.3.2 Campos de aplicacin y trabajos realizados ................................................................. 14
2.3.3 Otros campos de aplicacin ........................................................................................ 16
2.3.4 Trabajos realizados en el rea de control ...................................................................... 19
3. Definicin del problema. .......................................................................................................... 20
4. Programacin gentica. ........................................................................................................... 22
4.1 Programacin gentica para la creacin evolutiva de programas algortmicos .......................... 22
4.1.1 Introduccin ................................................................................................................ 22
4.1.2 Qu es la programacin gentica? ............................................................................. 23
4.1.3 Siete principios gua de la programacin gentica ........................................................ 23
4.1.4 Diagrama de flujo de la programacin gentica ............................................................. 25
4.1.5 Breve introduccin al lenguaje de programacin LISP ................................................... 26
4.1.6 Descripcin detallada de la programacin gentica ....................................................... 27
4.1.6.1 Las estructuras que sufren la adaptacin .......................................................... 28
4.1.6.2 Las estructuras iniciales .................................................................................. 29
4.1.6.3 Aptitud ............................................................................................................. 30
4.1.6.4 Operaciones para modificar las estructuras ...................................................... 32
4.1.6.5 Estado del sistema adaptativo .......................................................................... 34
4.1.6.6 Criterio de terminacin ..................................................................................... 34
4.1.6.7 Designacin de resultado ................................................................................. 34
4.1.6.8 Parmetros de control ...................................................................................... 34
4.1.7 Convergencia de la poblacin en la programacin gentica ........................................... 35
4.2 Programacin gentica para la creacin evolutiva de programas de conocimientos .................. 35
4.2.1 Diseo evolutivo de controladores basados en lgica borrosa ........................................ 35
4.2.2 Controladores de lgica borrosa ................................................................................... 35
4.2.3 Descripcin del problema a ser solucionado evolutivamente mediante control borroso .... 36
4.2.4 Diseo de un controlador de lgica borrosa .................................................................. 37
4.2.5 Enfoque evolucionario .................................................................................................. 37
4.2.5.1 Dos modos de codificacin de una base de reglas ............................................ 37
4.2.5.2 Codificacin de bases de reglas ....................................................................... 37
4.2.5.3 Necesidad de un sistema de tipos .................................................................... 38
4.2.5.4 Generacin de bases de reglas ........................................................................ 39
4.2.5.5 Evaluacin de bases de reglas ......................................................................... 40
4.2.6 Resultados.................................................................................................................. 40
4.2.6.1 Solucin ptima y solucin intuitiva .................................................................. 40
4.2.6.2 Solucin dada por programacin gentica ......................................................... 41
5. Solucin propuesta. .................................................................................................................. 42
5.1 Conjunto de funciones y de terminales ................................................................................... 42
5.2 Wrapper (envolvedor) utilizado ............................................................................................ 44
Tesinas
Tesinas
1. Introduccin
La computacin evolutiva constituye un mtodo de bsqueda y optimizacin estocstica, ciega y mltiple de posibles soluciones a un problema determinado. Este proceso es guiado por los principios que rigen
la evolucin natural. Combina los conceptos de adaptacin y supervivencia de los ms aptos para producir
soluciones subptimas al problema dado. Esto es logrado mediante la aplicacin de operadores de reproduccin y cruce entre los individuos de una poblacin que representan soluciones potenciales.
La programacin gentica es un campo de la computacin evolutiva en la que los individuos de la poblacin son programas de computadora. Estos programas tratan de resolver un problema determinado. Se
constituyen por la composicin de un nmero de funciones que operan sobre un nmero de terminales.
Este trabajo propone el uso de programacin gentica para dar solucin a un problema del rea de
control. Dicho problema trata acerca de la generacin de una estrategia de control (en la forma de un
programa de computadora) que permita centrar un carro que se encuentra en movimiento sobre un camino
infinito, unidimensional y sin friccin.
El uso de la programacin gentica aplicada a este problema permite la obtencin de estrategias de
control subptimas que representan una solucin para dicho problema. La caracterstica innovadora es que
estas estrategias son programas de computadora generados automticamente sin participacin de inteligencia humana.
El trabajo est compuesta por las siguientes secciones:
Estado del arte:
Aqu se har una breve introduccin a los fundamentos tericos sobre los cuales se basa la computacin
evolutiva en general. Se nombrarn campos de aplicacin y trabajos realizados en el campo de la computacin evolutiva tradicional (algoritmos genticos y programacin evolutiva) y en el campo de la programacin
gentica. Para el caso de esta ltima, se har mencin de dos problemas del rea de control ptimo cuya
solucin fue alcanzada mediante programacin gentica.
Definicin del problema:
En esta seccin se definir, con mximo detalle, el problema de centrado del carro que este trabajo
propone resolver.
Programacin gentica:
Aqu se explicarn, en detalle, los fundamentos tericos sobre los cuales se basa la programacin
gentica, a fin de comprender cmo opera la misma. Esta seccin ser dividida en dos subsecciones. Una
de ellas se referir al uso de la programacin gentica para la creacin evolutiva de programas algortmicos
(este es el uso que se le dar a este paradigma en la solucin al problema planteado en este trabajo); la otra
subseccin se referir al uso de la programacin gentica para la creacin evolutiva de programas de conocimientos.
Solucin propuesta:
En esta seccin se explicar, en detalle, cmo fue utilizado el paradigma de la programacin gentica
explicado en la seccin anterior para dar solucin al problema planteado.
Resultados experimentales:
Se analizarn en profundidad los resultados que fueron obtenidos haciendo uso de la solucin propuesta.
Conclusiones y futuras lneas de investigacin.
Tesinas
Tesinas
Tesinas
Tesinas
b. Mltiples: se mantienen simultneamente varios candidatos a solucin con los cuales se va acotando
cada vez con ms precisin la regin (o regiones) donde se encuentra el/los ptimo/s. Son las ms
apropiadas para implantaciones en paralelo.
La bsqueda de la computacin evolutiva en el espacio de soluciones posibles es entonces:
ciega porque no se hace uso de ninguna informacin para podar el espacio de bsqueda,
estocstica porque se combina el determinismo provisto por el propio algoritmo que implementa el paradigma de la computacin evolutiva, con la componente aleatoria determinada por la seleccin al azar de
progenitores, de descendientes y de operadores,
mltiple porque la poblacin en cada generacin est compuesta simultneamente por varios individuos,
cada uno de los cuales es un candidato a solucin.
11
Tesinas
Ingeniera elctrica:
Un ejemplo clsico y el primer caso en que se registrara una patente de un invento desarrollado por una
mquina fue el desarrollo de una antena mediante algoritmos genticos para su aplicacin en un mbito muy
concreto. El desarrollo de antenas eficientes no es en absoluto una tarea fcil y requiere no slo aplicacin
de clculos muy complicados, sino que adems requiere de varios intentos para aproximar una antena
adecuada.
Ingeniera de materiales:
Diseo de nuevos polmeros tiles para el trnsito de la corriente elctrica basados en el carbono (ms
conocidos como polianilinas).
Qumica:
Clculo de pulsos de lser para la destruccin de molculas y formacin de elementos simples. Desarrollo de nuevos aminocidos y protenas mediante la llamada qumica combinatoria.
Mercados financieros:
Un problema recurrente en cualquier tcnica de inteligencia artificial es la modelizacin de mercados
financieros para realizar previsiones y evaluaciones. Clculos de los tipos de cambio y de acciones burstiles mediante algoritmos genticos son ejemplos claros de la aplicacin de los algoritmos genticos a la
industria.
Juegos:
Los juegos siempre han sido base de experimentacin de muchos de los mtodos en inteligencia artificial. En los algoritmos genticos esta poltica se sigue cumpliendo. Se han aplicado dichos algoritmos en la
resolucin de juegos tales como las damas.
Geofsica:
Bsqueda de hipocentros (punto bajo la superficie terrestre en el que se origina un terremoto) a partir de
las mediciones del terremoto.
Matemtica y algoritmia:
Uso de algoritmos genticos para resolver ecuaciones de derivadas parciales no lineales de alto orden.
Resolucin de problemas de ordenacin.
Aprendizaje automtico:
La capacidad para favorecer a los individuos que se acercan al objetivo, a costa de los que no lo hacen,
consigue una nueva generacin con mejores reglas y, por lo tanto el sistema ser capaz de ir aprendiendo
a conseguir mejores resultados. Es aqu donde encuentran un estupendo marco de trabajo los algoritmos
genticos.
Optimizacin evolutiva de estrategias de control:
Un trabajo realizado en relacin a esta rea de aplicacin es la utilizacin de algoritmos genticos para
la optimizacin del control de un sistema de aire acondicionado [5]. El objetivo es alcanzar niveles de
temperatura especificados con un mnimo uso de energa elctrica, basndose en predicciones realizadas
por un modelo matemtico del sistema.
Las variables incluidas en dicho modelo son la consumicin de energa elctrica por parte del sistema de
aire acondicionado, las temperaturas interior y exterior, y la radiacin solar. Este modelo permite hacer
predicciones precisas de corto plazo acerca de la variacin de la temperatura interna del ambiente en
funcin del consumo de energa elctrica del sistema y del clima externo. Una estrategia ptima de control
basada en algoritmos genticos fue desarrollada e implementada utilizando el modelo dinmico comentado.
Se hicieron simulaciones en computadora de la performance obtenida por el controlador generado con
algoritmos genticos en comparacin con dos esquemas tradicionales de control. Se demostr que el
controlador generado por dichos algoritmos es superior a los dos enfoques de control convencionales cuando la calidad del control y la consumicin de energa son tomados en cuenta.
Optimizacin evolutiva de tablas de horarios:
Los algoritmos genticos son utilizados en la optimizacin evolutiva de tablas de horarios [9]. Un ejemplo
tpico donde suele aplicarse esta solucin es en la construccin de dichas tablas para asignar cursos y
exmenes a perodos y aulas en instituciones educativas. Esta tarea representa un problema recurrente.
12
Tesinas
Generalmente es realizada a mano o con la ayuda limitada de un sistema administrativo simple, requiriendo
hacer uso de la tabla de horarios del ao anterior, modificndola de acuerdo a las nuevas exigencias. Cada
ao una nueva tabla de horarios debe ser producida para administrar cambios del staff, de los estudiantes y
de los cursos, requiriendo esto una gran cantidad de trabajo administrativo. Para simplificar esta tarea, se
han realizado trabajos que hacen uso de algoritmos genticos para resolver la generacin de tablas de
horarios tanto en lo referido a la formacin de mesas de exmenes como as tambin al dictado de cursos.
Optimizacin evolutiva de planificaciones:
Aqu entran en juego reas donde es til la planificacin automtica de tareas. Un ejemplo concreto es la
distribucin de tareas entre mltiples robots. Este es un problema complejo que requiere una planificacin
cuidadosa. El objetivo de la optimizacin evolutiva de planificaciones es, en este caso, planificar de manera
ptima la secuencia de movimientos de un sistema de mltiples robots con el fin de realizar una tarea
especfica.
Un rea en particular donde se han realizado trabajos basados en algoritmos genticos es en la utilizacin de robots manipuladores en fotogrametra [12]. Dicha disciplina se refiere al uso de medios electrnicos
de percepcin artificial para el anlisis de objetos reales. Por ejemplo, un sistema fotogramtrico puede
estar conformado por cuatro robots, cada uno equipado con una cmara, los cuales deben analizar cierta
caracterstica visible de un objeto real. Se han desarrollado soluciones basadas en algoritmos genticos con
el fin de planificar la secuencia ptima de trabajo para dichos robots.
Optimizacin evolutiva de trayectorias:
Existen muchos casos de aplicacin de algoritmos genticos para determinar el mejor camino que un
robot debe transitar para llegar a un determinado lugar partiendo de su posicin inicial, minimizando la
cantidad de movimientos a realizar y evitando la mayor cantidad de obstculos, si es que los hay.
Procesamiento de imgenes digitales:
Existen trabajos relacionados con el procesamiento de imgenes digitales que hacen uso de algoritmos
genticos para llevar a cabo su propsito [10]. Entre estos encontramos: deteccin de rasgos faciales,
aproximacin poligonal de figuras en dos dimensiones, aproximacin de curvas digitales por segmentos de
recta y arcos, restauracin de imgenes en escala de grises, realce de imgenes a color, inclusin de
imgenes secretas en el bit menos significativo de una imagen.
Redes neuronales - ajuste de los pesos de conexin en una red neuronal:
Uno de los mayores problemas de las redes neuronales artificiales es la obtencin de un buen algoritmo
de aprendizaje. Los algoritmos genticos han sido aplicados con xito al entrenamiento de redes neuronales estimando el conjunto ptimo de los pesos de conexin de las redes. Se han estudiado numerosas
aproximaciones: desde el simple proceso de evolucin del conjunto de pesos comentado a continuacin,
hasta algoritmos con sofisticados operadores de recombinacin de individuos con intercambios de partes de
la topologa de las redes.
En el caso del algoritmo ms simple, se parte de que la topologa de la red neuronal ya es fija (nmero
de neuronas de entrada y salida, nmero de capas ocultas, nmero de neuronas en cada capa oculta y la
conectividad entre todas las neuronas) y el algoritmo gentico debe encontrar los valores ptimos de pesos;
esto es, dicho algoritmo realiza el entrenamiento de la red neuronal. Ya se ha aplicado sin problemas a
redes neuronales feed-forward o alimentadas hacia adelante, cambiando el algoritmo de aprendizaje de
retropropagacin por el algoritmo gentico.
2.3 Programacin gentica
La programacin gentica es un concepto que naci a comienzos de la dcada del noventa gracias al
trabajo de John Koza [1], quien es considerado el padre de esta disciplina. La misma se basa sobre la
computacin evolutiva tradicional y representa una evolucin respecto a esta ltima, en donde
los individuos representan programas computacionales. Constituye un mtodo para que una computadora automticamente resuelva un problema especificndole qu es necesario hacer en
vez de cmo hacerlo.
Dado a su menor tiempo de vida, existe menor cantidad de trabajos realizados con programacin gentica en relacin a los hechos haciendo uso de algoritmos genticos o de programacin evolutiva. De todos
modos, ya existe una abundante cantidad de logros obtenidos mediante programacin gentica, los cuales
son competitivos con resultados obtenidos por inteligencia humana (ms adelante se definir qu significa
esto exactamente).
13
Tesinas
Debido a que este trabajo propone hacer uso de programacin gentica para dar solucin a un problema
del rea de control, su autor considera necesario brindar una explicacin terica detallada acerca de qu es
la programacin gentica y de cmo opera la misma para lograr su objetivo de generacin automtica de
programas. Esto es explicado en profundidad en la seccin 4 Programacin gentica.
A continuacin se definir qu significa que la programacin gentica permite obtener soluciones competitivas con las obtenidas por los seres humanos. Luego se har un repaso de los principales campos donde
se ha aplicado con xito la programacin gentica hasta el momento, haciendo una resea de los principales logros obtenidos en cada uno de esos campos mediante ella y que se han registrado hasta la fecha, a fin
de informar al lector acerca del estado del arte de esta disciplina.
2.3.1 Resultados automatizados competitivos con los de seres humanos
En el intento por evaluar un mtodo de resolucin de problemas automatizado como lo es la programacin gentica, surge la pregunta de si los problemas demostrativos que son publicados en referencia al
mtodo son realmente dignos reflejos de lo que puede llegar a ser un problema en la prctica del mundo real.
Muchas veces ocurre que los problemas demostrativos en los campos de la inteligencia artificial y
del aprendizaje de computadoras no tienen relevancia para las cuestiones que cientficos e ingenieros necesitan resolver por fuera de los campos anteriormente nombrados. Esto se debe a que
dichos problemas suelen circular exclusivamente dentro de grupos acadmicos que estudian una metodologa particular.
John Koza, padre de la programacin gentica, afirma que los problemas tratados en los grupos acadmicos son tiles como tutoriales o con propsitos introductorios. Sin embargo, Koza sostiene que es hora
de que los campos de la inteligencia artificial y el aprendizaje de computadoras comiencen a ofrecer resultados no triviales que satisfagan la condicin de ser competitivos con la performance alcanzada por un
humano.
Ahora bien, qu significa que el resultado de un mtodo de resolucin de problemas automatizado sea competitivo con el de los seres humanos? Esto significa que el resultado creado automticamente satisface uno o ms de los siguientes ocho criterios [6]:
A. El resultado fue patentado como una invencin en el pasado, es una mejora respecto a una invencin
patentada, o puede calificar en el presente como una nueva invencin patentable.
B. El resultado es igual o mejor que uno que fue aceptado como un nuevo resultado cientfico en el momento
en que fue publicado en un diario cientfico.
C. El resultado es igual o mejor que uno que fue ubicado en una base de datos o archivo de resultados
mantenido por un panel internacional de cientficos expertos.
D. El resultado es publicable como un nuevo resultado cientfico, independientemente del hecho de que el
mismo fue creado mecnicamente.
E. El resultado es igual o mejor que la solucin humana ms reciente para un problema de larga data para
el cual ha habido una sucesin de soluciones humanas cada vez mejores.
F. El resultado es igual o mejor que uno que fue considerado como un logro en su campo en el momento de
su descubrimiento.
G. El resultado resuelve un problema de dificultad indiscutible en su campo.
H. El resultado demuestra fortaleza o triunfa en una competicin regulada que involucra competidores humanos (ya sea en la forma de jugadores humanos o programas de computadora escritos por humanos).
Estos ocho criterios poseen el atributo deseable de requerir que el resultado se sostenga por su
propio mrito y no por el hecho de que haya sido producido mecnicamente. Un resultado no puede
adquirir la calificacin de competitivo con el realizado por humanos simplemente por ser considerado
como interesante por los investigadores dentro de campos especializados que estn intentando crear
inteligencia en una mquina. Por el contrario, un resultado producido por un mtodo automatizado debe
adquirir su calificacin de competitivo con el realizado por humanos independientemente del hecho de que
fue generado por un mtodo automtico.
2.3.2 Campos de aplicacin y trabajos realizados
Es necesario hacernos una pregunta fundamental en este momento: puede ser la programacin gentica utilizada como un mtodo automatizado de resolucin de problemas en la prctica del mundo real? La
respuesta es que s. A continuacin, se justificar la anterior afirmacin.
John Koza afirma la existencia de treinta y seis instancias registradas hasta la fecha en las
cuales la programacin gentica ha producido un resultado competitivo con el de los seres humanos [6]. Estos resultados competitivos con el de seres humanos incluyen once instancias que infringen
patentes anteriormente creadas y diez instancias que duplican la funcionalidad de invenciones patentadas
14
Tesinas
con anterioridad. Seis instancias se refieren a patentes para circuitos analgicos que fueron publicadas
luego de enero del 2000. Veintiuno de estos resultados se refieren a invenciones previamente patentadas,
con lo cual se puede afirmar que la programacin gentica es una mquina de invencin automatizada.
Estos resultados competitivos con el de seres humanos provienen de los siguientes cuatro campos:
Biologa molecular computacional: la misma trata acerca de comprender las interacciones entre los
distintos sistemas de una clula, incluyendo la interrelacin del DNA, el RNA y la sntesis de protenas, como as tambin el aprendizaje de cmo estas interacciones son reguladas.
Autmatas celulares: un autmata celular es una coleccin de clulas coloreadas sobre una plantilla
de forma especfica que evolucionan a lo largo de un nmero discreto de pasos de tiempo de acuerdo
a un conjunto de reglas basadas en los estados de las clulas vecinas. Por lo tanto, puede definirse
como un grupo de clulas donde cada clula evoluciona slo de acuerdo a la interaccin con las
clulas vecinas. Las reglas son aplicadas iterativamente para cuantos pasos de tiempo se desee.
Los autmatas celulares comenzaron a ser estudiados en la dcada del cincuenta como un modelo
posible para sistemas biolgicos, ya que se las concibe como capaces de representar la evolucin de
organismos vivientes y de minerales. En una dimensin, las clulas constituyen una lnea de puntos.
Cada punto posee un valor representado por un color. La evolucin de cada punto es determinado por
su valor y por el de sus puntos vecinos.
Redes de clasificacin: una red de clasificacin es un circuito con n conexiones de entrada para
tems de datos que ingresan en un orden arbitrario, y n conexiones de salida sobre los cuales dichos
tems salen en un determinado orden. Dentro de la red, los nicos elementos utilizados son comparadores, los cuales poseen cada uno dos entradas y dos salidas, y simplemente intercambian los
tems de entrada de datos si es que estos estn en el orden equivocado.
Sntesis del diseo de la topologa y el tamao de componentes para estructuras complejas, tales
como circuitos analgicos elctricos, controladores y antenas.
A continuacin se presenta una tabla donde figuran algunas de las treinta y seis instancias registradas
en las cuales la programacin gentica ha producido resultados competitivos con el de los seres humanos.
Cada entrada de la tabla incluye el criterio por el cual se establece que la instancia correspondiente es
competitiva a nivel humano (estos criterios se refieren a los ocho expuestos ms arriba).
15
Tesinas
El autor de este trabajo quiere dejar en claro aqu que no est en el alcance del mismo explicar en detalle
cada uno de estos logros. Estos resultados pertenecen a campos muy especficos y complejos, por lo que
la comprensin en profundidad de cada uno de ellos requerira un estudio extenso en forma individual. Por lo
tanto, el objetivo de enumerar estos logros aqu es simplemente informar acerca de los resultados que la
programacin gentica ha alcanzado en ambientes cientficos y de ingeniera, a fin de que el lector conozca
el uso que se le da a este mtodo automatizado de resolucin de problemas por fuera de ambientes exclusivamente acadmicos. El lector interesado en profundizar su conocimiento acerca de cada resultado,
puede consultar [6].
2.3.3 Otros campos de aplicacin
Adems de los mencionados anteriormente, existen ms trabajos basados sobre el paradigma de programacin gentica correspondientes a los siguientes campos [1]:
Control ptimo
El control ptimo involucra encontrar una estrategia de control que use las variables del estado actual del
sistema para elegir el valor de una o ms variables de control que causen un movimiento del estado del
sistema hacia un estado deseado de destino, todo esto al mismo tiempo que se minimice o maximice una
medida de costo.
La estrategia de control deseada puede ser vista como un programa de computadora que toma las
variables de control del sistema como sus entradas y produce valores de las variables de control como sus
salidas. Las variables de control, a su vez, causan un cambio en el estado del sistema.
El problema que este trabajo propone resolver mediante programacin gentica es un problema de control ptimo.
Planeamiento
El planeamiento en la inteligencia artificial y en la robtica requiere encontrar un plan que reciba informacin de sensores ambientales acerca del estado de varios objetos en un sistema y que luego utilice esa
informacin para seleccionar acciones que cambien el estado del sistema. Por ejemplo, un problema de
planeamiento puede ser el de manejar una hormiga artificial a lo largo de un camino irregular para encontrar
toda la comida que se encuentre sobre el mismo.
16
Tesinas
En un problema de planeamiento, el plan deseado puede ser visto como un programa de computadora
que toma informacin de sensores como sus entradas y que produce acciones como sus salidas. Dichas
acciones, a su vez, causan un cambio en el estado de los objetos del sistema.
Induccin de secuencias
La induccin de secuencias involucra encontrar una expresin matemtica que genere el elemento de
secuencia S j para cualquier ndice especificado j de una secuencia S = S 0, S 1, , Sj, luego de ver slo un
nmero relativamente pequeo de ejemplos de valores de esa secuencia.
Por ejemplo, dados los primeros siete valores de la secuencia 2, 5, 10, 17, 26, 37, 50, , el lector puede
inducir que la expresin matemtica j2 + 1 es un modo de determinar el elemento de secuencia Sj para
cualquier ndice especificado j de la secuencia.
La expresin matemtica que est siendo buscada en un problema de induccin de secuencias puede
ser vista como un programa de computadora que toma la posicin ndice j como su entrada y produce el
valor de elemento de secuencia correspondiente como su salida.
La induccin de secuencias es un caso especial de la regresin simblica (que aparece a continuacin),
en donde la variable independiente (es decir, la posicin ndice j) corresponde slo a los nmeros naturales.
Regresin simblica
La regresin simblica (identificacin de funciones) involucra encontrar una expresin matemtica, en
forma simblica, que provea un ajuste bueno o perfecto entre una muestra finita de valores de variables
independientes y los valores asociados de las variables dependientes. Por lo tanto, la regresin simblica
involucra encontrar un modelo que se ajuste a una muestra de datos dada.
La regresin simblica involucra encontrar tanto la forma funcional como as tambin los coeficientes
numricos del modelo. La regresin simblica difiere de las regresiones convencionales lineal, cuadrtica o
polinmica, las cuales involucran meramente encontrar los coeficientes numricos para una funcin cuya
forma (lineal, cuadrtica o polinmica) ya ha sido especificada.
En cualquier caso, la expresin matemtica que es buscada en la regresin simblica puede ser vista
como un programa de computadora que toma los valores de las variables independientes como sus entradas
y produce los valores de las variables dependientes como sus salidas.
En el caso de datos muy dispersos del mundo real, este problema de encontrar un modelo a partir de los
datos es usualmente llamado descubrimiento emprico. Si las variables independientes corresponden al
conjunto de los nmeros enteros no negativos, entonces la regresin simblica es usualmente llamada
induccin de secuencias (como ya fue explicado ms arriba). Si hay mltiples variables dependientes, el
proceso es llamado regresin simblica mltiple.
Programacin automtica
Una frmula matemtica para resolver un problema en particular comienza con determinados datos
dados (las entradas) y produce determinados resultados deseados (las salidas). En otras palabras, una
frmula matemtica puede ser vista como un programa de computadora que toma los valores dados como
sus entradas y produce el resultado deseado como su salida.
Por ejemplo, supongamos el siguiente par de ecuaciones lineales
a11x11 + a12x2 = b1
y
a21x1 + a22x2 = b2
con dos desconocidos x 1 y x 2. Las dos frmulas matemticas dadas para resolver el par de ecuaciones
lineales comienzan con seis valores dados: los cuatro coeficientes a11, a12, a 21 y a22 y los dos trminos
constantes b 1 y b2. Las dos frmulas entonces producen, como su resultado, los valores de las dos variables
desconocidas (x1 y x2) que satisfacen el par de ecuaciones. Los seis valores dados corresponden a las
entradas del programa de computadora. Los resultados producidos por las frmulas corresponden a la
salida del programa de computadora.
Descubrimiento de estrategias de juego
Una estrategia de juego requiere encontrar una estrategia que especifique qu movimiento debe hacer un
jugador a cada momento del juego, dada la informacin correspondiente acerca del mismo. Dicha informa17
Tesinas
cin puede ser un historial explcito de los movimientos previos del jugador, o un historial implcito de sus
movimientos previos en la forma del estado actual del juego (por ejemplo, en ajedrez, la posicin de cada
pieza sobre el tablero).
La estrategia de juego puede ser vista como un programa de computadora que toma informacin conocida sobre el juego como su entrada y produce un movimiento como su salida.
Por ejemplo, el problema de encontrar una estrategia para que un individuo perseguidor atrape a otro
evasor en un juego requiere encontrar el programa de computadora (es decir, la estrategia de juego) que
tome las posiciones actuales del perseguidor y del evasor como sus entradas y produzca el movimiento del
perseguidor como su salida.
Descubrimiento emprico y pronstico
El descubrimiento emprico involucra encontrar un modelo que relacione un conjunto dado de valores de
variables independientes y los valores asociados (usualmente dispersos) de las variables dependientes para
un determinado sistema del mundo real.
Una vez que se haya encontrado un modelo para datos empricos, el mismo puede ser utilizado para
pronosticar los valores futuros de las variables del sistema.
El modelo que es buscado en problemas de descubrimiento emprico puede ser visto como un programa
de computadora que toma varios valores de las variables independientes como sus entradas y produce los
valores observados de las variables dependientes como sus salidas.
Integracin y diferenciacin simblica
La integracin y la diferenciacin simblica se refieren a encontrar una expresin matemtica que sea la
integral o derivada, en forma simblica, de una curva dada.
La curva dada puede ser presentada como una expresin matemtica en forma simblica o como una
muestra discreta de puntos de datos. Si la curva desconocida es presentada como una expresin matemtica, primero se la convierte en una muestra finita de puntos, para lo cual se toma una muestra aleatoria de
valores de la expresin matemtica dada en el intervalo especificado de la variable independiente. Luego se
asocia cada valor de la variable independiente con el resultado de evaluar la expresin matemtica dada para
ese valor de la variable independiente.
Si estamos considerando la integracin, se comienza integrando numricamente la curva desconocida.
Esto significa que se determina el rea por debajo de dicha curva desde el comienzo del intervalo para cada
uno de los valores de la variable independiente. La expresin matemtica que est siendo buscada puede
ser vista como un programa de computadora que toma cada uno de los valores aleatorios de la variable
independiente como su entrada y que produce el valor de la integral numrica para la curva desconocida
como su salida.
La diferenciacin simblica es parecida con la excepcin que lo que se realiza es diferenciacin numrica.
Problemas inversos
Encontrar una funcin inversa para una curva dada implica encontrar la expresin matemtica, en forma
simblica, que sea la inversa de la curva dada.
Se procede como en el caso de la regresin simblica y se busca una expresin matemtica (un programa de computadora) que se ajuste a los datos en la muestra finita. La funcin inversa para la funcin dada
en un dominio especificado puede ser vista como un programa de computadora que toma los valores de la
variable dependiente de la funcin matemtica dada y que produce los valores de la variable independiente
como su salida. Cuando encontramos la expresin matemtica que se adapte a esta muestra, hemos
encontrado la funcin inversa.
Descubrimiento de identidades matemticas
Encontrar una identidad matemtica involucra encontrar una nueva y no obvia expresin matemtica, en
forma simblica, que siempre posea el mismo valor que una expresin matemtica dada en un dominio
especificado.
Para descubrir una identidad matemtica, primero se empieza con la expresin matemtica dada en
forma simblica. Luego se convierte dicha expresin en una muestra finita de puntos de datos, para lo cual
se toma una muestra aleatoria de valores de la variable independiente que aparece en la expresin dada.
Entonces se asocia cada valor de la variable independiente con el resultado de la evaluacin de la expresin
dada para cada valor de la variable independiente.
18
Tesinas
La nueva expresin matemtica puede ser vista como un programa de computadora. Se procede como
en la regresin simblica y se busca una expresin matemtica (un programa de computadora) que se
ajuste a los pares de valores dados. Es decir, buscamos un programa de computadora que tome valores
aleatorios de las variables independientes como sus entradas y que produzca el valor observado de la
expresin matemtica dada como su salida. Cuando encontramos una expresin matemtica que se ajusta
a los datos de muestra y que, por supuesto, sea diferente a la expresin dada, hemos descubierto una
entidad.
Induccin de rboles de decisin
Un rbol de decisin es una manera de clasificar un objeto de un universo dado en una clase particular,
utilizando sus atributos como base para dicha clasificacin. La induccin de un rbol de decisin es, por lo
tanto, un enfoque para la clasificacin.
Un rbol de decisin corresponde a un programa de computadora que consiste en funciones que prueban
los atributos del objeto. La entrada de dicho programa consiste en valores de ciertos atributos asociados a
un punto de datos dado. Su salida es la clase en la que se clasifica el punto de datos dado.
Evolucin de conducta emergente
La conducta emergente involucra la aplicacin repetitiva de reglas simples que llevan a una conducta
global de mayor complejidad. El descubrimiento de conjuntos de reglas que producen conducta emergente
es un problema de la induccin de programas.
Consideremos, por ejemplo, el problema de encontrar un conjunto de reglas que controlen la conducta de
una hormiga individual y que, al ser ejecutado en paralelo en forma simultnea sobre todas las hormigas de
la colonia, cause que las hormigas trabajen juntas para localizar toda la comida disponible y para transportarla al nido. Las reglas para controlar la conducta de una hormiga en particular procesa las entradas
sensoriales recibidas por ese insecto y determinan la accin que ser llevada a cabo por el mismo. La
conducta de alto nivel emerger como el efecto global de muchas hormigas ejecutando simultneamente el
mismo conjunto de reglas simples.
El programa de computadora (es decir, el conjunto de reglas) que est siendo buscado toma la entrada
sensorial de cada hormiga como su entrada y produce la accin a realizar por cada insecto como su salida.
2.3.4 Trabajos realizados en el rea de control
Dado que aqu se propone la resolucin de un problema de control mediante programacin gentica, se
considera apropiado incluir, a modo de ejemplo, dos trabajos realizados en el rea especfica de control, en
los cuales la solucin (una estrategia de control) ha sido alcanzada mediante uso de programacin gentica.
Aplicacin militar:
El primero de estos ejemplos se refiere a un trabajo realizado por el Laboratorio de Investigacin de la
Marina de los Estados Unidos de Amrica. Dicho trabajo propone una solucin para la generacin de un
sistema de navegacin autnomo utilizado en vehculos areos no tripulados -o UAVs (unmanned air vehicles) por sus siglas en ingls- usados en aplicaciones blicas [11].
Dado que el campo de batalla es dinmico, los UAVs necesitan moverse reactivamente frente a locaciones de riesgos de un modo complejo y difcil de ser preprogramado. El Laboratorio de Investigacin de la
Marina de EE.UU. cre un nuevo enfoque para realizar esta tarea, el cual satisface las necesidades de
autonoma y optimizacin de la navegacin de los UAVs. Dicho enfoque se basa en la programacin gentica.
El trabajo mencionado constituye una solucin a un problema de control ptimo en donde el objetivo del
controlador es mover autnomamente el UAV a la zona prxima de un radar del modo ms rpido y eficiente
posible, para luego dar vueltas alrededor de dicho radar. La simulacin asigna una posicin inicial al UAV y
al radar. El controlador de navegacin slo recibe dos datos como entradas: la amplitud y el ngulo de
llegada de las seales de radar recibidas. El controlador luego determina los movimientos necesarios del
UAV. Para fortalecer la robustez del sistema, se agrega ruido a la seal del radar. La simulacin tambin
modela un ngulo de llegada impreciso para la seal de radar recibida.
Debido a la gran cantidad de cmputos necesarios para evolucionar la estrategia de control generada por
programacin gentica, los mismos fueron realizados por un cluster de 92 procesadores Pentium 4 de 2.4
Ghz.
Como resultado de la simulacin, fue posible evolucionar los controles de navegacin para el UAV, de
modo tal que ste fue capaz de volar a un radar de destino usando entradas imprecisas de un sensor en un
19
Tesinas
ambiente ruidoso. Se seleccionaron parmetros reales de vuelo y se utilizaron sensores de entrada para
ayudar en la transferencia de los controladores evolucionados en la simulacin hacia UAVs verdaderos. El
prximo paso es demostrar el uso de este mtodo en hardware mediante la navegacin autnoma de un
UAV bajo el comando de una lgica de control evolucionada por programacin gentica.
Aplicacin en robtica:
El segundo ejemplo donde se utiliz programacin gentica en el rea de control se refiere a un problema
de robtica [2]. El mismo consiste en la generacin automtica de una estrategia de control que permita a
un robot mvil autnomo mover una caja desde el medio de una habitacin de forma irregular hacia la pared
(para tener nocin del tamao de la habitacin, la pared norte y la pared oeste de la misma miden cada una
27,6 pies). El robot puede tener una posicin inicial cualquiera dentro de la habitacin. Primero debe encontrar la caja que se encuentra en el medio de ella. Luego debe empujarla hacia alguna de las paredes. Todo
esto debe ser realizado dentro de un tiempo especificado.
El robot es capaz de moverse hacia adelante, rotar treinta grados hacia la derecha y rotar treinta grados
hacia la izquierda. Una vez que encuentra la caja, puede moverla empujndola. Esta subtarea puede ser
dificultosa dado que si el robot no aplica la fuerza del modo correcto respecto al centro de gravedad de la
caja, la misma puede empezar a rotar. En ese caso, el robot perdera contacto con la caja y probablemente
fallara su propsito. El robot es considerado exitoso si cualquier parte de la caja toca cualquier pared dentro
del tiempo especificado.
La aptitud de cada individuo de la poblacin (es decir, la aptitud de cada estrategia de control candidata
a solucin) es computada usando cuatro casos de aptitud donde el robot comienza en diferentes posiciones
iniciales. La aptitud para cada individuo es la suma de las distancias, tomadas para cada caso de aptitud,
entre la pared ms cercana a la caja y el punto de la caja ms cercano a la misma.
Cada movimiento del robot demora un paso de tiempo. En la simulacin de este problema, se defini el
nmero 350 como la mxima cantidad de pasos de tiempo tolerables. Si, para los cuatro casos de aptitud,
la caja toca la pared dentro de los 350 pasos de tiempo, entonces se considera que el individuo tiene la
mejor aptitud.
El uso de programacin gentica permiti obtener automticamente una estrategia de control cuasiptima que soluciona el problema descrito al encontrar un individuo (programa) de aptitud cero.
20
Tesinas
21
Tesinas
Para la resolucin que se dar a este problema, se considerar que = 1 segundo (es decir, uno de los dos
cohetes ser activado a cada segundo), m = 2.0 kg y F = 1.0 Newton (o sea, cada cohete posee una fuerza
de magnitud constante de 1 Newton).
Como se puede observar, la eleccin del valor de la variable de control (es decir, la eleccin de la cantidad
u(t) igual a un multiplicador de +1 o -1 para la magnitud |F| de la fuerza F) en el paso de tiempo t ocasiona
un cambio en las variables de estado del sistema en el siguiente paso de tiempo.
El problema entonces se resume en encontrar una estrategia de control de tiempo ptimo que satisfaga
las siguientes tres condiciones:
La estrategia de control debe especificar cmo aplicar la fuerza para los valores de posicin x(t) y de
velocidad v(t) en cada paso de tiempo.
El carro se debe detener por completo en la posicin cero.
La cantidad de movimientos realizados debe ser mnima.
4. Programacin gentica
A continuacin, se brindarn los fundamentos tericos sobre los cuales se basa la programacin gentica. Se explicar en forma detallada cmo opera la misma para generar programas de computadora en
forma automtica.
Este trabajo har uso de programacin gentica para la obtencin de un programa algortmico (estrategia
de control) que ser solucin al problema definido en la seccin 3 Definicin del problema. Sin embargo,
es necesario aclarar que la programacin gentica tambin puede ser utilizada para la creacin evolutiva de
programas de conocimientos. En consecuencia, esta seccin ser dividida en dos subsecciones:
1) Programacin gentica para la creacin evolutiva de programas algortmicos: aqu se abarcar la
programacin gentica como una forma automtica de generacin de programas algortmicos. Esta subseccin ser abordada desde un punto de vista netamente terico. Su objetivo ser informar al lector, en forma
detallada, cmo opera este paradigma para generar automticamente programas algortmicos.
2) Programacin gentica para la creacin evolutiva de programas de conocimientos: esta segunda
subseccin abarcar la programacin gentica como una forma de creacin evolutiva de programas de
conocimientos. Para explicarlo, se har uso de un ejemplo. Dicho ejemplo es una solucin alternativa al
problema de centrado del carro definido en la seccin 3 (es decir, una solucin distinta a la que ser
implementada en este trabajo).
Antes de seguir, se desea repetir en forma enftica que el problema de centrado del carro ser solucionado haciendo uso de programacin gentica para la creacin evolutiva de programas algortmicos. Por lo
tanto, dicho paradigma no ser utilizado en este trabajo con fines de creacin evolutiva de programas de
conocimientos.
En consecuencia, la solucin descrita en la seccin 5 Solucin propuesta se basa exclusivamente
sobre los lineamientos tericos explicados en la subseccin 4.1 Programacin gentica para la creacin
evolutiva de programas algortmicos. La subseccin 4.2 Programacin gentica para la creacin evolutiva
de programas de conocimientos es entonces presentada slo con fines de ilustrar al lector acerca de otro
uso posible del paradigma sobre el que se enfoca este trabajo.
4.1 Programacin gentica para la creacin evolutiva de programas algortmicos
4.1.1 Introduccin
La aptitud, a lo largo de un perodo de tiempo, causa la creacin de estructura por medio de la seleccin
natural y a travs de los efectos de la recombinacin sexual (cruce) y de la mutacin. Es decir, la aptitud da
pie a la estructura.
Los programas de computadora se encuentran entre las estructuras ms complejas creadas por el
hombre. Tomando como premisa que la estructura se genera a partir de la aptitud, podemos preguntarnos:
cmo pueden las computadoras aprender a resolver problemas sin ser explcitamente programadas? En
22
Tesinas
otras palabras, cmo pueden las computadoras hacer lo que deben hacer, sin necesidad de explicarles
exactamente cmo hacerlo?
Un impedimento para que las computadoras aprendan a resolver problemas sin ser explcitamente programadas es que muchos mtodos de la inteligencia artificial no buscan soluciones en la forma de programas de computadora. Por lo tanto, la nica verdad es que si estamos interesados en que las computadoras resuelvan problemas sin ser explcitamente programadas, las estructuras que realmente
necesitamos son programas de computadora. La computacin evolutiva tradicional no nos proporciona dichas estructuras.
Adems, no deberamos requerir especificar el tamao, la forma y la complejidad estructural de la solucin, tal como los algoritmos genticos y la programacin evolutiva lo exigen. Estos atributos deberan
emerger durante el proceso de resolucin del problema como resultado de sus exigencias. El tamao, la
forma y la complejidad estructural deben ser parte de la respuesta provista por la tcnica de resolucin, no
debe ser parte de la pregunta.
En consecuencia, cuando lo que necesitamos es la flexibilidad ofrecida por los programas de
computadora, el espacio de programas de computadora es aquel sobre el cual deberemos focalizarnos. Para esto se debe recurrir a una bsqueda inteligente y adaptativa sobre dicho espacio, la cual
involucra comenzar con una o ms estructuras pertenecientes a ese espacio, probar su performance (aptitud) para resolver el problema dado, y luego utilizar esta informacin de performance para modificar (y en lo
posible incrementar) las estructuras actuales del espacio de bsqueda.
Solemos concebir a la inteligencia humana como la nica gua exitosa para encontrar un programa que
resuelva cierto problema. Cualquiera que haya escrito un programa de computadora probablemente piense
que es imposible que un programa sea progresivamente modificado y mejorado de un modo mecnico e
independiente del dominio sin intervencin de la inteligencia humana. Y si esto llegara a ser concebido como
posible, se podra presumir que slo podra ser aplicable en algunos dominios muy limitados. Sin embargo,
la evidencia emprica demuestra lo contrario [1].
4.1.2 Qu es la programacin gentica?
Una gran variedad de problemas diferentes de distintos campos pueden ser reformulados como problemas de induccin de programas. Es decir, una variedad de problemas pueden ser solucionados mediante el
descubrimiento de un programa de computadora que produzca una salida deseada ante determinadas entradas. La programacin gentica provee una forma de realizar induccin de programas.
La programacin gentica es entonces la disciplina de la computacin evolutiva que provee
un modo para realizar una bsqueda en el espacio de programas para encontrar aquel programa
que sea ms apto en la resolucin de un problema dado, todo esto de modo independiente al
dominio del problema. El programa (estructura) que emerja del paradigma de la programacin gentica
es una consecuencia de la aptitud. Por lo tanto, una vez ms la aptitud da pie a la estructura.
A diferencia de lo que ocurre en los algoritmos genticos, las estructuras que sufren cambios adaptativos
durante la programacin gentica son activas. No son codificaciones pasivas a un problema, como lo son
los strings de caracteres de longitud fija de los algoritmos genticos. Por el contrario, teniendo una computadora sobre la cual ejecutarlos, los individuos en la programacin gentica son estructuras activas que son
capaces de ser ejecutadas en su forma actual.
4.1.3 Siete principios gua de la programacin gentica
Los siete principios de correccin, consistencia, justificabilidad, certeza, orden, parsimonia y decisin
han jugado un papel importante en la solucin exitosa de muchos problemas en la ciencia, la matemtica y
la ingeniera. Son por lo tanto integrales a nuestro entrenamiento y forma de pensar.
A continuacin se explicarn cada uno de estos principios y se ver que la programacin gentica no
respeta ninguno de ellos [1]:
Correccin: La ciencia, la matemtica y la ingeniera siempre buscan la solucin correcta a un problema.
Por supuesto que pueden aceptarse pequeos errores debidos a imprecisiones introducidos por la computacin de datos, imprecisiones en datos observados en el mundo real, y pequeas desviaciones causadas por simplificaciones y aproximaciones en frmulas matemticas. Estas desviaciones de la correccin motivadas en la prctica son aceptables no slo porque son pequeas numricamente, sino tambin porque siempre estn centradas sobre la solucin correcta. Sin embargo, si el problema es, por
ejemplo, resolver la ecuacin cuadrtica ax2 + bx + c = 0, entonces una frmula para x como por ejemplo
x = [-b + (b2-4ac)] / 2a + 0,000000000000001a3bc
23
Tesinas
es inaceptable como solucin para una raz, a pesar de que el trmino incorrecto 10-15a3bc introduce error
que es considerablemente menor a los errores debidos a imprecisiones computacionales o simplificaciones prcticas que los ingenieros y los cientficos rutinariamente aceptan. El trmino extra 10-15a3bc no
slo es inaceptable, sino virtualmente inimaginable. Esta frmula simplemente no est asociada a la
solucin correcta al problema. Por lo tanto es incorrecta. La programacin gentica trabaja slo con
soluciones admitidas como incorrectas y slo ocasionalmente produce la solucin analticamente correcta a un problema.
Consistencia: La inconsistencia no es aceptable para la mente lgica en la ciencia convencional, la
matemtica y la ingeniera. Una caracterstica esencial de la programacin gentica es que opera simultneamente con enfoques claramente inconsistentes y contradictorios para resolver el problema. Y aqu
no se trata de permanecer con la mente abierta a nuevas soluciones hasta que se cuente con toda la
evidencia, ni tampoco se trata de tolerar estos enfoques claramente inconsistentes y contradictorios. La
programacin gentica activamente alienta, preserva y utiliza una diversidad de enfoques inconsistentes
y contradictorios para resolver un problema. De hecho, una mayor diversidad permite a la programacin
gentica arribar a una solucin ms rpidamente.
Justificabilidad: La ciencia convencional, la matemtica y la ingeniera favorecen los razonamientos en
los cuales las conclusiones se generan a partir de premisas dadas mediante la aplicacin de reglas
lgicas de inferencia. Por ejemplo, el trmino extra 10-15a3bc mostrado en la frmula anterior no posee
justificacin basada en la matemtica de las ecuaciones cuadrticas. No existe secuencia lgica de
razonamiento basada en premisas y reglas de inferencia para justificar este trmino extra. No existe una
secuencia lgica basada en premisas y reglas de inferencia para justificar los resultados producidos por
la programacin gentica.
Certeza: Es dificultoso pensar para practicantes de la ciencia convencional, la matemtica y la ingeniera
que la solucin a un problema bien definido de carcter cientfico, matemtico o ingenieril, dependa
exclusivamente de pasos ejecutados al azar. Por ejemplo, la investigacin de la teora del caos busca
una explicacin determinista a un fenmeno que, en superficie, parece totalmente aleatorio. En la programacin gentica, todo puede suceder y nada est garantizado.
Orden: La gran mayora de las tcnicas de resolucin de problemas y algoritmos en la ciencia convencional, la matemtica y la ingeniera no slo son deterministas, sino que tambin son ordenados en el
sentido que proceden de un modo altamente controlado y sincronizado. Es extrao pensar en un nmero
de procesos no coordinados, independientes y distribuidos operando asincrnicamente y en paralelo sin
supervisin central. La desprolijidad y el desorden son caractersticas centrales de los procesos biolgicos que operan en la naturaleza, como as tambin de la programacin gentica.
Parsimonia: En el contexto de la solucin a problemas de la ciencia convencional, la matemtica y la
ingeniera, la parsimonia se refiere a la simpleza en las explicaciones o en las soluciones dadas. En las
ciencias, existe una fuerte preferencia por las explicaciones parsimoniosas. Las soluciones provistas por
la programacin gentica no satisfacen necesariamente la condicin de parsimonia, ya que para la
solucin provista por dicha programacin, puede existir en realidad otra equivalente (que otorgue el
mismo resultado), pero cuya expresin sea ms simple.
Decisin: La ciencia, la matemtica y la ingeniera se focalizan en algoritmos que son decisivos en el
sentido de que poseen puntos de terminacin bien definidos en los cuales convergen a un resultado que
es la solucin al problema dado. Los procesos biolgicos que operan en la naturaleza y la programacin
gentica usualmente no poseen un punto de terminacin claramente definido. Por el contrario, continan
y continan. Incluso si interrumpimos estos procesos, ellos ofrecen numerosas respuestas inconsistentes y contradictorias (de todos modos, el observador externo es, obviamente, libre de focalizar su atencin en la mejor respuesta obtenida).
La posibilidad de que un conjunto totalmente diferente de principios gua sea utilizado en el problema de
la programacin automtica nace en el hecho de cmo la naturaleza crea entidades complejas que resuelven problemas mediante la evolucin. A continuacin veremos cmo la naturaleza tampoco respeta los
principios que usualmente se conciben como fundamentales en la ciencia:
Correccin: la naturaleza crea estructuras a lo largo del tiempo aplicando seleccin natural en base a la
aptitud. Algunas estructuras son mejores que otras; sin embargo, no existe necesariamente una respuesta correcta.
Consistencia: la naturaleza mantiene y cra muchos enfoques inconsistentes y contradictorios a un
problema dado. De hecho, el mantenimiento de diversidad gentica es un ingrediente importante de la
evolucin para asegurar la habilidad de adaptacin a ambientes cambiantes.
Justificacin: en la naturaleza, la diferencia entre una estructura observada hoy y sus antecesores no es
justificable en el sentido de que haya una comprobacin matemtica que la justifique, o en el sentido de
24
Tesinas
que haya una secuencia lgica de reglas de inferencia que haya sido aplicada a un conjunto original de
premisas para producir el resultado observado.
Certeza: en la naturaleza, la evolucin no sigue una lnea determinista. Todo puede ocurrir y nada est
garantizado.
Orden: el proceso evolutivo en la naturaleza es incierto y no determinista. Tambin involucra actividad
asincrnica, no coordinada, local e independiente que no es controlada en forma centralizada.
Parsimonia: la aptitud, y no la parsimonia, es el factor dominante en la evolucin natural. Una vez que la
naturaleza encuentra una solucin a un problema, comnmente contina respaldando esa solucin. La
parsimonia slo juega un rol cuando interfiere con la aptitud (cuando el precio a pagar por una solucin
indirecta y compleja interfiere con la performance). Como el genoma de los seres vivos, los resultados de
la programacin gentica son raramente la estructura mnima para desarrollar la tarea dada.
Decisin: la evolucin es un proceso que no se detiene, que no tiene un punto de terminacin bien
definido.
Tesinas
Tesinas
Una expresin simblica (Expresin-S) es una lista o un tomo de LISP. La Expresin-S es la nica
forma sintctica en este lenguaje de programacin.
Por ejemplo, (+ 1 2) es una Expresin-S de LISP. En esta Expresin-S, la funcin de suma aparece
adentro del parntesis de abertura de la Expresin-S. De este modo se aplica la funcin de adicin + a dos
argumentos (los tomos 1 y 2). El valor retornado por la Expresin-S es 3. Estas expresiones son ejemplos
de la notacin polaca (tambin llamada notacin prefijo).
La Expresin-S (+ (* 2 3) 4) muestra cmo se puede ejecutar una composicin es funciones. Aqu
primero se aplica la funcin de multiplicacin a los argumentos 2 y 3, lo cual retorna 6. Luego se aplica la
funcin de suma a los argumentos representados por este resultado intermedio (6) y por 4. El resultado final
de la Expresin-S es entonces 10.
El trmino programa de computadora por supuesto acarrea la connotacin de hacer mucho ms que
meras operaciones aritmticas, como por ejemplo la posibilidad de ejecutar computaciones alternativas
condicionadas por el valor de clculos intermedios. LISP permite realizar estodel mismo modo, ya que
siempre trata el tem que se encuentra al lado del parntesis izquierdo ms externo como una funcin y
luego aplica esa funcin a los tems restantes de la lista (los argumentos).
Por ejemplo, en la Expresin-S (+ 1 2 (IF (> TIEMPO 10) 3 4)), primero se aplica la funcin > (mayor que)
a los argumentos TIEMPO y 10. Esta subexpresin evaluar al valor lgico T o NIL. Si evala a T, retorna el
primer argumento de la funcin IF (3); si evala a NILL, retorna el segundo argumento (4). Luego, se aplica
la funcin de suma + a los argumentos 1, 2 y al argumento retornado anteriormente por la funcin IF, el cual
ya dijimos puede ser un 3 o un 4. En consecuencia, la Expresin-S retornar 6 o 7.
El principal motivo por el cual es conveniente utilizar Expresiones-S para explicar la programacin gentica en forma detallada es que las Expresiones-S pueden ser representadas como un rbol que posee una
raz. Para el caso de la Expresin-S del prrafo anterior, dicho rbol es:
27
Tesinas
Tesinas
Suficiencia del conjunto de funciones y del conjunto de terminales: la propiedad de suficiencia requiere
que el conjunto de terminales y el conjunto de funciones primitivas sean capaces de expresar una
solucin al problema. El usuario de la programacin gentica debe saber o creer que alguna composicin
de las funciones y los terminales que l proporciona puede llevar a la solucin del problema.
Dependiendo del problema, la identificacin de los terminales y de las funciones primitivas puede ser un
paso obvio, un paso difcil o un paso imposible (ejemplo de esto ltimo es predecir el resultado de elecciones).
Ms all de todos los ejemplos que puedan ser mostrados, la nica verdad es que es siempre el usuario
el que debe proveer el conjunto de funciones y de terminales apropiado para la resolucin del problema, de
acuerdo a sus conocimientos.
4.1.6.2 Las estructuras iniciales
La poblacin inicial en la programacin gentica est compuesta por individuos representados por Expre29
Tesinas
siones-S. Cada Expresin-S es realizada mediante la generacin al azar de un rbol rotulado en cada uno
de sus puntos.
Se comienza seleccionando una de las funciones en el conjunto F al azar (utilizando una distribucin
uniforme de probabilidad). Dicha funcin ser el rtulo de la raz del rbol. Restringimos la seleccin del
rtulo de la raz al conjunto F porque no queremos generar una estructura compuesta slo por un terminal.
La siguiente figura muestra el comienzo de la creacin de un rbol aleatorio. Se seleccion la funcin +
del conjunto de funciones, la cual lleva dos argumentos.
Tesinas
Como la aptitud cruda es expresada en la terminologa natural del problema, el mejor valor puede ser
pequeo (como cuando se trata de error) o grande (como cuando se trata de cantidad de comida obtenida,
beneficio alcanzado, etc.).
Aptitud estandarizada (standardized fitness): la aptitud estandarizada s(i,t) expresa la bondad de un
individuo de modo tal que siempre un valor numrico menor sea un mejor valor.
Si para un problema particular, un menor valor de aptitud cruda es mejor, entonces la aptitud estandarizada es igual a la cruda. Es decir:
s(i,t) = r(i,t)
Es deseable hacer que el mejor valor de aptitud estandarizada sea igual a 0. Si este no es el caso,
conviene sumar o restar una constante.
Si para un problema particular, un mayor valor de aptitud cruda es mejor, entonces la aptitud estandarizada se computa a partir de la cruda del siguiente modo, de modo tal que el mejor valor posible de aptitud
estandarizada sea cero:
s(i,t) = rmax r(i,t)
Si no se conoce un lmite rmax y un nmero mayor de aptitud cruda es mejor, o si un nmero menor de
aptitud cruda es mejor y no existe un lmite inferior, entonces la aptitud estandarizada no puede ser calculada.
Aptitud ajustada (adjusted fitness): la aptitud ajustada a(i,t) se calcula a partir de la estandarizada del
siguiente modo:
31
Tesinas
Tesinas
Tesinas
Por ejemplo, en la siguiente figura, el punto 3 (D0) de la Expresin-S Antes es elegido como punto de
mutacin. La subexpresin (NOT D1) es generada al azar e insertada en ese punto para producir la Expresin-S que se muestra en el rbol Despus.
Tesinas
Tesinas
utilizadas en las reglas borrosas. La ambigedad de las mismas es modelada por funciones miembro, las
cuales procuran representar la concepcin de un experto humano respecto a los trminos lingsticos. Una
funcin miembro brinda una medida de la confianza con la cual un valor numrico preciso es descrito por una
etiqueta lingstica.
Las reglas tienen la forma de IF [condiciones] THEN [acciones], donde las condiciones y las acciones
son trminos lingsticos que describen los valores de las variables de entrada y de salida, respectivamente
(por ejemplo: IF presin IS baja THEN apertura-vlvula IS small). La base de reglas borrosas del FLC est
constituida por un nmero de dichas reglas. Esta base es utilizada para producir valores de salida precisos
de acuerdo a valores precisos de entrada. Este proceso de control es dividido en tres etapas (utilizamos la
terminologa inglesa):
a) Fuzzification: se calcula la entrada borrosa, es decir, se evalan las variables de entrada (constituidas
por valores numricos precisos) con respecto a sus expresiones lingsticas en el lado de la condicin
de la regla.
b) Fuzzy inference: se calcula la salida borrosa, es decir, se evala la fortaleza de la activacin de cada
regla y se combinan los respectivos lados de accin de cada una de ellas.
c) Defuzzification: se calcula la salida final, es decir, se convierte la salida borrosa a un valor numrico
preciso.
Este proceso es ilustrado en la siguiente figura:
36
Tesinas
, y aplicar una fuerza en el sentido contrario (es decir, que empuje el carro hacia la izquierda) en caso
contrario.
4.2.4 Diseo de un controlador de lgica borrosa
Dado que ste se trata de un problema de control ptimo, el problema de centrado del carro es apto de
ser solucionado mediante control borroso. El desarrollo de un FLC para este sistema involucra los siguientes tres pasos:
a) Determinar las variables de condicin (es decir, de entrada) y especificar los conjuntos borrosos (fuzzy
sets) para describirlas.
b) Determinar las variables de accin (es decir, de salida) y especificar los conjuntos borrosos (fuzzy
sets) para describirlas.
c) Producir la base de reglas.
Es claro que la posicin x(t) y la velocidad v(t) del carro son las variables de entrada, y que la fuerza F(t)
aplicada al carro es la nica variable de salida en este problema. Los conjuntos borrosos que describirn
(mediante expresiones lingsticas) estas variables son los siguientes cinco: negativamente grande (NG),
negativamente pequeo (NP), cero (CE), positivamente pequeo (PP) y positivamente grande (PG).
El tercer paso (produccin de la base de reglas) puede ser realizado por un experto humano. El uso de
expresiones lingsticas borrosas permite una incorporacin ms fcil del conocimiento humano. Por ejemplo, parece intuitivo en este problema que la fuerza aplicada debe ser casi siempre dirigida hacia el origen
(dado que queremos ubicar el carro en la posicin cero) y, una vez que estamos cerca de ese punto, se debe
revertir la fuerza para frenar el carro. Las siguientes reglas borrosas expresan este conocimiento:
IF pos IS PG THEN fuer IS NG
IF pos IS PP THEN fuer IS NG
IF pos IS CE AND vel IS PG THEN fuer IS NG
IF pos IS CE AND vel IS PP THEN fuer IS NG
IF pos IS CE AND vel IS NP THEN fuer IS PG
IF pos IS CE AND vel IS NG THEN fuer IS PG
IF pos IS NP THEN fuer IS PG
IF pos IS NG THEN fuer IS PG
donde pos, vel y fuer se refieren posicin, velocidad y fuerza respectivamente.
El FLC descrito aqu no es el ptimo. Mejoras en la base de reglas o en la interpretacin de los trminos
lingsticos pueden ser realizados mediante algoritmos genticos. El trabajo realizado en la Universidad de
Mlaga para dar solucin a este problema hace uso de programacin gentica para generar bases de reglas
que pueden ser usadas como un punto de partida para mejoras posteriores por parte de un experto humano
o incluso pueden utilizarse como una solucin final.
4.2.5 Enfoque evolucionario
Aqu se brindar un resumen de cmo el equipo de trabajo en la Universidad de Mlaga ha utilizado el
paradigma de programacin gentica para resolver el problema dado haciendo uso de reglas borrosas.
4.2.5.1 Dos modos de codificacin de una base de reglas
Existen dos enfoques alternativos cuando se debe codificar una base de reglas: el enfoque de Pitt y el
enfoque de Michigan. En el primero, cada individuo en la poblacin representa una base entera de reglas que
compite con las otras. En el segundo, una nica regla es contenida en cada individuo, por lo que la conducta
del FLC es determinada por la cooperacin entre todos los individuos. Debe tenerse en cuenta que el hecho
de seleccionar uno de estos dos enfoques condiciona otros aspectos del algoritmo (por ejemplo: la asignacin de aptitud).
En la solucin propuesta por el equipo de trabajo en la Universidad de Mlaga, se eligi el enfoque de
Pitt.
4.2.5.2 Codificacin de bases de reglas
Dado que cada individuo contiene una lista de reglas, son necesarios una codificacin de reglas individuales y un mecanismo para unirlas.
Una regla individual puede ser fcilmente representada mediante un rbol binario: la raz es un nodo IF, y
las ramas izquierda y derecha representan las condiciones y las acciones, respectivamente. Al mismo
37
Tesinas
tiempo, tanto las condiciones como las acciones pueden ser expresadas como rboles. Por un lado, una
variable unida a un conjunto borroso (es decir, una variable descrita por una expresin lingstica) puede ser
representada como un rbol con un nodo raz IS: el nombre de la variable estar en la rama izquierda y el
conjunto borroso estar en la rama derecha. Por otro lado, una conjuncin de estas expresiones puede ser
representada como un rbol con un nodo raz AND y dos ramas representando conjunciones anidadas o
parejas (variable, conjunto borroso). La siguiente figura muestra un ejemplo:
38
Tesinas
Tesinas
Tesinas
pasos de tiempo. El carro es considerado centrado cuando max (|pos|, |vel|) < 0.5.
Los resultados obtenidos son los siguientes: la solucin ptima promedi 129 pasos de tiempo para
centrar el carro, mientras que la solucin intuitiva promedi 249 pasos de tiempo, excediendo en 14 ocasiones el nmero mximo de pasos de tiempo permitidos.
4.2.6.2 Solucin dada por programacin gentica
10 ejecuciones del sistema de programacin gentica fueron llevadas a cabo. Se seleccion un tamao
de poblacin de 500 individuos para un nmero mximo de 51 generaciones (es decir, la generacin inicial
ms 50 adicionales). La seleccin de progenitores fue en un 50% proporcional a la aptitud (haciendo uso del
mtodo de seleccin elitista descrito en el apndice Mtodos de seleccin) y en un 50% al azar. La
siguiente figura muestra la mejor aptitud y la aptitud promedio para cada generacin, promediadas para las
10 ejecuciones.
Figura 18. Promedio (para 10 ejecuciones) de mejor aptitud y de aptitud promedio en cada generacin.
El mejor individuo generado obtuvo un valor de aptitud de 321 (promediando 158 pasos de tiempo para
centrar el carro). Dicho individuo corresponde al siguiente FLC de 9 reglas:
1)
2)
3)
4)
5)
6)
7)
8)
9)
La base de reglas aqu mostrada fue obtenida luego de borrar reglas duplicadas. Las reglas 2, 3 y 6
aparecieron dos veces y las reglas 1 y 4 estaban repetidas tres veces. Esto indica que son bloques funcionales importantes para el FLC. El mejor individuo tambin contena dos reglas sin valor alguno cuyos lados
de condicin eran equivalentes a un conjunto borroso vaco, por lo que no tenan influencia en la salida.
41
Tesinas
5. Solucin propuesta
La estrategia de control puede ser vista como un programa algortmico de computadora que, en funcin
de las entradas representadas por valores cualesquiera de las variables de estado x(t) y v(t), determine el
valor de la variable de control (es decir, determine qu cohete activar) con el fin de llevar el sistema a su
estado objetivo. Se propone crear dicho programa sin intervencin humana, mediante programacin gentica aplicada a la creacin evolutiva de programas.
Un denominado motor gentico ser el encargado de implementar el paradigma de la programacin
gentica para generar dicho programa algortmico. El motor gentico fue creado por el autor de este trabajo
en el lenguaje C de programacin, con el objetivo de dar solucin al problema anteriormente definido. Este
motor ser el encargado de generar una poblacin inicial de individuos (programas), medir sus aptitudes
respectivas, crear nuevas generaciones de individuos evolucionados (programas de mayor aptitud) mediante
operaciones genticas, y designar el resultado final de la ejecucin.
A continuacin veremos los lineamientos sobre los cuales se basa la ejecucin del motor gentico
programado para este trabajo, en trminos de las siguientes caractersticas:
1. Conjunto de funciones y de terminales.
2. Wrapper (envolvedor) utilizado.
3. Medida de aptitud (fitness).
4. Parmetros para controlar la ejecucin del motor gentico.
5. Generacin de poblacin inicial.
6. Clculo de aptitud cruda de individuos.
7. Operadores genticos utilizados.
8. Mtodos de seleccin utilizados.
9. Criterios para terminar la ejecucin.
10.Mtodo para designar un resultado.
11. Modo de retorno del individuo solucin.
5.1 Conjunto de funciones y de terminales
Como ya se dijo anteriormente en este trabajo, la solucin de tiempo ptimo para este problema es
conocida y consiste en, dada cualquier posicin x(t) y cualquier velocidad v(t), aplicar la fuerza F para
acelerar el carro en la direccin positiva si
o, en caso contrario, aplicar la fuerza F para acelerarlo en la direccin negativa. La funcin signo retorna
+1 si su argumento es positivo y -1 en otro caso.
En la seccin 3 Definicin del problema establecimos que la masa del carro es igual a 2 kg y que la
fuerza de cada cohete posee una magnitud fija de 1 Newton. Como podemos observar, en virtud de estos
valores, el denominador 2|F|/m es igual a 1.0 y puede as ser ignorado.
La estrategia de control ptima anteriormente mencionada puede ser entonces codificada en pseudocdigo del siguiente modo:
si (-1.0 * x > v * ABS(v))
entonces
controlador = 1.0
sino
controlador = -1.0,
donde ABS es la funcin valor absoluto.
Ahora bien, el motor gentico simula los procesos de evolucin en la naturaleza sobre una poblacin de
programas (individuos) que son Expresiones-S de LISP (es decir, programas codificados en lenguaje LISP).
Ms all del lenguaje elegido y de sus caractersticas particulares, debemos ser concientes de que un
programa de computadora es simplemente una composicin de varias funciones actuando sobre varios
argumentos. Para el caso de la estrategia de control ptima anteriormente presentada, su Expresin-S en
LISP es la siguiente:
42
Tesinas
Tesinas
Tesinas
se pretende obtener su aptitud centra el carro en reposo en el movimiento nmero 1000, su aptitud ser
obviamente 1000. Si otra estrategia no logra centrar el carro en 1000 movimientos, entonces se le asignar
1001 como aptitud, a fin de indicar que la misma no logr su propsito. La aptitud cruda final de cada
individuo ser la sumatoria de sus aptitudes crudas para cada caso de aptitud.
Obviamente, cuanto ms cercana a cero sea la aptitud de un individuo, ms apto ser el mismo.
5.4 Parmetros para controlar la ejecucin del motor gentico
La profundidad mxima permitida para los individuos de la poblacin inicial se define en 6.
La profundidad mxima de los individuos descendientes en cada generacin (mediante la operacin
gentica de cruce) se define en 17. Este lmite impide el uso de grandes cantidades de tiempo de
computacin en algunos pocos individuos extremadamente grandes.
A la hora de aplicar un operador gentico, la probabilidad de reproduccin es del 10% y la probabilidad de
cruce es del 90%.
La cantidad mxima de individuos por generacin es ingresada por el usuario.
La cantidad mxima de generaciones a procesar es ingresada por el usuario.
La cantidad de casos de aptitud es ingresada por el usuario, junto con sus respectivos valores iniciales
(posicin x(t) y velocidad v(t) del carro) para cada una.
La cantidad mxima de movimientos que puede realizar cada individuo (estrategia de control) para llevar
el sistema al estado objetivo es, como ya se dijo anteriormente, ingresada por el usuario.
La cantidad mxima de generaciones sucesivas en las que puede repetirse el mejor individuo es ingresada por el usuario.
5.5 Generacin de poblacin inicial
La poblacin inicial se genera creando una cantidad de individuos especificada por el usuario, donde
cada individuo est representado por un rbol (el cual es una forma de representacin de una Expresin-S de
LISP).
Estos rboles son creados con formas variadas y con una profundidad mxima igual a 6, como ya se dijo
anteriormente. Esto significa que la longitud del camino entre la raz del rbol y una hoja (terminal) cualquiera no es mayor a 6. Las formas variadas se logran haciendo la seleccin aleatoria de etiquetas desde el
conjunto combinado C = F U T (el cual consiste en la unin de los conjuntos de funciones y de terminales)
para nodos en profundidades menores a la mxima permitida, al mismo tiempo que se restringe la seleccin
aleatoria de etiquetas desde el conjunto de terminales para nodos en la mxima profundidad permitida.
Los individuos duplicados en la generacin aleatoria inicial son improductivos. Desperdician recursos
computacionales y reducen la diversidad gentica de la poblacin [1]. En consecuencia, el motor gentico
desarrollado para este trabajo impide duplicados en la generacin inicial. Si en la poblacin inicial se crea un
individuo idntico a uno anteriormente generado, el mismo es eliminado y se repite el proceso hasta crear un
individuo distinto a todos los ya creados.
5.6 Clculo de aptitud cruda de individuos
Una vez generada la poblacin inicial, se calcula la aptitud cruda de cada individuo de la cual se compone
mediante la simulacin anteriormente explicada en la subseccin 5.3 Medida de aptitud (fitness). Una vez
que sta es obtenida, se determina si se satisface alguno de los dos criterios para terminar la ejecucin de
la programacin gentica (dichos criterios son explicados en la subseccin 5.9 Criterios para terminar la
ejecucin). Si ninguno de estos criterios son satisfechos, comienza el ciclo evolutivo mediante la produccin de una poblacin descendiente (la siguiente generacin).
5.7 Operadores genticos utilizados
Para generar la poblacin descendiente se hace uso de dos operaciones genticas: la operacin de
reproduccin Darwiniana y la operacin de cruce.
Recordemos los siguientes conceptos que ya vimos anteriormente en este trabajo. La operacin de
reproduccin es asexual ya que opera sobre un nico individuo y produce slo un descendiente cada vez
que es ejecutada. La misma consiste en dos pasos. Primero, una Expresin-S es elegida de la poblacin de
acuerdo a un determinado criterio de seleccin. Luego, el individuo seleccionado es copiado, sin alteracin
alguna, desde la poblacin actual a la nueva poblacin. Para el caso de la operacin de cruce, recordemos
que la misma crea variacin gentica en la poblacin a travs de la produccin de dos nuevos individuos
descendientes a partir de partes tomadas de cada uno de sus dos padres.
A fin de maximizar la diversidad gentica, el motor gentico ejecuta la operacin de reproduccin con una
probabilidad del 10%, mientras que la probabilidad de la operacin de cruce es del 90%.
45
Tesinas
Un tamao mximo permitido (expresado en trminos de la profundidad del rbol) es establecido para
cada descendiente creado mediante la operacin de cruce. Como ya se dijo anteriormente, este valor es
igual a 17. Para respetar este lineamiento, el motor gentico opera del siguiente modo. Si el cruce entre dos
padres crea un descendiente de tamao no permitido, la operacin de cruce es abortada para dicho descendiente y el primero de sus padres es seleccionado arbitrariamente para ser reproducido en la nueva poblacin. En este caso, el otro descendiente producto del cruce es ingresado normalmente en la nueva poblacin. Ahora bien, si los dos descendientes poseen un tamao no permitido, el motor gentico aborta la
operacin de cruce para ambos descendientes y ambos padres son reproducidos en la nueva poblacin.
El motivo por el cual no se hace uso de mutacin en el motor gentico creado para este trabajo
deriva de lo expresado en la seccin 4.1.7 Convergencia de la poblacin en la programacin
gentica. All habamos establecido que, en el algoritmo gentico convencional, cuando un individuo se
reproduce incestuosamente consigo mismo, los dos descendientes resultantes son idnticos, lo cual fortalece la tendencia hacia la convergencia en el algoritmo gentico. Es all donde es til la operacin de
mutacin, la cual permite desarrollar una bsqueda exploradora (a lo ancho) que se encarga de explorar
nuevos dominios en busca de mejores soluciones, proporcionando as una garanta de accesibilidad para
todos los puntos del espacio de bsqueda. La mutacin puede, en principio, llevar a cualquier parte; sin
embargo, en la prctica, la poblacin rpidamente reconverge. Lo dicho hasta aqu es vlido para el caso de
los algoritmos genticos. En contraste, en el caso de la programacin gentica mientras que la operacin
Darwiniana de reproduccin crea una tendencia hacia la convergencia, la operacin de cruce genera una
presin contrapuesta que aleja de la misma. Esto se debe a que cuando un individuo (programa) se reproduce consigo mismo, los dos descendientes resultantes sern, en general, distintos (excepto en el caso
infrecuente en el que los puntos de cruce para ambos individuos sean los mismos). Es por esto que se
concluye que la convergencia de la poblacin es improbable en la programacin gentica, y es este el
motivo por el cual el motor gentico no hace uso de la operacin de mutacin.
5.8 Mtodos de seleccin utilizados
Tanto para el caso de la reproduccin como as tambin para el del cruce, el motor gentico creado para
este trabajo selecciona los progenitores haciendo un uso combinado del mtodo de seleccin elitista y del
mtodo de seleccin por ruleta por bondad (vase el apndice Mtodos de seleccin) del modo que se
explica en el siguiente prrafo.
Cuando se crea una nueva generacin, el mejor individuo presente en la generacin actual es automticamente reproducido (es decir, copiado sin cambios) en la nueva poblacin (es aqu donde se aplica elitismo), a fin de no correr el riesgo de perderlo. Para el resto de los descendientes, sus progenitores son
seleccionados mediante el mtodo de seleccin por ruleta por bondad. Recordemos que esta ltima es una
forma de seleccin proporcional a la aptitud en la que la probabilidad de que un individuo sea seleccionado
es proporcional a la diferencia entre su aptitud y la de sus competidores. Por lo tanto, los valores de la
funcin bondad se utilizan como probabilidades de seleccin. Ahora bien, el lector atento puede preguntarse
cmo puede ser esto posible si anteriormente habamos establecido que un individuo es ms apto cuanto
ms cercana a cero se encuentre su aptitud. De acuerdo a este razonamiento, un individuo ms apto (de
aptitud ms cercana a cero) tendra menor probabilidad de ser elegido como progenitor. Obviamente este no
es el caso, ya que lo que se utiliza como probabilidad de seleccin no es la aptitud cruda (raw fitness), sino
la aptitud normalizada (normalizad fitness). Por lo tanto, el motor gentico, adems de calcular la aptitud
cruda de cada individuo, calcula su aptitud normalizada (del modo descrito en la seccin 4.1.6.3 Aptitud),
a fin de poder utilizar el mtodo de seleccin por ruleta por bondad. La aptitud normalizada constituye la
probabilidad de que el individuo sea seleccionado como progenitor en las operaciones de reproduccin o de
cruce. Recordemos que la aptitud normalizada vara entre 0 y 1 para cada individuo, es mayor para mejores
individuos en la poblacin, y que la suma de todas las aptitudes normalizadas de todos los individuos de una
poblacin cualquiera es 1.
Una vez finalizada la produccin de la nueva generacin, la aptitud cruda de los individuos que pertenecen a la misma es calculada. Si no se satisface algunos de los dos criterios para terminar la ejecucin
(explicados en la siguiente subseccin), el proceso hasta aqu descrito itera hasta satisfacer una de ellas.
5.9 Criterios para terminar la ejecucin
El motor gentico creado para este trabajo implementa dos criterios para la terminacin de la ejecucin.
La satisfaccin de uno de estos dos criterios finalizar la ejecucin:
1. cuando se alcance el nmero mximo de generaciones (el cual es ingresado por el usuario al iniciar el
motor gentico),
2. cuando el mejor individuo en cada generacin sea sucesivamente el mismo (no haya cambiado) a lo largo
46
Tesinas
de una determinada cantidad de generaciones. Mediante este criterio, se impide que el motor siga
funcionando cuando es aparente que ha convergido a una solucin.
5.10 Mtodo para designar un resultado
Si la terminacin de la ejecucin es generada por el alcance del nmero mximo de generaciones, se
retornar el mejor individuo presente en la ltima generacin.
Si el criterio de terminacin es alcanzado porque el mejor individuo fue el mismo a lo largo de una
determinada cantidad de generaciones sucesivas, dicho individuo ser retornado como resultado.
5.11 Modo de retorno del individuo solucin
Cabe aqu aclarar el modo en el cual el motor gentico devuelve el individuo resultado. El motor imprime
por pantalla la Expresin-S que representa a dicho individuo y, al mismo tiempo, genera un archivo de
simulacin de extensin .sim para cada uno de los casos de aptitud que dicho individuo logra resolver. Estos
archivos de simulacin pueden ser abiertos luego mediante el programa de simulacin creado por el autor de
este trabajo, el cual puede ser accedido desde la interfaz grfica del motor gentico. A travs de este
programa, el usuario podr observar grficamente una simulacin de cmo la estrategia de control resultante
del motor gentico mueve el carro (desde las condiciones iniciales de posicin y velocidad definidas en el
caso de aptitud correspondiente) hasta dejarlo en el estado objetivo.
6. Resultados experimentales
En la seccin 5.1 Conjunto de funciones y de terminales se estableci que se realizaran pruebas para
analizar el funcionamiento del motor gentico haciendo uso de tres conjuntos de funciones distintos: uno de
ellos es el formado slo por las funciones que participan en la solucin ptima del problema; los otros dos
conjuntos incluyen funciones que no tienen utilidad en la misma.
A continuacin veremos los resultados obtenidos en cada una de estas pruebas.
6.1 Resultado experimental nmero uno
6.1.1 Conjunto de funciones utilizado
En esta primera prueba, se har uso del conjunto de funciones F = {+, -, *, /, <, >, <=, >=, abs}. Es decir,
a las tres funciones que forman parte de la solucin ptima (*, >, abs), se le agregan 6 funciones que no
tienen utilidad en este problema.
6.1.2 Parmetros ingresados en el motor gentico
Se carg la interfaz del motor gentico con los siguientes parmetros de entrada:
1. Cantidad de individuos en cada generacin: 50.
2. Cantidad de generaciones: 50.
3. Cantidad de casos de aptitud a simular para cada individuo: 4.
4. Cantidad mxima de movimientos que se permite demorar a cada estrategia de control para que la
misma centre y deje en reposo al carro para cada caso de aptitud: 120.000.
5. Cantidad mxima de generaciones en las cuales puede repetirse el mejor individuo: 15.
Cada caso de aptitud se compone de las siguientes condiciones iniciales:
Tesinas
Como se puede observar, se seleccionaron casos de aptitud de modo tal que se cubriesen los siguientes
posibles casos: que el carro se encuentre en el eje positivo con velocidad positiva, que se encuentre en el
eje positivo con velocidad negativa, que se encuentre en el eje negativo con velocidad positiva, que se
encuentre en el eje negativo con velocidad negativa.
Aqu tenemos la interfaz del motor gentico ya cargada con los valores anteriormente comentados:
48
Tesinas
49
Tesinas
Tesinas
Un valor de aptitud de 480.004 indica que el individuo no logra centrar el carro en ninguno de los casos de
aptitud establecidos (dicho nmero proviene de realizar la sumatoria de los 120.001 movimientos realizados
sobre el carro -sin xito- para cada uno de los cuatro casos de aptitud definidos anteriormente). En consecuencia, podemos observar que en todas las generaciones hubo individuos que no lograban centrar el carro
para ninguno de los cuatro casos de aptitud.
Como podemos observar, el mejor individuo desde la generacin 0 (la poblacin inicial) hasta la generacin 3 inclusive, fue el mismo (su aptitud era 304.834 recordemos que este nmero es la suma de los
movimientos realizados en cada caso de aptitud hasta dejar el carro en su estado objetivo). En la generacin
4, el mejor individuo pas a ser otro, el cual se mantuvo como el mejor de su poblacin hasta la generacin
5 inclusive (su aptitud era 89.400). Luego, en la generacin 6, el mejor individuo pas a ser otro. Este
individuo se mantuvo como el mejor de su poblacin hasta la generacin 21 inclusive. Dado que dicho
programa (individuo) se repiti como el mejor durante 15 generaciones sucesivas (desde la 7 hasta la 21
inclusive), el motor gentico se detuvo y retorn dicha estrategia de control como solucin.
Los datos de la tabla anterior son representados en el siguiente grfico para una mejor visualizacin de
los mismos:
Tesinas
Tesinas
Como podemos observar a travs de la experimentacin, para las cuatro duplas de valores iniciales de x
y v, la cantidad de movimientos realizados para centrar el carro por la estrategia ptima es notablemente
menor a la cantidad de movimientos realizados por la estrategia subptima:
Tesinas
que el carro puede ser centrado partiendo de cualquier dupla formada por nmeros enteros en el intervalo [250; 250]. Luego podramos extender dicho intervalo mediante un procedimiento de prueba y error.
Se realizaron las 251.001 simulaciones para determinar si la estrategia subptima logra centrar el carro
en x=0 con v=0 para todas las duplas iniciales posibles que pueden formarse con nmeros enteros del
intervalo anteriormente nombrado. El resultado fue exitoso: la estrategia subptima logr centrar el carro
para todas las 251.001 duplas (x;v).
Sera de sumo inters realizar simulaciones para extender este intervalo y as determinar con seguridad
un intervalo an ms grande de duplas iniciales (x;v) para las cuales la estrategia subptima logra centrar el
carro. Esto no ser realizado en este trabajo debido a que dichas simulaciones consumen una gran cantidad
de tiempo. De hecho, para realizar las 251.001 simulaciones anteriormente nombradas, se utilizaron dos
computadoras: una de ellas con procesador Pentium III de 450 Mhz; la otra, con procesador AMD Athlon XP
2600+ de 2,08 Ghz. Las simulaciones fueron divididas en dos partes y cada parte fue asignada a cada
computadora. Con las dos computadoras operando en paralelo, el proceso demor un total de 16 horas
aproximadamente. El lector podr imaginar entonces que, haciendo uso de los recursos computacionales
posedos por el autor de este trabajo, una simulacin para todas las duplas formables, por ejemplo, en el
intervalo [-2000; 2000], requerira das de procesamiento ininterrumpido.
Se presume que la estrategia de control subptima logra centrar el carro incluso para duplas formadas
por nmeros enteros en el intervalo [-1000; 1000]. Esta presuncin est basada simplemente en que para
aproximadamente 53.100 duplas formadas por valores elegidos al azar en dicho intervalo, la estrategia
subptima logr centrar el carro siempre. Por ejemplo:
Tabla 8. Ejemplos de duplas iniciales para las cuales la estrategia subptima centra el carro
(x=0) con velocidad nula (v=0).
De todos modos, en este caso no se realiz una simulacin estricta para todas las duplas formables
como la realizada para el intervalo [-250; 250], por lo que no puede asegurarse que el carro sea centrado
para todas las duplas formadas por nmeros enteros en el intervalo [-1.000; 1.000].
6.1.7 Simulacin del individuo generado
Luego de esta ejecucin del motor gentico, y tal como la pantalla de finalizacin de ejecucin del
mismo avis, se crearon cuatro archivos MASAPTO1.SIM, MASAPTO2.SIM, MASAPTO3.SIM y
MASAPTO4.SIM. Los mismos pueden ser abiertos por el programa de simulacin creado para este trabajo,
el cual puede ser ejecutado desde la misma interfaz del motor gentico.
Cada archivo, al ser abierto por dicho programa, permite observar una simulacin grfica de cmo la
estrategia de control resultante centra el carro partiendo, respectivamente, de las condiciones iniciales de
posicin y de velocidad especificados para cada caso de aptitud.
Obviamente, mostrar dicha simulacin aqu es imposible. De todos modos, mostramos aqu una imagen
de la ejecucin de dicho simulador para que el lector pueda apreciarlo.
54
Tesinas
Tesinas
nmero mayor de generaciones sucesivas en las que se permitiese la repeticin del mejor individuo. En
consecuencia, se carg la interfaz del motor gentico con los siguientes parmetros de entrada:
1. Cantidad de individuos en cada generacin: 120.
2. Cantidad de generaciones: 500.
3. Cantidad de casos de aptitud a simular para cada individuo: 4.
4. Cantidad mxima de movimientos que se permite demorar a cada estrategia de control para que la
misma centre y deje en reposo al carro para cada caso de aptitud: 160.000.
5. Cantidad mxima de generaciones en las cuales puede repetirse el mejor individuo: 215.
Cada caso de aptitud se compone de las mismas condiciones iniciales definidas en la prueba anterior:
Tesinas
El motor se detuvo por el alcance del nmero mximo de generaciones. Es decir, no hubo un individuo
que se repitiera como el mejor de su poblacin durante 215 generaciones.
La estrategia subptima retornada como resultado en esta ejecucin del motor gentico es la que puede
observarse en la anterior imagen. Como se puede apreciar, su extensin es notablemente superior a la de la
obtenida en la prueba anterior. Su aptitud es 5.916. Logra llevar el carro a su estado objetivo en los cuatro
casos de aptitud definidos. Recordemos que el hecho de que su aptitud sea 5.916 significa que, para llevar
el carro a su estado objetivo en los cuatro casos de aptitud, la estrategia realiza, para la sumatoria de los
cuatro casos, 5.916 movimientos sobre el carro.
Puede observarse que haber aumentado el nmero de individuos por poblacin, el nmero de generaciones a procesar y el nmero de generaciones en las que puede repetirse sucesivamente el mejor individuo,
increment drsticamente la aptitud de la estrategia de control resultante. Mientras que en la prueba anterior
se obtuvo un individuo de aptitud 89.384, en esta prueba se obtuvo un individuo mucho ms apto de aptitud
5.916. Es decir, se obtuvo una estrategia de control 15 veces mejor.
6.2.4 Evolucin de aptitud a lo largo de las generaciones
A continuacin se mostrar, en forma grfica, cmo evolucion la aptitud de los individuos en cada
generacin:
57
Tesinas
Tesinas
Como podr notar el lector, este grfico es semejante al obtenido en la prueba anterior.
6.4 Resultado experimental nmero cuatro
6.4.1 Conjunto de funciones utilizado
Se analiz el comportamiento del motor cuando el conjunto de funciones est formado slo por las
funciones que forman parte de la solucin ptima conocida. Por lo tanto, tenemos que F = {*, >, abs}.
6.4.2 Parmetros ingresados en el motor gentico
Se carg la interfaz del motor gentico con los siguientes parmetros de entrada:
1. Cantidad de individuos en cada generacin: 120.
2. Cantidad de generaciones: 500.
3. Cantidad de casos de aptitud a simular para cada individuo: 4.
4. Cantidad mxima de movimientos que se permite demorar a cada estrategia de control para que la
misma centre y deje en reposo al carro para cada caso de aptitud: 130.000.
5. Cantidad mxima de generaciones en las cuales puede repetirse el mejor individuo: 175.
Los casos de aptitud son los mismos de las tres pruebas anteriores:
Tesinas
Como puede observarse, el motor se detuvo en la generacin 237 porque el mejor individuo se repiti
durante 175 generaciones sucesivas. Dicha estrategia de control fue retornada entonces como resultado.
Su aptitud es 89376 y da solucin a los cuatro casos de aptitud ingresados.
6.4.4 Evolucin de aptitud a lo largo de las generaciones
A continuacin se muestra el grfico correspondiente:
Tesinas
Recordemos que en estas diferencias se debe tener en cuenta que la estrategia subptima lleva el carro
exactamente a x=0 y v=0, mientras que la estrategia ptima lo lleva a valores de x y v cercanos a 0. De todos
modos, la estrategia subptima aqu obtenida es notablemente peor que la ptima.
Podemos notar que la estrategia subptima (de aptitud 89.376) obtenida en esta prueba es tambin
notablemente peor respecto a la estrategia subptima generada en la prueba experimental nmero dos,
cuya aptitud haba sido 5.916. Cules pueden ser los motivos?:
En primer lugar, en esta prueba se defini como 175 la cantidad mxima de generaciones sucesivas en
las que el mejor individuo poda repetirse, mientras que en la prueba experimental nmero 2, ese nmero
se defini como 215. En consecuencia, en este caso se increment la probabilidad de que el motor se
detuviera antes de alcanzar la mxima cantidad de generaciones. De hecho, eso fue lo que ocurri. En
esta prueba experimental, el motor proces slo 238 generaciones (la inicial ms 237 adicionales); en la
prueba nmero dos, el motor haba procesado 500 generaciones, permitiendo as una mayor evolucin de
individuos en aquella prueba.
En segundo lugar, en la generacin 237 de la prueba experimental nmero dos, el individuo ms apto
tena aptitud 12.632, mientras que en esta prueba, el individuo retornado en dicha generacin tuvo aptitud
89.376. Por lo tanto, se puede observar que ms all de lo expresado en el anterior prrafo, la evolucin
de aptitud en esta prueba fue inferior a la de la prueba nmero dos. Esto podra estar motivado por el
hecho de haber usado un conjunto de funciones reducido en esta prueba. Si bien las funciones aqu
utilizadas fueron las que forman parte de la solucin ptima, el hecho de que la programacin gentica
trabaje sobre soluciones probablemente incorrectas al problema dado, puede hacer que una mayor
diversidad de funciones incremente la probabilidad de obtencin de estrategias subptimas ms aptas.
6.5 Comparacin de resultados obtenidos
En la siguiente tabla se repiten los resultados obtenidos en las anteriores pruebas. Se muestra la cantidad de movimientos que cada estrategia subptima obtenida hasta aqu realiza sobre el carro para centrarlo
en x=0 con v=0 en cada uno de los cuatro casos de aptitud que fueron definidos. Excluimos en esta tabla al
resultado experimental nmero uno, debido a que en ste, a diferencia del resto, se utiliz un menor nmero
de individuos por poblacin y una menor cantidad de generaciones.
Tabla 13. Comparacin entre la estrategia ptima y los resultados obtenidos hasta el momento.
Como puede verse, el mejor resultado obtenido fue el correspondiente a la prueba experimental nmero
dos, en la cual se obtuvo una estrategia subptima de aptitud 5916. Fue en esta prueba donde se us el
conjunto de funciones ms extenso utilizado hasta aqu, compuesto por las 3 funciones que forman parte de
la solucin ptima al problema, ms otras 12 que no tienen utilidad aqu.
Si bien la estrategia ptima es mejor que la subptima del resultado nmero dos, ambas realmente no
son totalmente comparables dado que la ptima ubica el carro en una posicin en el intervalo [-1; 1] con una
velocidad en el intervalo [-1.5; 1.5] para estos cuatro casos de aptitud, mientras que la estrategia subptima
lo hace siempre en la posicin 0 con velocidad 0.
Sera muy interesante, por lo tanto, observar cmo se desempea el paradigma de la programacin
gentica si no exigimos que la estrategia subptima que automticamente genere detenga el carro exactamente en x=0 con v=0, sino que lo ubique con un valor de x en el intervalo [-1; 1] y con un valor de v en el
intervalo [-1.5; 1.5], tal como lo hace la estrategia ptima en los cuatro casos de aptitud hasta aqu tratados.
De ese modo, la comparacin entre la estrategia ptima y otra estrategia subptima retornada
como resultado del motor gentico, sera totalmente legtima.
Esta prueba fue realizada. A continuacin se mostrarn sus resultados en el resultado experimental
nmero cinco.
61
Tesinas
Tesinas
Como podemos ver, el motor se detuvo en la generacin 358 debido a la repeticin del mejor individuo
durante 215 generaciones sucesivas. El individuo (estrategia de control) resultante dio solucin a los cuatro
casos de aptitud que fueron definidos. Posee una aptitud igual a 2948, la cual es aproximadamente dos
veces mejor a la aptitud de la mejor estrategia obtenida en las pruebas anteriores (cuya aptitud
fue 5916).
6.6.4 Evolucin de aptitud a lo largo de las generaciones
A continuacin se muestra el grfico correspondiente:
63
Tesinas
Puede notarse que la aptitud conseguida en este caso es cercana a la de la estrategia ptima. Mediante
este ejemplo puede apreciarse el podero que tiene la programacin gentica para la generacin automtica
de programas sin intervencin de inteligencia humana.
Referencias
[1] John R. Koza. Genetic programming: on the programming of computers by means of natural
selection. MIT Press, 1992.
[2] Automatic Programming of Robots using Genetic Programming. John R. Koza, James P.
Rice. Stanford University, EE.UU., 1992.
http://www.cse.unr.edu/~monica/Courses/CS493790/PapersPDF/Koza_AutomaticProgramming.pdf
[3] Evolutionary Design of Fuzzy Logic Controllers. Carlos Troya, Enrique Alba, Jos Troya.
Departamento de lenguajes y ciencias de la computacin. Universidad de Mlaga, Espaa,
1996.
http://www.lcc.uma.es/~ccottap/papers/isic96flc.pdf
[4] Seminario: algoritmos genticos. Jorge Martn Martn, Diego Garca Morate. Departamento
de Informtica. Universidad de Valladolid, Espaa, 2004.
http://www.infor.uva.es/~calonso/IAI/TrabajoAlumnos/memoriaAG.pdf
[5] Stochastic Modelling and Genetic Algorithm-Based Optimal Control of Air Conditioning
Systems. H. N. Lam. Departamento de Ingeniera Mecnica. Universidad de Hong Kong,
64
Tesinas
China.
http://www.ibpsa.org/proceedings/bs93/papers/BS93%20435-441.PDF
[6] Sitios oficiales de John R. Koza.
http://www.genetic-programming.com
http://www.genetic-programming.org
[7] Algoritmos genticos y computacin evolutiva. Adam Marczyk. 2004.
http://the-geek.org/docs/algen/
[8] Nils J. Nilsson. Inteligencia Artificial: una nueva sntesis. Mc Graw Hill, Espaa, 1998.
[9] Timetabling experiments using genetic algorithms. Liviu Lalescu, Costin Badica.
Departamento de Ingeniera de Software. Universidad de Craiova, Rumania.
http://software.ucv.ro/~badica_costin/cercetare/papers/tainn03_p2.pdf
[10] Procesamiento de Imgenes Digitales. Universidad de Sevilla, Espaa, 2003.
http://www.us.es/gtocoma/pid/t0304/t0304.htm
[11] Autonomous Navigation Control of UAVs Using Genetic Programming. Sitio oficial de la
Armada de los Estados Unidos de Amrica.
http://www.nrl.navy.mil/content.php?P=04REVIEW197
[12] Cmputo evolutivo aplicado a la planificacin de tareas de visin. Enrique Dunn, Gustavo
Olague. Departamento de Ciencias de la Computacin, Divisin de Fsica Aplicada. Centro
de Investigacin Cientfica y de Educacin Superior de Ensenada, Baja California, Mjico,
2001.
http://www.minas.unalmed.edu.co/facultad/publicaciones/dyna/133/computo.pdf
[13] 36 Human-Competitive Results Produced by Genetic Programming.
http://www.genetic-programming.com/humancompetitive.html
Tesinas
de caracteres codificados en el alfabeto de cuatro letras de la naturaleza. Las cuatro bases nucletidas que
aparecen a lo largo de una molcula de ADN son la adenina (A), la citosina (C), la guanina (G) y la timina (T).
Esta secuencia de bases nucletidas constituyen el string del cromosoma o el genoma de un individuo
biolgico. Por ejemplo, el genoma humano contiene alrededor de 2.870.000.000 bases nucletidas.
Las molculas de ADN son capaces de reproducirse por s mismas. Adems, los substrings que contienen miles de bases nucletidas de la molcula de ADN son traducidas, utilizando el denominado cdigo
gentico, en las protenas y las enzimas que crean la estructura y que controlan la conducta en la clulas
biolgicas. Estas estructuras y conductas que se crean permiten a un individuo desarrollar tareas en su
ambiente, sobrevivir y reproducirse en diferentes tasas. Los cromosomas de la generacin descendente
contiene strings de bases nucletidas de sus padres de modo tal que dichos strings que lleven a una aptitud
superior sean transferidos a futuras generaciones de la poblacin en proporciones mayores. Ocasionalmente pueden ocurrir mutaciones en los cromosomas.
2 Qu son los algoritmos genticos?
Un algoritmo gentico es un algoritmo matemtico paralelo que transforma un conjunto (poblacin) de
objetos matemticos individuales (tpicamente strings de caracteres de longitud fija modelados en base a
los strings de cromosomas), cada uno de los cuales posee un valor de aptitud (fitness) asociado, en una
nueva poblacin (es decir, la prxima generacin) utilizando operaciones modeladas en base al principio
Darwiniano de reproduccin y supervivencia de los ms aptos y en base a las operaciones genticas que
ocurren en la naturaleza.
3. Terminologa gentica
Es necesario comprender el vocabulario utilizado en los algoritmos genticos para evitar confusiones:
El conjunto de posibles soluciones constituye una poblacin de individuos.
Cada individuo est representado por un cromosoma.
Cada cromosoma est conformado por una secuencia de parmetros o genes.
Cada gen se localiza en una posicin especfica del cromosoma, llamada locus.
Cada valor que puede tomar un gen constituye un allelo.
El conjunto de genes contenido en un cromosoma constituye un genotipo, el cual posee la informacin necesaria para construir un individuo o fenotipo.
Cada ciclo del procedimiento evolutivo constituye una generacin.
4. Ejemplo de utilizacin del algoritmo gentico
Antes de establecer el algoritmo bsico utilizado por los algoritmos genticos, y con el fin de afianzar la
comprensin de este tema y de comprender cmo actan los operadores genticos de cruce y de mutacin
en estos algoritmos, el autor de esta trabajo considera apropiado ilustrar el uso del algoritmo gentico con
un ejemplo muy simple consistente en un problema de optimizacin: encontrar la mejor estrategia de negocio para una cadena de cuatro restaurantes de hamburguesas. Para los objetivos de este ejemplo simple, la
estrategia para estos restaurantes consistir en realizar tres decisiones binarias:
Precio: el precio de las hamburguesas debe ser de 50 centavos o de 10 pesos?
Bebida: se tiene que servir bebida cola o vino con la hamburguesa?
Velocidad de servicio: el restaurante debe proveer un servicio sin prisa con mozos vestidos con
esmoquin o debe utilizar un servicio rpido compuesto por mozos vestidos con uniformes blancos?
4.1 Esquema de representacin del problema
El objetivo es encontrar la combinacin de estas tres variables de decisin que lleven al mayor beneficio.
Como hay tres de dichas variables, cada una de las cuales puede asumir dos valores posibles, sera muy
natural para este problema representar cada estrategia posible de negocio con un string de caracteres de
longitud L = 3 sobre un alfabeto de tamao K = 2. Para cada variable de decisin, un valor de 0 o 1 es
asignado a cada una de las dos posibles decisiones. El espacio de bsqueda de este problema consiste
entonces en 23 = 8 estrategias de negocio posibles. Queda as constituido el esquema de representacin
para este problema. La identificacin de un esquema de representacin apropiado es el primer paso hacia la
resolucin del problema.
La siguiente tabla muestra cuatro de las ocho posibles estrategias de negocios expresadas en el esquema de representacin recin descrito:
66
Tesinas
Tesinas
tico comienza, en la generacin 0 (la generacin aleatoria inicial), con una poblacin formada por individuos
creados en forma aleatoria. En este ejemplo, el tamao M de la poblacin es 4.
Para cada generacin para la cual se corre el algoritmo gentico, cada individuo en la poblacin es
probado contra el ambiente desconocido con el objetivo de obtener el valor de su aptitud en dicho ambiente.
En este ejemplo, la aptitud se denomina beneficio, pero tambin puede recibir otros nombres dependientes
del dominio, como por ejemplo beneficio, puntaje y valor de la funcin objetivo.
En la siguiente tabla se muestra la aptitud para cada uno de los M = 4 individuos de la poblacin aleatoria
inicial de este problema (para simplicidad, la aptitud de cada estrategia ha sido igualada al decimal equivalente del string binario que representa al cromosoma, de modo tal que el global ptimo sea $7):
Tesinas
Similarmente, el individuo 011 tiene una probabilidad de 0,25 de ser seleccionado para cada una de las
cuatro posiciones en la nueva poblacin (esperamos entonces que aparezca en slo una de ellas). La
estrategia 010 posee una probabilidad de 1/6 de ser seleccionada para cada una de las cuatro posiciones,
mientras que la estrategia 001 posee slo una probabilidad de 1/12. Por lo tanto, esperamos que 010
aparezca slo una vez en la nueva poblacin y que 001 est ausente en ella.
Si los cuatro strings son copiados en la nueva generacin del mismo modo que estos valores esperados,
la siguiente tabla muestra el resultado de aplicar la operacin Darwiniana de reproduccin proporcional a la
aptitud a la generacin 0 de esta poblacin inicial. Esta poblacin resultante suele denominarse mating
pool:
69
Tesinas
Tesinas
Al evaluar la aptitud de esta nueva poblacin, vemos que el mejor individuo de la generacin 1 tiene un
valor de aptitud de 7, mientras que el mejor individuo de la generacin 0 posea una aptitud de slo 6. El
cruzamiento hizo algo nuevo y, en este ejemplo, el nuevo individuo tiene una aptitud mayor que la de sus dos
padres.
Al comparar la nueva poblacin de la generacin 1 contra la anterior poblacin de la generacin 0,
encontramos lo siguiente:
La aptitud promedio de la poblacin se ha ampliado de 3 a 4.25.
El individuo ms apto de la poblacin increment su aptitud de 6 a 7.
El individuo menos apto de la poblacin increment su aptitud de 1 a 2.
Este ejemplo ilustra cmo el algoritmo gentico, usando las operaciones de reproduccin y de cruce,
puede crear una poblacin con una aptitud promedio incrementada y con individuos mejorados.
Como podemos observar, el cruzamiento permite realizar una bsqueda explotadora (en profundidad),
que permite explotar las mejores caractersticas de que dispone la poblacin actual. Se encarga de realizar
un intercambio estructurado de informacin.
4.4 Criterio de terminacin o parada
El algoritmo gentico luego ejecuta estas operaciones en forma iterativa sobre cada generacin de
individuos para producir nuevas generaciones hasta que cierto criterio de terminacin o parada es satisfecho. Este criterio a veces es expresado en trminos del nmero mximo de generaciones a ser ejecutadas.
Para problemas donde es posible encontrar una solucin perfecta, el algoritmo puede terminar cuando ese
individuo es encontrado.
En este ejemplo, la mejor estrategia de negocio en la nueva generacin (la 1) es:
vender hamburguesas a 50 centavos (en vez de 10 pesos),
servir bebida cola (en vez de vino), y
ofrecer servicio rpido (en vez de lento).
Por lo tanto, la estrategia 111, que produce 7 pesos en beneficios por semana, es la estrategia ptima.
Si sabemos que 7 pesos es el mximo global para el beneficio, entonces podemos terminar el algoritmo
gentico en la generacin 1 en este ejemplo.
4.5 Designacin de resultado
Un mtodo para la designacin de resultado para una ejecucin del algoritmo gentico es designar el
mejor individuo en la generacin actual en el momento de la terminacin como el resultado del algoritmo
gentico. Por supuesto que una ejecucin tpica del algoritmo gentico no terminar en la primera generacin como sucede en este ejemplo sencillo. Por lo general, las ejecuciones rondan las decenas, los cientos
o los miles de generaciones.
4.6 Operacin de mutacin
La operacin de mutacin es tambin usada en el algoritmo gentico convencional que opera sobre
strings de longitud fija. La frecuencia con la que se aplica dicha operacin es controlada por un parmetro
llamado probabilidad de mutacin, Pm. La mutacin es llevada a cabo con poca frecuencia durante el
trabajo del algoritmo gentico. Esta operacin es asexual en el sentido de que opera sobre slo un individuo.
El operador de mutacin se aplica gen a gen a todos los descendientes generados por cruzamiento. Se
genera un nmero aleatorio na por cada gen de cada descendiente. El allelo del gen respectivo es cambiado
slo si na d Pm. Si el alfabeto es binario, el carcter simplemente es complementado.
No hubo mutacin en el ejemplo anterior. Sin embargo, si el individuo 4 (010) hubiese sido elegido para
mutacin en la posicin 2, el resultado hubiese sido el string 000. Podemos ver entonces que la operacin
de mutacin posee el efecto de incrementar la diversidad gentica de la poblacin al crear el nuevo individuo
000.
La mutacin permite entonces desarrollar una bsqueda exploradora (a lo ancho), que se encarga de
explorar nuevos dominios en busca de mejores soluciones. Proporciona una garanta de accesibilidad para
todos los puntos del espacio de bsqueda.
La mutacin es una operacin secundaria que es potencialmente til para devolver la diversidad prdida
en una poblacin. Por ejemplo, en las generaciones tempranas de una ejecucin del algoritmo gentico, un
valor de 1 en una posicin particular de un string puede estar fuertemente asociado a una mejor performance. Esto implica que, comenzando con puntos aleatorios en el espacio de bsqueda, el valor 1 en esa
posicin puede producir un mejor valor de aptitud. Como consecuencia de una ms alta aptitud asociada
con un valor de 1 en esa posicin particular del string, el efecto de la operacin de reproduccin puede
eliminar la diversidad gentica al punto de que el valor 0 desaparezca en esa posicin para toda la poblacin.
71
Tesinas
Sin embargo, el ptimo global puede tener un 0 en esa posicin del string. Una vez que la bsqueda se
focaliza en la parte del espacio de bsqueda que realmente contiene el ptimo global, un valor de 0 en esa
posicin puede ser lo requerido para alcanzar el ptimo global. Esto es una forma de decir que el espacio de
bsqueda no es lineal. Esta situacin no es hipottica dado que casi todos los problemas en los cuales
podemos interesarnos no son lineales. La mutacin provee un camino para restaurar la diversidad gentica
perdida.
5. Diagrama de flujo del algoritmo gentico bsico
Los tres pasos en la ejecucin del algoritmo gentico que opera sobre strings de caracteres de longitud
fija pueden ser sintetizados del siguiente modo:
1. Crear en forma aleatoria una poblacin inicial de strings de caracteres de longitud fija.
2. Ejecutar iterativamente los siguientes subpasos sobre la poblacin de strings hasta que cierto criterio de
parada sea satisfecho:
a. Evaluar la aptitud de cada individuo en la poblacin.
b. Crear una nueva poblacin de strings aplicando por lo menos las primeras dos de las siguientes tres
operaciones (las operaciones son aplicadas sobre los strings individuales de la poblacin de acuerdo
a cierto criterio de seleccin):
i. Copiar strings existentes a la nueva poblacin.
ii. Crear dos nuevos strings recombinando genticamente al azar substrings elegidos de dos strings
existentes.
iii. Crear un nuevo string de un string existente mutando al azar el caracter situado en una determinada posicin del string original.
3. El mejor string que haya aparecido en cualquier generacin (es decir, el mejor individuo hasta el momento) es designado como el resultado del algoritmo gentico para la ejecucin. Este resultado puede
representar una solucin perfecta o aproximada para el problema.
La siguiente figura muestra un diagrama de flujo de estos pasos del algoritmo gentico convencional
operando sobre strings. El ndice i se refiere a un individuo en una poblacin de tamao M. La variable GEN
es el nmero de la generacin actual.
Tesinas
Existen numerosas variaciones menores sobre el algoritmo gentico bsico. Este diagrama de flujo es
meramente una versin. Por ejemplo, el nmero de veces que un operador gentico es ejecutado durante
una generacin es a veces determinado por un nmero explcito por cada generacin, en vez de determinado
probabilsticamente como lo muestra este diagrama.
Este diagrama tampoco muestra en forma explcita la creacin del mating pool, slo a los fines de
simplificar la representacin.
6. Algoritmos genticos como un mtodo dbil
Es importante notar que el algoritmo gentico trabaja de un modo independiente del dominio sobre los
strings de caracteres de longitud fija de la poblacin. Por este motivo, constituyen un mtodo dbil. El
algoritmo gentico busca el espacio de strings en busca de los ms aptos. Para guiar esta bsqueda, slo
utiliza valores numricos de aptitud asociados con los puntos explcitamente probados del espacio de
bsqueda. Sin importar el dominio especfico del problema, el algoritmo gentico lleva a cabo su bsqueda
ejecutando las mismas operaciones generacin tras generacin.
El usuario puede utilizar conocimiento especfico del dominio para seleccionar el esquema de representacin y la medida de aptitud, como as tambin puede utilizar juicio adicional para seleccionar el tamao de
la poblacin, el nmero de generaciones, los parmetros que controlan la probabilidad de ejecutar varias
operaciones, el criterio para terminar una ejecucin, y el mtodo para designar un resultado. Todas estas
opciones pueden influenciar cuan bien trabaja el algoritmo gentico en un dominio particular. De todos
modos, el principal punto es que el algoritmo gentico es un medio independiente del dominio para buscar
rpidamente puntos de alta aptitud en un espacio de bsqueda desconocido.
7. Cuatro pasos principales en la utilizacin de los algoritmos genticos
Los cuatro pasos principales para usar el algoritmo gentico convencional sobre strings de caracteres de
longitud fija son:
Determinar el esquema de representacin: el esquema de representacin es un mapeo que expresa
cada posible punto del espacio de bsqueda del problema como un string de caracteres de longitud fija.
La especificacin de dicho esquema requiere seleccionar la longitud L del string y el tamao K del
alfabeto (el cual por lo general es binario). Seleccionar el mapeo entre los cromosomas y los puntos del
espacio de bsqueda es a veces fcil y es a veces muy difcil. Seleccionar una representacin que
facilite la solucin del problema a travs del algoritmo gentico generalmente requiere un conocimiento
considerable del problema y buen juicio.
Determinar la medida de aptitud: la medida de aptitud asigna un valor de aptitud o fitness a cada string de
caracteres de longitud fija en la poblacin. La medida de aptitud es generalmente inherente al problema
y debe ser capaz de evaluar cada string que encuentre.
Determinar los parmetros y variables que controlan el algoritmo: los parmetros primarios para controlar
el algoritmo gentico son el tamao de la poblacin (M) y el mximo nmero de generaciones a ejecutar
(G). Los parmetros secundarios, tales como pr, pc y pm, controlan las frecuencias de reproduccin,
cruce y mutacin, respectivamente.
Determinar el criterio de terminacin de la ejecucin y el modo de designar un resultado: esto ya fue
nombrado ms arriba en este apndice.
Una vez que estos pasos han sido completados, el algoritmo gentico puede ser ejecutado.
8. Problemas asociados a los algoritmos genticos
8.1 Problemas de convergencia estancada y de convergencia prematura
Es crucial mantener en todo momento una poblacin de tamao adecuado y de adecuada diversidad de
individuos y bondades, a fin de evitar los dos enemigos de la convergencia global: la convergencia estancada
y la convergencia prematura.
La necesidad de que haya diversidad de individuos es fcil de entender: con poca variedad de individuos
hay poca variedad de esquemas, a causa de ello el operador de cruce pierde casi por completo la capacidad
de intercambio de informacin til entre individuos, y en definitiva, la bsqueda se estanca. Es en ese
momento cuando se da la denominada convergencia estancada.
En algn momento puede ocurrir que un individuo o un grupo de ellos obtengan una aptitud notablemente
superior a la de los dems. Esto es especialmente probable en las fases tempranas de la evolucin, en las
cuales de entre una poblacin de individuos mediocres suele surgir un buen candidato por aplicacin de los
operadores genticos. En tal circunstancia existe el riesgo de que se produzca una evolucin en avalancha:
al incrementar los individuos ms aptos su presencia en la poblacin, por ser sta finita la diversidad dismi73
Tesinas
nuye, ello hace que en la siguiente generacin se favorezca an ms a los individuos ms aptos hasta que
stos terminan dominando por completo la poblacin. A esto se le conoce como el fenmeno de los superindividuos. Habitualmente ocurre que tales superindividuos slo son los ms aptos en cierto momento, pero
no los ms aptos absolutos (tngase en cuenta que la falta de diversidad estanca la bsqueda), lo que en
ltima instancia provoca una convergencia prematura del algoritmo gentico, habitualmente hacia un subptimo. La nica circunstancia en la que este fenmeno es tolerable e incluso deseable es en las fases tardas
de la evolucin, cuando el algoritmo gentico ha localizado correctamente la solucin ptima, pero nunca
antes.
Como solucin a este problema, se puede demostrar que, adicionando al ciclo evolutivo la imposicin de
considerar vlido un ciclo si y slo si hay una mejora absoluta en la bondad media de la poblacin (requisito
de contractividad), la convergencia est siempre asegurada, independientemente de la poblacin inicial. En
caso de que no produzca la mejora, ese ciclo no se cuenta.
De lo anterior surge que, si bien la convergencia puede ser independiente de la poblacin inicial, la
velocidad de convergencia puede ser fuertemente afectada por la misma (adems de la influencia de los
valores de los otros parmetros del algoritmo).
8.2 Problemas de representacin
La representacin es un factor clave en el trabajo del algoritmo gentico debido a que estos algoritmos
directamente manipulan una representacin codificada del problema y porque el esquema de representacin
puede limitar severamente la ventana a travs de la cual el sistema observa su mundo. El algoritmo gentico
convencional que opera sobre strings de longitud fija es capaz de resolver muchos problemas. Sin embargo,
el uso de dichos strings tambin deja algunos temas sin resolucin.
En muchos problemas, la representacin ms natural de una solucin es un programa de computadora
jerrquico en lugar de un string de caracteres de longitud fija. Por lo general, el tamao y la forma de dicho
programa que resolver el problema dado no son conocidos con anticipacin, por lo que el programa debe
tener el potencial para cambiar su tamao y su forma. Es difcil y antinatural representar programas de
computadora de tamaos y formas dinmicamente variables mediante strings de caracteres de longitud fija.
Los esquemas de representacin basados en dichos strings no proveen la estructura jerrquica que es
central para la organizacin de programas de computadora (en programas y subrutinas) y para la organizacin de conducta (en tareas y subtareas). Tampoco proveen una forma conveniente de representar procedimientos computacionales arbitrarios ni proveen mecanismos para incorporar iteracin o recursividad cuando
estas capacidades son deseables o necesarias para resolver un problema.
Adems, estos esquemas de representacin no poseen variabilidad dinmica, ya que la seleccin inicial
de la longitud del string limita desde el comienzo el nmero de estados internos del sistema, limitando as
lo que el sistema puede aprender.
As llegamos a la conclusin de que la predeterminacin del tamao y la forma de las soluciones y la
preidentificacin de componentes particulares de las soluciones constituyen un obstculo para el aprendizaje en sistemas computacionales.
Es aqu donde la programacin gentica nace como una alternativa de solucin para este problema.
74
Tesinas
75