Vous êtes sur la page 1sur 39

ALGORITMOS GENTICOS---------------------------------------------------------------------------------------3

1 BSQUEDA, OPTIMIZACIN Y APRENDIZAJE--------------------------------------------------------------------3


1.1 Mtodo analtico-----------------------------------------------------------------------------------------------7
1.2 Mtodos exhaustivos, aleatorios y heursticos------------------------------------------------------------8
1.3 Hillclimbing,----------------------------------------------------------------------------------------------------8
1.4 Recocimiento simulado---------------------------------------------------------------------------------------9
1.5 Tcnicas basadas en poblacin------------------------------------------------------------------------------9
1.6 Tcnicas experimentales--------------------------------------------------------------------------------------9
2 LA EVOLUCIN----------------------------------------------------------------------------------------------------10
2.1 Mecanismos de cambio en la evolucin-------------------------------------------------------------------13
Seleccin natural:----------------------------------------------------------------------------------------13
Deriva gnica:--------------------------------------------------------------------------------------------14
Mutacin:--------------------------------------------------------------------------------------------------14
Poliploida:------------------------------------------------------------------------------------------------14
Recombinacin:------------------------------------------------------------------------------------------15
Flujo gentico:--------------------------------------------------------------------------------------------15
3 ALGORITMO GENTICO SIMPLE.---------------------------------------------------------------------------------15
3.1 Introduccin---------------------------------------------------------------------------------------------------16
3.2 Anatoma de un algoritmo gentico simple---------------------------------------------------------------17
3.3 Codificacin de las variables-------------------------------------------------------------------------------19
EJEMPLO 1:-------------------------------------------------------------------------------------------------------19
EJEMPLO2:-----------------------------------------------------------------------------------------------------------19
3.4 Algoritmo gentico propiamente dicho--------------------------------------------------------------------21
Tamao de la poblacin:--------------------------------------------------------------------------------------21
Condicin de terminacin:------------------------------------------------------------------------------------22
3.5 Evaluacin y seleccin--------------------------------------------------------------------------------------22
Basado en el rango:--------------------------------------------------------------------------------------------23
Rueda de ruleta:------------------------------------------------------------------------------------------------24
Seleccin de torneo:-------------------------------------------------------------------------------------------24
3.6 Crossover------------------------------------------------------------------------------------------------------24
Crossover n-puntos:--------------------------------------------------------------------------------------------25
Crossover uniforme:-------------------------------------------------------------------------------------------26
Crossover especializados:------------------------------------------------------------------------------------26
3.7 Mutacin-------------------------------------------------------------------------------------------------------27
3.8 Otros operadores---------------------------------------------------------------------------------------------27
3.8.1 Cromosomas de longitud variable--------------------------------------------------------------------28
3.8.2 Operadores de nicho (ecolgico)----------------------------------------------------------------------28
3.8.3 Operadores especializados-----------------------------------------------------------------------------29
Zap:-----------------------------------------------------------------------------------------------------------29
Creep:---------------------------------------------------------------------------------------------------------29
Transposicin:-----------------------------------------------------------------------------------------------30
3.8.4 Aplicando operadores genticos-----------------------------------------------------------------------30
EJEMPLO SIMPLE DE ALGORITMOS GENTICO:------------------------------------------------------31
EJEMPLO COMPLETO DE UN ALGORITMO GENTICO------------------------------------------------------------34
1.- Inicializacin:-------------------------------------------------------------------------------------------------35
2.- Evaluacin:----------------------------------------------------------------------------------------------------37
3.- Seleccin:------------------------------------------------------------------------------------------------------37
4.- Reproduccin:-------------------------------------------------------------------------------------------------38
5.- Entrenamiento:------------------------------------------------------------------------------------------------39
CONCLUSIN DEL TRABAJO:-------------------------------------------------------------------------------41
Aplicaciones de bsqueda y optimizacin :-------------------------------------------------------------------41

Informtica evolutiva
Aprendizaje automtico:-----------------------------------------------------------------------------------------42
DIRECCIONES DE CONSULTA:------------------------------------------------------------------------------42

Algoritmos Genricos
Algoritmos Genticos

ALGORITMOS GENTICOS
1 Bsqueda, optimizacin y aprendizaje
En realidad, los algoritmos de bsqueda abarcan prcticamente todo
algoritmo para resolver problemas automticamente. Habitualmente, en
Informtica se habla de bsqueda cuando hay que hallar informacin,
siguiendo un determinado criterio, dentro de un conjunto de datos
almacenados; sin embargo, aqu nos referiremos a otro tipo de algoritmos de
bsqueda, a saber, aquellos que, dado el espacio de todas las posibles
soluciones a un problema, y partiendo de una solucin inicial, son capaces de
encontrar la solucin mejor o la nica. El ejemplo clsico de este tipo de
problemas se encuentra en los rompecabezas y juegos que se suelen abordar
en inteligencia artificial. Un ejemplo es el problema de las 8 reinas, en el cual
se deben de colocar 8 reinas en un tablero de ajedrez de forma que ninguna
amenace a otra; o las torres de Hanoi, en el que, dada una serie de discos de
radio decreciente apilados, hay que apilarlos en otro sitio teniendo en cuenta
que no se puede colocar ningn disco encima de otro de radio inferior.

Este tipo de problemas es fcil de abordar usando algoritmos "clsicos",


como por ejemplo algoritmos recursivos o de tipo voraz (greedy), sin embargo,
hay otro tipo de problemas mucho ms complicados, sobre todo los NP-
completos (aquellos cuya complejidad crece con el tamao del problema de
forma exponencial) que no pueden ser abordados de esta forma. Algunos
ejemplos de estos problemas seran los siguientes:

8-puzzle, en el cual, como se muestra en la ilustracin 1, a partir


de una configuracin inicial donde hay 8 cuadros desordenados,
hay que llegar a otra configuracin donde estn ordenados,
usando para el intercambio cualquier posicin que se halle vaca.
El problema de bsqueda en este caso consiste en encontrar un
camino que vaya desde la configuracin inicial hasta la final.

1
Algoritmos Genticos

Problema del viajante, en el cual, dadas una serie de ciudades


separadas por distancias diferentes, hay que calcular un camino
tal que la distancia total recorrida sea mnima, y no que no repita
ninguna ciudad. Este problema es NP-completo, y es
paradigmtico de este tipo de problemas.

Mastermind: En este juego, que se muestra en la figura 2, un


jugador debe de averiguar una combinacin de chinchetas de
colores oculta por el otro jugador, y lo hace haciendo suposiciones
sobre la combinacin, y siendo contestado con una chincheta
pequea y blanca por cada acierto de color, y una negra por cada
acierto de color o posicin. Slo una solucin (entre 6 4) es la
correcta, pero el jugador que ha puesto la combinacin oculta va
orientando la bsqueda mediante las chinchetas blancas o
negras. El problema se hace exponencialmente ms difcil cuando
se aumenta el nmero de colores, y la longitud de la combinacin.

2
Algoritmos Genticos

En muchos casos, la bsqueda est guiada por una funcin que indica lo
buena que es esa solucin, o el coste de la misma, o lo cerca que se est de la
solucin final, si es que se conoce; el problema se convierte entonces en un
problema de optimizacin, es decir, encontrar la solucin que maximiza la
funcin objetivo, de evaluacin o fitness o minimiza el coste. En trminos
formales, dada una funcin F de n variables x1,x2,..., xn, optimizar la funcin
consiste en encontrar la combinacin de valores de xi tales que F(x1, x2,..., xn) =
Mximo. Se puede hablar de maximizar en vez de minimizar sin perder
generalidad, ya que maximizar F equivale a minimizar -F.

Generalmente, los problemas de optimizacin son tratados por la rama


