Vous êtes sur la page 1sur 13

Algoritmo Gentico

Expuesto concisamente, un algoritmo gentico (o AG para


abreviar) es una tcnica de programacin que imita a la
evolucin biolgica como estrategia para resolver problemas.
Dado un problema especfico a resolver, la entrada del AG es un
conjunto de soluciones potenciales a ese problema, codificadas
de alguna manera, y una mtrica llamada funcin de aptitud que
permite evaluar cuantitativamente a cada candidata. Estas
candidatas pueden ser soluciones que ya se sabe que funcionan,
con el objetivo de que el AG las mejore, pero se suelen generar
aleatoriamente.
Luego el AG evala cada candidata de acuerdo con la funcin de
aptitud. En un acervo de candidatas generadas aleatoriamente,
por supuesto, la mayora no
funcionarn en absoluto, y sern eliminadas. Sin embargo, por
puro azar, unas pocas pueden ser prometedoras -pueden
mostrar actividad, aunque slo sea actividad dbil e imperfecta,
hacia la solucin del problema.
Estas candidatas prometedoras se conservan y se les permite
reproducirse. Se realizan mltiples copias de ellas, pero las
copias no son perfectas; se introducen cambios aleatorios
durante el proceso de copia. Luego, esta descendencia digital
prosigue con la siguiente generacin, formando un nuevo acervo
de soluciones candidatas, y son sometidas a una ronda de
evaluacin de aptitud. Las candidatas que han empeorado o no
han mejorado con los cambios en su cdigo son eliminadas de
nuevo; pero, de nuevo, por puro azar, las variaciones aleatorias
introducidas en la poblacin pueden haber mejorado a algunos
individuos, convirtindolos en mejores soluciones del problema,
ms completas o ms eficientes. De nuevo, se selecionan y
copian estos individuos vencedores hacia la siguiente
generacin con cambios aleatorios, y el proceso se repite. Las
expectativas son que la aptitud media de la poblacin se

incrementar en cada ronda y, por tanto, repitiendo este


proceso cientos o miles de rondas, pueden descubrirse
soluciones muy buenas del problema

Mtodos de representacin

Antes de que un algoritmo gentico pueda ponerse a trabajar en


un problema, se necesita un mtodo para codificar las
soluciones potenciales del problema de forma que una
computadora pueda procesarlas. Un enfoque comn es codificar
las soluciones como cadenas binarias: secuencias de 1 y 0,
donde el dgito de cada posicin representa el valor de algn
aspecto de la solucin.

Otro mtodo similar consiste en codificar las soluciones como


cadenas de enteros o nmeros decimales, donde cada posicin,
de nuevo, representa algn aspecto particular de la solucin.
Este mtodo permite una mayor precisin y complejidad que el
mtodo comparativamente restringido de utilizar slo nmeros
binarios.

Un tercer mtodo consiste en representar a los individuos de un


AG como cadenas de letras, donde cada letra, de nuevo,

representa un aspecto especfico de la solucin. Un ejemplo de


esta tcnica es el mtodo basado en ``codificacin gramtica''
de Hiroaki Kitano, en el que a un AG se le encarg la tarea de
evolucionar un sencillo conjunto de reglas llamadas gramtica
libre de contexto, que a su vez se utilizaban para generar redes
neuronales para una variedad de problemas (Mitchell 1996[ 47],
p. 74).

La virtud de estos tres mtodos es que facilitan la definicin de


operadores que causen los cambios aleatorios en las candidatas
seleccionadas: cambiar un 0 por un 1 o viceversa, sumar o
restar al valor de un nmero una cantidad elegida al azar, o
cambiar una letra por otra. (Ver la seccin sobre los mtodos de
cambio para ms detalles acerca de los operadores genticos).
Otra estrategia, desarrollada principalmente por John Koza, de la
Universidad de Stanford, y denominada programacin gentica,
representa a los programas como estructuras de datos
ramificadas llamadas rboles (Koza et al. 2003[42], p. 35). En
este mtodo, los cambios aleatorios pueden generarse
cambiado el operador o alterando el valor de un cierto nodo del
rbol, o sustituyendo un subrbol por otro.

En la figura se observan tres sencillos rboles de programa del


tipo utilizado normalmente en la programacin gentica. Debajo
se proporciona la expresin matemtica que representa cada
uno.
Es importante sealar que los algoritmos evolutivos no
necesitan representar las soluciones candidatas como cadenas
de datos de una longitud fija. Algunos las representan de esta
manera, pero otros no; por ejemplo, la ``codificacin
gramatical'' de Kitano, explicada arriba, puede escalarse
eficientemente para crear redes neuronales grandes y
complejas, y los rboles de programacin gentica de Koza
pueden crecer arbitrariamente tanto como sea necesario para
resolver cualquier problema que se les pida.
Mtodos de seleccin