de las matemticas denominada Investigacin Operacional, aunque
prcticamente todas las ramas de la ciencia y la ingeniera necesitan tratar con
problemas de optimizacin en algn momento. Por ejemplo, en teora de
juegos se trata de maximizar la probabilidad de ganar, y en reconocimiento de
patrones de minimizar el error de clasificacin de un patrn desconocido (como
una imagen de satlite digitalizada, o un canal procesado de una seal de un
electroencefalograma).

El problema de optimizacin no siempre est formulado de una forma


tan clara. En muchos casos, la forma de la funcin F no se conoce, y debe de
aproximarse mediante polinomios o combinaciones de funciones conocidas;
habra entonces que hallar los coeficientes de los polinomios o funciones que
hacen que la funcin calculada se acerque lo ms posible a la funcin objetivo.
Cuando el problema se reduce a calcular una serie de coeficientes, se habla de
optimizacin paramtrica.

En control industrial se plantean tambin problemas de optimizacin:


cmo mantener el funcionamiento de una mquina dentro de su rgimen
ptimo, por ejemplo. Cada mquina suele tener una serie de parmetros
variables, y lo que se desea optimizar es habitualmente la calidad del producto
final o la rapidez a la hora de producirlo.

3
Algoritmos Genticos

En algunos casos, la funcin de evaluacin ni siquiera existe, o no es


esttica, sino que viene dada por el entorno de la solucin. Por ejemplo, en un
programa para jugar al Othello o reversi, el fitness vendr dada por su
puntuacin a la hora de jugar con los dems jugadores. Un autor, Pollack hizo
enfrentarse a unas estrategias de juego con otras, de forma que segn van
evolucionando, el fitness va variando. Este tipo de optimizacin se suele
encontrar en problemas de vida artificial y el Dilema del Prisionero, usado para
modelizar interacciones sociales.

El dilema del prisionero iterado es un juego en el cual se enfrentan dos


jugadores, que representan dos presos en una crcel, que se han puesto de
acuerdo para fugarse; en cada iteracin, cada jugador decide si se chiva al
director de la crcel, o coopera con el otro y se escapa. Si los dos cooperan,
reciben una recompensa de 3; si uno de los dos se chiva, recibe todos los
privilegios de un preso bueno en la forma de una recompensa de 5, y si los dos
se chivan, reciben una recompensa, pero mucho menor, como aparece en la
tabla. Si este juego se repite por un nmero finito y conocido de iteraciones, la
estrategia ptima es siempre chivarse, porque consigues una recompensa
asegurada de 1*nmero de jugadas, sin embargo, a largo plazo la estrategia
ptima es cooperar, porque la recompensa es de 3. Con este juego se han
hecho muchas variantes; un algoritmo debera de crear una estrategia de forma
que maximice la recompensa de un jugador.

En los problemas de Biologa que la Vida Artificial trata de resolver


mediente simulaciones, el fitness viene siempre dado por el entorno,
acercndose a la definicin biolgica de fitness, que no es otra cosa que el
nmero posible de descendientes de un individuo (que no siempre es el mismo
que el nmero real de descendientes).

En algunos se trata de optimizar F(C), donde C es una combinacin de


diferentes elementos que pueden tomar un nmero finito de valores; pueden
ser combinaciones con o sin repeticin, o incluso permutaciones, como en el

4
Algoritmos Genticos

caso del problema del viajante; en este caso se denominan problemas de


optimizacin combinatoria.

No siempre, el espacio de bsqueda completo contiene soluciones


vlidas; en algunos casos, los valores de las variables se sitan dentro de un
rango, ms all del cual la solucin es invlida. Se trata entonces de un
problema de optimizacin con restricciones. En este caso, el problema consiste
en maximizar F(xi) dentro del subespacio. Un ejemplo de este problema es el
de optimizacin de los horarios de clase de una institucin de enseanza; hay
que disponerla de forma que un profesor no deba estar en dos sitios a la vez
(un alumno, puede), que el nmero de horas libres entre clases sea mnimo, y
que se cumplan las preferencias de todos los implicados. En este caso, la
optimizacin se reduce a cumplir todas las restricciones.

Otro ejemplo clsico es el denominado job-shop scheduling, o


disposicin de una lnea de montaje, en donde cada componente de la lnea
debe de estar ocupado el mayor tiempo posible y cumplir restricciones de
tiempos de entrega,

Hay muchas formar de abordar problemas de optimizacin. Algunas de


ellas se vern en las siguientes secciones

1.1 Mtodo analtico

Si existe la funcin F, es de una sola variable, y se puede derivar dos


veces en todo su rango, se pueden hallar todos sus mximos, sean locales o
globales. Sin embargo, la mayora de las veces no se conoce la forma de la
funcin F, y si se conoce, no tiene porqu ser diferenciable ni siquiera una vez.
Incluso el tratamiento analtico para funciones de ms de 1 variable es
complicado.

1.2 Mtodos exhaustivos, aleatorios y heursticos

Los mtodos exhaustivos recorren todo el espacio de bsqueda,


quedndose con la mejor solucin, y los heursticos utilizan reglas para eliminar
zonas del espacio de bsqueda consideradas "poco interesantes". Algunos

5
Algoritmos Genticos

algoritmos de bsqueda, como el MiniMax, son de este tipo; se suelen utilizar


en juegos para examinar y podar el rbol de posibilidades a partir de la jugada
actual; Deep Blue, por ejemplo, juega de esta forma.

En los mtodos aleatorios, se va muestreando el espacio de bsqueda


acotando las zonas que no han sido exploradas; se escoge la mejor solucin, y,
adems, se da el intervalo de confianza de la solucin encontrada.

1.3 Hillclimbing

En estos mtodos se va evaluando la funcin en uno o varios puntos,


pasando de un punto a otro en el cual el valor de la evaluacin es superior. La
bsqueda termina cuando se ha encontrado el punto con un valor mximo. En
general, un algoritmo escalador funciona de la forma siguiente

Estos algoritmos toman muchas formas diferentes, segn el nmero de


dimensiones del problema solucin, el valor del incremento y en la direccin en
la cual se tiene que dar. En algunos casos se utiliza el llamado Mtodo
Montecarlo (por el casino), en el cual se escoge la nueva solucin de forma
aleatoria.

El principal problema de este tipo de algoritmos es que se quedan en el


pico ms cercano a la solucin inicial; adems, no son vlidos para problemas
multimodales, en los cuales la funcin de coste tiene varios ptimos posibles.

1.4 Recocimiento simulado

Conocido como Simulated Annealing, en ingls, el nombre viene de la


forma como se consiguen ciertas aleaciones en forja; una vez fundido el metal,
se va enfriando poco a poco, para conseguir finalmente la estructura cristalina
correcta, que haga que la aleacin sea dura y resistente.

Este algoritmo se podra calificar como escalador estocstico, y su


principal objetivo es evitar los mnimos locales en los que suelen caer los
escaladores. Para ello, no siempre acepta la solucin ptima, sino que a veces

6
Algoritmos Genticos

puede escoger una solucin menos ptima, siempre que la diferencia entre
ambos tenga un nivel determinado, que depende de un parmetro denominado
temperatura (seguimos con la metfora). El algoritmo de recocimiento simulado
es el siguiente:

1.5 Tcnicas basadas en poblacin

Este tipo de tcnicas pueden ser versiones de cualquiera de las


anteriores, pero en vez de tener una sola solucin, que se va alterando hasta
obtener el ptimo, se persigue el ptimo cambiando varias soluciones; de esta
forma es ms fcil escapar de los mnimos locales tan temidos. Entre estas
tcnicas se hallan la mayora de los algoritmos evolutivos, que es donde vamos
a centrar nuestro trabajo.

1.6 Tcnicas experimentales

En algunos casos, solo el ojo humano es capaz de evaluar lo apropiada


que es una solucin a un tema determinado, por ejemplo, en problemas de
diseo o de calidad. En este caso, se pueden utilizar cualquiera de las tcnicas
expuestas anteriormente, pero a la hora de evaluar una solucin, un experto o
experta tendr que darle una puntuacin. Por ejemplo, es lo que se usa cuando
uno se prueba ropa para dar con la combinacin correcta de colores y estilos.

2 La evolucin
Despus de ver el tipo de problemas a los que se pueden aplicar los
algoritmos evolutivos, se va a estudiar qu es lo que inspira dichos algoritmos,
la Naturaleza, ese fenmeno natural denominado evolucin, y si optimiza o no.

La teora de la evolucin (que no es tal teora, sino una serie de hechos


probados), fue descrita por Charles Darwin. La hiptesis de Darwin, presentada
junto con Wallace, que lleg a las mismas conclusiones independientemente,
es que pequeos cambios heredables en los seres
vivos y la seleccin son los dos hechos que provocan el
cambio en la Naturaleza y la generacin de nuevas
especies. Pero Darwin desconoca cual es la base

7
Algoritmos Genticos

de la herencia, pensaba que los rasgos de un ser vivo eran como un fluido, y
que los "fluidos" de los dos padres se mezclaban en la descendencia; esta
hiptesis tena el problema de que al cabo de cierto tiempo, una poblacin
tendra los mismos rasgos intermedios.

Fue Mendel quien descubri que los caracteres se


heredaban de forma discreta, y que se tomaban del
padre o de la madre, dependiendo de su carcter
dominante o recesivo. A estos caracteres que podan
tomar diferentes valores se les llamaron genes, y a los
valores que podan tomar, alelos. En realidad, las
teoras de Mendel, que trabaj en total aislamiento, se
olvidaron y no se volvieron a redescubrir hasta
principios del siglo XX. Adems, hasta 1930 el geneticista ingls Robert
Aylmer no relacion ambas teoras, demostrando que los genes mendelianos
eran los que proporcionaban el mecanismo necesario para la evolucin.

Ms o menos por la misma poca, el bilogo alemn Walther Flemming


describi los cromosomas, como ciertos filamentos en los que se agregaba la
cromatina del ncleo celular durante la divisin; poco ms adelante se

8
Algoritmos Genticos

descubri que las clulas de cada especie viviente tenan un nmero fjo y
caracterstico de cromosomas.

Y no fue hasta los aos 50, cuando Watson y Crick descubrieron que la
base molecular de los genes est en el ADN, cido desoxirribonucleico. Los
cromosomas estn compuestos de ADN, y por tanto los genes estn en los
cromosomas.La macromolcula de ADN est compuesta por bases pricas y
pirimidnicas, la adenina, citosina, guanina y timina. La combinacin y la
secuencia de estas bases forma el cdigo gentico, nico para cada ser vivo.
Grupos de 3 bases forman un codon, y cada codon codifica un aminocido (el
que exprese ese aminocido o no depende de otros factores); el cdigo
gentico codifica todas las proteinas que forman parte de un ser vivo. Mientras
que al cdigo gentico se le llama genotipo, al cuerpo que construyen esas
protenas, modificado por la presin ambiental, la historia vital, y otros
mecanismos dentro del cromosoma, se llama fenotipo.

9
Algoritmos Genticos

Proyectos como el del Genoma Humano tratan de identificar cules son


estos genes, sus posiciones, y sus posibles alteraciones, que habitualmente
conducen a enfermedades.

Todos estos hechos forman hoy en da la teora del neo-darwinismo, que


afirma que la historia de la mayora de la vida est causada por una serie de
procesos que actan en y dentro de las poblaciones: reproduccin, mutacin,
competicin y seleccin.

La evolucin se puede definir entonces como cambios en el pool o


conjunto gentico de una poblacin.

Un tema polmico, con opiniones variadas dependiendo de si se trata de


informticos evolutivos o de bilogos o geneticistas, es si la evolucin optimiza
o no.

Segn los informticos evolutivos, la evolucin optimiza, puesto que


va creando seres cada vez ms perfectos, cuya cumbre es el hombre; adems,
indicios de esta optimizacin se encuentran en el organismo de los animales,
desde el tamao y tasa de ramificacin de las arterias, diseada para
maximizar flujo, hasta el metabolismo, que optimiza la cantidad de energa
extrada de los alimentos.

Sin embargo, los geneticistas y bilogos evolutivos afirman que la


evolucin no optimiza, sino que adapta y optimiza localmente en el espacio y el
tiempo; evolucin no significa progreso. Un organismo ms evolucionado
puede estar en desventaja competitiva con uno de sus antepasados, si se
colocan en el ambiente del ltimo.

2.1 Mecanismos de cambio en la evolucin

Estos mecanismos de cambio sern necesarios para entender los


algoritmos evolutivos, pues se trata de imitarlos para resolver problemas de
ingeniera; por eso merece la pena conocerlos en ms profundidad. Los

10
Algoritmos Genticos

mecanismos de cambio alteran la proporcin de alelos de un tipo determinado


en una poblacin, y se dividen en dos tipos: los que disminuyen la variabilidad,
y los que la aumentan.

Los principales mecanismos que disminuyen la variabilidad son los


siguientes:

SELECCIN NATURAL:

Los individuos que tengan algn rasgo que los haga menos vlidos para
realizar su tarea de seres vivos, no llegarn a reproducirse, y, por tanto, su
patrimonio gentico desaparecer del pool; algunos no llegarn ni siquiera a
nacer. Esta seleccin sucede a muchos niveles: competicin entre miembros
de la especie (intraespecfica), competicin entre diferentes especies, y
competicin predador-presa, por ejemplo. Tambin es importante la seleccin
sexual, en la cual las hembras eligen el mejor individuo de su especie
disponible para reproducirse.

DERIVA GNICA:

El simple hecho de que un alelo sea ms comn en la poblacin que


otro, causar que la proporcin de alelos de esa poblacin vaya aumentando
en una poblacin aislada, lo cual a veces da lugar a fenmenos de especiacin,
por ejemplo, por el denominado efecto fundador.

Otros mecanismos aumentan la diversidad, y suceden generalmente


en el mbito molecular. Los ms importantes son:

MUTACIN:

La mutacin es una alteracin del cdigo gentico, que puede suceder


por mltiples razones. En muchos casos, las mutaciones las elimina la ADN-
polimerasa, la navaja del ejrcito suizo del ADN, que igual duplica, que corrige,
que desinvierte un cacho gentico mal colocado. En muchos otros casos, las

11
Algoritmos Genticos

mutaciones, que cambian un nucletido por otro, son letales, y los individuos ni
siquiera llegan a desarrollarse, pero a veces se da lugar a la produccin de una
protena que aumenta la supervivencia del individuo, y que, por tanto, es
pasada a la descendencia. Las mutaciones son totalmente aleatorias, y son el
mecanismo bsico de generacin de variedad gentica. A pesar de lo que se
piensa habitualmente, la mayora de las mutaciones ocurren de forma natural,
aunque existen sustancias mutagnicas que aumentan su frecuencia.

POLIPLOIDA:

Mientras que las clulas normales poseen dos copias de cada


cromosoma, y las clulas reproductivas una (haploides), puede suceder por
accidente que alguna clula reproductiva tenga dos copias; si se logra
combinar con otra clula diploide o haploide dar lugar a un ser vivo con varias
copias de cada cromosoma. La mayora de las veces, la poliploida da lugar a
individuos con algn defecto (por ejemplo, el tener 3 copias del cromosoma 21
da lugar al mongolismo), pero en algunos casos se crean individuos viables. Un
caso de mutacin fue el que sufri (o disfrut) el mosquito Culex pipiens, en el
cual se duplic un gen que generaba una enzima que rompa los
organofosfatos, componentes habituales de los insecticidas;

RECOMBINACIN:

Cuando las dos clulas sexuales, o gametos, una masculina y otra