Un algoritmo gentico puede utilizar muchas tcnicas diferentes para seleccionar


a los individuos que deben copiarse hacia la siguiente
generacin, pero abajo se listan algunos de los ms comunes.
Algunos de estos mtodos son mutuamente exclusivos, pero
otros pueden utilizarse en combinacin, algo que se hace a
menudo.
Seleccin elitista: se garantiza la seleccin de los miembros ms
aptos de cada generacin. (La mayora de los AGs no utilizan
elitismo puro, sino que usan una forma modificada por la que el
individuo mejor, o algunos de los mejores, son copiados hacia la
siguiente generacin en caso de que no surja nada mejor).
Seleccin proporcional a la aptitud: los individuos ms aptos
tienen ms probabilidad de ser seleccionados, pero no la
certeza.
Seleccin por rueda de ruleta: 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. (Conceptualmente, esto

puede representarse como un juego de ruleta -cada individuo


obtiene una seccin de la ruleta, pero los ms aptos obtienen
secciones mayores que las de los menos aptos. Luego la ruleta
se hace girar, y en cada vez se elige al individuo que ``posea'' la
seccin en la que se pare la ruleta).
Seleccin escalada: al incrementarse la aptitud media de la
poblacin, la fuerza de la presin selectiva tambin aumenta y
la funcin de aptitud se hace ms discriminadora. Este mtodo
puede ser til para seleccionar ms tarde, cuando todos los
individuos tengan una aptitud relativamente alta y slo les
distingan pequeas diferencias en la aptitud.
Seleccin por torneo: se eligen subgrupos de individuos de la
poblacin, y los miembros de cada subgrupo compiten entre
ellos. Slo se elige a un individuo de cada subgrupo para la
reproduccin.
Seleccin por rango: a cada individuo de la poblacin se le
asigna un rango numrico basado en su aptitud, y la seleccin
se basa en este ranking, en lugar de las diferencias absolutas en
aptitud. La ventaja de este mtodo es que puede evitar que
individuos muy aptos ganen dominancia al principio a expensas
de los menos aptos, lo que reducira la diversidad gentica de la
poblacin y podra obstaculizar la bsqueda de una solucin
aceptable.
Seleccin generacional: la descendencia de los individuos
seleccionados en cada generacin se convierte en toda la
siguiente generacin. No se conservan individuos entre las
generaciones.
Seleccin por estado estacionario: la descendencia de los
individuos seleccionados en cada generacin vuelven al acervo
gentico preexistente, reemplazando a algunos de los miembros
menos aptos de la siguiente generacin. Se conservan algunos
individuos entre generaciones.

Seleccin jerrquica: los individuos atraviesan mltiples rondas


de seleccin en cada generacin. Las evaluaciones de los
primeros niveles son ms rpidas y menos discriminatorias,
mientras que los que sobreviven hasta niveles ms altos son
evaluados ms rigurosamente. La ventaja de este mtodo es
que reduce el tiempo total de clculo al utilizar una evaluacin
ms rpida y menos selectiva para eliminar a la mayora de los
individuos que se muestran poco o nada prometedores, y
sometiendo a una evaluacin de aptitud ms rigurosa y
computacionalmente ms costosa slo a los que sobreviven a
esta prueba inicial.
Mtodos de cambio

Una vez que la seleccin ha elegido a los individuos aptos, stos


deben ser alterados aleatoriamente con la esperanza de mejorar
su aptitud para la siguiente generacin. Existen dos estrategias
bsicas para llevar esto a cabo. La primera y ms sencilla se
llama mutacin. Al igual que una mutacin en los seres vivos
cambia un gen por otro, una mutacin en un algoritmo gentico
tambin causa pequeas alteraciones en puntos concretos del
cdigo de un idividuo.
El segundo mtodo se llama cruzamiento, e implica elegir a dos
individuos para que intercambien segmentos de su cdigo,
produciendo una ``descendencia'' artificial cuyos individuos son
combinaciones de sus padres. Este proceso pretende simular el
proceso anlogo de la recombinacin que se da en los
cromosomas durante la reproduccin sexual. Las formas
comunes de cruzamiento incluyen al cruzamiento de un punto,
en el que se establece un punto de intercambio en un lugar
aleatorio del genoma de los dos individuos, y uno de los
individuos contribuye todo su cdigo anterior a ese punto y el
otro individuo contribuye todo su cdigo a partir de ese punto
para producir una descendencia, y al cruzamiento uniforme, en
el que el valor de una posicin dada en el genoma de la

descendencia corresponde al valor en esa posicin del genoma


de uno de los padres o al valor en esa posicin del genoma del
otro padre, elegido con un 50% de probabilidad.

En las figuras se representan los mtodos de Cruzamiento y