femenina se combinan, los cromosomas de cada una tambin lo hacen,
intercambindose genes, que a partir de ese momento pertenecern a un
cromosoma diferente. A veces tambin se produce traslocacin dentro de un
cromosoma; una secuencia de cdigo se elimina de un sitio y aparece en otro
sitio del cromosoma, o en otro cromosoma.

FLUJO GENTICO:

O intercambio de material gentico entre seres vivos de diferentes


especies. Normalmente se produce a travs de un vector, que suelen ser virus
o bacterias; estas incorporan a su material gentico genes procedentes de una

12
Algoritmos Genticos

especie a la que han infectado, y cuando infectan a un individuo de otra


especie pueden transmitirle esos genes a los tejidos generativos de gametos.

En resumen, la seleccin natural acta sobre el fenotipo y suele


disminuir la diversidad, haciendo que sobrevivan solo los individuos ms aptos
(aunque esta frase, bien mirada, es una redundancia: Sobreviven los mejores
o son los mejores porque sobreviven?); los mecanismos que generan
diversidad y que combinan caractersticas actan habitualmente sobre el
genotipo.

3 Algoritmo gentico simple.


3.1 Introduccin

John Holland desde pequeo, se preguntaba cmo logra la naturaleza,


crear seres cada vez ms perfectos. No saba la respuesta, pero tena una
cierta idea de como hallarla: tratando de hacer pequeos modelos de la
naturaleza, que tuvieran alguna de sus caractersticas, y ver cmo funcionaban,
para luego extrapolar sus conclusiones a la totalidad.

Fue a principios de los 60, en la Universidad de Michigan en Ann Arbor,


donde, dentro del grupo Logic of Computers, sus ideas comenzaron a
desarrollarse y a dar frutos. Y fue, adems, leyendo un libro escrito por un
bilogo evolucionista, R. A. Fisher, titulado La teora gentica de la seleccin
natural, como comenz a descubrir los medios de llevar a cabo sus propsitos
de comprensin de la naturaleza. De ese libro aprendi que la evolucin era
una forma de adaptacin ms potente que el simple aprendizaje, y tom la
decisin de aplicar estas ideas para desarrollar programas bien adaptados para
un fin determinado.

En esa universidad, Holland imparta un curso titulado Teora de


sistemas adaptativos. Dentro de este curso, y con una participacin activa por
parte de sus estudiantes, fue donde se crearon las ideas que ms tarde se
convertiran en los algoritmos genticos.

13
Algoritmos Genticos

Por tanto, cuando Holland se enfrent a los algoritmos genticos, los


objetivos de su investigacin fueron dos:

imitar los procesos adaptativos de los sistemas naturales, y

disear sistemas artificiales (normalmente programas) que retengan los


mecanismos importantes de los sistemas naturales.

Unos 15 aos ms adelante, David Goldberg, actual delfn de los


algoritmos genticos, conoci a Holland, y se convirti en su estudiante.
Goldberg era un ingeniero industrial trabajando en diseo de pipelines, y fue
uno de los primeros que trat de aplicar los algoritmos genticos a problemas
industriales. Aunque Holland trat de disuadirle, porque pensaba que el
problema era excesivamente complicado como para aplicarle algoritmos
genticos, Goldberg consigui lo que quera, escribiendo un algoritmo gentico
en un ordenador personal Apple II. Estas y otras aplicaciones creadas por
estudiantes de Holland convirtieron a los algoritmos genticos en un campo con
base suficiente aceptado para celebrar la primera conferencia en 1985, ICGA
85.

3.2 Anatoma de un algoritmo gentico simple

Los algoritmos genticos son mtodos sistemticos para la resolucin de


problemas de bsqueda y optimizacin que aplican a estos los mismos
mtodos de la evolucin biolgica: seleccin basada en la poblacin,
reproduccin sexual y mutacin.

Los algoritmos genticos son mtodos de optimizacin, que tratan de


resolver el mismo conjunto de problemas que se ha contemplado
anteriormente, es decir, el objetivo es hallar (xi,...,xn) tales que F(xi,...,xn) sea
mximo.

14
Algoritmos Genticos

En un algoritmo gentico, tras parametrizar el problema en una serie de


variables, (xi,...,xn) se codifican en un cromosoma.

Todos los operadores utilizados por un algoritmo gentico se aplicarn


sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo
gentico va implcito el mtodo para resolver el problema; son slo parmetros
de tal mtodo los que estn codificados, a diferencia de otros algoritmos
evolutivos como la programacin gentica.

Hay que tener en cuenta que un algoritmo gentico es independiente del


problema, lo cual lo hace un algoritmo robusto, por ser til para cualquier
problema, pero a la vez dbil, pues no est especializado en ninguno.

Las soluciones codificadas en un cromosoma compiten para ver cul


constituye la mejor solucin (aunque no necesariamente la mejor de todas las
soluciones posibles).

El ambiente, constituido por las otras camaradas soluciones, ejercer


una presin selectiva sobre la poblacin, de forma que slo los mejor
adaptados (aquellos que resuelvan mejor el problema) sobrevivan o leguen su
material gentico a las siguientes generaciones, igual que en la evolucin de
las especies.

La diversidad gentica se introduce mediante mutaciones y reproduccin


sexual.

En la Naturaleza lo nico que hay que optimizar es la supervivencia, y


eso significa a su vez maximizar diversos factores y minimizar otros. Un
algoritmo gentico, sin embargo, se usar habitualmente para optimizar slo
una funcin, no diversas funciones relacionadas entre s simultneamente. Este
tipo de optimizacin, denominada optimizacin multimodal, tambin se suele
abordar con un algoritmo gentico especializado.

15
Algoritmos Genticos

Por lo tanto:

Un algoritmo gentico consiste en hallar de qu parmetros


depende el problema, codificarlos en un cromosoma, y se aplican los
mtodos de la evolucin: seleccin y reproduccin sexual con
intercambio de informacin y alteraciones que generan diversidad. En
las siguientes secciones se vern cada uno de los aspectos de un
algoritmo gentico.

3.3 Codificacin de las variables

Los algoritmos genticos requieren que el conjunto se codifique en un


cromosoma. Cada cromosoma tiene varios genes, que corresponden a sendos
parmetros del problema. Para poder trabajar con estos genes en el ordenador,
es necesario codificarlos en una cadena, es decir, una ristra de smbolos
(nmeros o letras) que generalmente va a estar compuesta de 0s y 1s.

EJEMPLO 1:
Si un atributo (tiempo) puede tomar tres valores posibles (despejado,
nublado, lluvioso) una manera de representarlo es mediante tres bits de forma
que:

(Tiempo = Nublado Lluvioso) y (Viento = Fuerte) se representara con


la siguiente cadena: 011 10.

De esta forma podemos representar fcilmente conjunciones de varios


atributos para expresar restricciones (precondiciones) mediante la
concatenacin de dichas cadenas de bits.

Adems si tenemos otro atributo Viento que puede ser Fuerte o


Moderado,se representara con la siguiente cadena: 011 10.

16
Algoritmos Genticos

Las postcondiciones de las reglas se pueden representar de la misma


forma. Por ello una regla se puede describir como la concatenacin de la
precondicin y la postcondicin.

Ejemplo2:
JugaralTenis puede ser Cierto o Falso.
Si Viento = Fuerte entonces JugaralTenis = Cierto se representara
mediante la cadena 111 10 10. Donde los tres primeros bits a uno indican que
el atributo Tiempo no afecta a nuestra regla.

Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado
sentido, puesto que no impone restricciones en la postcondicin. Para
solucionar esto, una alternativa es codificar la postcondicin con un nico bit (1
= Cierto y 0 = Falso). Otra opcin es condicionar los operadores genticos para
que no produzcan este tipo de cadenas o conseguir que estas hiptesis tengan
una adecuacin muy baja (segn la funcin de evaluacin) para que no logren
pasar a la prxima generacin de hiptesis.

A continuacin se comienza con una poblacin de soluciones posibles,


que pueden ser generadas al azar o mediante algn mtodo que produzca
soluciones relativamente satisfactorias. A partir de este punto inicial, el
algoritmo procede por etapas que ejecutan los pasos elementales siguientes:

Se evalan todas las soluciones de la poblacin, con el fin de otorgar


ms probabilidades de emparejamiento a las ms satisfactorias.

Mediante un mecanismo de azar, aunque dando ms oportunidades a


las mejor evaluadas, se eligen las soluciones que han de cruzarse entre s para
dar lugar a descendencia.

El cruce opera sobre las cadenas de los genotipos de cada pareja de las
soluciones elegidas como progenitores. El sistema mediante el cual se
obtienen nuevas soluciones a partir las precedentes, es decir lo que se llama el

17
Algoritmos Genticos

operador de cruzamiento, puede ser distinto segn las tcnicas especficas


empleadas. El que se describe en el punto siguiente es uno de los ms
generalizados.

3.4 Algoritmo gentico propiamente dicho

Para comenzar la competicin, se generan aleatoriamente una serie de


cromosomas. El algoritmo gentico procede de la forma siguiente:

ALGORITMO GENTICO

Evaluar la puntuacin (fitness) de cada uno de los genes.

Permitir a cada uno de los individuos reproducirse, de acuerdo


con su puntuacin.

Emparejar los individuos de la nueva poblacin, haciendo que


intercambien material gentico, y que alguno de los bits de un

Cada uno de los pasos consiste en una actuacin sobre las cadenas de
bits, es decir, la aplicacin de un operador a una cadena binaria. Se les
denominan, por razones obvias, operadores genticos, y hay tres principales:
seleccin, crossover o recombinacin y mutacin; aparte de otros operadores
genticos no tan comunes, todos ellos se vern a continuacin.

Un algoritmo gentico tiene tambin una serie de parmetros que se


tienen que fijar para cada ejecucin, como los siguientes:

TAMAO DE LA POBLACIN:

debe de ser suficiente para garantizar la diversidad de las soluciones, y,


adems, tiene que crecer ms o menos con el nmero de bits del cromosoma,
aunque nadie ha aclarado cmo tiene que hacerlo. Por supuesto, depende
tambin del ordenador en el que se est ejecutando.

18
Algoritmos Genticos

CONDICIN DE TERMINACIN:

lo ms habitual es que la condicin de terminacin sea la convergencia


del algoritmo gentico o un nmero prefijado de generaciones.

3.5 Evaluacin y seleccin

Durante la evaluacin, se decodifica el gen, convirtindose en una serie


de parmetros de un problema, se halla la solucin del problema a partir de
esos parmetros, y se le da una puntuacin a esa solucin en funcin de lo
cerca que est de la mejor solucin. A esta puntuacin se le llama fitness.

Por ejemplo, supongamos que queremos hallar el mximo de la funcin


f(x), una parbola invertida con el mximo en x=1. En este caso, el nico
parmetro del problema es la variable x. La optimizacin consiste en hallar un x
tal que F(x) sea mximo. Crearemos, pues, una poblacin de cromosomas,
cada uno de los cuales contiene una codificacin binaria del parmetro x. Lo
haremos de la forma siguiente: cada byte, cuyo valor est comprendido entre 0
y 255, se transformar para ajustarse al intervalo [-1,1], donde queremos
hallar el mximo de la funcin.

Valor binario Decodificacin Evaluacin f(x)


10010100 21 0,9559
10010001 19 0,9639
101001 -86 0,2604
1000101 -58 0,6636

El fitness determina siempre los cromosomas que se van a reproducir, y


aquellos que se van a eliminar, pero hay varias formas de considerarlo para
seleccionar la poblacin de la siguiente generacin:

Usar el orden, o rango, y hacer depender la probabilidad de


permanencia o evaluacin de la posicin en el orden.

Aplicar una operacin al fitness para escalarlo; como por ejemplo


el escalado sigma. En este esquema el fitness se escala

19
Algoritmos Genticos

En algunos casos, el fitness no es una sola cantidad, sino


diversos nmeros, que tienen diferente consideracin. Basta con
que tal fitness forme un orden parcial, es decir, que se puedan
comparar dos individuos y decir cul de ellos es mejor. Esto suele
suceder cuando se necesitan optimizar varios objetivos.

Una vez evaluado el fitness, se tiene que crear la nueva poblacin


teniendo en cuenta que los buenos rasgos de los mejores se transmitan a sta.
Para ello, hay que seleccionar a una serie de individuos encargados de tan
ardua tarea. Y esta seleccin, y la consiguiente reproduccin, se puede hacer
de dos formas principales:

BASADO EN EL RANGO:

En este esquema se mantiene un porcentaje de la poblacin,


generalmente la mayora, para la siguiente generacin. Se coloca toda la
poblacin por orden de fitness, y los M menos dignos son eliminados y
sustituidos por la descendencia de alguno de los M mejores con algn otro
individuo de la poblacin.

A este esquema se le pueden aplicar otros criterios; por ejemplo, se crea


la descendencia de uno de los paladines/amazonas, y esta sustituye al ms
parecido entre los perdedores. Esto se denomina crowding, y fue introducido
por DeJong.

Una variante de este es el muestreado estocstico universal, que


trata de evitar que los individuos con ms fitness copen la poblacin dando ms
posibilidades al resto de la poblacin; de esta forma, la distribucin estadstica
de descendientes en la nueva poblacin es ms parecida a la real.

RUEDA DE RULETA:

se crea un conjunto gentico formado por cromosomas de la generacin


actual, en una cantidad proporcional a su fitness. Si la proporcin hace que un

20
Algoritmos Genticos

individuo domine la poblacin, se le aplica alguna operacin de escalado.


Dentro de este conjunto, se cogen parejas aleatorias de cromosomas y se
emparejan, sin importar incluso que sean del mismo progenitor (para eso estn
otros operadores, como la mutacin). Hay otras variantes: por ejemplo, en la
nueva generacin se puede incluir el mejor representante de la generacin
actual. En este caso, se denomina mtodo elitista.

SELECCIN DE TORNEO:

se escogen aleatoriamente un nmero T de individuos de la poblacin, y


el que tiene puntuacin mayor se reproduce, sustituyendo su descendencia al
que tiene menor puntuacin.

3.6 Crossover

Consiste en el intercambio de material gentico entre dos cromosomas


(a veces ms, como el operador orga propuesto por Eiben et al.). El crossover
es el principal operador gentico, hasta el punto que se puede decir que no es
un algoritmo gentico si no tiene crossover, y, sin embargo, puede serlo
perfectamente sin mutacin, segn descubri Holland. El teorema de los
esquemas confa en l para hallar la mejor solucin a un problema,
combinando soluciones parciales.

Para aplicar el crossover, entrecruzamiento o recombinacin, se


escogen aleatoriamente dos miembros de la poblacin. No pasa nada si se
emparejan dos descendiente de los mismos padres; ello garantiza la
perpetuacin de un individuo con buena puntuacin (y, adems, algo parecido
ocurre en la realidad; es una prctica utilizada, por ejemplo, en la cra de
ganado, llamada inbreeding, y destinada a potenciar ciertas caractersticas
frente a otras). Sin embargo, si esto sucede demasiado a menudo, puede crear
problemas: toda la poblacin puede aparecer dominada por los descendientes
de algn gen, que, adems, puede tener caracteres no deseados. Esto se
suele denominar en otros mtodos de optimizacin atranque en un mnimo

21
Algoritmos Genticos

local, y es uno de los principales problemas con los que se enfrentan los que
aplican algoritmos genticos.

En cuanto al teorema de los esquemas, se basa en la nocin de bloques