mutacin. El diagrama de arriba ilustra el efecto de estos dos
operadores genticos en los individuos de una poblacin de
cadenas de 8 bits. El diagrama superior muestra a dos
individuos llevando a cabo un cruzamiento de un punto; el punto
de intercambio se establece entre las posiciones quinta y sexta
del genoma, produciendo un nuevo individuo que es hbrido de
sus progenitores. El segundo diagrama muestra a un individuo
sufriendo una mutacin en la posicin 4, cambiando el 0 de esa
posicin de su genoma por un 1.

Algoritmo gentico simple

Los algoritmos genticos son mtodos sistemticos para la resolucin de


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

En definitiva, los algoritmos genticos son mtodos de optimizacin, que


tratan de resolver el mismo conjunto de problemas. En un algoritmo
gentico, tras parametrizar el problema en una serie de variables, (xi,...,xn) se
codifican en un cromosoma. Todas los operadores utilizados por un
algoritmo gentico se aplicarn sobre estos cromosomas (individuos), o sobre
poblaciones de ellos. En el algoritmo gentico va implcito el mtodo para
resolver el problema; son solo parmetros de tal mtodo los que estn
codificados. 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, ejercer una presin selectiva sobre la
poblacin, de forma que slo los mejores 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.
Por lo tanto, un algoritmo gentico consiste en lo siguiente:
hallar de qu parmetros depende el problema,
codificarlos en un cromosoma,
aplicar los mtodos de la evolucin: seleccin y cruza con intercambio
de informacin y alteraciones que generan diversidad.
En las siguientes secciones se vern cada uno de los aspectos de un algoritmo
gentico.
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 0 y 1.

La mayora de las veces, una codificacin correcta es la clave de una buena


resolucin del problema. Generalmente, la regla heurstica que se utiliza es
la llamada regla de los bloques de construccin, es decir, parmetros
relacionados entre s deben de estar cercanos en el cromosoma. Por ejemplo,
si queremos codificar los pesos de una red neuronal, una buena eleccin ser
poner juntos todos los pesos que salgan de la misma neurona de la capa
oculta . En esta, todos los pesos sealados con trazo doble se codifican
mediante grupos de bits o bytes sucesivos en el cromosoma.
En todo caso, se puede ser bastante creativo con la codificacin del problema,
teniendo siempre en cuenta la regla anterior. Esto puede llevar a usar
cromosomas bidimensionales, o tridimensionales, o con relaciones entre genes
que no sean puramente lineales de vecindad. En algunos casos, cuando no se
conoce de antemano el nmero de variables del problema, caben dos opciones:
codificar tambin el nmero de variables, fijando un nmero mximo, o bien, lo
cual es mucho ms natural, crear un cromosoma que pueda variar de longitud.
Para ello, claro est, se necesitan operadores genticos que alteren la longitud.
Normalmente, la codificacin es esttica, pero en casos de optimizacin
numrica, el nmero de bits dedicados a codificar un parmetro puede variar, o
incluso lo que representen los bits dedicados a codificar cada parmetro. Algunos
paquetes de algoritmos genticos adaptan automticamente la codificacin segn
van convergiendo los bits menos significativos de una solucin.
Para comenzar la competicin, se generan aleatoriamente una serie de
cromosomas. El algoritmo gentico procede de la forma siguiente:
1. Evaluar la puntuacin (fitness) de cada uno de los genes.
2. Permitir a cada uno de los individuos reproducirse, de
acuerdo con su puntuacin.
3. Emparejar los individuos de la nueva poblacin, haciendo
que intercambien material gentico, y que alguno de los
bits de un gen se vea alterado debido a
una mutacin espontnea.

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(cruza) 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.
Condicin de terminacin: lo ms habitual es que la
condicin de terminacin sea la convergencia del algoritmo
gentico o un nmero prefijado de generaciones.
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.
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

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 esta. 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. En
nuestro caso, se eliminara el cromosoma nmero 3, y se
sustituira por un descendiente del cromosoma nmero 2 y
otro aleatorio, escogido entre el 1 y el 4. En realidad, para
este esquema se escoge un crowding factor, CF. Cuando
nace una nueva criatura, se seleccionan CF individuos de la
poblacin, y se elimina al ms parecido a la nueva criatura.
Una variante de este es el muestreado estocstico
universal, que trata de evitar que los individuos con ms
fitness copen la poblacin; en vez de dar la vuelta a una
ruleta con una ranura, da la vuelta a la ruleta con N
ranuras, tantas como 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 pool gentico formado por
cromosomas de la generacin actual, en una cantidad
proporcional a su fitness. Si la proporcin hace que un
individuo domine la poblacin, se le aplica alguna

operacin de escalado. Dentro de este pool, 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.
Crossover
Consiste en el intercambio de material gentico entre dos cromosomas .
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

Vous aimerez peut-être aussi