de construccin. Una buena solucin a un problema est constituida por unos
buenos bloques, igual que una buena mquina est hecha por buenas piezas.
El crossover es el encargado de mezclar bloques buenos que se encuentren en
los diversos progenitores, y que sern los que den a los mismos una buena
puntuacin. La presin selectiva se encarga de que slo los buenos bloques se
perpeten, y poco a poco vayan formando una buena solucin. El teorema de
los esquemas viene a decir que la cantidad de buenos bloques se va
incrementando con el tiempo de ejecucin de un algoritmo gentico, y es el
resultado terico ms importante en algoritmos genticos.

El intercambio gentico se puede llevar a cabo de muchas formas, pero


hay dos grupos principales

CROSSOVER N-PUNTOS:

Los dos cromosomas se cortan por n puntos, y el material gentico


situado entre ellos se intercambia. Lo ms habitual es un crossover de un punto
o de dos puntos.

Padre

0 0 0 1 0 1 0 1 0 1 0 1 0 1

Madre

1 0 1 1 1 0 0 1 1 1 0 1 1 1

Hijo

22
Algoritmos Genticos

0 0 0 1 0 0 0 1 1 1 0 1 0 1

CROSSOVER UNIFORME:

Se genera un patrn aleatorio de 1s y 0s, y se intercambian los bits de


los dos cromosomas que coincidan donde hay un 1 en el patrn. O bien se
genera un nmero aleatorio para cada bit, y si supera una determinada
probabilidad se intercambia ese bit entre los dos cromosomas.

Padre

0 0 0 1 0 1 0 1 0 1 0 1 0 1

Madre

1 0 1 1 1 0 0 1 1 1 0 1 1 1

Hijo

0 0 1 1 0 0 0 1 1 1 0 1 1 1

CROSSOVER ESPECIALIZADOS:

En algunos problemas, aplicar aleatoriamente el crossover da lugar a


cromosomas que codifican soluciones invlidas; en este caso hay que aplicar el
crossover de forma que genere siempre soluciones vlidas. Un ejemplo de
estos son los operadores de crossover usados en el problema del viajante.

3.7 Mutacin

En la Evolucin, una mutacin es un suceso bastante poco comn


(sucede aproximadamente una de cada mil replicaciones), como ya se ha visto
anteriormente. En la mayora de los casos las mutaciones son letales, pero en
promedio, contribuyen a la diversidad gentica de la especie. En un algoritmo
gentico tendrn el mismo papel, y la misma frecuencia (es decir, muy baja).

23
Algoritmos Genticos

Una vez establecida la frecuencia de mutacin, por ejemplo, uno por mil,
se examina cada bit de cada cadena cuando se vaya a crear la nueva criatura
a partir de sus padres (normalmente se hace de forma simultnea al
crossover). Si un nmero generado aleatoriamente est por debajo de esa
probabilidad, se cambiar el bit (es decir, de 0 a 1 o de 1 a 0). Si no, se dejar
como est. Dependiendo del nmero de individuos que haya y del nmero de
bits por individuo, puede resultar que las mutaciones sean extremadamente
raras en una sola generacin.

No hace falta decir que no conviene abusar de la mutacin. Es cierto que


es un mecanismo generador de diversidad, y, por tanto, la solucin cuando un
algoritmo gentico est estancado, pero tambin es cierto que reduce el
algoritmo gentico a una bsqueda aleatoria. Siempre es ms conveniente usar
otros mecanismos de generacin de diversidad, como aumentar el tamao de
la poblacin, o garantizar la aleatoriedad de la poblacin inicial.

Este operador, junto con la anterior y el mtodo de seleccin de ruleta,


constituyen un algoritmo gentico simple, sga, introducido por Goldberg en su
libro.

3.8 Otros operadores

No se usan en todos los problemas, sino slo en algunos, y en principio


su variedad es infinita. Generalmente son operadores que exploran el espacio
de soluciones de una forma ms ordenada, y que actan ms en las ltimas
fases de la bsqueda, en la cul se pasa de soluciones "casi buenas" a
"buenas" soluciones.

3.8.1 CROMOSOMAS DE LONGITUD VARIABLE

Hasta ahora se han descrito cromosomas de longitud fija, donde se


conoce de antemano el nmero de parmetros de un problema. Pero hay
problemas en los que esto no sucede. Por ejemplo, en un problema de
clasificacin, donde dado un vector de entrada, queremos agruparlo en una
serie de clases, podemos no saber siquiera cuntas clases hay. O en diseo de

24
Algoritmos Genticos

redes neuronales, puede que no se sepa (de hecho, nunca se sabe) cuntas
neuronas se van a necesitar. Por ejemplo, en un perceptrn hay reglas que
dicen cuantas neuronas se deben de utilizar en la capa oculta; pero en un
problema determinado puede que no haya ninguna regla heurstica aplicable;
tendremos que utilizar los algoritmos genticos para hallar el nmero ptimo de
neuronas.

En estos casos, necesitamos dos operadores ms: aadir y eliminar.


Estos operadores se utilizan para aadir un gen, o eliminar un gen del
cromosoma. La forma ms habitual de aadir un locus es duplicar uno ya
existente, el cul sufre mutacin y se aade al lado del anterior. En este caso,
los operadores del algoritmo gentico simple (seleccin, mutacin, crossover)
funcionarn de la forma habitual, salvo, claro est, que slo se har crossover
en la zona del cromosoma de menor longitud.

3.8.2 OPERADORES DE NICHO (ECOLGICO)

Otros operadores importantes son los operadores de nicho. Estos


operadores estn encaminados a mantener la diversidad gentica de la
poblacin, de forma que cromosomas similares sustituyan slo a cromosomas
similares, y son especialmente tiles en problemas con muchas soluciones; un
algoritmo gentico con estos operadores es capaz de hallar todos los mximos,
dedicndose cada especie a un mximo. Ms que operadores genticos, son
formas de enfocar la seleccin y la evaluacin de la poblacin.

Uno de las formas de llevar esto a cabo ya ha sido nombrada, la


introduccin del crowding (apiamiento). Otra forma es introducir una funcin
de comparticin o sharing, que indica cun similar es un cromosoma al resto de
la poblacin. La puntuacin de cada individuo se dividir por esta funcin de
comparticin, de forma que se facilita la diversidad gentica y la aparicin de
individuos diferentes.

25
Algoritmos Genticos

Tambin se pueden restringir los emparejamientos, por ejemplo, a


aquellos cromosomas que sean similares. Para evitar las malas consecuencias
del inbreeding (destinado a potenciar ciertas caractersticas frente a otras) que
suele aparecer en poblaciones pequeas, estos periodos se intercalan con
otros periodos en los cules el emparejamiento es libre.

3.8.3 OPERADORES ESPECIALIZADOS

En una serie de problemas hay que restringir las nuevas soluciones


generadas por los operadores genticos, pues no todas las soluciones
generadas van a ser vlidas, sobre todo en los problemas con restricciones.
Por ello, se aplican operadores que mantengan la estructura del problema.
Otros operadores son simplemente generadores de diversidad, pero la generan
de una forma determinada:

ZAP:

En vez de cambiar un solo bit de un cromosoma, cambia un gen


completo de un cromosoma.

CREEP:

Este operador aumenta o disminuye en 1 el valor de un gen; sirve para


cambiar suavemente y de forma controlada los valores de los genes.

TRANSPOSICIN:

Similar al crossover y a la recombinacin gentica, pero dentro de un


solo cromosoma; dos genes intercambian sus valores, sin afectar al resto del
cromosoma. Similar a este es el operador de eliminacin-reinsercin, en el
que un gen cambia de posicin con respecto a los dems.

26
Algoritmos Genticos

3.8.4 APLICANDO OPERADORES GENTICOS

En toda ejecucin de un algoritmo gentico hay que decidir con qu


frecuencia se va a aplicar cada uno de los algoritmos genticos; en algunos
casos, como en la mutacin o el crossover uniforme, se debe de aadir algn
parmetro adicional, que indique con qu frecuencia se va a aplicar dentro de
cada gen del cromosoma. La frecuencia de aplicacin de cada operador estar
en funcin del problema; teniendo en cuenta los efectos de cada operador,
tendr que aplicarse con cierta frecuencia o no. Generalmente, la mutacin y
otros operadores que generen diversidad se suele aplicar con poca frecuencia;
la recombinacin se suele aplicar con frecuencia alta.

En general, la frecuencia de los operadores no vara durante la ejecucin


del algoritmo, pero hay que tener en cuenta que cada operador es ms efectivo
en un momento de la ejecucin. Por ejemplo, al principio, en la fase
denominada de exploracin, los ms eficaces son la mutacin y la
recombinacin; posteriormente, cuando la poblacin ha convergido en parte, la
recombinacin no es til, pues se est trabajando con individuos bastante
similares, y es poca la informacin que se intercambia. Sin embargo, si se
produce un estancamiento, la mutacin tampoco es til, pues est reduciendo
el algoritmo gentico a una bsqueda aleatoria; y hay que aplicar otros
operadores. En todo caso, se pueden usar operadores especializados.

Por ejemplo, en el algoritmo gentico para jugar al MasterMind, se usan


varios operadores genticos: transposicin, mutacin y entrecruzamiento. Sin
embargo, la mutacin y el crossover dejan de ser efectivos en el momento que
la combinacin que se ha jugado tiene los colores correctos, y en cualquier
caso la tasa de mutacin tendr que ser mayor cuantos menos colores haya
averiguados; por eso las tasas varan durante la ejecucin, convirtindose
eventualmente en 0.

EJEMPLO SIMPLE DE ALGORITMOS GENTICO:

27
Algoritmos Genticos

Supongamos que hemos de calcular el mximo de una funcin f(x) en un


intervalo [a,b]. Pues bien, sencillo, derivamos e igualamos a cero, no?. Pues
no. Se me olvidaba decir que no conocemos f(x), aunque s podemos calcular o
estimar su valor en cualquier punto.

He aqu los pasos a seguir:

Estimamos con qu resolucin queremos trabajar. Es decir,


elegimos el nmero de puntos que vamos a examinar dentro de
ese intervalo. Si, por ejemplo, el intervalo es el [0,100] y ponemos
una resolucin de 0.5, pues tendremos 200 puntos en el intervalo.

Generamos una poblacin inicial de n individuos; que sern -no


poda ser menos- n nmeros (elegidos al azar). Es decir, ya
tenemos x1, x2, ... ,xn. Todos ellos, entre a y b, los lmites de
nuestro intervalo.

Ahora hemos de dar mayor capacidad de reproduccin a los


mejor dotados. Si estamos buscando el mximo, pues el mejor
dotado ser aquel cuyo valor de f(x i) sea mayor. Hasta aqu, todo
de lo ms normal.
Pues de los n individuos que tenemos, vamos a crear una
poblacin intermedia, que ser los que se van a recombinar.
Calculamos la frecuencia de cada uno de los n genotipos en la
primera poblacin .
Bueno, tenemos que calcular esas probabilidades:
p(xi)=f(xi)/suma_total. Les he llamado probabilidades, aunque en
realidad son frecuencias, por aquello de no confundir la notacin.
Siguiendo con esta tnica, definimos P(x i) como la funcin de
distribucin: P(xj) es la suma, desde cero hasta j, de los p(xi).
Creo que es necesario un breve ejemplo para aclarar las cosas
(aunque tambin est el mail). Supongamos que nuestro n sea
igual a 4, y que, por ejemplo, tenemos:

28
Algoritmos Genticos

f(x0)=10
f(x1)=40
f(x2)=30
f(x3)=20

Por lo tanto,

p(x0)=0.1
p(x1)=0.4
p(x2)=0.3
p(x3)=0.2

y tambin

P(x0)=0.1
P(x1)=0.5
P(x2)=0.8
P(x3)=1.0

Esta claro que los p(xi) suman 1. A continuacin generamos n nmeros


aleatorios entre 0 y 1. Cada uno de esos nmeros -por ejemplo, t- estar
relacionado con un individuo de nuestra generacin intermedia; de la siguiente
forma:
si t est entre P(xi) y P(xi+1) escogemos xi+1)
Seguimos con el ejemplo: Si nuestros cuatro nmeros aleatorios son 0.359,
0.188, 0.654 y 0.399, entonces nuestra generacin intermedia ser:

Nmero aleatorio Individuo seleccionado Nuevo valor


0.1<0.359<0.5 x1 x0
0.1<0.188<0.5 x1 x1
0.5<0.654<0.8 x2 x2
0.1<0.399<0.5 x1 x3

29
Algoritmos Genticos

Como se ve, est claro que, pese al azar el individuo mejor dotado es el ms
favorecido.

El siguiente paso es la recombinacin. Se puede hacer de la


forma que nos parezca ms adecuada. En primer lugar hay que
buscar las parejas. Se trata de obtener una nueva generacin
como mezcla de esta con la que estamos trabajando. Una vez
que tenemos las parejas, hemos de hacer la recombinacin. Una
alternativa: media aritmtica;(1) otra: media geomtrica(2). Otra,
la ms usada: cortar los dos nmeros "paps" por un lugar al azar
(3) y conseguir los "hijos" intercambiando partes. Por si este
ltimo punto no ha quedado demasiado claro, digamos que, si los
individuos son 456 y 123, elegimos al azar un nmero entre 1 y 2
(ya que hay tres cifras). Si, por ejemplo, nos sale el 1, pues un
posible hijo podra ser el 4-23 y otro 1-56. Aunque hay que decir
que lo ms habitual es trabajar en base 2 (al menos, los nmeros
sern ms largos).

En este momento ya tenemos una nueva generacin.


Generalmente, mejor dotada que la inicial. Lo que se hace ahora
es volver al tercer punto (clculo de una poblacin intermedia).
Por supuesto, el algoritmo se para cuando queramos. Por
ejemplo, cuando llevemos un nmero de iteraciones determinado,
o cuando la poblacin no mejore demasiado.

Una variante posible es permitir la existencia de mutaciones (por


ejemplo, introducir cada cierto nmero de generaciones alguna
variacin en una cifra en busca de mejores soluciones. Esto es
interesante debido a que, por ejemplo, si estamos dando vueltas
en torno a un mximo local, la variacin introducida podra
llevarnos hacia un genotipo mejor dotado.

30
Algoritmos Genticos

Otra variante es la elitista, consistente en que los mejores


genotipos no se recombinen, sino que pasen directamente -tal
cual- a la siguiente generacin.

ejemplo completo de un algoritmo gentico


La finalidad de este ejemplo es construir un planeador de rutas, capaz
de encontrar la ruta ms corta a la salida ms cercana, para cada una de las
n personas que se encuentran en un cuarto.

Este cuarto contiene obstculos estticos y varias salidas. La ruta


encontrada para la persona x no debe llevarla a chocar con algn obstculo ni
con otra persona que a su vez se est moviendo en el cuarto.

La interface del programa tiene la siguiente simbologa:

Cubos de colores y mas pequeos : Personas


Cubos azules: Obstculos

31
Algoritmos Genticos

Cuadros rojos: Salidas

Los pasos de un algoritmo gentico son los siguientes:

1.- Inicializacin:

En este primer paso se crea aleatoriamente un conjunto de individuos


(que estn sobre el espacio S).

Inicialmente tenemos 20 individuos. Los individuos se representan como


un vector, cuyos valores van del 0-7, y que significan lo siguiente:

0 -> Camina un paso a la izquierda

1 -> Camina un paso a la derecha

2 -> Camina un paso adelante

3 -> Camina un paso atrs

-> Camina en diagonal izquierda hacia arriba

-> Camina en diagonal izquierda hacia abajo

-> Camina en diagonal derecha hacia abajo

-> Camina en diagonal derecha hacia arriba

8 -> Qudate en tu lugar

32
Algoritmos Genticos

stos seran dos ejemplos de individuos:

1) 2 - 1 - 2 - 0 - 7 - 4 - 3 - 6 - 3 - 3 - 3 - 0 - 5 - 0 - 3 - 3 - 3 - 1 - 1 - 1 - 3 -
5-1-4-7-4-3-1-6-1-2-

2) 0 - 4 - 1 - 7 - 5 - 3 - 1 - 1 - 3 - 3 - 3 - 7 - 5 - 1 - 2 - 5 - 6 - 4 -

Despus el algoritmo itera en los siguientes pasos hasta que se cumpla


alguna condicin.

En este caso dicha condicin es que evolucionen 6 generaciones.

2.- Evaluacin:

La Funcin F es computada para cada individuo, ordenando la poblacin


del mejor individuo al peor. En el ejemplo, la funcin a optimizar es la longitud
de los individuos. Es decir deseamos obtener un individuo con longitud mnima.
Por ello, se ordenan en base a su longitud y en orden ascendente.

3.- Seleccin:

Se selecciona con la regla de seleccin - explicada a continuacin - una


pareja de individuos. La regla utilizada es roulette wheel selection, que elige en
base a probabilidad proporcional a su calificacin:

33
Algoritmos Genticos

1.- Se genera un nmero aleatorio r E [0,1].

2.- Se multiplica r por la suma de las calificaciones de la poblacin


(S), obtenindose c = rS.

3.- Se establece la calificacin acumulada (Ca) y el ndice en cero:


Ca = 0, i=0

4.- A la calificacin acumulada se le suma la calificacin del i-simo


individuo:

Ca = Ca + calif(i)

5.- Si Ca > c entonces el i-esimo individuo es seleccionado.

6.- Si no, entonces se incrementa i y se regresa al paso 4.

Esta seleccin es con reemplazo, es decir, un mismo individuo puede ser


seleccionado varias veces. As que cada vez que se selecciona un individuo no
se quita de la poblacin de la que se est seleccionando, permanece en ella
para que pueda ser elegido nuevamente.

4.- Reproduccin:

Se generan nuevos individuos a partir de la pareja seleccionada en el


paso 3.

El algoritmo de reproduccin que se ha utilizado es el siguiente:

34
Algoritmos Genticos

Una vez seleccionados 2 individuos p1 y p2 (llamados padres) se


procede a cruzarlos.

Generamos un nmero aleatorio entre 1 y (longitud de p1)/2,


llamado n1.

Generamos un nmero aleatorio entre (longitud de p2)/2 y longitud


de p2, llamado n2.

Calculamos la posicin en la que se encuentra p1 al dar n1 pasos, y


la llamamos pasosp1.

Calculamos la posicin en la que se encuentra p2 al dar (longitud de


p2)/2 pasos, y la llamamos pasosp2.

Generamos un camino aleatorio de pasosp1 a pasosp2, llamado


camino_intermedio. Este camino aleatorio verifica que no choque con ningn
obstculo predefinido (esttico).

Copiamos los primeros n1 pasos de p1 en el nuevo individuo ni1.

Copiamos camino_intermedio a ni1.

Copiamos los pasos de p2 de n2 a longitud p2.

Y de la misma manera generamos el segundo nuevo individuo, slo que


ahora tomamos el inicio de p2 y el final de p1.

Esta cruza nos garantiza que obtengamos individuos vlidos, es decir


que nos van a dar un camino que inicie en la posicin original de la persona y
finalice en alguna salida. Y que adems no choque con ningn obstculo.

35
Algoritmos Genticos

Despus de repetir 6 veces los pasos del 2 al 4, se obtiene una


poblacin final.

El algoritmo adems de estos pasos, incorpora un quinto paso al que


llamamos entrenamiento.

5.- Entrenamiento:

Repite los pasos del 1 al 4 n veces. El primer algoritmo gentico coloca


en la poblacin inicial del segundo algoritmo gentico, a su mejor individuo (lo
coloca 2 veces, para asegurarse de que va a preservarse en las siguientes
generaciones), el segundo hace lo mismo con el tercero, y as sucesivamente
hasta n.

Los algoritmos genticos tienen una caracterstica peculiar, que es que


cada vez que se ejecuta nos da (muy probablemente) respuestas diferentes, y
esto es porque la poblacin inicial se genera aleatoriamente.

Estos entrenamientos nos permiten tomar el mejor individuo


evolucionado del algoritmo gentico anterior, y a su vez generar nuevos
individuos. Esto es conocido tambin como elitismo. Con esto generamos n
veces poblaciones aleatorias y (n-1) veces la poblacin inicial al menos tiene
un buen individuo. Este nuevo individuo al cruzarlo con algn otro buen
individuo generado aleatoriamente puede ser que nos d uno an mejor.

Parmetros que deben ser especificados en el programa:

N de generaciones: cantidad de veces que se produce una nueva


generacin de individuos, utilizando las reglas anteriormente explicadas. Por

36
Algoritmos Genticos

lgica, cuantas ms generaciones produzcamos, obtendremos mejores


individuos.

N de individuos por generacin: en este ejemplo, la cantidad de


individuos de una generacin a otra es constante, no vara.

N de entrenamientos: cantidad de veces que se lleva a cabo un


entrenamiento entre diferentes generaciones de individuos.

CONCLUSIN DEL TRABAJO:


Como hemos podido observar, la principal ventaja de los algoritmos
genticos radica en su sencillez. Se requiere poca informacin sobre el espacio
de bsqueda ya que se trabaja sobre un conjunto de soluciones o parmetros
codificados (hiptesis o individuos). Se busca una solucin por aproximacin de
la poblacin, en lugar de una aproximacin punto a punto. Con un control
adecuado podemos mejorar la aptitud promedio de la poblacin, obteniendo
nuevos y mejores individuos y, por lo tanto, mejores soluciones.

Se consigue un equilibrio entre la eficacia y la eficiencia. Este equilibrio


es configurable mediante los parmetros y operaciones usados en el algoritmo.
As, por ejemplo, bajando el valor del umbral conseguiremos una rpida
solucin a cambio de perder en calidad. Si aumentamos dicho valor,
tendremos una mejor solucin a cambio de un mayor tiempo consumido en la
bsqueda. Es decir, obtenemos una buena relacin entre la calidad de la
solucin y el costo.

Quizs el punto ms delicado de todo se encuentra en la definicin de la


funcin de evaluacin, y de su eficacia depende el obtener buenos resultados.
El resto del proceso es siempre el mismo para todos los casos.

37
Algoritmos Genticos

La programacin mediante algoritmos genticos suponen un nuevo


enfoque que permite abarcar todas aquellas reas de aplicacin donde no
sepamos como resolver un problema:

Aplicaciones de bsqueda y optimizacin :

Desde aplicaciones evidentes, como la biologa o la medicina, hasta


otros campos como la industria (clasificacin de piezas en cadenas de
montaje). Los algoritmos genticos poseen un importante papel en este mbito.

Aprendizaje automtico:

La capacidad que poseen 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 GA.

DiRECCIONES DE CONSULTA:

http://geneura.ugr.es/~jmerelo/ie/ags.htm

http://www.geocities.com/waguilar_2000/ALGORITMOS_GENETICOS

http://kal-el.ugr.es/mastermind

http://www.cinefantastico.com/nexus7/ia/ageneticos.htm

http://www.fortunecity.com/underworld/fifa/613/xxx.html

http://www.geocities.com/krousky/Espanol/AlgEv001.htm

http://orchid.lsi.upc.es/~iea/transpas/9_geneticos/sld001.htm

http://kal-el.ugr.es/~jmerelo

38

Vous aimerez peut-être aussi