Análisis de Estado del Arte en Algoritmos Genéticos

209
UNIVERSIDAD DE LOS ANDES Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Análisis de Estado del Arte en Algoritmos Genéticos Trabajo de Grado Para aspirar al título de Ingeniero de Sistemas Wolfgand Enrique Kook C. Asesor Rafael García ISC-2003-2-18 Santafé de Bogotá, Mayo de 2004

Transcript of Análisis de Estado del Arte en Algoritmos Genéticos

Page 1: Análisis de Estado del Arte en Algoritmos Genéticos

UNIVERSIDAD DE LOS ANDES

Facultad de Ingeniería

Departamento de Ingeniería de Sistemas y Computación

Análisis de Estado del Arte en Algoritmos Genéticos

Trabajo de Grado

Para aspirar al título de

Ingeniero de Sistemas

Wolfgand Enrique Kook C.

Asesor Rafael García

ISC-2003-2-18

Santafé de Bogotá, Mayo de 2004

Page 2: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 2

Agradezco a mi madre, quien me dio el primer impulso, y me ha

acompañado todo el camino; A Inghe, Kathy y Krys, a J, a Ricardo, a

Natalia y a Sandra, quienes marcaron los momentos de mayores

dificultades y cambios en mi vida: No saben todo lo que aprendí gracias a

ustedes; A Carlos, a Hugo, más hermanos que amigos, que me han

acompañado durante todo el camino, a veces incluso llevándome sobre

sus hombros; A las niñas más hermosas que conozco, por dentro y por

fuera –Ángela con su mordacidad, Bibi con su veleidad, Cucú con su

luminosidad, Eileen con su complicidad, Fica con su confiabilidad, Gina

con su espontaneidad, Natis con su afabilidad, Vicky con su

hiperactividad, y en especial Ginita, quien siempre ha estado allí, y que en

tantas ocasiones me ha servido de apoyo y de paño de lágrimas –; A

Diego Ramírez y a Jaime Gutiérrez, que siempre estuvieron pendientes de

“cómo iba”, y listos a darme un empujoncito, o un jalón de orejas; A Diana

K, a Pam, a Rosa y a Sonia, de quienes a mi pesar el tiempo y la distancia

me han separado tanto; A la gente de IBM, en especial a Patty por confiar

en mí, y a Jayson porque siempre pude contar con él; A Mónica, a Maru, a

Daniel, a Franky, a Gino, a Himura, a Jaguar, a Santiago y al Abogado; A

Rafael por su paciencia y su ayuda, y a Mauricio y a Isabel, que superaron

la tortura de permanecer sin computador mientras yo adelantaba este

proyecto.

-Wolfgand Enrique Kook C.

Page 3: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 3

1. Introducción

Una gran cantidad de ciencias –

incluyendo la Física, la Biología, la

Economía y la Sociología –, han tenido

a lo largo de su historia que lidiar con

problemas de optimización.

El desarrollo del cálculo diferencial

ayudó en gran parte al desarrollo de

éstas ciencias, al proporcionar un

método relativamente sencillo para

hallar éstos óptimos, en la forma de

puntos extremos –máximos y mínimos –de una función.

El método diferencial, sin embargo, suele tener algunas importantes fallas al

intentar abarcar algunos problemas del mundo real. En breve, la realidad no

suele acomodarse a valores tan perfectamente diferenciables como aquellos

con los que se acostumbra a trabajar en el trabajo teórico. En estos casos,

históricamente, se ha recurrido a atajos en la resolución del problema que por

lo general tienden a simplificarlo, como el reemplazo de procedimientos infinitos

por procedimientos finitos, y el de problemas no lineales por problemas lineales

relativamente cercanos al original [25].

Sin embargo, en los últimos años los estudiosos de la Inteligencia Artificial han

desviado su mirada para asimilar los procedimientos utilizados por la

Naturaleza para resolver sus problemas de optimización, como son el

aprendizaje, la percepción, el raciocinio, la evolución y la adaptación.

Adaptando estos procedimientos a modelos computacionales, éstos estudiosos

han logrado desarrollar poderosas herramientas como son las Redes

Neuronales, que pretenden ser una analogía del funcionamiento del cerebro

Figura 1.1

Page 4: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 4

humano, la Lógica Difusa, basada en los procesos lingüísticos, y los Sistemas

Expertos, que emulan los procesos comunes de inferencia [11]; Todas las

cuales se agrupan bajo el término de Computación Natural o Computación

Suave [38].

Dentro de este orden de idea, han aparecido otros métodos para resolver

algunos problemas complejos a través de las teorías de la evolución

Darwinianas de Selección Natural [11], que dicen que el gran número de

diseños y soluciones complejas hallado en la naturaleza responde a cientos de

años de evolución [43]; que en lugar de examinar una función que puede no

existir o no ser diferenciable, barren en forma semi-aleatoria el dominio de

búsqueda en búsqueda de un valor óptimo. Un subconjunto de estos métodos

son los llamados Algoritmos Genéticos [42].

Page 5: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 5

2. Objetivos

El presente documento pretende hacer una introducción breve pero profunda al

tema de los algoritmos genéticos, con el fin de convertirse en material de apoyo

y consulta para cualquier investigación posterior en el tema. En particular, se

pretende hacer una profundización en los siguientes temas:

• Historia de los algoritmos genéticos, con el fin de investigar las

motivaciones históricas que dieron lugar a su aparición.

• Teoría biológica de la evolución que es la base de los algoritmos genéticos.

• Proceso de implantación de un algoritmo genético para la resolución de un

problema en particular.

• Teoría matemática que sustenta el correcto funcionamiento del algoritmo

genético, y la convergencia del mismo a una solución óptima.

• Estudio del tipo de problemas que son más susceptibles de ser resueltos a

través de algoritmos genéticos, y de aquellos que son específicamente

difíciles de resolver por ésta técnica.

• Estado del arte a Junio de 2004.

Page 6: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 6

3. Antecedentes Históricos

3.1. Evolución, Selección y Herencia

Hasta mediados del siglo XIX, las teorías predominantes para la explicación de

la diversidad de las especies eran la creacionista y la de la generación

espontánea, según la cual algunos seres –en particular aquellos que

podríamos clasificar como “alimañas” –eran generados espontáneamente a

partir de ciertos componentes, que curiosamente terminaban por ser

precisamente aquellos que servían a la criatura de alimento [40].

Sin embargo, en el Siglo XVIII, un grupo de pensadores encabezados por

Pierre de Maupertuis, Erasmus Darwin y Jean Baptiste de Lamarck

comenzaron a poner en duda el origen divino de las especies terrestres,

postulando (Al igual que ciertos pensadores en la Grecia Antigua), que las

diversas especies eran generadas por otras especies a través de un

mecanismo de evolución, por el cual los órganos que eran utilizados

habitualmente durante la vida de una criatura eran reforzados en sus hijos, y

los que no eran usados se atrofiaban en las futuras generaciones. Estas ideas

se hicieron habituales entre los círculos intelectuales, en particular entre los

geólogos, durante la primera mitad del siglo XIX, aunque siempre en forma

vaga y sin explicar el mecanismo por el cual tales modificaciones eran posibles

[51].

Pero fue Charles Darwin –nieto de

Erasmus –quien, a partir de los

descubrimientos de Alfred Russel

Wallace y de sus propias

observaciones, realizadas durante sus

viajes alrededor del mundo a bordo

del barco de reconocimiento HMS

Figura 3.1

Page 7: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 7

Beagle [51], publicó en 1859 su libro “El Origen de las Especies”, que plantea la

evolución –no la creación divina –como razón de la diversidad de las especies

que abundan sobre la tierra. Bajo las leyes de la evolución planteadas por

Wallace y Darwin, la existencia de un individuo comienza a ser determinada por

su capacidad de adaptarse a los rigores del medio en el que debe sobrevivir

(“Supervivencia del más Fuerte” [18]). Sólo los mejores, los más aptos, son los

elegidos para sobrevivir. Desde el punto de vista científico, esto es un claro

ejemplo de optimización [47].

Las teorías de Darwin, que revolucionaron al mundo de aquella época y

generaron controversias científicas y religiosas que perduran hasta nuestros

días, planteaban sin embargo dificultades derivadas del cruce –en el que se

perdía la ganancia en aptitud en la información genética de cada generación –

que no fueron resueltas hasta 1865, cuando Gregorio Mendel [28] realizó sus

descubrimientos en genética que en 1900, al ser descubiertas sus anotaciones

y combinadas con las teorías del Darwinismo puro, darían lugar al Neo-

Darwinismo [31], postulado por R. A. Fisher, J. B. S. Haldane y Sewall Wright

en los años 20 [51]. Por aquella misma época, el científico estadounidense

Thomas Hunt Morgan, junto con tres de sus alumnos, ayudó a establecer la

teoría cromosómica de la herencia [51].

Durante la segunda guerra mundial se hacen grandes avances en genética

(Término acuñado en 1906 por William Bateson): En 1940, George Wells

Beadle y Edward Laurie Tatum lograron determinar que los genes son de

naturaleza química, y en 1944, el bacteriólogo canadiense Theodore Avery

demuestra que los ácidos nucléicos (ADN y ARN) son las principales moléculas

en la codificación de información genética. Después, en 1953, James Dewey

Watson y Francis Harry Compton Crick descifran el modelo de la estructura del

ADN que es usada hasta nuestros días.

Page 8: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 8

En 1960, el genetista japonés Motoo Kimura propone su Teoría Neutral, la cual

reza que la mayor parte de las variaciones genéticas de una población no son

lo suficientemente radicales como para impulsar los mecanismos de selección

natural. Esta teoría, erróneamente llamada “Anti-Darwiniana”, será de

particular interés para nosotros más adelante; Finalmente, en Junio de 2000,

un grupo de científicos encabezados por Francis Collins logra trazar el 90% del

mapa genético del ser humano.

3.2. La Computación Evolutiva

En 1960, Ingo Rechenberg, en su libro “Estrategias Evolutivas”, propone la idea

de computación evolutiva, que no es llevada a término hasta 1975, cuando

John Holland, profesor de la Universidad de Michigan, publica su artículo

“Adaptación en Sistemas Naturales y Artificiales”, fruto de 10 años de

investigación en busca de un incremento en el entendimiento de los procesos

de la evolución, y de un diseño de sistemas artificiales que pudieran emular los

procesos evolutivos naturales. El trabajo de Holland, iniciado a principios de

los 60s a raíz de la lectura de “La teoría genética de la selección natural”

[39,42], de R. A. Fisher y logrado gracias a la ayuda de sus alumnos del curso

“Teoría de Sistemas Adaptativos”, plantea la posibilidad de utilizar los principios

de la evolución al desarrollo de soluciones óptimas para un problema particular

[42], con el uso de la teoría de Patrones, que había presentado en 1960 ante la

Western Joint Computer Conference (WJCC) [27]: Bargley [62] acuña en 1967

el término Algoritmo Genético para designar el proceso de obtención de estas

soluciones, que emula el seguido por la naturaleza para hallar los individuos

(soluciones) más aptos para adaptarse a un medio particular (el problema) [47].

Unos 15 años después, David Goldberg conoce a Holland y se convierte en su

estudiante. Golberg –un ingeniero industrial que trabajaba en diseño de

pipelines –fue uno de los pioneros en la aplicación de algoritmos genéticos a

problemas industriales [39], con lo cual se inició una rápida expansión en la

aplicación de algoritmos genéticos a una gran cantidad de problemas

Page 9: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 9

diferentes, como la optimización de estructuras moleculares, la resolución de

equilibrio en teoría de juegos, la creación automática de diseños óptimos, etc.

[12]

Finalmente, en 1992, John Koza expande la idea de los algoritmos genéticos

para generar programas diseñados específicamente para resolver tareas

específicas a través de un proceso evolutivo. Este proceso es llamado

Programación Evolutiva [38].

Page 10: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 10

4. Un Poco de Genética

A lo largo de la historia ha sido siempre motivo de sorpresa y admiración, para

la mayoría de las personas, la gran diversidad de la vida, la increíble perfección

con la que están dotados los organismos vivos para sobrevivir y multiplicarse, y

la desconcertante complejidad y especialización de estos organismos para

adaptarse al medio en el cual se desenvuelven [51]. Basta una mirada a

nuestro alrededor para darnos cuenta que la Naturaleza se encuentra llena de

diseños y soluciones complejas y sorprendentes, que permiten a los pájaros

volar, a las plantas tomar su energía de la luz solar y a algunas bacterias

soportar niveles increíbles de radiación [43].

La explicación para estos fenómenos biológicos no se dio, sin embargo, hasta

1859, cuando Charles Darwin publicó su libro “El Origen de las Especies”.

Para Darwin, la diversidad de la vida es consecuencia de un complicado y lento

proceso de adaptación gradual de los organismos a un ambiente

constantemente cambiante, y a veces hostil; Un proceso que es generalmente

denominado evolución [51].

4.1. La Selección Natural

La teoría evolucionista de Darwin se basa principalmente en el concepto de

selección natural; que no es más que una interacción entre los caracteres

emergentes de un individuo (fenotipos) y el ambiente que lo rodea [63]. Esta

interacción crea una ventaja –o desventaja –comparativa para éste,

incrementando o disminuyendo asimismo su probabilidad de supervivencia.

En general, se ha visto que los efectos ambientales conducen a un grado

variable de éxito o adaptación de individuos en una población de organismos

con características, o rasgos, diferentes. Cuando estos rasgos son heredables,

y no simplemente producto de adaptaciones morfológicas de un individuo

Page 11: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 11

particular, las características que potencian el nivel de adaptación tienden a

hacerse más frecuentes en cada generación. En palabras de Darwin:

“Como nacen muchos mas individuos de una especie que los que

posiblemente pueden sobrevivir, habrá entre ellos una recurrencia

frecuente a la lucha por la existencia, que permite que cualquier ser,

aunque varíe poco en cualquier manera que le sea beneficioso, bajo

condiciones de vida complejas y a veces cambiantes, tendrá una mejor

chance de supervivencia y, por lo tanto, será naturalmente seleccionado.

Dado el fuerte principio de la herencia, cualquier variedad seleccionada

tenderá a propagarse en su forma nueva y modificada” [63]

En otras palabras, los recursos económicos disponibles en un hábitat particular

(Alimento, espacio, número de miembros del sexo opuesto, etc.) son limitados1,

y la gran mayoría de las especies producen mucha más descendencia de la

que realmente es capaz de sobrevivir, lo cual genera una alta dosis de

competencia entre los diferentes individuos. Sin embargo, estos organismos

difieren en su habilidad para sobrevivir a causa de diminutas variaciones en sus

caracteres emergentes (fenotipos), que los hacen imperceptiblemente mejor o

peor adaptados a su ambiente [63]. Este nivel de adaptación fue descrito por

Darwin en términos de aptitud [45].

Ante diferentes niveles de adaptación, algunos individuos adquieren una

ventaja comparativa ante los demás de su especie, que les permite llegar a la

edad necesaria para la reproducción. Así, los individuos capaces de sobrevivir

logran propagar sus genotipos, con lo cual se incrementa –en forma

desproporcionada, pero proporcional a la aptitud de cada individuo –la

frecuencia de las características que potencian la supervivencia y la

1 Es de anotar que una de las mayorges influencias de Darwin en su teoría evolucionista fue la

lectura del libro “Un Ensayo sobre el Principio de la Población” de Thomas Malthus [51]

Page 12: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 12

reproducción. Al final de cada ciclo reproductivo, entonces, las características

favorables se han propagado en forma, dejando a la población en un nuevo

estado de adaptación que contribuye de nuevo a la competitividad, de la cual

pueden lentamente surgir nuevas variaciones, con lo cual el ciclo se repite, una

y otra vez [43].

Ejemplo 4.1

Las bacterias son seres unicelulares, capaces de reproducirse rápidamente y

sujetas a numerosos cambios. Muchas de ellas son parásitos, por lo cual a lo

largo de los años se han producido un sinnúmero de antibióticos que permitan

al cuerpo humano combatirlas y exterminarlas, o al menos mantenerlas bajo

control. Sin embargo, su diversidad genética permite a algunas de ellas

sobrevivan a éstos antibióticos y, gracias a su rapidez de reproducción,

multiplicarse en millones de veces en cuestión de días, propagando con ello su

resistencia a toda la población. Así, el uso globalizado de antibióticos termina

redundado en la generación de bacterias altamente resistentes.

"Cuando se usan antibióticos, hay una presión selectiva para que se dé una

resistencia. Una presión que se suma a sí misma. Así, más y más organismos

desarrollan resistencia a más y más medicamentos"

-Joe Cranston, Ph.D., Director del Departamento de Políticas y Estándares en

Medicamentos de la Asociación Médica Americana en Chicago [43].

La selección natural actúa de modo positivo o negativo, según el rasgo

favorezca la aptitud reproductiva del individuo que lo porta, o la perjudique. En

el segundo caso, la tendencia del rasgo será a la marginación o a la

desaparición. Existen multitud de casos en que un rasgo puede ser beneficioso

al individuo cuando lo ostenta sólo una serie de individuos en la población, pero

se convierte en perjudicial si lo ostentan todos. De este modo, la propia

selección se encarga de mantenerlo en las proporciones adecuadas para que

no sea lesivo a la población, pero sin extinguirlo del todo; Asimismo no todos

Page 13: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 13

los rasgos de un ser vivo son

necesariamente objeto de

selección: Existen rasgos neutros, que

pueden verse en ocasiones

seleccionados simplemente por

encontrarse acompañados de

otros rasgos que sí son sometidos a la

acción de la selección [51].

Al depender del medio, la selección

puede darse en forma diferente cuando

las poblaciones sobre las que actúa

se desarrollan en distintos

ambientes, produciendo

individuos especializados a su ambiente

particular que, no obstante ser

descendientes de un antepasado

común, pueden diferir mucho en sus

características específicas. Es lo

que sucede con los pinzones de las

islas Galápagos, observados por Darwin. Al parecer, dentro del

archipiélago, cada una de las islas constituyó un ambiente

particular para un grupo de estas aves, que a lo largo de los años, lo llevó a

generar adaptaciones completamente diferentes de las de sus vecinos.

Es de anotar que la selección natural actúa sobre una diversidad de

características ya existente, reflejo de la diversidad genética. Así, por selección

natural no se pueden crear órganos o estructuras nuevas, sino que se favorece

a los individuos que poseen características diferencialmente beneficiosas, a

partir de las cuales puede continuar actuando la selección de modo progresivo

para exacerbar el rasgo en cuestión. Así, por ejemplo, la trompa de los

Figura 4.1

Page 14: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 14

elefantes no tuvo las dimensiones actuales desde un primer momento, sino que

a partir de un esbozo de probóscide, fue objeto de selección natural a lo largo

de las generaciones, en función de las ventajas adaptativas por ella

propiciadas. En éste sentido, podemos señalar dos tipos de selección natural:

Aquella que mantiene aquellas adaptaciones que resultan favorables en un

entorno estable (selección estabilizadora), y aquella que favorece adaptaciones

en la dirección adecuada cuando se presentan cambios ambientales (selección

direccional). Este tipo de cambios producen en primera instancia drásticas

disminuciones en el nivel de población, que son generalmente seguidos por

una rápida adaptación, o por la extinción [63].

4.1.1. Selección Artificial y Selección Sexual

Uno de los puntos fuertes de la teoría de Darwin, que le daba una mayor

credibilidad, y uno de los que éste más recalcó, fue la explicación del refuerzo

de las características deseables en el proceso de cruce –también llamado

selección artificial –, en el que el encargado del proceso de selección no es el

ambiente, sino una persona que se encarga de dar mayores oportunidades de

reproducirse a aquellos ejemplares que presentan las características que

desea reforzar. Curiosamente, el cruce funcionó durante milenios sin que

nadie se preguntara cómo funcionaba.

De una forma similar, tanto Darwin como Wallace describieron lo que Darwin

bautizó “selección sexual”, por la cual ciertas características, algunas de las

cuales –como la cola del pavo real –podrían parecer completamente inútiles, y

hasta estorbosas, a los ojos de la selección natural clásica. Sin embargo, por

alguna razón sobre la cual los evolucionistas no han logrado ponerse de

acuerdo (Darwin argüía que se trataba simplemente de un capricho, mientras

Wallace insistía que era una manifestación visible de alguna otra característica

que de otra manera no sería evidente), las hembras de ciertas especies tienden

a elegir a los machos que presentan éstas características sobre los que no la

Page 15: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 15

muestran, logrando con ello la perpetuación de caracteres que, de otra forma,

no prosperarían.

La teoría de la Selección Natural propuesta por Darwin tenía algunos aspectos

teóricos de la misma –en particular, la carencia de una explicación lógica de los

mecanismos que hacían que las adaptaciones favorables fueran hereditarias,

ya que si, como se creía, los descendientes siempre tienen carácter y

apariencia intermedia de los de sus padres, esto implica que con cada

generación la diversidad genética se divide a la mitad, lo cual contradice por

completo toda la teoría de Darwin –encontraron gran debate entre la

comunidad científica de la época. No fue hasta el redescubrimiento de los

escritos de Mendel en genética que se superaron los obstáculos que

planteaban las teorías de Darwin, dando lugar a una base teórica que apoya la

teoría de Darwin desde el nivel celular [51].

4.2. Cromosomas, Genes y el ADN

La célula es la mínima unidad capaz

de actuar de forma autónoma en un

organismo. Todos los organismos

vivos están compuestos de células, y

en general se acepta que ningún

organismo es un ser vivo si no está

compuesto de al menos una célula.

Todas las células –sin importar el

organismo que constituyan –tienen a

su vez una estructura similar: Una

membrana (La membrana

plasmática), que encierra un material de aspecto gelatinoso, rico en agua,

llamado citoplasma. Al interior del citoplasma se encuentran numerosas

estructuras pequeñas, que por lo general encierra en los organismos

superiores un cuerpo prominente denominado núcleo. Cada núcleo contiene

Figura 4.2

Page 16: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 16

cierto número de diminutos organelos filamentosos llamados cromosomas.

Ciertos organismos simples, como las algas verde-azuladas y las bacterias,

carecen de un núcleo delimitado, pero poseen sin embargo un citoplasma con

uno o más cromosomas.

Estos cromosomas varían en forma y tamaño y, por lo general –sobre todo en

los organismos superiores, como los animales y las plantas –, se presentan en

parejas (Células diploides). Los miembros de cada pareja, llamados

cromosomas homólogos, tienen un estrecho parecido entre sí. La mayoría de

las células del cuerpo humano contienen 23 pares de cromosomas, en tanto

que la mayor parte de las células de la mosca del vinagre o de la fruta,

Drosophila, contienen cuatro pares, y la bacteria Escherichia coli tiene un

cromosoma único en forma de anillo. El conjunto completo de los cromosomas

de una especie constituye su “genoma” [45].

4.2.1. El ADN

El ADN –ácido desoxirribonucléico –, constituye la "columna vertebral" de un

cromosoma, y el principal codificador de material genético. El ADN es una

molécula continua, alargada, simple y delgada, compuesta de sub-unidades

muy pequeñas que se conocen como nucleótidos, dispuestas a lo largo de dos

cadenas, o filamentos, alargadas, que se enrollan para formar una hélice doble.

Cada uno de los nucleótidos está formado por un azúcar de cinco carbonos,

ácido fosfórico y una base nitrogenada. En general, en cada cadena de ADN

existen cuatro tipos diferentes de bases —adenina, guanina, citosina y timina

—. La mejor forma para visualizar el ADN es pensar en una larga escalera de

caracol en la que moléculas de fosfato e hidratos de carbono se alternan para

conformar la estructura, y las bases nitrogenadas, unidas a ésta a través de

moléculas de azúcar, constituyen los escalones.

Page 17: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 17

A lo largo de la doble hélice, cada

una de las bases se encuentra

unida por un enlace de hidrógeno a

una base complementaria

localizada en la cadena opuesta.

La adenina siempre se encuentra

vinculada con la timina, y la

guanina con la citosina. A los

lados de la cadena se encuentra

una serie de moléculas más

pequeñas (grupos laterales) de

cuatro tipos diferentes, que facilitan

la duplicación del ADN y la síntesis

de proteínas.

El ADN es la principal molécula

capaz de autorreplicarse. Para

hacer una copia nueva e idéntica de la molécula de ADN, las dos cadenas se

extienden y se separan por sus bases (cuyos enlaces son bastante débiles).

Gracias a la presencia en la célula de más nucleótidos, se pueden unir a cada

cadena separada bases complementarias nuevas, formando con ello dos

hélices dobles que, gracias a la complementariedad de las bases nitrogenadas,

serán completamente idénticos. Así, si la secuencia de bases que existía en

una cadena era AGATC, la nueva contendría la secuencia complementaria (O

imagen especular) TCTAG. Como finalmente cada cromosoma no es más que

una larga molécula de ADN, una copia de éste estilo finalmente dará lugar a

dos cromosomas idénticos.

Es a causa de los complejos mecanismos de replicación del ADN, que se cree

que esta compleja molécula no pudo haber estado presente durante el origen

de la vida, ya que para ello se habría requerido de estructuras muy

Figura 4.3

Page 18: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 18

especializadas que no pudieron existir antes del inicio de la propia evolución.

El ADN ha sido descrito como una molécula de alta tecnología que apareció

con toda probabilidad algún tiempo después del origen de la vida. Tal vez la

molécula con la que está emparentada, el ácido ribonucleico (ARN), que aún

desempeña varias funciones vitales en las células vivas, fue la molécula

autorreplicativa original.

A lo largo de la cadena de ADN se encuentran dispuestos los genes, o

unidades de herencia: Pequeñas partículas de material genético, no

necesariamente contiguo, que determinan la presencia o ausencia de una

característica determinada, o de un grupo de características, dependiendo de la

secuencia en la que se encuentren las diferentes bases. Dentro de un

cromosoma, cada gen ocupa una posición, o locus, específico, que determina

la característica que éste codifica. Cada gen puede tener diferentes

posibilidades, o alelos, y cada cromosoma puede contener un sinnúmero de

genes. El genoma humano, por ejemplo, contiene entre 30,000 y 40,000 genes

[45].

El ADN ejerce sus efectos a través de las moléculas a las que da origen,

principalmente de las moléculas de ARN, que no son más que copias de ADN

en las que la base

timina es

reemplazada por el

uracilo, e

indirectamente –A

través del ARN –,

de las proteínas,

que vienen siendo a

la vez los ladrillos y

las herramientas en

la construcción de los Figura 4.4

Page 19: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 19

seres vivos. Estas proteínas se encuentran a su vez formadas por

polipéptidos: Cadenas de unidades (Aminoácidos) que son determinadas por

las bases presentes en cada uno de los genes [51].

4.2.2. Decodificación

Para obtener una cadena de polipéptidos, el ADN es desenrollado, y sus dos

cadenas separadas en una porción de su longitud. Una de ellas es utilizada

para formar ARN mensajero, o ARNm, con la ayuda de una enzima

denominada ARN polimerasa. El proceso, denominado trascripción, es similar

al de la duplicación de ADN, pero se diferencia de éste en que cada timina es

reemplazada por un uracilo. Una vez formado el ARNm, éste se separa del

ADN, y se inserta en una estructura denominada ribosoma, que consta de

pequeñas cadenas de ARN y de una proteína que las encapsula; Una cadena

de ARN puede ser encapsulado en una cadena completa de ribosomas, a lo

que se da el nombre de polirribosoma o polisoma.

Al interior de cada ribosoma, cada tripleta (O conjunto de tres bases

nitrogenadas) es equiparada a una porción de ARN de transferencia, o ARNt:

una tripleta de ARN que complementa –a través de sus bases, en la misma

Figura 4.6

Figura 4.5

Page 20: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 20

forma en que sucede al

interior de la molécula de

ADN –la tripleta de

ARNm, que reconoce y

se adhiere a esta

secuencia (o codón).

Cada tripleta de ARNt

(anticodón) atrae, por su

extremo opuesto, un

aminoácido específico –

Existen en total 20 tipos

diferentes de

aminoácido, que se distribuyen entre las 64 (43) posibilidades presentes en una

tripleta de cuatro bases diferentes –; Así, por ejemplo, las secuencias UUA,

UUG, CUU, CUA, CUC y CUG determinan la leucina, mientras que AGU y AGC

determinan la serina, y la UGG el triptófano. La mayor parte de los

aminoácidos están determinados de manera unívoca por sus dos primeras

bases, siendo el tercero indiferente o designando un aminoácido de una familia

próxima.

A medida que estos aminoácidos se unen en forma secuencial a las partículas

de ARNt convocadas por el ARNm, se forman enlaces químicos entre ellos, lo

que forma una cadena de aminoácidos o, en otras palabras, un polipéptido.

Tres secuencias de ARNm (La UAG, la UAA y la UGA) no determinan ningún

aminoácido en particular, sirviendo en su lugar como mecanismo de parada en

la síntesis de polipéptidos. Los polipéptidos se unen a otros polipéptidos para

formar proteínas, que irán a constituir la estructura del organismo, o

constituirán enzimas, encargadas de favorecer una reacción química en

particular. Así, una pequeña variación en una cadena de ADN puede producir

cambios radicales en la estructura o la química de un organismo [51].

Figura 4.6

Page 21: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 21

4.2.3. Morfogénesis

En los últimos años, se ha logrado un amplio conocimiento acerca del proceso

de decodificación del ADN y de formación de las proteínas. Sin embargo, el

porqué de las variaciones que sufren los organismos en respuesta a ciertas

circunstancias del medio, o la manera en que un cigoto simple puede dar lugar

a todos los tejidos y órganos diferentes que constituyen un organismo

complejo, son aún temas de debate: Si bien en los diferentes órganos y tejidos

la mayoría de las células contienen conjuntos de genes idénticos, también es

cierto que en ellos se encuentran presentes proteínas distintas. Parece ser,

por tanto, que en células diferentes –en tejidos diferentes, en particular –

algunos genes se encuentran activos y otros no. Parte de la explicación del

desarrollo de un organismo complejo debe basarse, por tanto, en cómo se

activan o se desactivan los genes en una forma específica.

Las bases de nucleótidos de ADN que codifican la estructura de los ARN y las

proteínas no son los únicos componentes de los genes: Otros grupos de bases

se encuentran adyacentes a las secuencias codificadoras, afectando la

cantidad y disposición de los productos de los genes. En organismos

superiores (Animales y Plantas, en particular), las secuencias no codificadoras

suelen superar en diez o más a las codificadoras (En el ser humano, el 99% de

cada gen es no codificador). Durante la trascripción, estas secuencias, o

intrones, son copiadas al ARN, para luego ser eliminadas de la cadena por

enzimas especiales que se encargan de “depurar” el ARNm. Asimismo, se han

encontrado secuencias repetidas de código genético, que no siempre es

utilizado en la codificación de polipéptidos. Las funciones de estas regiones

son muy poco conocidas, aunque probablemente constituyan algún tipo de

mecanismo de redundancia que permita asegurar la transmisión y verificar la

validez del código genético, o un mecanismo de control de los mecanismos de

decodificación.

Page 22: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 22

El proceso de activación de los genes en los organismos superiores aún no

está claro; Se sabe bastante, sin embargo, acerca de este proceso en las

bacterias: Junto a cada gen bacteriano existe un segmento de ADN conocido

como promotor, al cual se adhiere la ARN polimerasa para iniciar la

transcripción. Entre el promotor y el gen existe con frecuencia otro segmento

de ADN que recibe el nombre de operador, al cual puede adherirse otra

proteína, comúnmente llamada el represor. Cuando el represor se une al

operador, detiene el desplazamiento de la ARN polimerasa a lo largo del

cromosoma, y por tanto la producción de ARNm; por lo tanto, el gen se

desactiva. Sin embargo, la presencia en la célula de cierta sustancia química

provoca la separación del represor, reactivando el gen. Otras sustancias

pueden afectar al grado de actividad del gen al alterar la capacidad de la ARN

polimerasa de unirse al promotor. Este complejo sistema no parece existir en

organismos más complejos, aunque es muy posible que cada gen tenga su

propio sistema individual de promotores y represores, y que los intrones y las

secuencias repetidas desempeñen también algún papel en este proceso [51].

4.2.4. Mutaciones

A pesar que la replicación del ADN es muy precisa, no es del todo perfecta, y

algunas veces se producen errores, que reciben el nombre de mutaciones y

generalmente son producidas por la presencia de radiaciones, altas

temperaturas, ciertos compuestos químicos o de ciertos alelos específicos de

algunos genes, conocidos como genes mutadores, que pueden producir

defectos en los mecanismos de replicación. En estos casos, el nuevo ADN

puede contener uno o más nucleótidos modificados en cualquier parte de su

estructura.

Cuando se produce una mutación en la secuencia de nucleótidos que codifica

un polipéptido particular, éste puede dar lugar a una alteración –probablemente

minúscula, pero no por ello irrelevante –en la secuencia de aminoácidos de la

cadena polipeptídica. Esta modificación puede causar una seria alteración en

Page 23: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 23

las propiedades de la proteína resultante (Los polipéptidos que distinguen la

hemoglobina normal de la hemoglobina de las células falciformes, cuya

presencia causa un tipo especial de anemia que suele ser letal, difieren, por

ejemplo, en sólo un aminoácido). Ya que las proteínas sintetizadas por un

organismo suelen servir para labores muy específicas, estas mutaciones

suelen en la mayoría de los casos ser perjudiciales para los organismos que las

portan, si bien en algunos casos particulares pueden generar alteraciones

beneficiosas.

Otro tipo, más severo, de mutaciones, ocurre cuando se gana –o se pierde –

por completo un nucleótido, o cuando se altera la forma o el número de los

cromosomas. Una parte de un cromosoma se puede separar, invertir, y volver

a unir, por ejemplo (inversión), unirse a otro cromosoma o a otra parte del

mismo (traslocación). Algunas veces se pierde un fragmento de un cromosoma

que forma parte de una pareja de homólogos, y éste es adquirido por el otro.

En éste caso se dice que uno presenta una deleción o deficiencia, y el otro una

duplicación. La inversión y la traslocación pueden a veces sobrepasarse, si

bien tienden a generar errores durante el cruce sexual; La duplicación, sin

embargo, suele ser letal [51].

4.3. Reproducción Sexual

En los organismos sexuados, todas las células que componen el organismo

derivan de divisiones sucesivas de una única célula, el cigoto. Durante el

proceso de división, denominado mitosis –cada cromosoma se divide en dos

fragmentos iguales, y cada uno emigra hacia un extremo opuesto de la célula,

a través de una matriz de microtúbulos. Tras la división celular, a cada una de

las dos células resultantes corresponde el mismo número de cromosomas y

genes de la célula original, por lo que cada célula originada a través de este

proceso hereda en forma exacta el material genético de la célula original. Así,

en un organismo superior, a menos que se produzca una mutación, todas las

Page 24: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 24

células contienen el mismo material genético presente originalmente en el

cigoto.

Los cigotos, por su parte, son formados por la unión de dos células especiales,

denominadas gametos o células sexuales –el óvulo y el espermatozoide, en el

caso de los animales –, provenientes cada una de uno de los organismos

padres. Estos gametos son formados a través de un proceso especial de

división de las células terminales, denominado meiosis, cuya principal

diferencia con la mitosis radica en que cada nueva célula recibe solamente uno

de los dos cromosomas de cada par de homólogos de la célula original (Es

decir, es haploide). Así, cuando los gametos se unen durante la fecundación,

la nueva célula hereda la mitad del material genético de cada una de las

células madre, dando lugar a un organismo completamente diferente. Cuando

se produce una mutación durante la formación de los gametos, ésta será

trasmitida a las generaciones posteriores.

La unión de los gametos combina dos conjuntos de genes, uno de cada

progenitor. Cada locus, por tanto, está representado por dos genes, uno

procedente de la madre y otro del padre. Cada copia se localiza en la misma

posición sobre cada uno de los cromosomas pares del cigoto. Cuando las dos

copias son idénticas se dice que el individuo es homocigótico para aquel gen

particular, lo cual por lo general se traduce en que la característica emergente

representada por ese gen es equivalente a la presente en ambos padres.

Cuando las copias son diferentes, por otra parte –es decir, cuando cada

progenitor ha aportado una forma, o alelo, distinto, del mismo gen –, se dice

que el individuo es heterocigótico para dicho gen. En este caso, a pesar que

ambos alelos se encuentren contenidos en el material genético de un individuo,

si uno de ellos es dominante (Es decir, si predomina sobre el otro), sólo se

manifiesta éste. Sin embargo, como demostró Mendel, cuando los

descendientes son heterocigóticos, los genes recesivos pueden volver a

manifestarse en generaciones posteriores.

Page 25: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 25

Rara vez la acción de los genes es cuestión de un gen aislado que controla un

solo caracter. Con frecuencia un gen puede controlar más de un caracter, y un

caracter puede depender de muchos genes. Por ejemplo, es necesaria la

presencia de dos genes dominantes diferentes para producir el pigmento

violeta en las flores de la planta del guisante de olor. Estas plantas, cuando

son homocigóticas para alguno o ambos de los alelos recesivos implicados en

el caracter del color, producen flores blancas. Así, en algunos casos, los

efectos de un gen pueden depender de los otros genes presentes [51].

Ejemplo 4.2

La capacidad de una persona para pigmentar la piel, el cabello y los ojos,

depende de la presencia de un alelo particular (A), mientras que la ausencia de

esta capacidad, denominada albinismo, es consecuencia de otro alelo (a) del

mismo gen (por consenso, los alelos se designan siempre por una única letra;

el alelo dominante se representa con una letra mayúscula y el recesivo con una

minúscula). Los efectos de A son dominantes; los de a, recesivos. Por lo tanto,

los individuos heterocigóticos (Aa), así como los homocigóticos (AA), para el

alelo responsable de la producción de pigmento, tienen una pigmentación

normal. Las personas homocigóticas para el alelo que da lugar a una ausencia

de pigmentación (aa) son albinas.

Figura 4.8

Page 26: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 26

Cada hijo de una pareja en la que ambos son heterocigóticos (Aa) tiene un

25% de probabilidades de ser homocigótico AA, un 50% de ser heterocigótico

Aa, y un 25% de ser homocigótico aa. Sólo los individuos que son aa serán

albinos. Observamos que cada hijo tiene una posibilidad entre cuatro de ser

albino, pero al tratarse de una probabilidad, no es exacto decir que en una

familia heterocigótica, una cuarta parte de los niños estarán afectados. Ambos

alelos estarán presentes en el material genético del descendiente

heterocigótico, quien originará gametos que contendrán uno u otro alelo.

Éste no es siempre el caso cuando un alelo es dominante y el otro recesivo: El

dondiego de noche puede tener flores de color rojo, blanco o rosa. Las plantas

con flores rojas pueden tener dos copias del alelo R para el color rojo de las

flores, y, por lo tanto, son homocigóticas RR. Las plantas con flores blancas

tienen dos copias del alelo r para el color blanco de las flores, y son

homocigóticas rr. Las plantas con una copia de cada alelo, heterocigóticas Rr,

son rosas, es decir, una mezcla de colores producida por los dos alelos (Este

fenómeno es conocido como codominancia) [51].

En suma, el genotipo representa la información sobre la cual se construye un

organismo; Una especie de “programa” codificado en porciones infinitesimales

de ADN. El fenotipo es la manifestación física de éste genotipo–lo que el

Figura 4.7

Page 27: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 27

usuario ve, para seguir con nuestra analogía –, que es transcrita a partir de

éste a través de un proceso conocido como morfogénesis u ontogenia.

Los caracteres que se expresan como variaciones en cantidad o extensión,

como el peso, la talla o el grado de pigmentación, suelen depender de muchos

genes, así como de las influencias del medio. Con frecuencia, los efectos de

genes distintos parecen ser aditivos: Es decir, parece que cada gen produce un

pequeño incremento o descenso independiente de los otros genes [51].

Ejemplo 4.3

La altura de una planta puede estar determinada por una serie de cuatro

genes: A, B, C y D. Supongamos que cuando su genotipo es aabbccdd, la

planta alcanza una altura media de 25 cm, y que cada sustitución por un par de

alelos dominantes aumenta la altura media en unos 10 centímetros. En el caso

de una planta que es AABBccdd su altura será de 45 cm, y en aquella que es

AABBCCDD será de 65 centímetros.

En la realidad los resultados no suelen ser tan regulares. Genes diferentes

pueden contribuir de forma distinta a la medida total, y ciertos genes pueden

interactuar, de modo que la aportación de uno depende de la presencia de otro.

La herencia de características cuantitativas que dependen de varios genes se

denomina herencia poligénica. La combinación de influencias genéticas y del

medio se conoce como herencia multifactorial [51].

Un caso especial

de la

reproducción

sexual sucede

con los llamados

cromosomas

sexuales, que

Figura 4.9

Page 28: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 28

pueden ser X o Y. A pesar que el cromosoma Y, de longitud aproximada de un

tercio de la del X, carece de información genética; su presencia o ausencia

determina el sexo de los descendientes (Las hembras son XX, los machos XY).

Como el gen X es el único que aporta información genética, todos sus genes

son, de alguna manera, dominantes en los varones, lo cual determina una gran

cantidad de características que se encuentran, como se suele decir, ligadas al

sexo.

Dado nuestro tema de discusión, podría llegar a pensarse que la frecuencia

relativa de ciertos alelos en una población determinada varía radicalmente con

el tiempo, favoreciendo rápidamente a aquellas características que dan

ventajas infinitesimales. Sin embargo, esto está lejos de la verdad. Se ha

demostrado [51] que éstas frecuencias –llamadas también frecuencias génicas

–son casi invariantes a lo largo del tiempo, mientras los procesos de selección

natural y de mutación –que, como se ha dicho actúan muy esporádicamente –

no contribuyan a modificarlas. Esto, sin embargo, contribuye a que la

diversidad genética permanezca, y no se disuelva rápidamente con el tiempo.

En éste ámbito, la evolución puede describirse como el proceso responsable de

la variación de las frecuencias génicas.

Uno de los puntos cruciales para la generación de mutaciones que puedan

llegar a trasmitirse de forma hereditaria es durante la meiosis. Una de las

mutaciones más comunes es una falla en la separación de una pareja de

cromosomas homólogos, que genera gametos –y, por tanto, cigotos –con

cromosomas extra (trisómicos o polisómicos), o con cromosomas faltantes

(monosómicos), ambas mutaciones degeneran en graves incapacidades (El

síndrome de Down, por ejemplo, es causado por una trisomía en el cromosoma

21). Sin embargo, cuando el conjunto completo de cromosomas tiene

problemas en separarse, se produce lo que se llama una poliploidía, que es el

único proceso conocido hasta el momento de crear nuevas especies en una

sola generación. La poliploidía suele ser fatal en la mayoría de los organismos,

Page 29: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 29

pero en ciertas especies hermafroditas pueden dar lugar a individuos viables y

fértiles, que suelen ser incluso más robustos que sus antecesores diploides.

En general, los genes que contienen mutaciones suelen ser recesivos: Sus

características no se manifiestan a menos que dos de ellos coincidan para dar

lugar a una situación homocigótica. Esto suele ser más probable en la

reproducción consanguínea, por lo que las enfermedades hereditarias suelen

ser más frecuentes en hijos de padres con relación familiar. En los últimos

años, el uso de ciertas herramientas tecnológicas, como los rayos X, los

compuestos radioactivos y ciertos compuestos químicos han dado lugar a un

gran incremento en la tasa de mutaciones [27].

4.3.1. Recombinación de Caracteres

Uno de los principios planteados por Mendel es el de la independencia en la

herencia de diferentes caracteres. Según él, cada característica observable es

heredada en forma independiente de las otras. Como demostró Thomas Hunt

Morgan, esto es cierto sólo cuando estas características se encuentran

codificadas en cromosomas diferentes. Cuando los genes se encuentran sobre

un mismo cromosoma, éstos se heredan como una unidad aislada mientras el

cromosoma se mantenga intacto. Se dice entonces que los genes heredados

de ésta forma se encuentran de alguna manera ligados.

Este ligamiento, sin embargo, no siempre es completo: Las combinaciones de

características de cada progenitor pueden terminar reorganizándose entre sus

descendientes. Durante la meiosis, una pareja de cromosomas análogos

puede intercambiar material durante lo que se llama recombinación o

sobrecruzamiento, en cierto modo un tipo de “unión de los cromosomas”. Este

sobrecruzamiento se produce más o menos al azar a lo largo de los

cromosomas, de modo que la frecuencia de recombinación entre dos genes

depende de la distancia que los separe en el cromosoma –Será más frecuente

en cuanto más alejados se encuentren los genes –. En el descendiente que

Page 30: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 30

procede de los gametos, el sobrecruzamiento se manifiesta en la forma de

nuevas combinaciones de caracteres visibles. Cuanto mayor sea el

sobrecruzamiento, más elevado será el porcentaje de descendientes que

muestran las nuevas combinaciones.

Esta recombinación de alelos puede tener lugar sin que se produzcan

intercambios recíprocos entre los cromosomas. En apariencia, cuando existen

dos versiones distintas del mismo gen (en un individuo heterocigótico), una de

ellas puede ser corregida para equipararse a la otra, a través de un proceso

denominado conversión genética, que puede tener lugar en cualquier dirección

(Un alelo recesivo puede ser modificado por uno dominante, pero el proceso

puede también darse a la inversa) [51].

4.4 Evolución

Así pues, a un nivel básico, la evolución parte del proceso de reproducción,

mediante la combinación de los cromosomas de los progenitores en sus hijos, y

–Según la teoría de Richard Dawkins (El gen egoísta) [29] –tiene lugar en los

cromosomas, no en los individuos que estos generan. A través de la selección

natural, el medio ambiente elige los cromosomas con "buenas estructuras",

permitiendo a los individuos que éstas generan reproducirse más a menudo

que los demás [37]. A medida que transcurre el tiempo, la suma de los

cambios imperceptibles en el genoma de una población, causados

principalmente por cruces y mutaciones, va transformando lentamente unas

especies en otras [45].

El proceso de evolución es, entonces, consecutivo, interminable y altamente

aleatorio; Determinado por el nivel de adaptación de un individuo particular al

medio ambiente en el cual se desarrolla, y no por su ventaja absoluta sobre los

otros. En éste sentido, no hay un objetivo o un estado final para el proceso de

evolución: Cada nuevo cambio en el medio ambiente puede dar lugar a nuevos

Page 31: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 31

cambios poblacionales, lo cual hace de la selección natural un proceso

interminable [45].

La teoría neutra de Kimura, por la cual gran parte de las mutaciones no tienen

efectos reales en el momento de la morfogénesis –intercambiando bases

nitrogenadas que tienen el mismo significado a la hora de producir

aminoácidos, o generando cadenas de polipéptidos que finalmente no crean

diferencias apreciables en las proteínas que conforman –, ha generado una

gran controversia en el ámbito de la genética que aún no se ha logrado salvar

del todo. Sin embargo, proporciona una gran herramienta en el cálculo de los

períodos de existencia de los antepasados comunes de cualquier par de

especies.

Es importante para nuestra futura exploración de los algoritmos genéticos, en

particular cuando queramos modelar los procesos evolutivos como Cadenas de

Markov, añadir el hecho de que el proceso de evolución no tiene memoria, en

el sentido en que en la formación de cromosomas únicamente se considera la

información del período anterior [37].

Page 32: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 32

5. El Algoritmo Genético

5.1 Introducción

Muchos interesantes problemas computacionales pueden ser vistos como

problemas de búsqueda u optimización; Es decir, problemas en los que la

solución consiste en buscar la mejor solución dentro de un conjunto de

soluciones posibles [29] o, en otras palabras, un x’ tal que bajo una función

dada F(x), F(x’) sea el máximo (O el mínimo, en algunos casos) de la función

para el conjunto de búsqueda.

Históricamente, la mayoría de algoritmos de búsqueda en un espacio n-

dimensional de gran tamaño en que una búsqueda exhaustiva resultaría

impráctica [45], se han resuelto por métodos basados en los algoritmos de

escalada o hill climbing [6,3] que, a su vez, requieren para su implantación de

métodos de cálculo de gradientes [9], con el fin de determinar los caminos de

mayor o menor inclinación2; Estos métodos, si bien son usualmente bastante

eficientes [29], pueden presentar graves problemas –e incluso fallar

miserablemente –cuando se presentan múltiples máximos (O mínimos)

relativos [58].

Ejemplo 5.1

Halle el máximo global de la función:

[ ]2)sin()sin()1()1(16),( ynxnyyxxyxf ππ−−=

En el espacio de búsqueda [0,1]2:

2 En cálculo diferencial, los puntos óptimos (Máximos o mínimos) se encuentran encontrando

los puntos en que la inclinación tiende a ser 0.

Page 33: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 33

Como vemos en la gráfica, un método de escalada funciona perfectamente

para el caso en que n = 1. Sin embargo, cuando n = 9, puede ser

extremadamente difícil para el algoritmo encontrar un máximo global [58]. En

algunos casos, incluso, la función de búsqueda es tan irregular que el mejor

método de búsqueda para hallar un máximo o mínimo global es un muestreo

aleatorio exhaustivo [27].

Los algoritmos genéticos surgen como una forma no estándar de solución de

problemas estándar de optimización [58], que pueden estar tan definidos como

el problema de nuestro ejemplo (Encontrar el máximo de una función en un

intervalo dado), o ser tan difusos como la evolución misma [30]; Para ello, se

aplican los métodos ya presentes en la evolución –que ya sabemos que

funcionan, siendo nosotros mismos prueba de su eficiencia [45] –, evadiendo

con ello las técnicas de cálculo de gradientes. En palabras de Holland [37]:

"Se pueden encontrar soluciones aproximadas a problemas de gran

complejidad computacional mediante un proceso de ‘evolución simulada’".

Figura 5.1

Page 34: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 34

Los algoritmos genéticos son, entonces, parte de lo que ha sido llamado

comúnmente “computación biológicamente inspirada”, una ramificación del

área de Inteligencia Artificial o neuroinformática que parte del conocimiento de

los procesos biológicos para crear procesos computacionales que los emulen.

Un área del conocimiento que no debe ser confundida, sin embargo, con la

bioinformática, que es la rama de la computación que se aplica a los procesos

biológicos [45].

Es importante tener en cuenta que, dado el hecho de que los algoritmos

genéticos se inspiran en los procesos de evolución y selección natural, la

heurística [58] de un algoritmo genético tiene lugar en conjuntos, o poblaciones,

de hipótesis, que actúan en concierto para hallar una solución óptima al

problema en forma conjunta; no en hipótesis separadas que son optimizadas

en forma individual [52,30]. Esto proporciona, entonces, un paralelismo innato

que permite navegar un enorme espacio de búsqueda en busca de

combinaciones óptimas [56] en forma eficiente y en un período de tiempo

relativamente corto.

5.2. El Algoritmo Genético

Como hemos mencionado, un algoritmo genético emula los procesos naturales

de selección natural y evolución; Para realizar una implementación de un

algoritmo genético, entonces, debemos encontrar un modelo computacional

apropiado que nos permita modelar de alguna manera los procesos genéticos

que fueron descritos en el capítulo anterior.

Como ya hemos dicho, la información genética de cualquier organismo viviente

se encuentra codificada en sus cromosomas; En el caso de los algoritmos

genéticos, cada uno de los valores posibles en estos “cromosomas” debe

codificar una hipótesis de la solución, o un punto en nuestro espacio de

búsqueda [53,50], que en el contexto del algoritmo serán a su vez llamados

Page 35: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 35

“individuos” [54]: En nuestro ejemplo anterior, cada individuo representaría la

hipótesis de que la función dada, evaluada sobre un par ordenado (x, y),

constituyera el máximo global de ésta en el intervalo dado.

Para codificar adecuadamente este individuo, requeriríamos de la información

necesaria para ubicar inequívocamente éste par ordenado; Información que, en

nuestro ejemplo, se encuentra en los valores x e y que lo constituyen; La

representación, probablemente binaria, de cada uno de estos valores,

constituiría uno de los genes indivisibles de nuestro individuo, con la

concatenación de éstas representaciones constituyéndose en un cromosoma

[6], en la que la ubicación de cada gen constituiría su locus, y sus diferentes

valores posibles serían sus alelos.

Esta codificación de la información es una de las principales diferencias entre

los algoritmos tradicionales de optimización y un algoritmo genético [3]; Es,

asimismo, una de sus principales fortalezas: Siempre que se encuentre un

método apropiado de codificar la información –y un adecuado mecanismo de

evaluación de las hipótesis, como veremos más adelante –casi cualquier

problema podrá ser resuelto a través de un procedimiento virtualmente idéntico,

sin necesidad de un conocimiento específico del problema en particular [30,50].

Al igual que en los procesos de selección natural, un algoritmo genético no

actúa sobre individuos particulares, sino sobre conjuntos de individuos

(poblaciones). Bajo éste contexto, el nivel de adaptación al medio de cada uno

de los individuos estaría representado por la cercanía que este presentara a lo

que sería una solución óptima del problema en cuestión. Este nivel de

adaptación, medido en términos de aptitud, es dado por una función de aptitud

F(x), que es única para cada implementación de un algoritmo genético [8]. En

el caso de nuestro ejemplo, una función de aptitud apropiada sería,

simplemente, la función a optimizar, evaluada para el par (x, y) dado por el

Page 36: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 36

cromosoma en cuestión. En otros casos, sin embargo, ésta función puede no

ser tan fácilmente discernible.

Una vez se tiene una población inicial (típicamente escogida al azar, aunque se

pueden utilizar ciertos métodos heurísticos para generar una población inicial

específicamente “buena”), ésta es transformada a través de una serie de

operadores genéticos, que no son más que versiones artificiales de los

procesos de selección, cruce y mutación, en una nueva generación de

hipótesis que, se supone, se encontrarán más cerca de la solución del

problema en cuestión que sus progenitores. El proceso se repite entonces

continuamente hasta lograr cierto objetivo predeterminado, dado bien por el

número de iteraciones, por cierto nivel de aptitud esperado [29], o por el grado

de convergencia de la población, que generalmente es medido en distancia

promedio de Hamming3 [35], o deriva genética [19].

La idea del algoritmo genético se basa en la suposición de que la solución

correcta existe, y es susceptible de ser encontrada mediante una cierta

combinación de los genes que constituyen a la población inicial [42]. En éste

sentido, el algoritmo no es una búsqueda secuencial de un individuo en

particular, sino de una serie de “bloques de construcción” que permitan mejorar

cada vez más los individuos existentes [27]. Si el algoritmo está bien diseñado,

es muy probable que la población converja a una solución aproximada –o

exacta, en el límite infinitesimal – [6]. Esta suposición no es correcta el 100%

de las veces, y hay casos en que la generación de una solución óptima no está

garantizada; el desafío es, entonces, encontrar un proceso genético que

maximice las posibilidades de obtener ésta solución [52].

3 La distancia de Hamming representa la diferencia entre dos cromosomas, es decir, el número

de símbolos que deben ser alterados (0 a 1 o viceversa, en nuestro caso) para convertir a uno

en el otro. Para mayor información, ver capítulo 11.

Page 37: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 37

Como hemos podido ver, la principal diferencia entre los procesos naturales de

evolución y los algoritmos genéticos reside en la presencia o ausencia de un

objetivo final: A diferencia de la evolución, donde nunca hay un objetivo

específico diferente a la adaptación a un ambiente, en un algoritmo genético el

objetivo está ligado al problema que se desea resolver y es, por tanto, el

indicador de que este proceso ha llegado a su fin [45].

Sin embargo, como en su mayor parte un algoritmo genético no es más que

una metáfora de un proceso biológico real, en éste trabajo nos referiremos a

muchas de las características de éste en términos utilizados tradicionalmente

en biología, como es común en la bibliografía relativa al tema. A continuación

presentamos un paralelo de términos biológicos y su significado en el contexto

de algoritmos genéticos:

Biología Algoritmos Genéticos

Individuo Parámetros que representan una posible solución al

problema.

Cromosoma Representación codificada de un individuo.

Gen Representación codificada de un parámetro particular.

Locus Posición de cada gen dentro del cromosoma.

Alelo Valor posible para un parámetro o característica codificado.

Genotipo Estructura interna de un cromosoma.

Fenotipo Manifestación o propiedades en la decodificación del

genotipo.

Población Conjunto de Individuos.

Generación Población en un ciclo determinado.

Aptitud Función a optimizar evaluada para un individuo.

Cruce, Mutación Operadores de Búsqueda.

Selección

Natural

Selección de soluciones de mayor aptitud.

Tabla 5.2 - Paralelo de Términos [11,31,54]

Page 38: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 38

Un algoritmo genético es, en suma, un método sistemático [62] de optimización

y aprendizaje gradual [38,56] en paralelo [54], inspirado en los mecanismos

evolutivos de genética, adaptación y selección natural [45,6,56], que

“evoluciona” un conjunto de hipótesis a un problema dado, hasta hallar una

solución plausible al mismo [30].

5.2.1. Componentes de un Algoritmo Genético

Antes de implementar cualquier algoritmo genético es fundamental tener en

cuenta los siguientes elementos [12,56,58,11]:

• El problema que se desea resolver, que determinará a su vez el modelo de

codificación y la función de aptitud.

• Un modelo de codificación, o representación cromosómica, a través del cual

se indica la forma en que se almacena la información en el genoma. Este

modelo es crítico para el éxito del algoritmo.

• El tamaño de la población, que determinará en gran medida la complejidad

y eficiencia del algoritmo, así como un criterio de selección de la población

inicial.

• Una función de evaluación de la adaptación de los cromosomas, o función

de aptitud, que se encuentra en gran medida determinada por el problema

que se desea resolver.

• Un mecanismo de selección de los individuos para ser cruzados, que debe

estar en función de la aptitud.

• Una serie de operadores genéticos, que definan las reglas para obtener

nuevos individuos a raíz de los existentes, a saber:

Page 39: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 39

o Cruce: Cómo se realizará la recombinación de caracteres.

o Mutación: Cómo y en qué medida se añadirá aleatoriedad al

algoritmo.

o Otros operadores (Muerte, Aborto, Envejecimiento, etc.)

• Un criterio de reemplazo de los individuos de una generación por individuos

de una nueva generación. En particular:

o Una serie de reglas para el tratamiento de individuos no factibles.

o Decisiones en cuanto al reemplazo total o parcial de las

generaciones anteriores con los nuevos individuos.

• Un criterio de parada, que determina los parámetros con los cuales se dará

por finalizada la búsqueda (Número de iteraciones, aptitud mínima, etc.).

• Otros parámetros: Cualquier otro criterio que sea necesario para llevar a

cabo la implantación.

5.3. El Proceso

En un algoritmo genético

encontramos dos

operaciones

fundamentales: La

selección de aquellos

individuos mejor adaptados

a la solución óptima del

problema en cuestión, para

su reproducción; y el cruce

de estos individuos para Figura 5.3

Page 40: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 40

obtener una nueva población. Estas dos operaciones son repetidas

continuamente un cierto número de veces, o hasta hallar un individuo con un

nivel de costo aceptable (Criterio de Parada).

El proceso de selección de individuos se fundamenta, como hemos visto, en

una evaluación de los mismos, dada por la función de aptitud escogida. Esta

función constituye el único enlace entre el proceso de solución del problema en

cuestión y el problema en sí (En un algoritmo genético tradicional no se trata de

“forzar” la solución a través de los operadores), y por tanto, debe ser escogida

meticulosamente: Una función de aptitud equivocada puede impedir la

convergencia de la solución, resultando generalmente en una estabilidad

conocida como deriva genética, o resultar en una solución que, minimizando la

función de costo, no es una solución óptima para el problema en cuestión. De

la misma manera, unos criterios de selección o cruce equivocados pueden

arruinar la consistencia interna de los individuos resultantes, arruinando por

completo la solución.

Como apoyo a estas operaciones fundamentales, suelen presentarse otras

que, si bien no alteran el principio fundamental del algoritmo genético, pueden

ayudar a mejorar su rendimiento con su presencia. Tal vez la más común de

estas operaciones sea la mutación, que consiste en una pequeña modificación

aleatoria del código genético de un individuo. Las mutaciones, aunque no del

todo necesarias, pueden aumentar la velocidad de convergencia del algoritmo,

dando lugar a cromosomas más cercanos –y, por tanto, aceptables –o lejanos

–desechables –al valor de costo (o aptitud) esperado. Algunos ejemplos de

otras operaciones no fundamentales serán tratados en el capítulo 14.

En la estructura básica de un algoritmo genético, una vez se ha escogido un

método apropiado de codificación y se selecciona al azar una población, se

evalúa cada uno de los miembros de la misma y se verifica si se ha cumplido el

criterio de parada. De no ser éste encontrado, se prosigue en forma secuencial

Page 41: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 41

con las operaciones de selección, cruce y mutación (y cualquier otra operación

no fundamental que sea implementada), para retornar luego al estado de

evaluación, y proseguir con el ciclo hasta que se cumpla el criterio de parada.

Una vez esto se logra, el individuo de mayor aptitud de la población resultante

es generalmente tomado como una solución aceptable para el problema en

cuestión.

BEGIN

i,t := 0,0

Población := Generación Aleatoria

FOR Tamaño(Población)

Aptitud[43] := Evaluación(Población[43])

i := i + 1;

END FOR

REPEAT

/* Nueva Generación */

i := 0

FOR Tamaño(Población) / 2 DO

/* Basado en su aptitud: */

Padre[0] := Selección (Población)

Padre[1] := Selección (Población)

Población[43] := Cruce (Padre[0], Padre[1], 0)

Población[i + 1] := Cruce (Padre[0], Padre[1], 1)

t := t + 1

Mutación (Población[43])

Mutación (Población[i + 1])

Aptitud[43] := Evaluación (Población[43])

Aptitud[43] := Evaluación (Población[i + 1])

i := i + 2

END FOR

UNTIL Criterio de Parada

END

Seudocódigo aproximado de un Algoritmo Genético [6,3,56]

Page 42: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 42

5.4. Características

El método que siguen los algoritmos genéticos es muy diferente al de los

problemas clásicos de optimización [42]. En particular, en comparación con

otros procedimientos, se caracterizan por ser [47,62]:

• Estocásticos: Las transformaciones dadas para el proceso de búsqueda de

la solución y el paso de una generación a otra son probabilísticas, no

determinísticas [3]. Debido a la cierta aleatoriedad asociada a éste proceso

(En particular, en la selección de parejas para cruce y en las mutaciones),

es muy posible llegar a respuestas diferentes –aunque posiblemente igual

de válidas –en diferentes ejecuciones [58].

• De Búsqueda múltiple: El proceso es realizado simultáneamente en un

conjunto de cromosomas, lo cual permite que no se llegue a una solución

única, sino posiblemente a varias –con un costo similar –en un período

relativamente corto de tiempo; Incrementando con ello la probabilidad de

hallazgo de múltiples soluciones diferentes.

• Exploratorios: De todos los algoritmos estocásticos, los algoritmos genéticos

son los que realizan una mayor exploración al subespacio de posibles

soluciones.

• Independientes de los Parámetros Iniciales: La convergencia del algoritmo

es relativamente independiente de la población inicial, a menos que ésta

sea realmente degenerada. Esto es particularmente cierto en poblaciones

relativamente grandes, escogidas de forma aleatoria.

• Robustez Paramétrica: El éxito del algoritmo depende de la codificación de

los parámetros; No de los parámetros en sí. Si la representación de los

datos y las operaciones de cruce y selección han sido bien escogidas, es

Page 43: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 43

muy difícil que el algoritmo no converja. Esto es particularmente bueno

para problemas muy complejos, en los que no existen criterios para escoger

una población inicial en particular: Si el algoritmo está bien diseñado,

convergerá más o menos rápidamente a una solución relativamente

aceptable.

• Paralelismo intrínseco: Independientemente de su implementación, los

algoritmos genéticos exploran el espacio en forma paralela.

• Independencia del Problema: El algoritmo genético no está ligado con el

problema particular. Esto hace al algoritmo bastante robusto, por ser útil

para cualquier problema, pero a la vez débil, por no estar especializado en

ninguno [39,9]. Se han implementado técnicas de conocimiento de dominio

que hacen del algoritmo un mecanismo mucho más especializado [5], si

bien algunos teóricos argumentan que violan los principios básicos del

algoritmo genético. Estas técnicas serán exploradas con detalle en el

siguiente capítulo.

5.5. ¿Cuándo usar un Algoritmo Genético?

Es importante enunciar que gran parte de la eficacia de los algoritmos

genéticos depende de la interdependencia de los diferentes parámetros sobre

los cuales se realiza la búsqueda: Para parámetros completamente

independientes, es mucho más económico realizar una evaluación y

consecuente optimización de cada parámetro por separado, para lograr con

ello un óptimo global. Asimismo, en problemas con parámetros completamente

interdependientes no es posible encontrar soluciones globales a raíz de

soluciones parciales. Los algoritmos genéticos tienen, entonces, su máxima

aplicabilidad en el intermedio de estos dos extremos, es decir, en problemas

para los que los diferentes parámetros tienen simplemente una dependencia

parcial [29].

Page 44: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 44

De la misma manera, la practicidad del algoritmo genético depende

enormemente del tamaño del espacio de búsqueda. No es práctico, por

ejemplo, implementar un algoritmo genético en espacios relativamente

pequeños y fácilmente enumerables, en los que un mecanismo de búsqueda

por enumeración sería bastante más práctico. En espacios de búsqueda

continuos con un solo pico son mucho más eficientes los métodos de búsqueda

basados en gradientes.

Los algoritmos genéticos, sin embargo, han mostrado poseer grandes ventajas

para resolver problemas NP-completos [20] (Esto es, problemas que pueden

ser resueltos en un tiempo polinomial no determinístico [48]) mediante la

búsqueda en espacios especialmente grandes, no lineales [11], o con una gran

cantidad de dimensiones, en los que el número de soluciones viables es

escasa [9] y que, por tanto, no pueden ser explorados en forma exhaustiva [45],

cuyo rango es conocido [50] y que presentan una cierta consistencia interna

que permite la obtención de soluciones globales a raíz de soluciones parciales;

Espacios como los que resultan de funciones ruidosas y multimodales [18],

como las funciones de DeJong [45].

Funciones de DeJong

Se consideran como funciones de DeJong todas las funciones del tipo:

∑ += n kiik Gaussixxf

1)1,0()(

Esta serie de características hace a los algoritmos genéticos especialmente

eficientes para la solución de problemas complejos de optimización, que

cuentan con varios parámetros susceptibles de ser combinados de manera

específica para hallar una solución óptima: Problemas con muchas

restricciones o condiciones difíciles de modelar matemáticamente, o que

presentan complejas interdependencias en sus parámetros [11]. En particular,

Page 45: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 45

ciertos problemas –como la asignación de canales en redes celulares de radio

[45,49] –no pueden ser resueltos sin la ayuda de algoritmos genéticos.

Los algoritmos genéticos han sido utilizados en toda una serie de aplicaciones,

como son:

• Diseño de componentes electrónicos.

• Diseño de sistemas de control (En robots, por ejemplo) [54,3,49,50].

• Diseño de lentes para oftalmología [31].

• Diseño paramétrico de aeronaves [3].

• Generación de Gramáticas (Regulares, libres de contexto, etc.) [50].

• Motores de Búsqueda Web.

• Optimización de Consultas en Bases de Datos [50].

• Reconocimiento de Patrones (Imágenes, Voz [49], etc.) [50].

• Simulación de Producción [18].

• Síntesis Farmacéutica.

Y se han utilizado exitosamente para la resolución de problemas para los que

no se conocía previamente solución alguna [50]; se ha reportado que hasta el

2001 el uso de Algoritmos Genéticos fue responsable del registro de al menos

15 patentes para nuevos inventos alrededor del mundo.

Page 46: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 46

Antes de implementar un Algoritmo Genético para la resolución de un

problema, es necesario tener en cuenta que los algoritmos genéticos

consumen una cantidad excesivamente alta de recursos computacionales. En

el curso de un algoritmo genético se suelen realizar por lo general al menos

100,000 evaluaciones, antes de dar con una solución final [29].

5.6. ¿Porqué Funcionan?

Debido a la naturaleza aleatoria de los algoritmos genéticos y a que los

mecanismos de codificación de los diferentes problemas son elegidos por el

usuario, no existe una teoría concluyente que permita describir con precisión su

comportamiento; En particular, no es posible demostrar que para un tipo de

problema siempre se convergerá a una población cercana al óptimo en un

número fijo de iteraciones. Basados en esto, y en una serie de demostraciones

matemáticas, algunos teóricos han argumentado que los algoritmos genéticos

no incorporan correctitud, consistencia, certeza, orden o justificabilidad [58].

Sin embargo, como veremos a lo largo del presente trabajo, es evidente que

los algoritmos genéticos no solo son utilizados en toda una gama de

aplicaciones, sino también que efectivamente resuelven los problemas para los

cuales son diseñados; Es posible justificar con argumentos matemáticos –como

el teorema de los esquemas desarrollado por Holland en sus primeras

investigaciones [42], que será expuesto a lo largo de los capítulos siguientes –

por qué los algoritmos genéticos, en la práctica, funcionan [3].

Page 47: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 47

6. Codificación

La codificación del algoritmo genético es un proceso que consiste en hallar,

para cada una de las posibles soluciones, una representación computacional

que la determine –y sea determinada por ella –de forma única, que permita una

rápida evaluación de la función de costo y una fácil ejecución de los diferentes

operadores genéticos. “Cada cromosoma debe de alguna manera incluir

información completa y suficiente para representar la hipótesis que lo define”

[38]. En suma, durante el proceso de codificación, se aplica sobre cada uno de

los conjuntos de parámetros (x1, x2,…, xn) que constituyen un punto dentro del

espacio de búsqueda una función C(x1, x2,…, xn): Rn → B* que lo transforma en

una representación binaria de sí misma.

La forma más común de codificar un conjunto de parámetros consiste en hallar

una serie de características puntuales que una solución dada pueda tener

(Representadas como 1) o no tener (Representadas por 0) [46], y codificar así

cada una de las características de nuestras hipótesis como un uno o un cero,

generando con ello cadenas binarias de igual longitud [58]. Algunas veces,

estas características pueden tener estados intermedios (alelos) o requerir que

una serie de condiciones se cumplan antes de que éstas sean exhibidas, por lo

cual se requiere algunas veces de más de un bit para cada una. Así, cada una

de las características es codificada en un gen; y el conjunto de estos genes

determina un cromosoma.

Otra forma común de representar una solución es tomar cada uno de sus

parámetros y representar sus posibles valores como una cadena binaria,

usando tantos bits como sean necesarios para abarcar el rango completo de

valores posibles [28]. Por ejemplo, si lo que queremos optimizar es una función

de 3 números entre 0 y 1000, podemos representar cada número como una

cadena de 10 bits (Para valores entre 0 y 1023); Con lo cual podremos

representar los valores posibles como una cadena de 30 bits, que

Page 48: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 48

representarían la concatenación de las representaciones de cada uno de los

parámetros [9]. Bajo ésta representación, cada porción de cadena de 10 bits

sería un gen. En general, se recomienda utilizar algoritmos genéticos cuando

los cromosomas son de al menos 30 bits. Un tamaño menor sería fácilmente

susceptible de ser enumerado, y resuelto más fácilmente por otro método [9].

El proceso de codificación supone, entonces, una transformación lineal del

espacio de búsqueda: Asumiendo que la interacción entre parámetros es no

lineal, el tamaño del espacio de búsqueda queda determinado por el número de

bits usados en la codificación. Bajo este contexto, una cadena de bits de

tamaño L define, entonces, un espacio de búsqueda representado por un

hipercubo de tamaño 2L [9], en el cual se realiza la búsqueda efectiva.

La representación binaria a ser utilizada depende enormemente del problema a

ser resuelto [38] y, en muchos casos, la forma en que ésta es codificada –el

orden de los genes dentro del cromosoma [6], la representación binaria de

cada gen, etc. –puede influir enormemente en el desempeño del algoritmo. De

hecho, para muchos teóricos, una codificación apropiada es quizás el factor

más importante del desempeño de un Algoritmo Genético [6].

6.1. Código de Grey

Una recomendación común a la hora de representar números enteros como

cromosomas es la utilización del llamado Código de Grey, un ordenamiento de

2n números binarios en forma tal que para cada número decimal, la diferencia

entre su representación y aquella de su predecesor o de su sucesor sea solo

de un bit.

Este tipo de codificación es generalmente utilizado en codificadores mecánicos

en los que un cambio leve de posición solo afecta un bit, lo cual lo hace

especialmente práctico en algoritmos genéticos. Bajo una codificación binaria

Page 49: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 49

tradicional, cualquier pequeño cambio en un algoritmo genético podría

modificar de forma inesperada el valor almacenado en un cromosoma.

El código de Grey se puede utilizar para crear representaciones “circulares”, en

las que el cambio de un bit en el último valor posible genera el primero. Un

código de Grey de L bits es, en éste sentido, una representación binaria de un

ciclo Hamiltoniano sobre un hipercubo de L dimensiones. Bajo ésta suposición,

podemos ver que la forma de codificar sobre 4 o más bits bajo un código de

Grey no es única, lo cual permite que se produzcan permutaciones o

inversiones de bits [7].

6.1.1 Códigos de Grey

Se puede implantar un código de Grey de L bits mediante un procedimiento

sencillo, siguiendo los pasos enunciados a continuación [7]:

• Partir de un código de Grey de L-1 bits (Obviamente, el único código de

Grey posible para 1 bit es {“0”, “1”})

• Las 2L-1 primeras representaciones corresponden a las cadenas del

código de Grey de L-1 bits, cada una de ellas precedida de un cero.

• Las 2L-1 representaciones siguientes corresponden a las cadenas del

código de Grey de L-1 bits, con sus términos invertidos, y cada una de

ellas precedida de un uno (después de la inversión de términos).

6.3. La Implicación Doble

A la hora de codificar el genoma hemos de intentar establecer una relación

biyectiva entre los posibles valores del genoma y el espacio de soluciones

válidas, de acuerdo con las restricciones del problema. Esto nos va a permitir

que el algoritmo pueda generar todas las soluciones posibles –es decir, que

pueda recorrer todo el espacio de soluciones sin pasar por alto alguna región

Page 50: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 50

del espacio –, así como que se restrinja a un espacio de soluciones válidas

[47].

Esta biyectividad nos permitirá asimismo obtener una función inversa C-1(b): B*

→ Rn, a la que llamaremos función de decodificación, que nos permitirá obtener

los parámetros adecuados una vez obtengamos una solución aceptable [54].

Esta biyectividad, sin embargo, no es siempre posible en la práctica, y aunque

debemos buscarla a toda costa, también debemos buscar la forma de

contrarrestar su carencia. Para ello, tenemos dos métodos: El primero es

ampliar el espacio de soluciones válidas, y dar mucho más peso, mediante la

función de aptitud, a los cromosomas válidos, o crear ciertas restricciones de

búsqueda específicas para el problema. La segunda es implementar un

sistema de abortos naturales que estudie la viabilidad del feto, y lo mate sin

permitirle cruzarse con otros si no es aceptable, de la misma forma en que lo

hace la naturaleza con sus individuos durante los primeros meses del

embarazo4.

La principal ventaja de la biyectividad es la posibilidad de, una vez obtenida la

solución en su forma de representación, poder traducir ésta unívocamente a la

solución del problema planteado inicialmente. Es por ello que decimos que a

cada cromosoma va asociado un fenotipo.

6.4. Espacios Continuos

Teóricamente, una codificación apropiada debería permitir la representación de

cualquier punto del espacio de búsqueda [43]. Sin embargo, esto no siempre

es posible: En particular, cuando el espacio de búsqueda es continuo, el

proceso de codificación –que es por lo general bastante sencillo, y robusto,

4 Una alternativa para éste método sería alterar el cromosoma inválido mediante una técnica de

mutación, en espera de llevarlo de vuelta al espacio de búsqueda válido.

Page 51: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 51

cuando las variables están definidas en un conjunto de valores discretos –se

hace muy complicado.

El problema parte de nuestra representación binaria –en realidad, parte de la

representación binaria utilizada en la gran mayoría de los computadores de hoy

en día –. Al ser un alfabeto bastante limitado, el código binario no nos permite

la representación de números reales, a menos que hagamos algún tipo de

concesiones sobre el significado de los diferentes bits (Los primeros 10 bits

representan la parte entera de un número, mientras que los siguientes 10

representan una fracción decimal, por ejemplo). En este caso, entonces, el

problema es qué tipo de concesiones debemos hacer para llegar a una

representación satisfactoria de nuestro espacio de búsqueda.

Esto, obviamente requiere de un grado bastante mayor de análisis previo de

nuestro espacio de búsqueda, ya que necesitaremos discretizar el conjunto

hasta un grado lo suficientemente fino como para cubrir una gran proporción de

las posibles soluciones (De lo contrario se corre el riesgo de ignorar una gran

cantidad de hipótesis válidas, que puede incluso incluír el óptimo que estamos

buscando), y lo suficientemente grueso como para no sacrificar el rendimiento.

Es posible, incluso, realizar una serie de iteraciones del algoritmo que vayan

“afinando” cada vez más el espacio de búsqueda, incrementando

secuencialmente la precisión de las hipótesis hasta encontrar una solución

aceptable.

La solución ya ha sido, por suerte, pensada desde hace ya bastante tiempo:

Los computadores modernos cuentan con toda una gama de representaciones

de números flotantes de simple o doble precisión que probablemente el lector

inquieto querrá investigar, si se encuentra interesado en “importarlas” a su

representación cromosómica.

Page 52: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 52

Otras posibles soluciones para éste problema podrían residir en el operador de

cruce, o en la utilización de otro tipo de algoritmo evolutivo, como un algoritmo

mimético o uno híbrido [47].

6.5. Espacios Discretos Limitados

De la misma manera, un gen que sólo puede tomar un cierto número de

valores discretos puede generar cierto número de dificultades; Sobre todo

cuando se utiliza una representación binaria, y el número de valores posibles

no es múltiplo de 2 y es necesaria, por tanto, una representación binaria que

permita un número de posibilidades mayor a la necesaria. En éste caso,

algunos de los códigos binarios serían redundantes, y no podríamos garantizar

que nuestros operadores genéticos (Cruce, Mutación, etc.) no nos llevaran a

generar individuos inválidos.

Tomemos como ejemplo un parámetro que sólo puede tomar valores entre 1 y

10. La representación más lógica para éste gen sería una cadena de 4 bits,

que nos permitiría registrar un rango de 16 diferentes posibilidades. Esto, sin

embargo, nos dejaría con 6 códigos completamente inútiles, que no tendrían

significado alguno para la función de aptitud. La pregunta es, entonces ¿Qué

hacer con ellos?

Teóricamente, tenemos tres opciones:

1. Descartar los alelos inválidos, como ilegales, cada vez que se presenten.

2. Asignar una baja aptitud a los alelos inválidos.

3. Interpretar cada uno de los códigos inválidos como un código válido.

Nuestras primeras dos posibilidades, si bien no completamente equivalentes,

tienen efectos bastante similares, dando a los individuos portadores de genes

Page 53: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 53

inválidos una alta probabilidad de ser eliminados rápidamente de la población.

Esto, sin embargo, conlleva el riesgo de dar a cromosomas que, con la

excepción de ese único gen, son bastante buenos, una gran probabilidad de

ser descartados. En éste sentido, nuestra última opción parece bastante mejor

en términos de desempeño.

Esta reinterpretación de alelos implica cambiar cada valor inválido a uno válido.

Esto puede realizarse inmediatamente, cambiando el cromosoma

automáticamente cada vez que se presenta un código inválido, o en los

procesos de evaluación y decodificación, tratando ambos patrones como si

fueran idénticos. En cualquiera de los casos, el número de modificaciones que

deben hacerse al algoritmo genético básico son relativamente pocas.

Este proceso, sin embargo, tiene algunas desventajas, la más importante de

las cuales reside en la equivalencia misma de valores de los diferentes alelos.

Esto implica que algunos de los posibles valores serán representados por más

de un código, mientras la mayoría son representados por uno solo, lo cual

disminuye en parte la diversidad genética, favoreciendo algunos valores sobre

otros. De forma similar, disminuye efectivamente la tasa de mutación, ya que

en muchos casos el cambio de aquellos bits que conducirían a estados

inválidos, generalmente serían reasignados a valores idénticos a aquellos en

los que se hallaba el gen antes del cambio, dejando con ello el valor fenotípico

del gen completamente inalterado.

Una forma de evitar estos problemas consiste en implementar un esquema

aleatorio de reasignación de valores, en el cual cada uno de los valores

inválidos es reemplazado por uno de los valores válidos, elegido al azar. Esto

evita el problema de que algunos alelos tengan un mayor “peso” que otros,

pero genera a la vez una problemática pérdida de información genética, cada

vez que uno de los genes es reasignado, lo cual puede redundar en que el

Page 54: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 54

algoritmo genético se convierta en una simple búsqueda aleatoria, sobre todo

cuando muchos otros parámetros dependen del parámetro discreto [5].

Otra posibilidad es realizar la reasignación del valor inválido teniendo en cuenta

la información genética de los padres. En éste caso, cada vez que un cruce

diera lugar a un código inválido, éste sería reasignado eligiendo para cada uno

de los descendientes el valor de ese gen en uno de sus padres, que puede ser

elegido por su mayor aptitud, aleatoriamente o estocásticamente, dando a cada

uno de los padres una probabilidad de ser elegido basada en su aptitud.

Las limitaciones que presentan los alfabetos binarios para describir éste tipo de

espacios es una de las motivaciones de aquellos que discuten la

implementación de alfabetos alternativos para la representación de algoritmos

genéticos para descartar los algoritmos genéticos con alfabeto binario como un

formato eficiente de resolución de problemas [14].

6.6. Alfabetos Alternativos

En un principio, la codificación de los Algoritmos Genéticos fue siempre llevada

a cabo a través de largas cadenas en un alfabeto binario, fácilmente

manipulables con operadores genéticos relativamente sencillos de implementar

[11]. Sin embargo, como se ha visto en los últimos años [37], en los que

algunos investigadores han buscado una representación un poco más “natural”

de los individuos (En algunos casos porque el problema mismo requería de un

alfabeto más rico [11]) [38], la representación binaria, si bien es la más

comúnmente utilizada [6], es también bastante más “pesada” para muchos

problemas [50], toma un mayor tiempo de evaluación [14], y no es muy natural.

Por suerte, no es la única posibilidad.

Es común encontrar genomas en base 4, que pretenden modelar fielmente la

estructura del ADN biológico, así como genomas modelados en cadenas en

Page 55: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 55

base 10, que constituyen una forma más natural para un ser humano de

abordar un problema en particular [58].

Los seguidores de los alfabetos alternativos para algoritmos genéticos

generalmente presentan diferentes ventajas en el uso de éstos alfabetos, entre

las cuales se encuentran [14]:

• Su alto nivel hace mucho más natural para el ser humano su uso en la

resolución de problemas, así como su posterior interpretación.

• Requieren de un menor nivel de abstracción en su representación, y

constan de un número mucho menor de datos unitarios (Las cadenas

binarias deben ser de una longitud mucho mayor que cadenas de

alfabetos simbólicos de mayor cardinalidad para contener un espacio de

datos de igual volumen; Es más corto, por ejemplo, tener un 100 en

base 10 que tener un 1100100 binario); Por tanto, su evaluación es

mucho más rápida.

• Al ser elaborados “a la medida” del problema en cuestión, las

representaciones con alfabetos alternativos no dan lugar a cromosomas

con información inválida o fuera del espacio de búsqueda.

• Al contar con un mayor número de alelos, cada gen del cromosoma

tiene la posibilidad de explorar una porción mucho mayor del espacio de

búsqueda con un menor número de transformaciones.

Estas asunciones, sin embargo, van en contravía del teorema de los esquemas

de Holland, por el cual la codificación óptima para cualquier problema a ser

resuelto con algoritmos genéticos debe tener un alfabeto de cardinalidad 2 [39],

como veremos más adelante; Por otro lado, el algoritmo genético de alfabeto

binario tiene ciertas ventajas:

Page 56: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 56

• Independencia del problema: Si bien, para cada problema debe

encontrarse un método de codificación, no es necesario reinventar los

operadores de selección, cruce y mutación cada vez que se implementa.

• Facilidad de los Operadores: Los operadores genéticos no son

solamente reutilizables cuando se trabaja un alfabeto binario; Son

también, con la excepción de la evaluación, más fáciles de implementar

computacionalmente: Es mucho más fácil transformar 0s en 1s y

viceversa que implementar complejas transformaciones de unos

símbolos en otros a través de cruces y mutaciones.

• Velocidad de Evaluación: Si bien las cadenas son más largas y se

encuentran a una mayor distancia de la representación real de la

información que contienen, también es cierto que cada uno de los

valores que contienen es mucho más rápidamente interpretado a la hora

de evaluar su aptitud.

Así, tradicionalmente, el trabajo en el campo de los algoritmos genéticos se ha

realizado con alfabetos de cardinalidad 2, y a lo largo del presente trabajo nos

concentraremos en estos en nuestras explicaciones.

6.7. Cromosomas de Tamaño Variable

En algunos casos, el número de parámetros que componen el algoritmo

genético no está definido, lo cual puede implicar que se requiera de un número

variable de genes en la codificación. En estos casos, la dificultad para

determinar el número óptimo de variables se hace parte del problema, y por

tanto debe ser un parámetro más a la hora de codificar las posibles hipótesis.

En este caso, generalmente, se fija un número máximo de variables dentro del

cromosoma, y se hace que el número de variables codificado en él sea una

Page 57: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 57

variable más. Otra técnica común es la de implantar cromosomas de longitud

variable, lo cual, si bien más “natural”, requerirá de operadores genéticos

capaces de modificar la longitud de los cromosomas [39].

6.8. Diploidía

Como vimos en nuestra discusión inicial acerca de los principios biológicos de

evolución y de genética, las formas de vida más avanzadas suelen ser

diploides; Esto es, sus células suelen contener dos grupos de genes para cada

una de las características a ser sintetizadas, en lugar de uno solo. Esto les

permite tener una especie de “copia de seguridad” de algunas características

que si bien no son completamente beneficiosas bajo las condiciones

ambientales del momento, si les permiten adaptarse rápidamente cuando estas

condiciones cambian en forma abrupta.

Como hemos visto, la mayor parte del estudio de los Algoritmos Genéticos se

concentra en individuos haploides –es decir, en individuos que constan de un

solo cromosoma que contiene por sí solo toda la información genética –. Sin

embargo, siendo todo el estudio de estos algoritmos una metáfora de una serie

de procesos biológicos, sería interesante considerar las ventajas y las

desventajas de mantener individuos diploides en nuestras poblaciones.

En general, el tener dos genes para cada uno de los parámetros de un

problema en particular permite a cada uno de los individuos contar con una

reserva de información que "recuerde" una solución alternativa al problema en

cuestión. Bajo éste esquema, uno de los genes (Aquel que representa la mejor

solución al problema) se constituiría como “dominante”, mientras el otro

permanecería “recesivo”, y aún cuando algunos individuos contaran con

material genético potencialmente perjudicial, éste sería susceptible de ser

perpetuado en la siguiente generación, en particular cuando el material

genético complementario es de muy alta aptitud.

Page 58: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 58

Si bien a primera vista este esquema de información extra puede parecer

agregar poco valor a nuestro algoritmo, la perspectiva cambia cuando tenemos

en cuenta que en algunos casos nuestro medio ambiente, representado por la

función de aptitud, puede variar con el tiempo. Ante ésta perspectiva, podemos

intuir que cuando una población de individuos haploides ha convergido en su

mayor parte hacia un punto en específico, cualquier cambio en el método de

evaluación causaría un gran retraso en el algoritmo: El paso de un punto de

convergencia a una nueva exploración del espacio de búsqueda a través de

procesos de mutación, y de allí a un nuevo punto de convergencia podría tomar

una gran cantidad de generaciones, lo cual afectaría enormemente el

desempeño.

Sin embargo, cuando se dispone de material genético extra –en particular, de

una cantidad mayor de alelos, como en el caso de los individuos diploides –,

estos cambios pueden ser balanceados rápidamente por un cambio abrupto en

la dominancia de ciertos genes; lo cual permitiría que el paso de la

convergencia a la reexploración fuese casi inmediato.

Los individuos diploides son particularmente útiles en aplicaciones en las que el

sistema puede cambiar entre dos estados alternativamente. Sin embargo,

representan una gran cantidad de información extra, ya que cada individuo

contiene no solo dos cromosomas, sino también información respectiva a la

dominancia de cada uno de sus genes.

La cuestión de la diploidía, si bien se ha tratado teóricamente [5], parece no

haber sido explorada experimentalmente de forma satisfactoria.

6.9. Esquemas

Para explicar cómo y porqué funciona un algoritmo genético es necesario

introducir un concepto básico: el esquema o patrón, definido como un

Page 59: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 59

subconjunto del espacio de búsqueda que presenta cierto grado de similitud

entre sus elementos [41] o, en términos de Holland [56]:

"Una plantilla de similitud que describe un subconjunto de

cadenas con similitudes en ciertas posiciones".

Para representar un esquema, es necesario añadir el signo de indiferencia (#) a

la cadena de bits que representa los cromosomas de nuestros individuos, lo

cual aumenta asimismo nuestro alfabeto en un caracter. Cada patrón está

entonces representado como una cadena del nuevo alfabeto, donde el caracter

# es un comodín [30,59] que representa indiferencia entre los valores restantes

del alfabeto original. Así, asumiendo que nuestros cromosomas son cadenas

de unos y ceros, cada esquema h será una de las cadenas en el alfabeto (0, 1,

#) [3].

En general, para cualquier población de cromosomas de longitud L

representadas por un alfabeto de cardinalidad K –que determina KL

cromosomas diferentes posibles –, el número de patrones posibles es (K+1)L

[3]. Así, si bien sobre alfabetos de diferente cardinalidad K1<K2 se pueden

definir cromosomas con la misma capacidad de información variando la

longitud de los mismos ( 2121 :21 LLKK LL >= ), la cantidad de esquemas que se

pueden definir sobre el alfabeto de menor cardinalidad es mucho mayor que los

que pueden ser definidos sobre el alfabeto de cardinalidad mayor

( 21 )1()1( 21LL KK +>+ ). Sobre esta base, Holland argumentó [50] que el

alfabeto óptimo para la codificación de un algoritmo genético tiene cardinalidad

2.

Page 60: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 60

Como podemos ver, cada uno de los esquemas definidos sobre un espacio de

búsqueda dado define un hiperplano, subconjunto de este, que contiene a

todos los cromosomas que comparten sus posiciones fijas –esto es, aquellas

posiciones diferentes de ‘#’ –. Se dice entonces que un cromosoma b

pertenece al esquema h si [27]:

iii hbhLii =→≠•≤<∀ '#'0

Ejemplo 6.1:

Para una población cuyos individuos están representados por cadenas binarias

de longitud 3, el esquema h1 = “###” representaría a todos los individuos de la

población. De igual forma el esquema h2 = “10#” representaría indistintamente

al individuo (100) y al individuo (101) [41].

Como podemos ver, para un espacio de búsqueda determinado, el conjunto de

los esquemas posibles no representa el total de los subconjuntos posibles de

Figura 6.1

Page 61: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 61

hipótesis. El conteo simple nos muestra, por ejemplo, que mientras un

cromosoma binario de tamaño L puede tener 2L configuraciones diferentes, y

por tanto L22 subconjuntos posibles, el número de esquemas posibles es

solamente 3L 5[52,30].

##1## 0#1## 0##0#

00000 X

00100 X X X

00110 X X

01001 X X

11111 X Tabla 6.1: Interrelación entre Cromosomas y Esquemas

Un esquema de la longitud de un cromosoma representa una familia de

cromosomas. Así, por ejemplo, el esquema h = “0011##10”, corresponde a la

familia de cromosomas {“00110010”, “00110110”, “00111010”, “00111110”} [3].

En éste sentido, los esquemas representan el grado de parecido o similitud

entre los individuos de una misma población [41]. En general, cualquier

conjunto de n cromosomas está representado a lo sumo por nKL esquemas

[3,57]. Cada población es caracterizada por los diferentes esquemas que en

ella puedan encontrarse [8].

Al mismo tiempo, sin embargo, la relación funciona a la inversa: Una serie de

cromosomas con características comunes puede definir uno o más esquemas

que son evaluados simultáneamente. Así, por ejemplo, sobre el par {“1011”,

“1101”}, se encuentran definidos los esquemas {“1###”, “###1”, “1##1”}. En

particular, sobre cada uno de los individuos de una población se evalúan

5 Donde 3 es el número de caracteres posibles (‘0’, ‘1’ ó ‘#’), y la exponente representa las

diferentes combinaciones de los mismos.

Page 62: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 62

simultáneamente KL esquemas diferentes [57]. Este fenómeno es el llamado

“paralelismo implícito” de los algoritmos genéticos [38].

Es debido a éste paralelismo implícito, según el razonamiento de Antonisse,

que al evaluar empíricamente el desempeño de algoritmos genéticos con

cadenas de alfabeto binario y decimal, se puede comprobar que estas últimas

funcionan mejor en la práctica, contrario a las predicciones de Holland. Según

él [38,5], si bien un alfabeto de mayor cardinalidad contiene un menor número

de esquemas, al evaluar cada uno de los individuos se evalúan implícitamente

muchos más esquemas que en uno de cardinalidad mayor.

Según Holland, los individuos de mayor aptitud son representados por "buenos

esquemas" –esto es, por esquemas que reflejan un patrón por el cual los

individuos que representan tienden a tener una aptitud superior –para el

problema en particular [3,30]. Se espera entonces, que la estructura de los

diferentes esquemas nos diga algo de los individuos que los representan; En

particular, se espera que individuos que se acercan al máximo estén

representados por esquemas similares [52].

En éste sentido, lo que realmente procesa un algoritmo genético son los

esquemas, antes que los individuos: Al evolucionar la población inicial,

generación tras generación, los esquemas más aptos son pasados de una

generación a otra, incrementando la probabilidad de encontrar mejores

soluciones, mientras que los esquemas menos aptos tenderán a desaparecer

[41].

Ejemplo 6.2:

Supongamos que estamos tratando de optimizar la función f(x)=x2 mediante un

algoritmo genético, empleando para ello individuos con cromosomas de 10 bits

que suponen una representación binaria del número real que representan.

Bajo ésta representación, nos parece lógico que los individuos pertenecientes

Page 63: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 63

al esquema h1 = “1#########” tendrán en promedio una mayor aptitud a

aquellos que son instancia del esquema h0 = “0#########” [30].

Bajo ésta teoría, una buena solución a un problema está constituida por unos

buenos patrones, o "bloques de construcción", al igual que una buena máquina

está hecha por buenas piezas. Para hallar la solución óptima a un problema,

se requiere encontrar éstos buenos bloques y unirlos unos a otros a partir de

técnicas de cruce, seleccionando los mejores cada vez para ir incrementando

la cantidad de buenos bloques, hasta llegar –potencialmente, en el infinito –a

encontrar la solución perfecta para el problema en cuestión [42].

6.9.1. Orden y Longitud Característica de un Esquema

Una vez definido el concepto de esquema, se hace importante en nuestro

estudio definir los conceptos de orden y longitud característica del mismo, de

los cuales depende la aptitud de los esquemas para el problema en particular,

como veremos al realizar nuestro análisis del rendimiento de los algoritmos

genéticos [41]:

• Orden o Especificidad [11]: El orden de un esquema s se define como el

número de locus definidos [57], o posiciones fijas (Esto es, diferentes de "#") al

interior de un esquema [56], y es representado como o(h). Por ejemplo, para el

esquema s = “##10#0#”, o(h) = 3.

∑≠

='#':

1)(ii hh

ho

• Longitud característica: La longitud característica de un esquema s se define

como la máxima distancia medida en número de posiciones entre la primera y

la última posición fijas de los dos extremos, al interior del mismo, y es

representada como l(h). Por ejemplo, para el esquema s del ejemplo anterior

Page 64: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 64

(h = “##10#0#”), la distancia característica (La distancia entre el primer uno y el

último cero), l(h), es 3. Es decir, si:

( )[ ]#'#' ≠∧<•¬∃∧≠•∃ ki hikkhi ,

y

( )[ ]#'#' ≠∧>•¬∃∧≠•∃ kj hjkkhj ,

Entonces,

ijhl −=)(

Holland demostró, como veremos en los siguientes capítulos, que los buenos

esquemas tienen una probabilidad exponencial de reproducción [3,56], y que

los esquemas más aptos son aquellos que presentan bajo orden y corta

longitud característica, ya que al aplicar sobre ellos los operadores de cruce y

mutación es más difícil destruirlos [41].

6.10. Consideraciones Finales

Como vemos, no hay una única forma de abordar el problema de la

codificación, y no hay –asimismo –una única forma de codificar un conjunto

dado de parámetros [38,6]: Una buena codificación puede hacer la

programación y resolución muy sencillas, y acelerar enormemente la velocidad

de convergencia del algoritmo. Sin embargo, la elección de una codificación

fija presenta una gran dificultad para el usuario que no conoce el espacio de

búsqueda lo suficiente para predecir su evolución a lo largo del tiempo.

La codificación no puede ser un proceso separado de los demás; Es importante

tener en cuenta los mecanismos de evaluación, cruce y mutación, y el

Page 65: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 65

problema a resolver, con el fin de optimizar el desempeño del algoritmo:

Cuando se sabe a priori que ciertos esquemas serán bastante significativos en

la resolución de un problema en particular, y se utiliza cruce básico de un punto

(Ver capítulo 9: Cruce), por ejemplo, es mejor tener éstos esquemas

localizados al principio o al final del cromosoma, evitando con ello que a la hora

del cruce un buen esquema sea destruido [15].

Page 66: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 66

7. Evaluación

Una vez se ha elegido la forma de codificar el conjunto de posibles soluciones,

es necesario hallar algún criterio que determine el valor, o aptitud, de las

mismas; Es decir, una medida de la utilidad que presenta el punto del espacio

de búsqueda que cada una de ellas representa para resolver el problema en

cuestión [9,30]. Este valor es determinado por la función de aptitud.

7.1. La Función de Aptitud

La Función de Aptitud, también conocida como Función de Adaptación,

Función de Evaluación o Función Objetivo, es una función F(b): ℬ* → ℛ que,

dado un cromosoma, retorna la aptitud asociada a éste [9], basado en un

criterio “real” de evaluación del cromosoma, que –a diferencia de la mayor

parte de los pasos del algoritmo (cruce, mutación, etc.) [58] –depende por

completo del problema en cuestión. De hecho, como ya lo hemos visto, una

vez se realiza la codificación, la función de aptitud es el único enlace entre el

problema a ser resuelto y el proceso de resolución del mismo [6,58].

Al serlo, la evaluación se convierte no sólo en uno de los puntos críticos del

algoritmo genético –el más importante de ellos, después de la codificación

[9,6], según algunos autores –sino también el operador genético más

dependiente del dominio de búsqueda [53]. De hecho, es común incluso que

una misma serie de técnicas de mutación y de cruce puedan ser aplicadas a

problemas diferentes, siempre y cuando se apliquen criterios específicos de

codificación y evaluación para cada problema [21].

De manera similar, la función de aptitud depende por completo del esquema de

codificación que se haya implantado sobre la población. La función de aptitud

debe ser fácilmente calculable a partir de la representación elegida [3], ya que

de lo contrario se requeriría realizar en cada ciclo del algoritmo, y para cada

Page 67: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 67

uno de los individuos, un proceso bastante costoso, en tiempo y en recursos

computacionales, de decodificación, con el fin de obtener su aptitud [39].

En el caso particular de la búsqueda de máximos o mínimos globales de una

función en particular, la función de aptitud constituye específicamente la función

a optimizar.

Aunque en éste trabajo en general trataremos los algoritmos genéticos como

un método para encontrar los máximos globales de la función objetivo, es

importante mencionar que un algoritmo genético es igualmente eficiente en la

búsqueda de mínimos globales; Sólo hay que recordar que lo que se busca,

entonces, es la menor aptitud posible, que nuestro esquema de selección

favorecerá a los individuos de menor aptitud, y que llegaremos, probablemente,

a nuestro criterio de parada, cuando alcancemos un cierto nivel de aptitud

inferior a un máximo predeterminado.

7.2. Paisaje de Aptitud

El espacio definido como el producto cruz del espacio de búsqueda y la función

de aptitud de un algoritmo genético es llamado paisaje de búsqueda o paisaje

de aptitud, como analogía al paisaje determinado por el relieve que crean los

diferentes niveles de aptitud sobre el hiperplano formado por los diferentes

puntos del espacio de búsqueda.

Es importante tener en cuenta que, dependiendo de la función en particular, se

puede presentar toda una gama de paisajes de búsqueda diferentes: Unos

relativamente planos, otros con un máximo global único, otros con máximos y

mínimos locales diferentes, o incluso de la misma aptitud. Es posible, incluso,

un paisaje bastante irregular, con máximos y mínimos locales distribuidos

desigualmente a lo largo del espacio de búsqueda [30].

Page 68: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 68

Holland [38] demostró que los algoritmos genéticos no son la solución óptima

en problemas en los que el paisaje de búsqueda es relativamente convexo –

esto es, uniformemente ascendente hacia el máximo global –o plano –cuando

no hay diferencias apreciables en la aptitud (Ver Rango de Aptitud y

Escalamiento).

7.3. La Aptitud

Ejemplo 7.1

Supongamos un problema codificado en cadenas de ocho bits, y llamemos pn a

la posición n en la cadena (0 ≤ n ≤ 7). Supongamos también que nuestra

función de adaptación está dada por:

76543210 267435 pppppppp +−++−+−

Para los siguientes cromosomas, tendremos las aptitudes listadas a

continuación:

0 – 0 + 0 – 0 + 0 + 0 – 0 + 0 = 0

0 – 3 + 0 – 7 + 0 + 1 – 0 + 1 = -8

0 – 0 + 4 – 7 + 0 + 0 – 2 + 1 = -4

5 – 3 + 0 – 0 + 6 + 1 – 0 + 0 = 9

Page 69: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 69

5 – 0 + 4 – 0 + 6 + 0 – 1 + 0 = 14

5 – 3 + 4 – 7 + 6 + 1 – 2 + 1 = 5

El quinto cromosoma, con la mayor aptitud (14), tendría la mayor probabilidad

de reproducirse, seguido del cuarto (9) y el último (5). El segundo y el tercer

cromosomas, con las más bajas aptitudes (-8 y -4, respectivamente), tendrían

por su parte una probabilidad casi nula de reproducirse, y ante ciertos criterios

de selección, probablemente serían eliminados

La aptitud de los diferentes individuos de una población será el criterio para la

selección de los más aptos para la reproducción, siguiendo con nuestra

metáfora de los procesos biológicos [45,6]; Se desea que aquellos individuos

que presenten una mayor eficiencia fenotípica [9] –representada en el algoritmo

como una aptitud más aproximada al máximo buscado –tengan una mayor

probabilidad para cruzarse con otros, lo cual se logra condicionando ésta

probabilidad a su aptitud [47].

Algunas veces, la aptitud no es un valor único, sino una serie de valores

(Cuando se busca una serie de objetivos [8], antes que un objetivo único). Sin

embargo, para evaluarlo basta que estos valores constituyan un orden parcial

[39]; Es decir, que al tomar cada par de individuos se pueda determinar

unívocamente cuál de los dos es mejor, y que ésta relación sea transitiva:

( ) ( ) ( ) ( )[ ]bfafbfaf <∧>¬

y,

Page 70: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 70

( ) ( ) ( ) ( ) ( ) ( )cfafcfbfbfaf >→>∧>

7.4. Rango de Aptitud y Escalamiento

Como podemos ver, no hay tal cosa como un nivel de aptitud mínimo o máximo

para un algoritmo genético. En realidad, el rango de aptitudes depende

enormemente del método de codificación y de evaluación elegidos. Así como

puede ser enormemente amplio, puede también ser bastante llano. Ambos

extremos traen problemas al algoritmo [6]:

Cuando el rango de aptitud es muy grande, puede presentarse una

convergencia prematura del algoritmo genético, a medida que los individuos de

aptitud relativamente alta –amplificada por el amplio margen que los separa de

los demás individuos –comienzan a dominar rápidamente el pool genético,

obligando a la población a converger en máximos locales.

Del mismo modo, un rango de aptitud muy pequeño puede conllevar a una

deriva genética, causada por la falta de una presión de selección: Al ser todos

los valores comparativamente similares, el algoritmo no tiende a ningún punto

en particular del espacio. Es posible que converja, tras una gran cantidad de

generaciones, pero es poco probable que converja a un máximo global, ya que,

finalmente, éste es muy similar al promedio.

Estos problemas son también comunes cuando el rango de aptitud no es tan

extremo; En particular, cuando surgen superindividuos con aptitudes muy por

encima del promedio que lleven a la población a converger rápidamente a su

código genético, eliminando la diversidad, o cuando, después de varias

iteraciones, las diferencias en la aptitud de los individuos se ven ampliamente

reducidas [42].

Una solución bastante más común a estos problemas es aplicar una serie de

transformaciones a la función de adaptación, que normalicen los valores

Page 71: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 71

resultantes, o bien disminuyendo las diferencias en aptitud para disminuir los

privilegios de la elite, o bien aumentándolas para favorecer los criterios de

selección. Estas son [39,42,6]:

• Escalamiento Básico: A la aptitud de cada uno de los individuos resultantes

se le resta la aptitud del peor. Esto generalmente tiene el efecto de

incrementar la aptitud porcentual de la elite, si bien tiene el problema de

hacerse casi obsoleto cuando se presentan aptitudes extremas (Máximos o

mínimos muy alejados del promedio). Este problema puede ser resuelto,

sin embargo, cuando se fijan aptitudes máximas y mínimas.

• Escalamiento por Ventanas: Equivalente al anterior, si bien el valor restado

de la aptitud de cada uno de los individuos es el menor valor de la

generación pasada (O la antepasada, o de la primera generación, o de una

generación dada en el pasado). Tiene el mismo problema del escalamiento

básico, y se debe tener en cuenta que un nivel mínimo de aptitud no puede

ser usado como criterio de parada.

• Escalamiento Exponencial: La aptitud real de cada gen es la raíz cuadrada

del resultado de la función de costo, más un valor dado. Esta

transformación tiene el efecto de normalizar los resultados.

• Escalamiento Sigma: En esta estrategia, el valor esperado del número de

individuos en la población intermedia es función de su aptitud, de la aptitud

media de la población y de su desviación estándar. Un ejemplo de

escalamiento sigma [50]:

( )⎪⎭

⎪⎬⎫

⎪⎩

⎪⎨⎧

=

≠−

+=0)(,1

0)(,)(2

)()(1

P

PP

PfbfbE

i

i

σ

σσ

Page 72: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 72

• Transformación Lineal: Para cada gen, su aptitud se calcula como el

resultado de la función de costo (x), multiplicada por un valor dado, más otro

valor (c = ax + b). En éste caso, el resultado depende en gran parte de los

valores elegidos para a y b.

• Normalización Lineal: Dados n genes, se organiza el resultado de su

función de costo de tal manera que al menor valor se le da la primera

posición, al segundo menor la segunda, etc., dejando al mejor valor en la

posición n. La aptitud de cada gen será, entonces, la posición que ocupa

en éste arreglo. A pesar de su aparente sencillez, éste método de

evaluación ha sido probado como el más poderoso método de escalamiento

de aptitud de aquellos mencionados en este capítulo.

En algunos casos, se utilizan técnicas de escalamiento que “aplanan” el paisaje

de aptitud en las primeras iteraciones, previniendo con ello una convergencia

prematura, pero que van ampliando el rango de aptitud conforme avanza el

algoritmo, con lo cual logran contrastar de alguna manera la rápida tasa de

convergencia del mismo.

7.5. Consideraciones Finales

El nivel de aptitud promedio, definido como la suma de las aptitudes de todos

los individuos de una generación, dividida entre el número de individuos de la

misma, representa una medida de la convergencia del algoritmo [6]. En un

algoritmo genético bien diseñado, se espera que la aptitud promedio aumente

en forma logarítmica con el número de iteraciones (Para mayor información, ver

capítulo 13).

En cada ciclo del algoritmo genético, cada uno de los cromosomas debe ser

evaluado. Este es uno de los pasos en que se hace evidente, y necesario, el

alto nivel de paralelismo intrínseco a los algoritmos genéticos [58]. De no ser

así, ésta evaluación podría tomar un tiempo proporcional al tamaño de la

Page 73: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 73

población [53] que, dependiendo del tamaño de la misma, podría ser

inaceptable. Por esto es importante tener en cuenta que la evaluación de

cualquier cromosoma es y debe ser completamente independiente de la

evaluación de cualquier otro [9].

Por otro lado, la comparación de los diferentes individuos unos con otros previa

a la selección puede disminuir en gran parte este paralelismo, creando un

cuello de botella que estancaría todo el algoritmo. Una buena forma de

disminuir el impacto de este problema, y de añadir un poco de diversidad

genética, es realizar esta comparación individuos únicamente entre “vecinos”;

Es decir, aquellos otros individuos que se encuentran de alguna u otra forma

“cercanos” a él [39].

La función de aptitud no siempre es única, y puede variar con el tiempo, de la

misma forma en que lo hace la naturaleza, o variar entre una serie de estados

[5].

Page 74: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 74

8. Selección

De acuerdo a las teorías Darwinianas de evolución, sólo los mejores individuos,

aquellos que se encuentran más adaptados a su medio ambiente, sobreviven

para dar descendencia [38]. Del mismo modo, en un algoritmo genético, una

vez se ha determinado la aptitud de cada individuo, se realiza una selección de

los mismos [53], con el fin de restringir el espacio de búsqueda [29] a los

individuos más promisorios –es decir, con preferencia, a aquellos de mayor

aptitud [59].

Esto se realiza generalmente a través de un proceso en dos etapas: Primero se

escogen de la población inicial Pn, de tamaño n, m individuos (m≤n) que

conformarán una suerte de “población intermedia” (Pi), que será la encargada

de generar la población de descendientes Pn+1 [3]. Esta parte del proceso

desecha automáticamente a todos los individuos que no son escogidos.

El segundo paso es, entonces, seleccionar un número p de individuos (p≤m),

de entre aquellos elegidos en el paso anterior, que serán escogidos como los

padres de la siguiente generación [3].

La selección es, entonces, una función S(P): (ℬ*)n→(ℬ*)m (m≤n) que a partir de

una población inicial selecciona una población intermedia de individuos que

serán los padres de la siguiente generación.

No siempre estos dos pasos se encuentran bien diferenciados, y es bastante

común que en una misma operación sobre el conjunto de individuos se escojan

inmediatamente los padres de la siguiente generación, desechando

automáticamente aquellos que no fueron escogidos.

Page 75: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 75

8.1. Desecho de Individuos no Aptos

Para la primera parte del proceso de selección se suele implementar un

proceso simple de selección conocido como selección simple o selección

directa [3,56], en el cual de la población P0 de tamaño n, se escogen

simplemente los m individuos de mayor aptitud para conformar con ellos la

población intermedia Pi. Esto, sin embargo, puede ser contraproducente,

dependiendo sobre todo de la magnitud de m: Como en la naturaleza, es

importante dar a las hipótesis débiles una oportunidad de sobrevivir, ya que

pueden estar a sólo unos pasos de ser buenas soluciones [43].

Al otro extremo de la balanza encontramos la selección aleatoria [3,56], en la

que los m individuos de la población intermedia son elegidos aleatoriamente de

entre los n individuos de la población inicial. Evidentemente, ésta tampoco es

una solución óptima, al no incluir ninguna información de aptitud en el proceso

de selección.

El método más recomendado –y más utilizado a nivel global –es, entonces, un

punto intermedio entre estos dos extremos: La Selección Estocástica [3], en la

que la probabilidad de ser seleccionado para cada uno de los individuos

depende proporcionalmente de su aptitud [6,45]. Uno de los métodos más

comunes de selección estocástica es la llamada “ruleta” o “rueda de la fortuna”,

que será estudiada en mayor profundidad más adelante.

En general, para que el algoritmo no pierda en eficiencia al llevar

constantemente consigo la carga inútil de individuos de aptitud

extremadamente baja, suele implementarse una suerte de “presión de

selección” [58] sobre los individuos, que permite descartar aquellos de

aptitudes particularmente bajas, a través de un método relativamente sencillo

de implementar:

Page 76: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 76

Sea P0 {b1, b2, … , bn} una población de n individuos, y f(b) una función de

aptitud definida sobre el dominio de búsqueda de P0. Así:

∑=

=n

iibfPF

10 )()(

Representa la aptitud total de la población. De la misma manera, sean α ∈ R

un número elegido al azar en el dominio R[0, F(P0)], y j ∈ N un número natural

tal que:

α≥∑=

j

iibf

1)(

La población Pi debe estar formada de todos los individuos tales que:

)()(1: 0 jkkik bfbfPbPbnkNk >∧∈→∈•≤<∀

Desechando con esto a todos los individuos de aptitud inferior del conjunto P0

[58].

Una vez se han elegido los miembros de la

población intermedia, se procede a elegir a los

padres de la siguiente generación. Para ello, hay

dos métodos ampliamente utilizados, que

veremos a continuación:

8.2. La Rueda de la Fortuna

Como ya hemos mencionado, la manera óptima

de realizar el proceso de selección de los

individuos es a través de un proceso estocástico

Figura 8.1

Page 77: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 77

en el cual la probabilidad de selección de cada uno de los individuos es

determinado por la aptitud de cada uno [53], en relación a la de el total de la

población [3], dando con ello mayores posibilidades de supervivencia a los

individuos más fuertes [6,8].

Generalmente, la probabilidad de que un cromosoma sea elegido para el cruce

es directamente proporcional a la razón entre su aptitud y la aptitud total o, en

otros términos, para el cromosoma bi de aptitud f(bi), su probabilidad de cruce

es [11,9,3]:

∑=

= n

jj

ii

bf

bfp

1

)(

)( ,

o, lo que es lo mismo,

)()(

0PFbfp i

i =

La probabilidad de cruce de cada individuo es, entonces, definida en función de

la aptitud de los demás individuos de la población [9]. En caso de problemas

en que se desea encontrar un mínimo, la probabilidad de cruce cambia un poco

[3,5]:

[ ]∑=

−= n

jj

ii

bf

bfp

1

)(1

)(1 ,

o,

)()(1

0PFnbfp i

i −−

=

Una técnica común para seleccionar individuos para su posterior cruce es la

llamada “ruleta” o “rueda de la fortuna” [38,45,54,6,8,59,55], también conocida

Page 78: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 78

como reproducción proporcionada o selección proporcional a la aptitud [28],

que se implementa a través de un proceso similar al descrito anteriormente

para la presión de selección:

Sea P0 {b1, b2, … , bn} una población de n individuos, y pi la probabilidad de

cruce del individuo bi, definida como:

∑=

= n

jj

ii

bf

bfp

1)(

)(

Así, por reglas de probabilidad:

10: ≤≤•∀ ipNi

y,

∑=

=n

iip

11

Sea α ∈ R un número elegido al azar en el dominio R[0, 1], y j ∈ N un número

natural tal que:

α≥∑=

j

iip

1

Entonces, el individuo bj es elegido como padre para la siguiente generación.

El proceso de selección se repite, con reemplazo (Es decir, un individuo de alta

aptitud puede procrear múltiples veces en un solo ciclo) [9,53], hasta que hay

un número de padres igual a n [38,45,54,6,8,59,55].

Este procedimiento es seguido por algunos investigadores de forma un tanto

diferente –eligiendo un número al azar entre 0 y la aptitud total, y eligiendo el

Page 79: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 79

individuo cuya aptitud, sumada a la de todos sus antecesores, sea igual o

superior al número elegido –. El método aquí presentado es matemáticamente

equivalente a éste, y se aproxima más a las leyes de la probabilidad que ya

han sido ampliamente tratadas por una diversidad de autores y nos permitirán

un estudio más profundo de este proceso en capítulos posteriores.

Este procedimiento de selección presenta la más alta tasa de convergencia [8],

lo cual puede ser una ventaja, pero puede conllevar a una rápida pérdida de

diversidad –y por tanto, a una convergencia prematura –cuando en los

primeros pasos del algoritmo se presentan individuos especialmente fuertes

que dominen la población [28]. Es por ello que se recomienda utilizar técnicas

de normalización de aptitud cuando se utiliza este método, para eliminar la alta

sensibilidad a aptitud que éste presenta [33].

El nombre de éste método deriva de la analogía que presenta a una ruleta o

rueda de la fortuna, en la que cada uno de los individuos está representada por

una porción pi de su circunferencia (Esto es, por una circunferencia de πpi

radianes, en forma similar a las gráficas pie que son utilizadas comúnmente

para presentar resultados estadísticos), que es girada una y otra vez para

seleccionar a cada uno de los individuos a ser cruzados [11,9].

8.3. Selección por Torneo

Una alternativa para el método de rueda de la fortuna que presenta al mismo

tiempo una menor tasa de convergencia y una mayor estabilidad es el método

de selección por torneo [9,28,6], que se basa en la idea de eliminar los

individuos menos aptos por competición directa [28].

El procedimiento, mucho más simple que el de la rueda de la fortuna, comienza

por una preselección de un grupo pequeño de individuos de la población inicial

P0, que son elegidos en forma completamente aleatoria. Se pueden realizar

torneos entre grupos de diverso tamaño, e incluso se puede variar el número a

Page 80: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 80

medida que el algoritmo avanza (Un torneo entre un grupo mayor de individuos

implica un nivel mayor de convergencia, por tanto se recomienda comenzar con

un número relativamente pequeño de individuos, para prevenir una

convergencia prematura, e ir incrementando el número a medida que el

algoritmo avanza); Los individuos, sin embargo, son generalmente elegidos en

parejas, y bajo éste supuesto continuaremos nuestro análisis.

Una vez se han elegido los dos individuos (ba y bb), estos entran en

competencia, que de nuevo puede ser directa (Torneo Binario), seleccionando

siempre el de mayor aptitud de los dos, aleatoria, eligiendo al azar

indistintamente uno de los dos, o estocástica, seleccionando uno de los dos

con una probabilidad dada por:

)()()(

ba

aa bfbf

bfp

+=

y

aba

bb p

bfbfbf

p −=+

= 1)()(

)(

Como podemos ver, el método de la ruleta de la fortuna no es más que un

torneo estocástico en el que participan simultáneamente todos los individuos de

la población [9,28,6,29].

8.4. Elitismo

Se denomina Elitismo a la serie de privilegios que reciben determinados

elementos con un nivel de adaptación especialmente bueno –inmortalidad,

mayor probabilidad de reproducirse, etc. –. En particular, a la posibilidad que

tienen éstos (Generalmente, sólo el mejor, o los mejores dos individuos de una

población) de ser copiados sin modificación alguna a la siguiente generación

[56,58,55]; un mecanismo frecuentemente implementado para evitar la pérdida

de los cromosomas más promisorios durante el proceso de generación de

Page 81: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 81

descendencia, en implementaciones que no tienen otro mecanismo de

almacenamiento de soluciones particularmente buenas [38].

Aunque a primera vista parece un tratamiento deseable para ciertos individuos,

e incluso se ha demostrado experimentalmente que en muchos casos

incrementa el rendimiento del algoritmo genético [56,55], el elitismo puede

convertirse en una decisión peligrosa, sobre todo en las fases iniciales del

algoritmo, ya que puede rápidamente producir que una elite de superindividuos

que domine por completo el pool genético del problema, eliminando con ello la

diversidad genética, e impidiendo la convergencia del mismo, o llevándolo a

una convergencia prematura [29].

Una solución para este problema es el escalamiento gradual de la función de

aptitud desde las primeras fases del algoritmo –en las que las diferencias entre

la elite y el “pueblo” deberían ser menores –hasta las fases finales, en la que

superescalar la función de aptitud evita un bloqueo de su convergencia [47];

Otra, un poco más sencilla, es la reducción gradual de la aptitud del

cromosoma con cada nueva generación.

8.5. Efectos sobre un Esquema

Como dijimos en capítulos anteriores, un algoritmo genético no opera tanto

sobre cromosomas como sobre esquemas. Teniendo esto en cuenta, y

habiendo analizado a profundidad los efectos de la selección sobre un

cromosoma, se nos hará interesante analizar asimismo los efectos de la

selección sobre un esquema, que no solo nos permitirán comenzar a

comprender la importancia de los esquemas y nos darán una idea del proceso

seguido por el algoritmo genético, sino que también nos permitirán darle una

base matemática a nuestros argumentos.

Sea p una población de n individuos de longitud L para una generación dada de

un algoritmo genético, sea f(x) la función de aptitud que se desea optimizar, y

Page 82: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 82

pc y pm las tasas, respectivamente, de cruce y de mutación definidas para el

algoritmo; Sea h un esquema particular tal que:

hbpbNi ii ∈•∈∃ :

Llamemos:

∑∩∈

=phbi

phm 1),(

es el número de instancias del esquema s en la población p,

∑=

=n

iibf

npf

1)(1)(

es la aptitud promedio de la población, y

∑∩∈

=phb

ii

bfphm

phu )(),(

1),()

la aptitud media del esquema. Como hemos visto, la probabilidad de selección

de un individuo dado x es:

)()(

pFbf

p ii =

o, lo que es lo mismo,

)()(

pfnbf

p ii =

Page 83: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 83

Entonces, la probabilidad de seleccionar cualquiera de las instancias de s

sería:

∑∑∩∈∩∈

==phb

iphb

is

ii

bfpfnpfn

bfp )()(

1)()(

Entonces, bajo nuestras definiciones anteriores:

),()(),( phm

pfnphups

)=

Después de t selecciones, entonces, tenemos [8,28,30,33]:

[ ] ),()(),(),( 1 t

t

tt phm

pfphuphmE

)=+

Esta simple ecuación, que es la base del teorema de los esquemas de Holland,

nos dice que el número de instancias de un esquema en particular aumentará o

disminuirá de forma proporcional a la razón entre la aptitud media del esquema

y la del total de la población (Aptitud relativa [28] del esquema) [11,27]. Esta

conclusión constituye el llamado teorema fundamental de los algoritmos

genéticos:

"Esquemas cortos y de orden bajo tienden a proliferar o

desaparecer en las generaciones siguientes de acuerdo con la

aptitud media6".

6 El porqué nos referimos específicamente a esquemas cortos y de bajo orden

será explicado en capítulos posteriores, al referirnos a los efectos del cruce y la

mutación sobre los algoritmos genéticos.

Page 84: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 84

Ahora bien, si tenemos que la aptitud media del esquema es función de la

aptitud promedio de la población:

)()(),( pfcpfphu +=) ,

Donde c es una constante, tenemos:

[ ] ),()(

)()(),( 1 t

t

ttt phm

pfpfcpf

phmE+

=+ ,

o, lo que es lo mismo,

[ ] )1)(,(),( 1 cphmphmE tt +=+

Sumando el efecto de varias generaciones sobre la población, no nos será

difícil inducir bajo esta suposición que un esquema especialmente apto

incrementará su participación dentro de la población en forma exponencial

[3,56,30,55], al tiempo que un esquema de baja aptitud disminuirá su

participación de la misma forma [11]:

[ ] tt cphmphmE )1)(,(),( 0 +=

Page 85: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 85

9. El Cruce (Crossover)

El operador de cruce, o de reproducción, es el encargado de realizar una

recombinación del material genético de los individuos de la población inicial [56]

para producir nuevos individuos [31]. Es, en suma, una función C(b1,b2, Pc):

ℬ*×ℬ*×ℛ[0,1]→ ℬ*×ℬ*, que a partir de un par de cromosomas y una

probabilidad de cruce Pc genera un nuevo par que es una recombinación de los

bits de ambos, y que supone un mecanismo para calcular el genoma de la

nueva generación [53], a partir del genoma de sus padres [41], que por lo

general son dos individuos de la generación anterior (Aunque pueden ser más,

como en el operador Orgía de Eiben et al. [39]), elegidos a través de las

técnicas de selección antes descritas. Una vez se produce el cruce, los padres

son reemplazados por sus descendientes. De hecho, a menos que se hayan

implementado mecanismos de elitismo, la generación anterior es desechada

por completo una vez se ejecuta la reproducción [6].

En cada ciclo de un algoritmo genético, un operador de cruce genera, mediante

la recombinación de pares de individuos de la población actual, una nueva

generación del mismo número de elementos (Generalmente, cada pareja de

padres produce una pareja de hijos [28,6]). Como ha de suponerse, de manera

análoga a lo que sucede en la naturaleza, cada uno de los individuos

resultantes de la reproducción presenta una serie de características que no son

más que la combinación de las características de sus padres [6,41]. En cierta

manera, el cruce no es más que una analogía de la reproducción sexual de

individuos haploides (Excepto, obviamente, en el caso en que se haya

realizado una codificación de los individuos como diploides)

En términos matemáticos, el cruce es análogo a una transición de estado-

espacio en una búsqueda de estado-espacio [53], es decir, un mecanismo que

permite extender la búsqueda a todas las diferentes combinaciones de alelos

existentes dentro de los cromosomas presentes en la población actual. Por

Page 86: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 86

ello, y para contar con un amplio rango de posibilidades que permita al

algoritmo moverse suavemente sobre el espacio de búsqueda (Lo cual puede

ser difícil de garantizar si no se conocen previamente las características de

éste espacio, como suele ser el caso) [43], se requiere de una cierta diversidad

genética (Que los genes de los diferentes individuos presenten un número lo

suficientemente diverso de alelos diferentes) para que la reproducción sea

realmente un mecanismo de búsqueda eficaz. Este proceso de búsqueda

sobre una población restringida recombinando el material genético existente

[31] recibe el nombre de explotación [45].

El operador de cruce es fuertemente responsable de las propiedades del

algoritmo genético, determinando en gran medida la evolución de la población

[47]. Al elegirlo se busca, lógicamente, que las características favorables de

los individuos de una generación sean perpetuadas en la siguiente, y que las

características desfavorables sean desechadas. Aunque no se busca forzar la

solución a través de la reproducción –de hecho, por lo general, el operador de

cruce no tiene conocimiento alguno del problema que se está resolviendo –, sí

se deben tener en cuenta estos objetivos al escoger su mecanismo de

implementación; Es tanta la influencia del operador de cruce en este tipo de

algoritmos que no se considera un algoritmo genético si no cuenta con uno

[39].

Si bien el mecanismo de reproducción está casi por completo desvinculado del

problema, sí se encuentra completamente ligado a los mecanismos de

codificación. En particular, se debe tener en cuenta que el operador de cruce

escogido debe siempre producir genotipos válidos para el problema en cuestión

[43]. Experimentalmente se ha demostrado que existe una dependencia mutua

entre los mecanismos de codificación y de reproducción que puede incrementar

enormemente el desempeño del algoritmo genético cuando estos son elegidos

en forma correcta (O perjudicarlo, cuando se eligen los mecanismos

equivocados).

Page 87: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 87

Ante este tipo de aseveraciones, podría pensarse que en todos los algoritmos

genéticos todos los pares de padres escogidos son cruzados en cada ciclo.

Sin embargo, esto no siempre es cierto, y en algunos algoritmos se presenta

una cierta posibilidad de que los padres sean copiados sin modificación alguna

en la siguiente generación [9,45,6]: Para cada algoritmo hay una probabilidad

de cruce pc [54], que puede estar predeterminada para todo el algoritmo [58], o

puede variar con el tiempo, o dependiendo del nivel de convergencia del

algoritmo (En cuyo caso hay discusión entre incrementar la tasa de cruce a

medida que el algoritmo converge, para aumentar gradualmente la explotación

del material genético que se ha ido encontrando, y que se sabe produce

individuos de alta aptitud; o disminuirla, con el fin de potenciar la acción de la

mutación para introducir nuevo material genético cuando el algoritmo se ha

estancado) [5]. La mayor parte de los autores recomiendan una tasa de cruce

relativamente alta, y en la práctica, en la mayor parte de los algoritmos

genéticos, se utiliza una probabilidad entre 0,6 y 1 [9,38,45,6,41].

Aunque puede sonar extraño en la analogía genética, sobre todo al considerar

los tabús asociados al cruce consanguíneo en la raza humana, en un algoritmo

genético no existe restricción alguna para el cruce de descendientes de los

mismos padres: Esta técnica de selección, llamada comúnmente inbreeding al

ser utilizada, por ejemplo, en la cría de ganado, tiende a potenciar ciertas

características sobre otras, lo cual puede ser incluso favorable. Se debe tener

en cuenta, sin embargo, que no sólo se potencian las características

favorables, y si se utiliza con demasiada frecuencia, el algoritmo corre el riesgo

de estancarse en máximos locales [39].

La idea del operador de cruce es, entonces, perpetuar las características

favorables de los individuos de alta aptitud, manteniendo al mismo tiempo la

diversidad genética de la población [41]. En general, requerimos de un

operador de cruce tal que la aptitud de sus descendiente sea al menos en parte

Page 88: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 88

función de la de sus padres (Problema que puede no ser fácil de hallar, y

puede incluso no existir), y que dependa del grado de suavidad de la función de

aptitud. De nuevo, es crítico el mantener un cierto nivel de paralelismo del

algoritmo, con el fin de no disminuir su desempeño a causa de cuellos de

botella [58].

9.1. Técnicas de cruce

Se denominan técnicas de cruce (o de recombinación) a las diferentes formas

de calcular el genoma de los nuevos individuos a partir del genoma de sus

padres (Al mencionar las diferentes técnicas de cruce nos referiremos al primer

padre como padre, y al segundo como madre, con el fin de diferenciarlos

unívocamente).

Existen gran cantidad de técnicas de cruce. Las técnicas básicas son [47]:

9.1.1. Cruce Básico o de un Punto

Se selecciona un punto de la cadena, que puede estar predeterminado, aunque

es más común elegirlo al azar. Para el primer hijo, la parte anterior a este

punto es copiada del genoma del padre y la parte posterior es copiada de la

madre. Para el segundo hijo, la parte anterior es copiada de la madre, y la

parte posterior del padre [38,6,3,41].

Figura 9.1

Page 89: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 89

Figura 14.3 (pg 187) Reemplazo.La técnica básica de cruce es bastante fácil de

implementar; No es muy útil, sin embargo, cuando el cromosoma se compone

de un número relativamente grande de genes, caso en el cual los genes que

ocupan las posiciones extremas dentro de la cadena tienen una posibilidad

bastante menor que aquellos que se encuentran en posiciones intermedias de

ser recombinados en busca de un gen óptimo.

Nótese que bajo ésta técnica, suponiendo que los descendientes reemplazan a

sus progenitores, la distancia de Hamming de cada par de cromosomas no es

modificada por el cruce, ya que los diferentes alelos pasan sin ser modificados

a los genes de uno o de otro descendiente. En general, la distancia promedio

de Hamming de una población no es modificada por un cruce de un punto. Lo

mismo es cierto para el cruce de dos puntos, el multipunto y el uniforme [35].

9.1.2. Cruce de Dos Puntos

Similar al anterior, con la diferencia de que se escogen dos puntos de cruce. El

genoma del primer hijo es una combinación de la parte inicial del genoma del

padre, la porción central de la madre, y la porción final del padre, siendo el

segundo hijo una combinación de las porciones restantes del genoma de

ambos padres.

El cruce de dos puntos tiene la ventaja sobre el cruce básico de aliviar el

problema de la separación de las porciones inicial y final de cada cromosoma

con probabilidad 1, que supone una limitación en la exploración del espacio de

búsqueda, y puede echar a perder cromosomas razonablemente buenos

[38,6,3].

En algunos casos, durante el cruce, los cromosomas son "doblados" en forma

circular al unir sus extremos antes de la división en dos puntos, lo cual permite

que el cruce se realice sobre cualquier parte de su material genético, y no

solamente que se separe la porción central de los extremos [45].

Page 90: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 90

9.1.3. Cruce Multipunto

Puede pensarse que de forma

similar al cruce de un punto o de

dos puntos, se pueden realizar

cruces sobre un mayor número

de puntos sin mayor dificultad.

Sin embargo, esto no es

recomendado: Se ha analizado

empíricamente el uso de un

mayor número de puntos de cruce y se ha encontrado que el rendimiento de

los algoritmos se degrada; La razón parece radicar en que si se intercambia

una mayor cantidad de subcadenas, las características positivas de los

cromosomas tienden a perderse [3].

Una subdivisión del cruce multipunto es el llamado cruce segmentado, en la

que se recorren secuencialmente los genomas de padre y madre, copiando el

material genético de cada uno en uno de sus hijos. Sin embargo, para cada

uno de los bits (O genes [39]), existe una probabilidad predeterminada pcs de

que en ese punto se realice un cruce, invirtiendo las fuentes del material

genético de cada uno de los descendientes.

9.1.4. Cruce Uniforme

En el cruce uniforme se elige bien sea un gen del padre o uno de la madre para

cada uno de los genes del hijo. Esto generalmente se realiza mediante la

implementación de una máscara de cruce que bien puede estar

predeterminada o ser generada aleatoriamente. Esta máscara es una cadena

binaria de unos y ceros de la misma longitud de los cromosomas, en la que

cada uno o cero implica la copia del material genético correspondiente de uno

de los padres, para cada uno de sus descendientes [28,38,6,8].

Page 91: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 91

Bajo esta concepción, podemos argüir que un cruce de un punto no es más

que un caso especial del cruce uniforme en el que todos los unos se

encuentran hacia el extremo inicial de la máscara de cruce, que en un cruce de

dos puntos todos los unos se encuentran en los extremos, etc [28,8]. Sin

embargo, para algunos autores [49], el cruce uniforme no es más que un cruce

multipunto donde el número de puntos usado es L.

Dependiendo del esquema de codificación, las técnicas más simples de cruce

tienen una alta probabilidad de producir hijos inválidos para el problema en

cuestión. El cruce uniforme, sin embargo, puede ser fácilmente modificado

para evadir éste problema [6]

Es importante tener en cuenta que la densidad de los bits determina qué

cantidad de material es tomado de cada padre, y que, en cruces uniformes

aleatorios, el número de puntos de cruce –si bien no es fijo –tenderá a ser

aproximado la mitad de la longitud del cromosoma. El cruce uniforme, si bien

suele mostrar un mayor rendimiento en la mayor parte de los problemas, no es

recomendado para problemas en los que, por ejemplo, la adaptación es función

de los pares de genes colaterales, ya que éstos pares tendrían una alta

probabilidad de ser separados al momento del cruce.

De ser seleccionada al azar, debe tenerse en cuenta que cada bit a lo largo de

la máscara debe tener una probabilidad pcu de ser un cero, y una probabilidad

1-pcu de ser un uno.

Sea pc la probabilidad de cruce elegida para el algoritmo genético.

Por reglas de probabilidad:

( )Lcuc pp −=− 11

Page 92: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 92

Donde L es la longitud del cromosoma (Esto es: Para que no se realice un

cruce en un par de cromosomas dado, no se debe realizar el cruce en ningún

punto a lo largo de estos cromosomas).

Resolviendo la ecuación para obtener pp, obtenemos:

( )10, <<+−

= ccc

ccu p

pLpLpp

o, reemplazando qc = 1-pc:

( )10, <<+

= ccc

ccu p

pLqpp

Es la probabilidad requerida para que se produzca un cruce uniforme en

cualquier punto dado del cromosoma.

9.1.5. Cruce Aritmético-Lógico

Otra manera de realizar el cruce es mediante el uso de operaciones aritméticas

o lógicas, como la suma, o el AND lógico. Este tipo de cruces es generalmente

utilizado en problemas muy especializados, en los que se posee un cierto

conocimiento de dominio y, por tanto, se puede forzar un poco la solución

mediante el operador de cruce, limitando con ello la universalidad del mismo,

pero haciéndolo más eficiente para el problema en cuestión [38].

En general, el cruce aritmético-lógico tiende a producir descendientes de

acuerdo a las siguientes ecuaciones:

mp gaagg )1(1 −+= ,

y

pm gaagg )1(2 −+= ,

Page 93: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 93

Donde gp y gm son genes correspondientes de los cromosomas cruzados, g1 y

g2 los genes correspondientes sus descendientes, calculados a partir de estos,

y a es un factor de peso aleatorio elegido al azar en el intervalo [0,1].

Una especialización del cruce aritmético-lógico, tal como ha sido descrito, es el

cruce heurístico, en el cual el factor de proporción a no es elegido al azar, sino

de acuerdo a la aptitud proporcional de cada uno de los cromosomas, esto es:

)()()(

mp

p

bfbfbf

a+

= ,

Donde bp y bm son los cromosomas a ser cruzados [60].

El cruce uniforme puede ser optimizado a través de un proceso generalizado

que actúa sobre la totalidad de los cromosomas a ser cruzados en lugar de

sobre cada uno de los bits que los componen, utilizando operaciones

aritmético-lógicas para generar los descendientes del cruce [49]:

Sean bp, bm los cromosomas a ser cruzados. Se define como el mínimo a nivel

de bits del par (bp, bm):

mpmp bbbbmm ∧== ),(

Y como su máximo a nivel de bits:

mpmp bbbbMM ∨== ),(

Fácilmente, se puede demostrar:

ii MmLii ≤•≤<∀ 0

Page 94: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 94

Definamos, asimismo, h(bp, bm) –el esquema de cruce para el par de

cromosomas –de la siguiente manera:

⎪⎭

⎪⎬

⎪⎩

⎪⎨

≠====

=

ii

ii

ii

mp

MmMmMm

bbh,#

1,10,0

),(

No es difícil comprobar que tanto bp como bm y todos los posibles

descendientes de los dos cromosomas bajo cualquiera de las técnicas

presentadas pertenecen al esquema de cruce. Es más, bp y bm constituyen

bajo h(bp, bm) un par complementario por esquema; Esto es, excepto por los

puntos fijos del esquema, que son compartidos por ambos cromosomas, cada

uno de los bits de la madre es la negación del bit equivalente del padre.

Ahora bien: definamos por R la máscara de cruce. A diferencia del cruce

uniforme normal, en el cruce uniforme optimizado los descendientes b1 y b2

contienen en cada uno de sus bits, respectivamente, R o ¬R; excepto en los

puntos fijos de la máscara de cruce, en la cual, lógicamente, contendrán ambos

el valor correspondiente al interior de esta máscara. Esto es:

iiii MmRb ∧∨= )(,1 , y

jjjj MmRb ∧∨¬= )(,2 ,

No es difícil demostrar que, en cualquier caso, b1,i y b2,i comparten el valor que

comparten mi y Mi, si ambos son iguales, pero equivalen respectivamente a Ri y

a ¬Ri, si mi y Mi son diferentes. Así, no sólo

MmRb ∧∨= )(1 , y

MmRb ∧∨¬= )(2

Page 95: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 95

pertenecen al esquema de cruce, sino que también son complementarios por

esquema bajo h(bp, bm).

9.1.7. Cruces para Permutación

Existe una familia de cruces específicos para ciertos problemas de

permutación, en los que el nivel de aptitud depende no sólo de los diferentes

genes, sino también de la posición de los mismos al interior del cromosoma.

Entre estas técnicas especialidades de cruce encontramos:

• Mapeo Parcial: Toma una subsecuencia del genoma del padre y procura

preservar el orden absoluto de los fenotipos –es decir, orden y posición

en el genoma –del resto del genoma lo más similar posible a la madre.

• Cruce de orden: toma una subsecuencia del genoma del padre y procura

preservar el orden relativo de los fenotipos del resto del genoma lo más

parecido posible de la madre.

• Cruce de ciclo: Tomamos el primer gen del genoma del padre,

poniendolo en la primera posición del hijo, y el primer gen del genoma

de la madre, poniendolo dentro del genoma del hijo en la posición que

ocupe en el genoma del padre. El fenotipo que está en la posición que

ocupa el gen del genoma del padre igual al primer gen del genoma de la

madre se va a colocar en la posición que ocupe en el genoma del padre,

y así hasta rellenar el genoma del hijo.

Es una buena idea que, tanto la codificación como la técnica de cruce, se

hagan de manera que las características favorables sean fácilmente heredadas

o, al menos, que las desfavorables no se propaguen fácilmente. Se

recomienda asimismo elegir una técnica de cruce acorde a las características

del problema en particular: Es una práctica común el definir técnicas

específicas de cruce para la resolución de problemas particulares [3].

Page 96: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 96

9.2. Variaciones

No en todos los casos el operador de cruce presenta todas las características

que hemos mencionado anteriormente, y en muchos casos se realizan

variaciones que suelen ser desarrolladas específicamente para cierto tipo de

problemas.

9.2.1. Reemplazo Parcial

Como ya hemos visto, no en todos los casos los padres son reemplazados por

sus descendientes; Esto puede deberse a la probabilidad de cruce, a un

mecanismo de preselección, en el cual los descendientes reemplazan a sus

padres si y solo si su nivel de aptitud supera a la de estos, o a la implantación

de un mecanismo de manutención del mejor padre, en la cual tras el cruce,

sólo el descendiente de mayor aptitud reemplaza a uno de sus padres: El de

menor aptitud de los dos [23].

De forma similar, se ha sugerido la introducción de técnicas de conocimiento de

dominio que permitan restringir la presencia de cromosomas de aptitud

obviamente baja, o incluso que violen los invariantes del problema, en el

momento mismo de su creación. En casos extremos, tras calcular la aptitud

promedio de los individuos y, bajo la presunción (Bastante plausible, sobre todo

en las etapas iniciales del algoritmo, y cuando el tamaño de la población es lo

suficientemente amplio) de una distribución normal de aptitud con media µ igual

a la aptitud promedio y desviación estándar σ calculada a partir de la misma, se

impide el reemplazo de individuos por descendientes cuya aptitud no supere µ

+ σ. Se ha demostrado [4] que mientras en los algoritmos genéticos

tradicionales el crecimiento en la aptitud promedio de la población en cada

generación es de orden O(1), con éste método el crecimiento es de orden

O(√n)

Este tipo de estrategias incrementan teóricamente la eficiencia del algoritmo,

impidiendo que éste pierda tiempo en la evaluación de individuos de aptitud

Page 97: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 97

obviamente baja [5], o logrando un avance particularmente amplio en la aptitud

promedio de la población en cada sucesiva generación [4]; Sin embargo, la

cantidad de evaluaciones previas puede dar lugar a que la ganancia teórica en

eficiencia sea compensada por un mayor número de cálculos.

9.2.2. Cruce de Estado Estable

De forma similar, es común la implementación de algoritmos genéticos de

estado estable, en los que en lugar de realizar el cruce sobre el total de la

población, se aplica sobre una pareja a la vez, reemplazando por los

descendientes del cruce no a sus padres, sino a los cromosomas de menor

aptitud, que pueden ser seleccionados en forma directa, o estocástica, con una

ruleta rusa ponderada por el inverso de la aptitud de cada individuo [6,56,55].

El estado estable, si bien disminuye el paralelismo intrínseco a la mayoría de

los algoritmos genéticos, favorece una rápida restricción de la población a los

mejores individuos, y puede presentar grandes ventajas sobre el algoritmo

genético básico en computadores que no presentan un gran nivel de

procesamiento paralelo.

9.2.3. Cruce Restringido

Otra variación del cruce es el llamado cruce restringido, en el que a dos padres

sólo les es permitido cruzarse si presentan cierto grado de similitud.

Obviamente, éste grado de similitud es completamente subjetivo, y puede ser

bastante difícil de calcular, ya que depende enormemente del criterio de

codificación y del criterio del diseñador.

El esquema cruce restringido favorece la especialización de la población en

pequeños grupos concentrados alrededor de máximos locales, o nichos

ecológicos, como son conocidos en éste contexto, bajo la idea de que al cruzar

dos padres del mismo nicho se incrementa la probabilidad de que sus

descendientes pertenezcan al mismo nicho. Esto favorece una exploración

más amplia del espacio de búsqueda, no en busca de un máximo global, sino

Page 98: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 98

de todos los máximos locales posibles. De la misma forma, el cruce restringido

disminuye la formación de los llamados “letales”, descendientes de padres de

diferentes nichos que, al localizarse en el valle entre dos máximos locales del

paisaje de búsqueda, tienden a ser desechados rápidamente por su baja

aptitud, sin importar que la aptitud de sus padres sea relativamente alta [5].

Una variación del cruce restringido se utiliza para mantener diferentes

poblaciones de individuos, con el fin de mantener una gran variedad genética, o

explorar diferentes zonas del espacio de búsqueda en forma paralela. En

algunos casos, éstos procedimientos utilizan mecanismos basados en la

biología como la migración (Entendida en éste ámbito como el cruce de

individuos de diferentes poblaciones), en espera de saltos evolutivos [13]. Una

especialización de éste tipo de cruce utiliza poblaciones de individuos

probables e improbables, para las cuales la probabilidad de cruce en ambas

poblaciones, así como la probabilidad de migración, son diferentes y

completamente independientes [48].

9.2.4. Puntos de Cruce

Finalmente, algunos investigadores han sugerido que muy probablemente debe

haber posiciones dentro de los cromosomas sobre las cuales es mejor realizar

un cruce. Sin embargo, la información acerca de cuales pueden ser estos

puntos no siempre está disponible de forma previa a la ejecución del algoritmo.

Es por ello que en algunos casos se ha implementado una técnica de

aprendizaje en la cual la información de los puntos de cruce se hace parte del

cromosoma, siendo propagados a través del mismo algoritmo genético; Esto

permite al algoritmo discernir en cuales puntos es mejor realizar el cruce,

optimizando estos a medida que converje [5].

9.3. Efectos Sobre los Esquemas

Habiendo analizado ya los efectos del cruce sobre los cromosomas de una

población, se nos hace de nuevo necesario pasar a un nivel diferente –el nivel

Page 99: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 99

de los esquemas –para proporcionar una base matemática más fuerte a

nuestros argumentos, y comprender un poco mejor como opera el cruce sobre

una población.

Asumamos que hemos escogido un cruce de un punto para nuestro algoritmo

genético. La probabilidad de que un esquema dado de longitud característica

l(h) sea destruido durante un cruce es [59,55]:

1)(

−=

Lhlpp cd

Esto es, la probabilidad de destrucción del esquema es igual a la probabilidad

de que se realice el cruce por la probabilidad de que éste cruce se realice en

una zona del esquema al interior de sus extremos fijos. Así, la probabilidad de

que el esquema sobreviva después de una mutación está dada por [30]:

1)(1

−−=

Lhlpp cs

Ejemplo 9.1

Definamos los siguientes 2 esquemas [55]:

Los puntos fijos al extremo del esquema 1 están separados por 3 posiciones;

por lo tanto, hay 3 posibilidades entre 24 (1/8) de que un cruce se produzca en

los puntos al interior de este. De la misma forma, el esquema 2 tiene una

Figura 9.3

Page 100: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 100

longitud característica de 16, por lo cual la probabilidad de realizar un cruce en

su interior es de 16 entre 24 (1/3).

Al realizar el cruce, el esquema 1 es mantenido, mientras el esquema 2 se

destruye.

Ahora bien: Si los alelos presentes en las posiciones que definen el esquema

son equivalentes en los dos individuos, el esquema no es destruido, aún si el

cruce se da en los puntos interiores del esquema. Por otro lado, el cruce de

dos individuos que no presentan un esquema en particular puede dar lugar a la

formación de éste a raíz de los bloques de construcción que lo forman. Por

ello, en realidad, nuestra fórmula no es una igualdad estricta, estando mejor

definida como [11]:

1)(1

−−≥

Lhlpp cs

Donde el hecho de haber ignorado el efecto del cruce para crear nuevas

instancias del esquema implica que la parte derecha de la ecuación es

simplemente una cota inferior para la probabilidad buscada [30].

Agregando entonces el efecto del cruce sobre el teorema de los esquemas

definido en el capítulo anterior, y suponiendo que la selección y el cruce actúan

de forma independiente [55], tenemos [30,59]:

[ ] ⎟⎠⎞

⎜⎝⎛

−−≥+ 1

)(1),()(),(),( 1 L

hlpphmpfphuphmE ctt

tt

)

Figura 9.4

Page 101: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 101

Como vemos, los esquemas con una pequeña longitud característica son

prácticamente insensibles al cruce, representando por ello bloques de

construcción compactos mucho más apropiados para una solución viable que

aquellos que presentan una longitud característica mayor. Para este tipo de

esquemas, su reproducción es prácticamente proporcional a su aptitud relativa

[55]. Por ello, se recomienda tener en cuenta durante la fase de codificación de

los genomas tratar de mantener genes que interactúan fuertemente

relativamente cerca dentro del cromosoma.

Cabe notar que, bajo esta teoría, los efectos del cruce sobre los esquemas no

son solamente casi imperceptibles en comparación a los efectos de la

selección; sino que son perjudiciales para esquemas particularmente buenos.

Al contemplar esta aparente contradicción, no podemos sino preguntarnos

¿Cuál es la ventaja del cruce para el algoritmo genético? Si bien el teorema de

los esquemas no nos proporciona ninguna pista al respecto, no será muy difícil

para el lector discernir los dos efectos principales del operador de cruce sobre

los esquemas, que le hacen especialmente ventajoso para el algoritmo

genético en general [27]:

• Primero, el operador de cruce no sirve solamente para destruir

esquemas, como ya mencionamos; Sino que también permite al algoritmo

crear nuevos esquemas a partir de la información genética almacenada en

los individuos combinados.

• Segundo, el operador de cruce sirve para combinar bloques de

construcción de aptitud especialmente buena que residen en padres

diferentes, consolidando individuos que incluyen las ventajas de los

esquemas de sus padres.

Page 102: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 102

10. Mutaciones

Una mutación es un suceso bastante poco común en la evolución de las

especies: Una pequeña alteración accidental del material genético, que sucede

aproximadamente en una de cada mil replicaciones. En la mayoría de los

casos las mutaciones son letales, pero en promedio contribuyen a la diversidad

genética de una especie [39]. Es por ésta razón que nos interesa implementar

ésta técnica en nuestro algoritmo como metáfora del proceso biológico [41].

En un algoritmo genético, se define como mutación a una función M(b, pm):

ℬ*×ℛ[0,1]→ℬ* que produce variación aleatoria de la información contenida en

el genoma original [31,38,29]; Habitualmente, en una población de n

cromosomas de longitud L, se define una probabilidad de mutación pm

predeterminada [54,6,56,29] –O, en algunos casos, dependiente del tiempo [58]

o del grado de convergencia del algoritmo –de que cada uno de los nL genes

sea invertido (Es decir: Convertido en 0 si era 1 o viceversa) [38,3,41]. En este

sentido, la probabilidad de que un cromosoma b sea transformado en otro b’ a

través de una operación de mutación es:

kL

mkmbb ppp −

→ −= )1('

Donde k es la distancia de Hamming entre los dos cromosomas [44].

10.1. El Porqué de las Mutaciones

Si bien Holland descubrió que un algoritmo genético puede seguirlo siendo sin

necesidad de incluir mutaciones [39], también es cierto que al elegir una

población al azar es posible que una combinación óptima de ésta no sea

necesariamente la solución óptima al problema [12]. Por ello, el uso de la

mutación es bastante común, lo cual es debido en gran parte a ciertas ventajas

que vienen implícitas con ella, a saber [47]:

Page 103: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 103

• Mantenimiento de Diversidad: Durante el proceso de búsqueda del

algoritmo genético, la población tiende a converger rápidamente hacia

máximos locales o globales, lo cual puede con el tiempo anular la diversidad

genética que, como ya hemos visto, es crítica para su funcionamiento. La

mutación se implemente con el fin de disminuir éste efecto, manteniendo

una cierta variedad en la población a través de cambios aleatorios en su

material genético [31,28]

• Desbloqueo: Si en algún punto de su ejecución el algoritmo se bloquea en

un máximo local, o si aparece algún tipo de superindividuo que acabe con la

diversidad poblacional, una mutación puede agregar nuevos fenotipos,

permitiendo al proceso evolutivo seguir su curso natural [41]. Esto garantiza

que la búsqueda no se centrará en máximos locales [38].

• Aceleración de Saltos Evolutivos: Los saltos evolutivos –aparición repentina

de fenotipos especialmente valiosos (O, dicho de otra forma, salida de un

mínimo local) –son poco probables en un algoritmo genético puro para un

problema genérico. Las mutaciones permiten explorar nuevos subespacios

de soluciones que, de ser especialmente favorables en términos de

adaptación, producirán un salto evolutivo que se irá expandiendo de forma

exponencial al resto de la población.

• Enriquecimiento de la diversidad: En un caso más suave que el de una

población degenerada –cuando la población cuenta con una diversidad

genética pobre, por ejemplo –, la mutación es un mecanismo que permite la

emergencia de nuevas configuraciones genéticas, lo cual favorece la

posibilidad de encontrar la solución óptima al aumentar el rango de

búsqueda [12,43], y contribuye a la prevención de poblaciones

degeneradas. Este incremento en el rango de búsqueda es conocido como

exploración [45]. De manera óptima, ésta exploración debería traducirse en

un recorrido suave sobre el espacio de búsqueda; Esto, sin embargo, no es

Page 104: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 104

fácil de garantizar si no se conocen las propiedades de éste espacio (Lo

cual es, comúnmente, el caso) [43].

• Prevención de probabilidades nulas: La mutación introduce al algoritmo

genético un cierto grado de búsqueda aleatoria en la vecindad de los puntos

representados por los individuos de la población existente, que se hace más

evidente a medida que ésta población converge a puntos específicos [28,5];

Con la implantación de la mutación, se elimina la posibilidad de que la

probabilidad de búsqueda de un punto en particular del espacio de

búsqueda sea nula [9]. Esto implica que sin importar la población inicial que

haya sido escogida, la mutación garantiza que la búsqueda será global [28].

• Recuperación de Alelos: La mutación permite recuperar alelos que se han

perdido inadvertidamente en el proceso del algoritmo a causa de otros

operadores genéticos [5].

A la mutación están asociadas, sin embargo, una serie de desventajas

implícitas en la inclusión de la mutación dentro del algoritmo genético. En

particular, las mutaciones pueden generar hipótesis especialmente malas, o

descartar hipótesis especialmente buenas, en un solo paso. De la misma

forma, bajo esquemas de codificación especialmente débiles, un operador de

mutación elegido a la ligera puede llevar a caer en genotipos inválidos [43].

La tasa de mutación es mucho más crítica para el Algoritmo Genético incluso

que la tasa de cruce [5]: Una tasa de mutación excesivamente alta, reduce el

algoritmo genético a una simple búsqueda aleatoria, y puede conducir a deriva

genética y a inestabilidad generacional, destruyendo soluciones prometedoras

ante la modificación de su código [43,41], por lo que se recomienda mantener

esta tasa a niveles muy bajos, similares a los presentes en la naturaleza (La

mayoría de la literatura al respecto recomienda tasas de mutación entre el

0.1% y 1% [38,45,6,3,41]) [39,9]. En algunos casos, ésta probabilidad depende

negativamente de la probabilidad de cruce, produciéndose una mutación

solamente en individuos que no fueron cruzados en la generación anterior [3].

Page 105: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 105

Por otro lado, una tasa de mutación excesivamente baja o inexistente puede

contribuir a estancar el algoritmo en máximos locales, ignorando una gran parte

del espacio de búsqueda [43]. Una alternativa para evitar estos inconvenientes

consiste en implantar una tasa de mutación alta al inicio del algoritmo, para

aumentar la diversidad genética, y una disminución hacia el final del algoritmo,

para asegurar la convergencia.

En general, el operador de mutación se hace más productivo, y el operador

cruce menos productivo, a medida que la población converge: Cualquier

recombinación del material genético de una población con cierto grado de

convergencia alrededor de un máximo local comenzará a girar alrededor de tal

máximo; Sin embargo, una simple mutación puede llegar a enviar al algoritmo a

explorar a otras zonas completamente diferentes del espacio de búsqueda.

En algunos casos, se ha experimentado con tasas de mutación variable que

dependen del grado de convergencia del algoritmo genético. Sin embargo, es

mucho más común que la tasa de mutación sea disminuida a medida que éste

avanza, bajo la idea de que en los primeros pasos del algoritmo se debe tener

una tasa relativamente alta que permita al espacio de búsqueda inicial una

amplitud razonable, y en a medida que este avanza se debe disminuir esta tasa

para permitir la convergencia. Aunque no se ha demostrado matemáticamente

el efecto positivo de éste método sobre el desempeño, sí hay una gran

cantidad de evidencia empírica que demuestra sus bondades [5].

10.2. Técnicas de mutación

Como en el cruce, no existe una forma única de realizar la mutación, y si bien

ésta es más comúnmente implementada en la forma anteriormente

mencionada, conocida como mutación multibit (Cada uno de los bits de cada

uno de los individuos de la población tiene una probabilidad pm de ser invertido)

[28], existen una gran cantidad de variaciones a éste método conocidas

conjuntamente como técnicas de mutación. Algunas de éstas son [47]:

Page 106: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 106

10.2.1. Mutación Unibit

Bajo ésta técnica de mutación, se escoge una probabilidad pmb a priori, que

corresponderá a la probabilidad de que para un cromosoma dado, uno

cualquiera de sus bits, seleccionado en forma aleatoria, sea reemplazado por

su complemento. Tomando como base la probabilidad pm anteriormente

definida, podemos ver que pmb se puede relacionar con ella:

Sea pm la probabilidad de mutación elegida para el algoritmo genético.

Grosso modo, podemos arriesgar la siguiente relación de equivalencia:

( )Lmmb pp −=− 11 ,

Donde L es la longitud del cromosoma (Esto es: Para que no se realice una

mutación en un cromosoma dado, no se debe realizar el cruce en ningún punto

a lo largo de este)7.

Resolviendo la ecuación para obtener pmb, obtenemos:

)10(,1

<<−+

= mmm

mmb p

pLpLp

p

o, reemplazando qm = 1-pm:

7 Como podrá comprobar el lector, ésta relación de equivalencia no es

completamente cierta, ya que mientras con la mutación unibit sólo se puede

modificar un bit de un cromosoma en cada ciclo del AG, con la mutación

multibit puede cambiar incluso todo el cromosoma. La equivalencia es,

entonces, planteada simplemente para el caso en que el cromosoma “cambie”,

sin importar cuantos de sus bits sean modificados.

Page 107: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 107

)10(, <<+

= mmm

mmb p

qLpLpp

Es la probabilidad requerida para que se produzca una mutación unibit en un

punto aleatorio del cromosoma.

10.2.2. Mutación por Genes

En muchos casos, sobre todo en aquellos en que las restricciones del problema

causan algún tipo de restricción de codificación que cause a la invalidez de

algunos códigos dentro del cromosoma, las técnicas de mutación no se

restringen simplemente a bits, sino que se aplican a genes enteros;

Modificándolos a través de la suma de un valor aleatorio, de un valor constante

(Conocido comúnmente como Creep [39]), o de el reemplazo del mismo por un

gen aleatorio completamente nuevo.

La mutación por genes puede ocurrir, como la mutación por bits, sobre

cualquier gen de cualquier cromosoma de la población con una probabilidad

pmg, o sobre un gen elegido en forma aleatoria de un cromosoma en particular,

que tiene una probabilidad pmgu de ser cambiado (La relación entre pmg y pmgu

es equivalente a la relación entre pm y pmb).

Supongamos un algoritmo genético para el cual los cromosomas de la

población están divididos en genes de tamaño fijo l. Sea pm la probabilidad de

mutación elegida para el algoritmo genético.

Por reglas de probabilidad tenemos:

( )lmmg pp −=− 11 ,

(Esto es: Para que no se realice una mutación en un gen dado, no se debe

realizar el cruce en ningún punto a lo largo de este)

Page 108: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 108

Resolviendo la ecuación para obtener pmg, obtenemos:

)10(, <<+

= mmm

mmg p

pLqp

p

Es la probabilidad requerida para que se produzca una mutación en un gen

aleatorio de la población.

10.2.3. Mutaciones Epistáticas

En problemas con alta epistasis, o interacción entre genes, en los que es tan

importante el valor de cada uno de los genes como su posición dentro del

cromosoma [39,11], se suelen utilizar operadores de mutación especializados

que no modifican el material genético de por sí, sino la posición que el mismo

ocupa al interior del cromosoma. Entre otros operadores de éste tipo,

encontramos:

• Intercambio o Translación: Este operador toma dos genes del cromosoma

en forma aleatoria y los intercambia, bajo una probabilidad pmei, elegida a

priori (En éste caso, como en los otros casos de mutaciones epistáticas, la

probabilidad de mutación pmei es determinado en la misma forma en que

determinamos pmb para los cruces unibit).

• Reinserción: Bajo una probabilidad pmer elegida a priori, este operador toma

un gen en forma aleatoria y lo cambia de posición en el interior del

cromosoma, trasladando los demás genes una posición hacia la derecha

[39].

• Barajado: Bajo una probabilidad pmeb dada, éste operador escoge dos

genes en forma aleatoria, y redistribuye aleatoriamente los genes

comprendidos entre los dos.

Page 109: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 109

10.2.4. Método Alternativo de Mutación Multibit

Al igual que en la fase de cruce, algunos investigadores han buscado métodos

alternativos de mutación que operen sobre los cromosomas, en lugar de sobre

los bits, sin las limitaciones que implica una mutación unibit [49]:

Como sabemos, la mutación o no de un bit específico de un cromosoma

cualquiera puede ser visto como un experimento de Bernoulli con probabilidad

pm de éxito (mutación), y probabilidad qm=1–pm de fracaso. Ante esto,

podemos ver la mutación de una serie de bits como una distribución de

probabilidad binomial dada por:

km

kmm pp

kL

pLkb −−⎟⎟⎠

⎞⎜⎜⎝

⎛= 1)1(),;(

E, incluso, si L es lo suficientemente grande, p lo suficientemente pequeño, y

λ=np es de un valor intermedio, se puede aproximar esta distribución binomial

a través de una distribución de Poisson dada por:

);(!

),;( kLpek

pLkbk

m =≅ −λλ ,

Así, podemos aproximar el número de mutaciones que ocurren en un

cromosoma dado mediante una variable aleatoria v con distribución de Poisson

y, una vez escogida esta, escoger v veces uno de los bits del cromosoma al

azar para realizar la mutación sobre este.

10.4. Evolución Inocente

Si bien, como mencionábamos en nuestro capítulo anterior, se puede

considerar a un algoritmo genético sin implementar necesariamente un

mecanismo de mutación, siempre y cuando se implemente un mecanismo de

cruce; Esto no quiere decir que el inverso de ésta implementación –

Page 110: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 110

implementar un mecanismo de mutación sin implementar un mecanismo de

cruce –no sea útil en la exploración de espacios de búsqueda, o que no sea

parte de la computación evolutiva. De hecho, en un gigantesco experimento

tendiente a determinar los parámetros óptimos para un algoritmo genético, un

grupo de investigadores (Schaffer et Al. [5]) logró demostrar que el operador de

cruce no es tan imprescindible como se pensaba en un comienzo.

El mecanismo que mencionamos, que se encuentra restringido a procesos de

Selección y Mutación, dejando de lado el Cruce, es comúnmente conocido

como Evolución Inocente8, y es modelado en base a la reproducción asexual

común en la naturaleza. A través de éste método se realiza una búsqueda

semialeatoria similar a los mecanismos de escalada, que puede a través de

una sencilla implementación resultar siendo bastante poderosa, encontrando

incluso mejores soluciones que las que son encontradas a través de un

algoritmo genético puro, si bien a una tasa bastante más lenta que cuando se

añade el operador de cruce.

La clave para el éxito de la evolución inocente es el uso de códigos de Grey

(Ver capítulo 6), que disminuye la distancia de Hamming entre cromosomas

con significados similares (Esto es, disminuye la diferencia genotípica en

cromosomas con similitud fenotípica [61]) [5].

10.5. Efectos Sobre los Esquemas

Para finalizar nuestra discusión sobre la mutación, analizaremos –como lo

hemos hecho con los operadores enunciados en capítulos anteriores –su

efecto sobre los esquemas, con el fin de incrementar nuestra comprensión de

los algoritmos genéticos y, a la vez, proporcionar una base matemática, al

mismo tiempo concluyendo y globalizando lo que Holland llamó el Teorema de

los Esquemas:

8 Naive Evolution

Page 111: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 111

Asumamos que hemos escogido un mecanismo de mutación de un punto. La

probabilidad de que el esquema sea destruido por una mutación está dada por

[59,55]:

( ) )(1 somps pp −=

Esto es, para que el esquema no sea destruido, ninguno de los puntos fijos que

lo componen debe ser modificado. Para valores pequeños de pm, podemos

aproximar [59,55]:

mds psop )(1−≈

Así [8,28,33,59,55]:

[ ] )(1 )1(

1)(1),(

)(),(),( so

mctt

tt p

Lslppsm

pfpsupsmE −⎟

⎠⎞

⎜⎝⎛

−−≥+

)

O, cuando pm tiene un valor pequeño [59,55]:

[ ] ⎟⎠⎞

⎜⎝⎛ −

−−≥+ mct

t

tt pso

Lslppsm

pfpsupsmE )(

1)(1),(

)(),(),( 1

)

Donde, de nuevo no se ha tenido en cuenta el efecto de la mutación para crear

nuevas instancias del esquema en cuestión dentro de la población. Así, de

nuevo, tenemos que el valor esperado tal como se presenta es sólo una cota

inferior para el número de instancias del esquema en cuestión en un momento

dado [30]. Como vemos, los esquemas de menor orden representan bloques

de construcción mucho más susceptibles de ser elegidos que aquellos de

orden mayor [55].

Page 112: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 112

10.6. Consideraciones Finales

Algunos teóricos [26] han considerado la viabilidad de aplicar el operador de

mutación tras el periodo de evaluación de los individuos pero antes del cruce

de los mismos, en forma similar a lo que ocurre a nivel de gametos en la

naturaleza, en la que mientras las mutaciones suelen presentarse a nivel de

gametos, afectando el desempeño de la descendencia, cada uno de los padres

demuestra su aptitud para adaptarse a su ambiente en forma completamente

independiente a éstas mutaciones.

En términos de los algoritmos, la mutación oculta o mutación paterna [26],

como suele llamarse, redunda en que, gracias a la mutación previa, el material

genético que bajo otras condiciones tendría probablemente una baja

probabilidad de ser seleccionado para reproducción, es seleccionado gracias a

la alta aptitud del material genético que dio lugar a éste. Esto proporciona

material genético mucho más rico e impide –en forma incluso superior a la

mutación habitual –la convergencia prematura, sin disminuir el rendimiento.

Page 113: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 113

11. Otros Parámetros

En los capítulos anteriores hemos dedicado la mayor parte del tiempo a

describir los operadores básicos bajo los que funciona un algoritmo genético.

Hemos dejado de lado, sin embargo, otra serie de parámetros que si bien no

son tan importantes como aquellos, aún son consideradas vitales para el buen

funcionamiento del algoritmo genético. Entre ellos tenemos:

11.1. Población Inicial

Una vez se han realizado todas las consideraciones previas a la puesta en

marcha del algoritmo genético –función de evaluación, métodos de selección,

de cruce y de mutación –llega el momento de ponerlo en funcionamiento, con

el fin de probar su eficacia. Para ello, obviamente, debemos partir de una

población inicial que, a través de las transformaciones que supone el algoritmo,

será transformada secuencialmente hasta que se pueda hallar una hipótesis

satisfactoria para el problema en cuestión.

La población inicial suele ser seleccionada de forma aleatoria en el total del

espacio de búsqueda [6]; Cuando esto sucede, la distancia promedio de

Hamming de la población inicial (En particular, cuando esta población consta

de un número suficientemente grande de cromosomas) puede ser aproximada

a través de una distribución de probabilidad normal con media L/2 y varianza

√L/2 [35]. En general, si la distancia promedio de Hamming de la población no

es cercana a L/2, es probable que nuestro algoritmo de generación aleatoria de

la población inicial sea erróneo [19].

Sin embargo, en los últimos años se han implementado una serie de

mecanismos heurísticos, aprovechando un cierto grado de conocimiento de

dominio para iniciar con una población inicial de una aptitud razonablemente

buena, en lugar de un conjunto aleatorio [37]. Como todos los métodos de

conocimiento de dominio, esta técnica restringe el algoritmo genético, atándolo

Page 114: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 114

al espacio de búsqueda particular para el cual se genera la población, si bien al

mismo tiempo da una mayor eficiencia al algoritmo en ese espacio de

búsqueda [5].

Antes de inicializar el algoritmo, es importante tener en cuenta el tamaño que

va a tener la población [6]: Como regla básica, es importante tener en cuenta

que el tamaño de esta población debe ser directamente proporcional al tamaño

de los cromosomas, para asegurar la suficiente diversidad genética [39]. Un

buen tamaño para la población suele estar entre los 20 y los 30 individuos, si

bien para algunos problemas el óptimo se encuentra más entre los 50 y los

100.

11.2. Criterios de Parada

Una vez se han definido los parámetros que darán lugar a la puesta en marcha

del algoritmo genético, es de vital importancia elegir los parámetros que darán

lugar a su finalización.

Como ya hemos mencionado, a diferencia de la evolución natural, en los

algoritmos genéticos se suele tener una finalidad específica, que reside en la

resolución del problema en cuestión. Dadas las características de este

algoritmo, no podemos tener un criterio universal que nos indique de forma

unívoca que este problema ha sido resuelto9; Sin embargo, podemos suponer,

dadas las hipótesis discutidas a lo largo de este trabajo, que si la definición de

nuestros operadores (En particular los de codificación y evaluación) es la

correcta, nuestra población tenderá a converger a la solución a medida que el

número de generaciones aumenta.

9 Algo diferente ocurre, por ejemplo, en algoritmos basados en gradientes, en

los que se puede saber sin lugar a dudas que el algoritmo ha llegado a la

solución cuando el gradiente es perpendicular al hiperplano de búsqueda.

Page 115: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 115

Sobre esta hipótesis, los investigadores suelen definir sobre los algoritmos

genéticos una serie de criterios de parada, que indican las condiciones

necesarias para que se pueda asumir que el algoritmo ha llegado a un nivel

aceptable de precisión. Estos criterios de parada suelen estar dados por [6,8]:

• Número fijo de iteraciones, o de generaciones, del algoritmo: El algoritmo

genético se detiene después de un número dado m de ciclos. Este criterio,

si bien es el más comúnmente utilizado, puede no ser el más eficiente,

puesto que nada nos indica que bajo un número cualquiera de iteraciones,

por grande que éste sea, el algoritmo haya convergido. Se requiere, por

tanto, un análisis previo de las probabilidades de convergencia del algoritmo

genético, antes de aventurar un número al azar para el cual, después de

ese número de ciclos, el algoritmo se dará por terminado.

• Número de cromosomas nuevos: El algoritmo se detiene cuando se han

producido un número dado de descendientes d de la población original.

Matemáticamente similar al anterior (con d ≤ mn), presenta también los

mismos problemas que éste. Una variación de éste criterio es aceptar

como nuevos los cromosomas que no han aparecido antes en la población.

Si bien este criterio puede parecer un poco mejor, aún presenta las

dificultades mencionadas, añadiendo a ellas la necesidad de llevar un

historial de los cromosomas que ya han sido evaluados.

• Aptitud mínima del mejor individuo: El algoritmo se detiene cuando el

individuo de mayor aptitud de la población tiene una aptitud f(bi)>α, donde α

es un parámetro fijo determinado a priori. Es evidente que para

implementar éste tipo de criterio es necesario conocer previamente las

características del rango de aptitud del problema, lo cual no siempre es

posible –y en la mayoría de los casos es el hecho por el cual el algoritmo

genético es implementado, en primera instancia.

Page 116: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 116

• Una variación del método anterior podría escoger la aptitud mínima de

acuerdo a los resultados obtenidos en la primera generación. A priori, una

buena aproximación podría ser una regla de tres con la aptitud promedio y

la máxima obtenida, así:

)()()(

0

0 min

0+

+

=P

P

bff

Pfbf

,

Donde fmin es la aptitud mínima aceptable, y b+ es el cromosoma de mayor

aptitud de la población dada, con lo cual podemos aventurar,

[ ])(

)(

0

2

min0

Pf

bff P

+

=

Aunque el que la aptitud mínima aceptable sea a la aptitud máxima de la

primera generación como ésta es a la aptitud promedio de la misma parece

ser una solución bastante razonable, también es una que depende mucho

de las características del problema en cuestión; Con una fórmula tan simple

como esta es tan probable que nuestro resultado no sea realmente una

solución aceptable al problema como que nuestro algoritmo se quede

eternamente iterando en busca de una aptitud mínima que es incluso

superior a la de la solución real.

• Convergencia de aptitud: El algoritmo es detenido cuando la variación en

aptitud de una generación a otra –o la razón entre ésta variación y la aptitud

inicial –es lo suficientemente pequeña como para ser despreciable. Como

veremos en capítulos siguientes, es un criterio de parada que se acerca

mucho más a un óptimo; Sin embargo, dada la naturaleza estocástica del

algoritmo genético, nada impide que, sin haberse acercado siquiera a un

Page 117: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 117

óptimo, éste produzca una variación mínima de aptitud, y se detenga

prematuramente sin haber hallado un óptimo.

• Convergencia total o parcial de la población: El algoritmo se detiene cuando

cierta proporción de la población (Su totalidad, o un porcentaje bastante

cercano al 100%) es equivalente. Si bien a primera vista pudiera parecer un

criterio de parada bastante mejor que los anteriores –como, en efecto, lo es

–, nada nos asegura que el algoritmo no se detenga en máximos parciales

de manera prematura, si bien esto será poco probable cuando se han

escogido adecuadamente los operadores genéticos.

11.2.1. Distancia de Hamming y Convergencia

Bajo el criterio de parada de convergencia total o parcial es necesario definir un

mecanismo para determinar el grado de convergencia de la población. Para

ello definimos la distancia de Hamming como la diferencia, bit a bit, entre dos

cromosomas, es decir [19]:

∑=

⊕=n

ibaba ibibbbH

1

][][),(

Donde b[27] es el valor del bit p del cromosoma b. Definimos, asimismo, la

agrupación como la distancia –en términos de distancia de Hamming –entre el

individuo de mayor aptitud de una población y todos los demás, medida como

el promedio de la distancia de Hamming entre cada uno de ellos y el individuo

de mayor aptitud. Así, cuando llamamos b* al individuo de aptitud máxima en

la población, podemos definir la agrupación como:

1

)*,()( 1

−=∑=

n

bbHPG

n

ii

Page 118: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 118

De la misma forma, la deriva genética está dada por la distancia promedio

entre todos los individuos de la población, dada por [35]:

)1(

),()( 1

−=∑∑= ≠

nn

bbHPD

n

i ijji

Bajo el espacio definido por un cromosoma binario de tamaño L (Esto es, un

hipercubo de L dimensiones, en el cual cada uno de las dimensiones puede

tomar un valor de 0 o 1), la distancia promedio de Hamming entre cualquier

individuo (En particular, el individuo de mayor aptitud) y todos los demás

individuos posibles está dada por10 [35]:

122)(

1

−•

=−

L

LLbH

De la misma forma, la distancia promedio de Hamming entre todos los

individuos es:

122)(

1

−•

=−

L

LLPH

Así, tanto la deriva genética como la agrupación en el algoritmo genético

tendrían un valor promedio dado simplemente por el tamaño del cromosoma

(Que, para valores suficientemente grandes de L, se puede aproximar por L/2).

Así, sería fácil determinar un valor aceptable de convergencia, basado en la

convergencia promedio de una población cualquiera.

10 Se incluye ésta fórmula sin prueba por su simplicidad. No será para el lector

muy difícil comprobar empíricamente, o por inducción, su veracidad.

Page 119: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 119

Para un análisis más completo acerca de la convergencia de un algoritmo

genético, y los criterios matemáticos que la determinan, consultar el capítulo

13.

11.3. Criterios de Control

Como hemos podido ver a lo largo de los capítulos anteriores –y como veremos

en los posteriores –, el funcionamiento de los algoritmos genéticos depende en

gran parte de las decisiones tomadas a lo largo del proceso de implementación

de los diversos operadores. En particular, algunas de estas decisiones, que se

reflejan en un conjunto de parámetros conocidos conjuntamente como criterios

de control afectan enormemente el desempeño de los mismos en la resolución

de cualquier problema dado. Estos criterios de control son [3,46]:

• Tamaño de la población (n): Es evidente que para que un algoritmo genético

funcione es necesario cierto grado de diversidad genética, que debe

aumentar conforme aumenta la dimensionalidad del espacio de búsqueda;

Sin embargo, es importante tener en cuenta que un tamaño excesivamente

grande de población no incrementará la eficiencia del algoritmo –e incluso,

llegará a disminuirla, cuando este tamaño sea demasiado grande, sobre

todo cuando los procesos de evaluación y selección presentan cuellos de

botella –. En particular, la capacidad de procesamiento paralelo de la

máquina (O las máquinas) encargadas del algoritmo impone una cota

superior al número de individuos que pueden ser procesados

simultáneamente.

• Tasa de Cruce (Pc): Como hemos visto, una tasa excesivamente alta de

cruce presenta el riesgo de destruir un gran número de esquemas. Sin

embargo, una tasa excesivamente baja puede impedir la recombinación de

los bloques de construcción para la formación de individuos especialmente

favorables. En la literatura, se suele recomendar una tasa de cruce

relativamente alta (Superior al 50%)

Page 120: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 120

• Tasa de Mutación (Pm): Como hemos analizado en capítulos anteriores, una

tasa de mutación excesivamente alta presenta el riesgo de destruir un gran

número de esquemas, convirtiendo a la búsqueda en una simple búsqueda

aleatoria. Sin embargo, hemos visto también las ventajas de la mutación en

la creación de nuevo material genético que permita explorar la totalidad del

espacio de búsqueda. Bajo estos criterios, la tasa de mutación que suele

ser utilizada en la práctica suele ser relativamente baja (inferior al 1%).

En algunos casos [49], se ha descrito al algoritmo genético como una tupla <K,

n, Pt, Pt+1, f, Op, Cp>, donde K es el tamaño del alfabeto utilizado, n el tamaño

de la población, Pt y Pt+1 las poblaciones en el tiempo t y t+1, respectivamente,

Op una serie de operadores genéticos y Cp una condición que se considera

como criterio de parada.

A su vez, el elemento Op suele estar representado como una tupla <S, C, M>,

donde S representa la función de Selección, C la de cruce y M la de mutación.

En algunos casos, sin embargo, Op puede tener una dimensionalidad mayor

(Cuando se implementan operadores genéticos diferentes a los ya

mencionados, como los que veremos en el próximo capítulo), o menor (En

casos como la del cruce sin mutación o la evolución inocente).

11.4. Nichos Ecológicos

En ocasiones se busca que un algoritmo genético realice una búsqueda

múltiple sobre todos los puntos de alta aptitud del espacio de búsqueda, en

lugar de concentrarse sobre un punto en particular. Esto es, que encuentre

todos los máximos locales –o una cierta cantidad de ellos –, en lugar de

concentrarse en un máximo global. Por desgracia, en los algoritmos genéticos

tradicionales la totalidad de la población tiende a converger eventualmente en

un pico único, incluso cuando hay más de un punto de máxima aptitud.

Page 121: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 121

Con el fin de superar este problema, y permitir la especiación –o

especialización de la población en diferentes nichos ecológicos, localizados

alrededor de los diferentes máximos locales en el paisaje de búsqueda –Se

han propuesto una serie de modificaciones a los algoritmos genéticos

tradicionales, a partir de los llamados operadores de nicho, todos ellos

metáforas de los mecanismos de especiación que dan lugar a los diferentes

nichos ecológicos presentes en la naturaleza.

El primero de estos operadores es la Preselección, que ayuda a mantener la

diversidad genética a través de un control que solamente permite a los

descendientes de un par de cromosomas reemplazar a estos si presentan un

cierto nivel de similitud a ellos. En este sentido, la manutención de la variedad

genética impide que la población converja a un único máximo. En una

variación de ésta técnica, similar a la selección por torneo, se seleccionan

aleatoriamente dos o tres individuos, reemplazando por el nuevo cromosoma

aquel de ellos que es más similar a éste. En otra variación, la selección del

cromosoma a ser reemplazado se realiza en función al inverso de la aptitud,

con lo cual los cromosomas de menor aptitud son reemplazados primero.

Otra forma de mantener la especialización es a través del cruce restringido,

mediante el cual se asegura que los cromosomas similares se crucen sólo con

cromosomas similares. Esto no solo asegura la división de la población en

diferentes nichos ecológicos, sino que también reduce enormemente la

formación de letales, como fue sugerido en el capítulo 9.

De la misma manera, se ha sugerido la formación de nichos ecológicos

manteniendo múltiples subpoblaciones en zonas diferentes del espacio de

búsqueda, con tasas intermedias de migración. Esto simula el aislamiento

geográfico presente en los fenómenos evolutivos de la vida real y presenta al

mismo tiempo una ventaja comparativa sobre la manutención de

subpoblaciones completamente aisladas –que, finalmente, corresponden

Page 122: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 122

simplemente a una iteración del algoritmo genético en el cual se fuerza una

concentración alrededor de nichos específicos –, o poblaciones completamente

mezcladas. Este método es ideal cuando se cuenta con cierta capacidad de

procesamiento en paralelo, pero tiene el problema de que no se puede

asegurar que más de una de las poblaciones aisladas converjan a un mismo

nicho [39].

Esta técnica en particular es especialmente interesante cuando se cuenta con

cierto nivel de procesamiento paralelo, que permita mantener a las diferentes

subpoblaciones separadas en forma tanto física como lógica. Con ésta

variación, la migración consistiría simplemente en pasar algunos de los

individuos de la población de una unidad de procesamiento a otra [17].

Similarmente, se han implementado técnicas de aptitud compartida, en la que

la cantidad de individuos en un mismo nicho disminuye por igual la aptitud de

todos ellos. Esto obliga a los descendientes de algunos de estos individuos a

desplazarse, migrando hacia nuevas áreas de búsqueda, en busca de un

incremento en su aptitud. Una función de aptitud compartida basada en

distancia euclidiana implementa lo que se han llamado nichos hiperesféricos.

Como podemos ver, el desempeño de estos métodos depende enormemente

de qué entendemos por similitud entre dos cromosomas, ya que este concepto

de similitud define el radio de los nichos (La distancia máxima a la cual dos

individuos diferentes comienzan a ser considerados como parte del mismo

nicho); Aún no se ha realizado una investigación profunda del radio óptimo de

nicho para un algoritmo genético de búsqueda múltiple. Por otra parte, la

continua comparación de los diferentes individuos en busca de similitudes

puede redundar en un cuello de botella que disminuya enormemente la

eficiencia del algoritmo.

Page 123: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 123

Un grave problema de los métodos de nicho reside en que cuando hay

múltiples picos de aptitud similar a la del máximo global se hace muy probable

no hallar éste máximo, ya que los individuos se distribuyen en los diferentes

máximos locales.

Por último, es importante mencionar el método del nicho secuencial, en el cual

se realiza una iteración de un algoritmo genético, en el cual el resultado de

cada iteración define un máximo global que es suprimido en la siguiente. Esto

permite hallar secuencialmente una serie de máximos, sin caer en la posibilidad

de repeticiones, si bien significa al mismo un incremento enorme en tiempo de

procesamiento [5].

11.5. Probabilidades Adaptativas de Operadores

En la implantación de algunos algoritmos genéticos se suelen incorporar, en

adición a los parámetros mencionados anteriormente, ciertos mecanismos de

control adicional, con el fin de incrementar la eficiencia del algoritmo.

Uno de ellos es la inclusión dentro de la información del algoritmo de un cierto

“peso” para cada uno de los operadores genéticos utilizados, que depende en

su mayor parte de la aptitud de los individuos resultantes de su acción sobre la

población, y en un menor grado de una probabilidad previamente asignada que

disminuye a medida que avanzan las generaciones (La probabilidad –entre 0 y

1 –se eleva a la potencia del número de generaciones transcurridas desde su

última inserción [32]). Así, a cada ciclo, se seleccionan los diferentes

operadores no en forma secuencial, sino basados en un historial de aptitud

resultante que depende altamente del problema en cuestión, y que es

seleccionado de manera análoga a la selección de individuos para cruce.

La gran ventaja de este método es la eliminación de la necesidad de escoger

los operadores a priori: El algoritmo mismo se encarga de seleccionar los

mejores para el problema en cuestión. Por otra parte, la gran desventaja es la

Page 124: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 124

sobreevaluación de operadores que tienden a escoger simplemente máximos

locales [5].

11.6. Tratamiento de Individuos Duplicados

Finalmente, una decisión que puede ser relevante para algunas

implementaciones de algoritmos genéticos es el tratamiento de los individuos

duplicados dentro de la población. Al enfrentarse a este problema, la decisión

del investigador puede ubicarse en alguno de los siguientes puntos [6]:

• Aceptar todos: El algoritmo genético no tiene ningún mecanismo de

control sobre los individuos duplicados; Simplemente genera en su

ejecución los individuos en la forma descrita en capítulos anteriores.

Esta decisión puede presentar el problema de crear poblaciones

degeneradas –es decir, poblaciones en las cuales una gran parte de los

individuos son equivalentes –, si bien bajo una serie de operadores

elegidos de forma apropiada la probabilidad de que esto suceda

disminuye enormemente.

• Rechazar todos: Con el fin de eliminar los problemas que se pueden

presentar ante la degeneración de las poblaciones, algunos

investigadores han optado por eliminar los individuos duplicados aún

antes de que estos reemplacen a sus progenitores. Esta decisión, si

bien mantiene la diversidad genética, limita la convergencia del

algoritmo.

• Aceptar hasta cierto límite: El punto intermedio entre los dos extremos

es la aceptación de cierto número de duplicados. Si bien ésta decisión

presenta las ventajas de ambos extremos y ninguna de sus desventajas,

la comparación de los individuos puede crear cuellos de botella que

disminuyan el rendimiento del algoritmo genético.

Page 125: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 125

12. Otros Operadores

En adición a los operadores básicos (Evaluación, Selección, Cruce y Mutación),

un algoritmo genético puede incluir un sinnúmero de operadores secundarios

que, si bien no son tan importantes en la implementación de un algoritmo

genético en general, pueden ser bastante útiles en la resolución de problemas

particulares. Entre ellos encontramos:

12.1. Aborto

En ciertos casos se requiere eliminar rápidamente los atributos menos

deseables de la población –Esto es, antes incluso de darles una oportunidad de

reproducción –; Uno de los métodos para lograr esta “muerte prematura”, es

implementando un sistema de abortos, que puede estar basada en [39]:

• Restricción del Rango de Aptitud: Todos los individuos que no lleguen a un

cierto nivel de aptitud dado (Generalmente proporcional al rango de aptitud

presente en la población actual), son desechados.

• Proporción: Cierta proporción de la población (Los m individuos de menor

aptitud, donde m < n) es desechada.

• Métodos Estocásticos: En adición al proceso de selección normal en cada

ciclo, se hace una “selección inversa”, que elige a los individuos de menor

aptitud por los métodos ya vistos (Dependiendo del inverso de la aptitud de

los diferentes individuos), y los descarta de la población actual.

A los individuos abortados generalmente se les asigna una aptitud de 0, que

nulifica la probabilidad de ser escogidos para reproducción [9]. En otros casos,

sin embargo, los individuos son desechados inmediatamente, a menudo siendo

reemplazados por otros, que bien pueden ser [39]:

Page 126: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 126

• Abuelos: Los individuos de mayor aptitud de la generación anterior

reemplazan a los abortados. Este criterio tiene el problema potencial de

estancar el algoritmo en máximos locales y eliminar la diversidad.

• Generaciones intermedias: Se selecciona aleatoriamente un subconjunto de

individuos de la población actual, y se cruzan aquellos de mayor aptitud.

Los resultados de estos cruces reemplazan a los desechados.

• Reduplicación: Una serie de individuos es duplicada para reemplazar a los

eliminados, basada ya sea en aptitud o aleatoriamente.

12.2. Normalización

En algunos casos, en adición a los operadores ya descritos, es relevante

implantar un operador de normalización que, en lugar de desechar los

individuos no deseables –que carecen de sentido o de interés –, los normalice

eliminando sólo las características no deseables de un recién nacido y

reemplazándolas por otras que lo ubiquen dentro de un conjunto de hipótesis

con características deseables [47,3].

Uno de los operadores de normalización más comunes es la reinterpretación

de los códigos inválidos, que ya analizamos al referirnos al proceso de

codificación de espacios discretos limitados, en el capítulo 7.

12.3. Añadir, Eliminar

Cuando hablábamos de codificación, mencionábamos la posibilidad de requerir

de cromosomas de longitud variable. Ante esta posibilidad, es lógico que

requiramos de operadores para añadir o eliminar genes de cromosomas

existentes.

Cuando trabajamos con cromosomas de longitud variable debemos tener en

cuenta que cualquier operador de cruce sólo trabajará en un número de bits

Page 127: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 127

correspondiente al tamaño del menor de los cromosomas [39], y tomar

decisiones en cuando al excedente del cromosoma mayor. No será muy difícil

discernir que tenemos las siguientes opciones:

• Herencia Total: El excedente es replicado en ambos hijos por completo. No

es muy recomendable cuando la inclusión de ciertos genes puede ser

perjudicial al cromosoma.

• Herencia Parcial: Cada gen del excedente tiene una probabilidad php de ser

incluido en el código genético de cada descendiente.

• Herencia Repartida: Cada gen del excedente (o la totalidad del mismo)

tendrá una probabilidad phr de ir a uno o a otro hijo.

• Desecho del excedente: El excedente es simplemente desechado. No es

muy recomendable cuando la inclusión de ciertos genes puede ser

beneficioso para el cromosoma.

12.4. Intercambio, Reinserción, Barajado

En algoritmos genéticos de alta epistasis, en los que no sólo es importante el

valor de los diferentes genes sino también la posición de los mismos dentro del

cromosoma, es importante crear un mecanismo que nos permita evaluar las

diferentes combinaciones de genes al interior del cromosoma. Estos

mecanismos, que ya hemos mencionado en el capítulo anterior como

mecanismos especializados de mutación para éste tipo de algoritmos, son el

Intercambio, la Reinserción y el Barajado.

Como es lógico, el propósito de estos operadores es el intercambio de los

diferentes genes dentro del cromosoma, con el fin de dar lugar a nuevas

configuraciones de genes que, con suerte, darán lugar a individuos de mayor

aptitud y, de la misma manera, mayor potencial evolutivo. Sin embargo, para

Page 128: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 128

implantarlo, es necesario tener en cuenta que se requiere de algún tipo de

identificación de los genes, a través de etiquetas, por ejemplo, para no permitir

pérdidas de información y que.

Las bondades de este tipo de operadores en un algoritmo genético aún no han

sido positivamente evaluadas, y aunque muchos investigadores los han usado

en algún momento, pocos la han justificado, o han cuantificado su contribución:

Si bien su implementación incrementa enormemente el espacio de búsqueda,

también es cierto que no disminuye la epistasis, ni es especialmente de ayuda

en problemas en que las relaciones de los genes no permiten un ordenamiento

lineal simple. De la misma manera, ha de tenerse en cuenta que ciertos tipos

de cruce y de mutación, como el cruce uniforme bit a bit, o la mutación multibit,

anulan por completo el efecto que estos operadores pueden tener sobre los

diferentes individuos.

Finalmente, hay que tener en cuenta que un algoritmo genético que

implementa éste tipo de operadores se encuentra concentrado no sólo en la

búsqueda de “buenos” genes, sino también en la de ordenamientos óptimos de

los mismos, un problema mucho más difícil que puede sin lugar a dudas afectar

enormemente el rendimiento [5].

12.5. Reducción

Un operador especial propuesto por Corcovan y Wainwright [15] es el de

reducción, que, después de determinar el nivel de convergencia de cada uno

de los genes del cromosoma y determinar cuales han convergido

completamente (Ver “Distancia de Hamming y Convergencia”, Capítulo 11),

toma estos genes y los separa del resto, reduciendo efectivamente el

cromosoma para proseguir la búsqueda con lo que resta del mismo.

Page 129: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 129

Así, mientras el algoritmo va separando los genes óptimos ya encontrado,

prosigue la búsqueda en un espacio reducido (Esto es, sobre cromosomas de

tamaño reducido), que no es más como un subespacio de mayor aptitud del

espacio original, impidiendo a la mutación crear nuevas configuraciones que

alejen al algoritmo de los máximos ya encontrados.

12.6. Otros Operadores Comunes

En adición a los operadores ya mencionados, existen otros, que pueden ser

aplicados a ciertos problemas específicos, como son [62]:

• Duplicación o Clonación: Duplica cromosomas de buena aptitud.

• Inversión: Cambia 1s por 0s y viceversa.

• Reversión: Cambia un cromosoma por sí mismo ordenado de atrás para

adelante.

• Anulación o Pavlov: Anula (Convierte en 0) algunos bits del cromosoma.

Figura 12.1

Page 130: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 130

13. Análisis de Convergencia

Tras haber realizado un concienzudo análisis acerca de los algoritmos

genéticos, de sus partes y de sus procedimientos, es probable que aún nos

quede una serie de preguntas en el aire: ¿Qué tan eficientes son los algoritmos

genéticos en la resolución de problemas? ¿Verdaderamente resuelven éstos

problemas, o tan sólo hallan una aproximación a la solución? Si hallan, como

efectivamente deberían, la solución al problema en cuestión, ¿Cuánto tardan

en hacerlo? Y finalmente, ¿Qué criterios de parada deben elegirse para

garantizar esta terminación?

A lo largo del siguiente capítulo ahondaremos un poco más en la teoría

matemática que rodea a los algoritmos genéticos, y que permite asegurar –o

rechazar –la hipótesis de convergencia de la población a una hipótesis única

que corresponde a la solución del problema planteado, tras una cierta cantidad

de iteraciones.

13.1. Incremento de Aptitud

Como ya hemos mencionado al momento de mencionar la decisión de elegir un

criterio de parada apropiado para un algoritmo genético en específico, el

problema de predecir qué tan rápido convergerá un algoritmo genético a una

solución aceptable de un problema en particular no es nada sencillo, lo cual es

debido en gran parte a la naturaleza probabilística de éste tipo de algoritmos.

A causa de ésta misma naturaleza probabilística, sin embargo, podemos

aventurar modelos matemáticos que nos permitan aproximarnos a una

descripción del comportamiento de un algoritmo genético.

Antes de analizar estos modelos, sin embargo, debemos detenernos a hacer

una reflexión acerca de qué es lo que pretendemos demostrar. Sabemos que

un algoritmo genético ejecuta repetitivamente una serie de pasos; Nuestro

primer objetivo es, entonces, demostrar que al ejecutar estos pasos, el

Page 131: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 131

algoritmo “avanza” hacia la solución. En nuestro caso, basta con afirmar que la

aptitud promedio de cada nueva generación es como mínimo equivalente a la

de la generación anterior:

)()( 1 tt PfPf ≥+ ,

Para ello, asumamos que en una población cualquiera Pt, la aptitud de los

individuos que la componen se encuentra distribuida en forma normal con una

media f(Pt) igual a la aptitud promedio de la población, y con una desviación

estándar igual a σ, es decir:

∑∈

=ti Pb

ibfn

)(1µ

Si consideramos una selección proporcional a la aptitud de cada individuo, e

ignoramos los efectos del cruce y de la mutación, tenemos que en la siguiente

generación la aptitud promedio estará dada por la sumatoria de las aptitudes de

todos los individuos que pertenecen a ella, ponderada por la probabilidad de

selección de cada uno, que está dada por la razón entre su aptitud y la aptitud

promedio de la generación anterior:

∑∈

=′ti Pb

ii

bfbf

n µµ

)()(1 ,

ó

[ ]∑∈

=′ti Pb

ibfn

2)(1µ

µ ,

Lo cual, restando µ de µ’, equivale a:

Page 132: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 132

[ ]∑ ∑∈ ∈

−=−′ti tiPb Pb

ii bfn

bfn

)(1)(1 2

µµµ ,

ó, mejor,

[ ]∑∈

−=∆ti Pb

ii bfbfn

µµ

µ )()(1 ,

Bajo la fórmula enunciada, no es difícil demostrar que ésta diferencia en la

aptitud promedio es no negativa si la aptitud promedio de la generación Pt es

positiva, ya que los cromosomas con las mayores aptitudes obtendrán una

ponderación positiva que las escalará, mientras que las aptitudes menores se

verán disminuidas, y restadas del total; Esto demuestra que nuestra aptitud

promedio va aumentando con cada nueva generación y que, por tanto, nuestro

algoritmo se acerca cada vez más a la solución.

13.2. Hallazgo del Óptimo

Una vez demostrado que el ciclo del algoritmo genético avanza hacia su

terminación, es importante demostrar que llega en algún momento de su

ejecución a la solución del problema; es decir, que para algún número –aún

indefinido –de generaciones (t), el cromosoma óptimo b* se encuentra en la

población Pt, o:

tPbNt ∈•∃ *: ,

Donde b* es el cromosoma que equivale al punto óptimo en el espacio de

búsqueda (O al conjunto de los cromosomas óptimos, en caso de que haya

más de uno, con lo cual evitamos la pérdida de generalidad; En este caso el

símbolo de pertenencia debe ser reemplazado por el de subconjunto [24]).

Para demostrar esto, sin embargo, será necesario primero ver el algoritmo

genético de una forma completamente diferente:

Page 133: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 133

13.2.1. Algoritmos Genéticos como Cadenas de Markov

Algunos autores (Encabezados por Nix y Vose [2]) se han dado a la tarea de

modelar los algoritmos genéticos a través de cadenas de Markov homogéneas

de tiempo discreto, con el espacio de estados siendo equivalente al conjunto de

las posibles poblaciones que pueden presentarse a lo largo de la ejecución del

algoritmo. Esto es, para un algoritmo con n individuos de longitud L sobre un

alfabeto K,

⎟⎟⎠

⎞⎜⎜⎝

−−+

=1

1L

L

KKn

N

Donde N es el número de poblaciones posibles. Cada una de estas posibles

poblaciones es descrita a través de una matriz de incidencia Z (N×r) donde las

filas representan cada una de las poblaciones, y las columnas los diferentes

cromosomas susceptibles de ser representados con el alfabeto en cuestión;

Así, cada una de las posiciones (i,b) define la cantidad de veces que el

individuo b es representado en la población i.

Individuo Estado

00 01 10 11

P1 0 0 0 2

P2 0 0 1 1

P3 0 0 2 0

P4 0 1 0 1

P5 0 1 1 0

P6 0 2 0 0

P7 1 0 0 1

P8 1 0 1 0

P9 1 1 0 0

P10 2 0 0 0

Tabla 13.1: Matriz Z para K=2, L=2 y n=2

Page 134: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 134

13.2.1.1. Cadenas de Markov

Una cadena de Markov describe una trayectoria probabilística [10] sobre un

espacio finito S (El conjunto de poblaciones posibles, en nuestro caso), en la

cual la probabilidad pi,j de realizar una transición de un estado si ∈ S en un

instante t a un estado sj ∈ S en un instante t+1 –también llamada probabilidad

de transición –depende únicamente del estado actual si (Que en el caso de los

Algoritmos Genéticos representa la probabilidad de pasar de una población Pi a

una población Pj en una generación). Una cadena de Markov para la cual ésta

probabilidad de transición no depende tampoco del instante t es llamada

cadena de Markov homogénea [44].

Las diferentes probabilidades de transición de una cadena de Markov pueden

ser recolectadas en una matriz de transición Q, una matriz de probabilidades –

o matriz estocástica11 [10] –de dimensiones n×n, que determina la probabilidad

de transición entre dos estados; es decir, la probabilidad condicional de que en

una sola transición la variable aleatoria tome cada uno de los valores posibles

del espacio de estados (Representados como las columnas de la matriz), dado

un estado inicial (Representado en las filas). Como matriz de probabilidad, la

matriz Q cumple las siguientes propiedades [44]:

1000:, , ≤≤•≤<∧≤<∀ jiQnjniNji ,

y

∑=

=•≤<∀n

ijiQnjNj

1, 10:

11 Una matriz de probabilidades es una matriz que cumple las propiedades que

serán descritas más adelante.

Page 135: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 135

Una vez se conoce la matriz de transiciones que representa una cadena de

Markov, y asumiendo que las probabilidades de estas transiciones permanecen

invariantes con el tiempo, se puede deducir la probabilidad condicional del paso

de un estado i a otro j en un número de pasos t (Que no necesariamente debe

ser igual a uno) mediante la fórmula:

t

jiQtjip ,),( =→

La Matriz Qt –esto es, la matriz que representa el producto de la matriz Q por

ella misma, t veces –no es más que la matriz de transición de t pasos, que

representa entonces la probabilidad de que, t transiciones después, la variable

aleatoria tome el valor de la columna j, dado que en un principio se encontraba

en el valor de la fila i [16] (Que, en nuestro caso representa la probabilidad de

llegar a la población Pj tras t generaciones, a partir de una población Pi).

Nótese que cualquier potencia de una matriz estocástica es, por fuerza, una

matriz estocástica [10,44].

De la misma manera, dada una distribución de probabilidades iniciales (O de

probabilidades de iniciar con cada una de las posibles poblaciones, en el caso

de los Algoritmos Genéticos) en la forma de un vector a0, la distribución de

probabilidad de los diferentes estados tras t pasos está dada por:

t

t Qaa 0=

Así, una cadena de Markov de tiempo discreto finita y homogénea se encuentra

definida completamente por el par (a0, Q) [44]. Además de las mencionadas,

una cadena de Markov tiene una gran cantidad de propiedades que permiten

predecir su comportamiento, algunas de las cuales derivan de la naturaleza de

la matriz de transición como una matriz de probabilidades, como lo veremos

más adelante, y otras tantas que ya han sido estudiadas extensivamente por

Page 136: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 136

una gran cantidad de autores y que sólo serán tratadas en el presente trabajo

cuando sea necesario para describir el problema en cuestión.

Para nuestro algoritmo genético, las transformaciones definidas sobre el

espacio de búsqueda dependen enormemente de los operadores genéticos

que estemos utilizando. Podemos hacer, sin embargo, una aproximación a la

matriz de transición de la cadena de Markov que modela el proceso de nuestro

algoritmo genético, dividiendo la transición de un estado a otro en las sub-

transiciones que la componen, es decir, la transición de selección, la transición

de cruce y la transición de mutación [2,10,14]:

mcs QQQQ ××= ;

Así, tenemos:

∏=

==N

k

kjzs

s NjikjZ

ikpnjiQ

0

),(

..1,,)!,(

)(!),( ,

donde,

)()(),(

)(),(

)(),()(

1

iFkfkiZ

lfliZ

kfkiZikp N

l

s ==

∑=

,

Es la probabilidad de que el individuo k de la población i sea seleccionado para

la siguiente generación. De manera similar:

⎪⎪⎩

⎪⎪⎨

=+−=

jiiNjiNp

jiiNjiNpp

jiQ

c

cc

c

ccc

c

,)(),(

,)(),()1(

),( ,

Page 137: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 137

donde Nc(i) representa el número total de poblaciones diferentes alcanzables

desde la población i a través del operador de cruce, y Nc(i,j) representa la

porción de éstas poblaciones que son equivalentes a la población j.

Finalmente:

)(

)(),(

* *

iN

bapjiQ

m

Pa Pbm

mi j

∑∑∈ ∈

= ,

donde Pi* es el conjunto de todas las posibles poblaciones alcanzables desde i

a través del operador de mutación, y Pj* es el conjunto de todas las posibles

poblaciones que a través del operador mutación pueden dar lugar a la

población j; Nm(i) es el número total de poblaciones alcanzables desde i a

través del operador de mutación, y pm(a→b) es la probabilidad de que un

individuo a sea transformado por mutación en un individuo b, dada por:

),(),()1()( baH

mbaHL

mm ppbap −−=→

Cada Qi,j es, entonces, una medida de qué tan posible es que una población Pi

sea transformada en Pj en una transición. En particular, si la tasa de mutación

es diferente de 0, Qi,j será también diferente de 0 para todo (i, j) –como ya

vimos en el capítulo dedicado a la mutación, si la tasa de mutación es diferente

de 0, existe una probabilidad no nula de que un individuo dado pueda

convertirse en cualquier otro del espacio de búsqueda –; Así, con una tasa de

mutación diferente de 0, cualquier población es susceptible de ser

transformada en cualquier otra con una probabilidad, por pequeña que ésta

sea, diferente de 0.

Una cadena de Markov para la cual todas las entradas de su matriz de

transición son diferentes de cero es denominada Cadena de Markov Ergódica;

Page 138: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 138

Existe un teorema por el cual toda cadena ergódica es susceptible de entrar en

el límite ( ∞→t ) a un estado estable para el cual:

)(lim)(lim0: 1 ittitt PPpPPpNiNi =≡=•≤<∀ +∞→∞→ ,

Esto significa –en nuestro caso –, que ante un número potencialmente infinito

de generaciones, cada nuevo ciclo del algoritmo genético no causará variación

alguna en las probabilidades de obtener una población dada,

independientemente de la población inicial. Así, ya que tenemos una

probabilidad no nula de obtener cualquiera de las poblaciones posibles,

tenemos asimismo una probabilidad no nula de obtener cualquiera de los

individuos posibles dentro de estas poblaciones –esto es, en suma, todas las

configuraciones posibles para un cromosoma –.

Así, suponiendo que existe un cromosoma b* que supera en aptitud a todos los

demás cromosomas (O que, al menos, no existe otro cromosoma que le supere

en aptitud), la probabilidad de encontrar éste cromosoma en un número infinito

de iteraciones de un algoritmo genético con una probabilidad de mutación Pm≠0

es 1.

Este resultado puede no ser completamente satisfactorio, en particular porque

por lo general no estamos dispuestos a esperar un tiempo infinito para obtener

la solución a un problema. Sin embargo, podemos aliviar las repercusiones

prácticas de éste problema siendo un poco menos ambiciosos, y sacrificando

exactitud por eficiencia, dejando de lado la búsqueda de la respuesta exacta

para dar un cierto margen de error εb a nuestros cálculos, con lo cual sólo

requeriríamos hallar una población Pt para la cual:

biti bfbfPbNi ε≤−•∈∃ )(*)(:

Page 139: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 139

Este planteamiento puede parecer mucho más fácil de alcanzar; Sin embargo,

no es del todo práctico a la hora de implantar, o de demostrar, sobre todo si

tenemos en cuenta que, como es lógico, no tenemos idea previa de cual es el

punto óptimo b* que estamos buscando –Si lo supiéramos, no habría caso en

realizar la búsqueda –, y por tanto nos es casi imposible conocer a priori cual

es su aptitud (Si bien en algunos casos es posible predecir aproximaciones).

13.2.1.2. Comportamiento en un tiempo t

Asumamos que escogemos una población para nuestro algoritmo genético en

forma aleatoria. Dado que debemos escoger n individuos de los KL posibles,

cada uno de ellos tendrá una probabilidad K-L de ser escogido. Así, es claro

que para definir la probabilidad de que la población inicial sea una población

específica Pi, requerimos de una distribución multinomial de probabilidad:

[ ]nL

Kiiii K

zzznPPp

L

==1,1,0,

0 !!!)(L

Bajo esta distribución, podemos asegurar que después de un número t de

ciclos del algoritmo genético, la probabilidad de que éste contenga cada una de

las poblaciones posibles está dada por:

∑=

===N

i

tjiijt QPPpPPp

1,0 )()(

Esta probabilidad no tiene necesariamente que restringirse a un estado; Puede

incluir un conjunto completo de estados que presenten una característica de

interés (Por ejemplo, en nuestro caso, todas las poblaciones en las cuales se

encuentra el cromosoma óptimo b*, o todas las poblaciones para las cuales la

aptitud promedio supera cierto valor mínimo predeterminado). Así, para un

conjunto J de poblaciones posibles, la probabilidad de que en un tiempo t el

algoritmo se encuentre en alguna de estas poblaciones es [10]:

Page 140: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 140

∑∑∑∈ ∈∈

====∈JP IP

tjii

JPjtt

j ij

QPPpPPpJPp ,0 )()()(

De la misma manera, con la ayuda de las leyes de la probabilidad, podemos

hacer un acercamiento al valor de una función de interés f (Como puede ser,

por ejemplo, la aptitud promedio de la población) a partir de la probabilidad de

los diferentes estados de la cadena; Así [10]:

[ ] ∑ ==j

jjtt PfPPpfE )()(

13.3. Tiempo de Espera

A lo largo de nuestra discusión acerca de la convergencia de algoritmos

genéticos hemos dejado de lado una importante pregunta, que nos concierne

especialmente dado que el criterio de parada más comúnmente usado es el del

número de ciclos: ¿Cuántas iteraciones (t*) del algoritmo genético son

necesarias para asegurar con cierta probabilidad (δ) que el algoritmo ha

convergido a una solución aceptable (O, posiblemente, a b*)?

Una respuesta a esta pregunta viene del estudio, precisamente, de las cadenas

de Markov. Una observación detallada de la matriz Q que la define nos puede

revelar muchos datos en cuanto a los tiempos medios de primer paso para un

estado en particular (O un conjunto de estados, como ya vimos); Es decir, la

cantidad de tiempo –estimado en número de transiciones –que toma en

promedio al proceso llegar a un estado Pj, dado que en un principio se

encuentra en un estado Pi. Para ello, denominemos a este tiempo ti,j, y

consideremos que la probabilidad de pasar de Pi a Pj en un solo paso es de Qi,j.

Sin embargo, existe toda una serie de posibilidades de que de la población Pi

se pase a otra población arbitraria Pk (k≠j) de donde, de nuevo, hay una cierta

Page 141: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 141

probabilidad de llegar a Pj en un cierto número de pasos. Así, sumando todos

estos factores, obtenemos la siguiente serie de ecuaciones simultáneas:

∑≠

++=jk

jkkijiji tQQt )1( ,,,,

De la misma manera, para conjuntos de poblaciones, tenemos:

∑ ∑∈ ∉

++=Jj Jk

jkkijiJi tQQt )1( ,,,,

Al resolver esta serie de ecuaciones, obtenemos (Nos concentraremos en un

conjunto de poblaciones, si bien el resultado es equivalente para una sola

población):

∑ ∑∈ ∉

=+==Ji Ji

jiiix tPPpPPpJt ,00 )(0)()( ,

Donde tx, el tiempo esperado, está dado por la posibilidad de que el óptimo sea

encontrado en el estado inicial (Y por tanto, en 0 iteraciones del algoritmo

genético), o que se tengan que realizar un cierto número de transiciones para

llegar a él. Como se puede ver, el primer término puede ser descartado,

reduciendo nuestra ecuación a [10]:

∑∉

==Ji

jiix tPPpJt ,0 )()(

Ejemplo 13.3.1

Consideremos las dos siguientes, sencillas, matrices de transición para

cadenas de Markov:

Page 142: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 142

Y asumamos que el estado J es, en ambos casos, un estado que aglomera

todas aquellas poblaciones que contienen la solución del problema en cuestión.

Podemos argumentar que la probabilidad de encontrarse en el estado Pj en un

instante t es, para cualquiera de los dos algoritmos:

∑ ===S

tjssjt QPPpPPp ,0 )()( .

Asumamos también que las probabilidades iniciales están repartidas

indistintamente entre los dos estados. Así, nuestra probabilidad p(P0=Ps) = 0,5,

y nuestra ecuación queda reducida a:

∑==S

tjsjt QPPp ,5,0)( ;

De manera similar, al notar que la matriz Qt es, sin importar la potencia a la que

sea elevada, una matriz de probabilidad, nos es evidente que la suma de los

valores en sus filas será siempre 1. Así,

5,0)( == jt PPp

Así, en un momento dado, tenemos una probabilidad del 50% de encontrarnos

en cualquier estado en cualquiera de los dos algoritmos genéticos.

Por otro lado, si calculamos el tiempo medio de espera para llegar al estado J,

tenemos resultados bastante diferentes. Calculemos el tiempo medio del

primer paso para el estado J en la matriz Q1:

Figura 13.2

Page 143: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 143

)1)(5,0(5,0 ,, JIJI tt ++= ,

lo cual nos produce un resultado de 2, y un EWT de 1. Un cálculo similar sobre

Q2 nos retorna un EWT de 2. Esto se debe básicamente a la baja probabilidad

que presenta Q2, en relación a Q1 para el paso del estado I al estado J; Si bien

es igualmente probable que ambos procesos inicien en uno u otro estado, es

mucho más fácil para un algoritmo genético que comience en I pasar a J bajo

Q1 que bajo Q2.

Es de notar que cuando existe elitismo, la probabilidad de pasar de un estado

que no contiene un óptimo a otro que sí lo contiene aumenta a causa de la

tendencia a retener los mejores resultados en cada iteración [44]. El número

de pasos para llegar a éste estado, por tanto, disminuye.

13.3.1. Definiendo una Cota

El método presentado para calcular el número esperado de iteraciones para

hallar el máximo puede darnos una luz en cuanto al tiempo que puede tomar el

desarrollo del algoritmo. No nos permite, sin embargo, tomar muchas

decisiones: El que se espere encontrar el máximo después de tx iteraciones no

nos asegura que efectivamente se encontrará, y la naturaleza probabilística del

algoritmo puede darnos una mala sorpresa a la hora de fijar un número de

iteraciones para dar la parada del algoritmo.

Es por ello que algunos investigadores [24] se han mostrado interesados no en

encontrar un tiempo promedio en el que se espera que se halla encontrado el

óptimo b*, sino un número de iteraciones en el que se puede asegurar, al

menos con cierto margen de probabilidad (δ), que se ha encontrado éste

óptimo. Para ello definiremos la función Int+(x) : ℛ →ℤ como el mínimo entero

que es mayor o igual a x, y dividiremos el problema en dos partes:

Page 144: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 144

13.3.1.1. Probabilidades de Mutación Bajas

Primero asumamos que la probabilidad de mutación cumple con la siguiente

desigualdad:

11

−≥−

Kp µ

Esto es,

Kpm

11−≤

Ahora, dado un cromosoma bp tal que:

ybbH p =*),( ,

La probabilidad de que bp sea convertido tras una mutación en b* está dada

por:

L

myL

mym K

pKpp ⎟

⎠⎞

⎜⎝⎛

−≥⎟

⎠⎞

⎜⎝⎛

−−

11)1( ,

Entonces, la probabilidad de que no mute es a lo sumo:

L

m

Kp

⎟⎠⎞

⎜⎝⎛

−−

11

Que no depende en absoluto de y, y por tanto puede ser generalizada para

todos los cromosomas de la población. Así, teniendo en cuenta que en cada

generación se realiza n mutaciones independientes, y que tras t iteraciones el

Page 145: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 145

número total de mutaciones es nt, podemos aventurar una cota inferior para pt*,

definida ésta como la probabilidad de obtener el óptimo tras t iteraciones de un

algoritmo genético:

ntL

mt K

pp ⎟

⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−≥

111* ,

Sin importar lo que suceda en las fases de cruce y selección, ya que éstas

simplemente concentran el espacio de búsqueda a ciertos puntos y recombinan

el material existente, por lo que en términos de nuestra ecuación lo único que

hacen es aumentar pt*, sin modificar nuestra cota inferior.

Ahora, introduzcamos nuestra probabilidad base –la probabilidad con la que

podemos asegurar que hemos encontrado nuestro óptimo después de t1

iteraciones –supongamos:

δ≥•∃ *:11 tpNt ,

Así, tenemos:

1

111

ntLm

Kp

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−≤δ ,

Que puede ser reescrito:

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−

−≥

Lm

Kpn

t

11ln

)1ln(1

δ .

Así, podemos afirmar que, bajo esta afirmación:

Page 146: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 146

⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−

−= +

Lm

Kpn

Intt

11ln

)1ln(* δ

En ésta ecuación, t* representa el número de iteraciones necesarias para que

podemos asegurar que, con probabilidad δ, el cromosoma óptimo b* ya ha sido

encontrado (Lógicamente, para asegurar que aún permanezca en la población,

deberíamos considerar el implementar un enfoque elitista para nuestro

algoritmo). Como vemos, este término no es sólo mucho más exacto, sino

también mucho más fácil de calcular que nuestro tx calculado en el numeral

anterior.

13.3.1.2. Probabilidades de Mutación Altas

Ahora, asumamos que:

11

−≤−

Kp

p mm

Esto es,

Kpm

11−≥ ;

Ahora bien, esto nos implica una variabilidad mucho mayor en el momento de

la mutación, que puede no solo dar lugar al cromosoma óptimo sino que

también puede destruirlo si ya se ha encontrado a través del cruce. Por ello,

tendremos que dividir, de nuevo, nuestro problema en dos casos.

Page 147: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 147

El primer caso es aquel en que ninguno de los cromosomas después de un

cruce es equivalente a b*. Asumamos que las distancias de Hamming de cada

uno de los cromosomas al óptimo son, respectivamente, y1 y y2. Para cada uno

de los dos, su probabilidad de mutación a b* en un solo paso es:

⎟⎠⎞

⎜⎝⎛

−−≥⎟

⎠⎞

⎜⎝⎛

−− −

1)1(

1)1( 1

Kpp

Kpp mL

m

yLmy

m

i

i ,

Don de i puede tomar los valores 1 o 2 para representar a cada uno de los

cromosomas. Así, la probabilidad de que ninguna de las cadenas del par mute

al óptimo es, a lo sumo:

2

1

1)1(1 ⎟

⎠⎞

⎜⎝⎛

−−− −

Kpp mL

m .

Por otro lado, puede darse el caso en que exactamente un miembro del par

equivale al cromosoma óptimo (No consideramos el caso en que ambos

correspondieran a b*, porque para ello, b* ya debería existir en la generación

anterior). Para que esto sea cierto, el cromosoma óptimo debió haber sido

encontrado a través del cruce.

Supongamos que los dos miembros del par provienen del cruce de dos

cadenas cuyas respectivas distancias de Hamming a la cadena óptima son z1 y

z2, sin importar el tipo de cruce o la probabilidad del mismo. Como tras el

cruce, la distancia de Hamming de una de las cadenas al óptimo es 0, la de la

otra debe ser forzosamente igual a z1 + z2 – L ≤ L – 2. Así, la probabilidad de

que tras la mutación ninguno de los pares sea igual a b* es:

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−−−≤⎟

⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−−− −

−−−+

22

22

1)1(1))1(1(

1)1(1))1(1(

21

21

Kppp

Kppp mL

mL

m

zzLmLzz

mL

m,

Page 148: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 148

y como

2

122

2

1)1(1

1)1(

1)1(

21

21⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−≤⎟

⎠⎞

⎜⎝⎛

−−≤⎟

⎠⎞

⎜⎝⎛

−− −

−−−+−

Kp

pKp

pKp

p mLm

zzLmLzz

mmL

m .

En cualquiera de los dos casos, tenemos que la probabilidad 1 – pt* de que tras

t iteraciones el óptimo no haya sido visto cumple con:

nt

mLmt K

ppp ⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−≤− −

1)1(1*1 1 ,

con lo que, siguiendo un proceso similar al que seguimos para las

probabilidades bajas de mutación, obtenemos:

⎥⎥⎥⎥

⎢⎢⎢⎢

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛

−−−

−=

+

1)1(1ln

)1ln(*1

Kppn

InttmL

m

δ ;

Así, finalmente, con el fin de dar una cota inferior definitiva que nos sirva en

ambos casos, podemos aventurar, con absoluta certeza, que [24]:

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎟⎟

⎜⎜

⎥⎥⎦

⎢⎢⎣

⎡⎟⎠⎞

⎜⎝⎛

−−⎟

⎠⎞

⎜⎝⎛

−−

−=

+

1)1(,

1min1ln

)1ln(*1

Kp

pKp

n

InttmL

m

Lm

δ

Es más, asumiendo tasas de mutación pequeñas (Como es lo habitual), y

tomando las aproximaciones ln(1+x) ≈ x para valores pequeños de x, e Int+[56]

Page 149: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 149

≈ x para valores grandes de x, tenemos que nuestra cota máxima para el

tiempo de espera en nuestro algoritmo genético es [24]:

( ) ( )Lm

L

npKt δ−−

=1ln1*

Greenhalgh y Marshall (2000) no sólo enunciaron el teorema expuesto

anteriormente, sino que también demostraron que no existe una cota superior

para el tiempo de convergencia de un algoritmo genético que sea menor a la

expuesta. Bajo ésta cota, asimismo, mostraron, basándose en estudios

anteriores, que la tasa de mutación que minimiza esta cota se encuentra en la

frontera:

KKpm

1−= ,

que la cota disminuye ante valores mayores de n, y que es más eficiente utilizar

alfabetos binarios, si bien se pueden obtener resultados similares a los

obtenidos con éstos, con tasas mayores de mutación.

13.4. Resultados Empíricos

13.4.1. Comportamiento de la Aptitud Promedio

En la práctica, cuando los individuos de la población inicial son distribuidos

aleatoriamente, el algoritmo genético suele comenzar con una aptitud promedio

relativamente baja, que se incrementa rápidamente a medida que el algoritmo

avanza y los individuos de las diferentes generaciones comienzan a

aglomerarse alrededor de áreas de mayor aptitud. A medida que estos

individuos comienzan a congregarse en un menor número de óptimos locales y

a desechar algunos que no permiten un mayor incremento de aptitud, en las

siguientes fases del algoritmo, la aptitud global continúa incrementándose, de

Page 150: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 150

forma más lentamente cada vez, hasta que se normaliza [14], lo cual evidencia

la llegada al estado estable que mencionábamos en nuestra discusión sobre

cadenas de Markov [12].

Esto puede ser bastante lógico si damos de nuevo un vistazo a la fórmula que

obtuvimos para el incremento de aptitud:

[ ]∑∈

+ −=−ti Pb

tiit

tt bfbfn

µµ

µµ )()(11 .

Ya es claro que, obviando la tasa de mutación, tenemos que en cada nueva

generación se produce un incremento de aptitud, como ya fue mostrado

anteriormente; De la misma forma, también es fácil notar que a medida que se

produce éste incremento en la aptitud nuestro µt se hace mayor, disminuyendo

asimismo la resta f(bi) – µt; con lo cual el incremento de aptitud se hace menor

con cada generación. Aproximando éste efecto en forma infinitesimal, no nos

será difícil notar que la ecuación tiene una forma logarítmica, con lo cual

tampoco nos será difícil predecir la aptitud f(b*) del cromosoma óptimo, para lo

Figura 13.3

Page 151: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 151

cual solamente requeriríamos tomar el límite de la función agregada en el

infinito.

Bajo éste resultado, podemos aventurar como posibles criterios alternativos de

parada del algoritmo genético el hallazgo de una aptitud igual o superior a

cierta proporción de ésta f(b*) calculada a priori:

*)(min bcff = , para c cercanos a, pero menores que, 1,

o el punto en que el incremento de aptitud se haga menor que un ε infinitesimal

determinado a priori por el usuario, tal que el algoritmo se detenga cuando:

εµµ ≤−+ tt 1

13.4.2. Distancia de Hamming

De forma similar a la función de aptitud, la distancia promedio de Hamming,

tanto en el grado de convergencia como en el grado de agrupación, suele

iniciar en un valor relativamente predecible –que suele ser cercano a L/2

cuando la población se elige aleatoriamente, como se vio en capítulos

anteriores –, que disminuye rápidamente a medida que la población se agrupa

alrededor de un individuo de alta aptitud, y vuelve a incrementarse cuando la

población vuelve a explorar el espacio de búsqueda [19]. Eventualmente, la

función converge hacia un valor mínimo (Diferente de 0 a menos que el

algoritmo permita una pérdida total de la diversidad genética), con las

diferentes oscilaciones afectando cada vez menos el resultado final.

Page 152: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 152

Figura 13.4

Page 153: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 153

14. Implementación de un Algoritmo Genético en Java

Después de haber analizado a lo largo de los capítulos anteriores los diferentes

elementos que componen un Algoritmo Genético, llega la hora de crear una

propuesta para su implementación. Para ello, y con el fin de mantener la

implementación del algoritmo en la forma más sencilla posible, nos

concentraremos en los paradigmas de la programación orientada por objetos y,

en particular, en el lenguaje de programación JAVA (Aunque bajo los

parámetros señalados a continuación, no debe ser muy difícil trasladar la

implementación a cualquier otro lenguaje de programación orientado por

objetos).

En el capítulo siguiente nos centraremos en el análisis y el diseño de una

aplicación que permita explorar los temas tratados a lo largo de éste

documento, así como en una serie de pautas para que la implementación de la

misma sea mejor y más eficiente. Esta implementación la dejamos, sin

embargo, en manos del lector, esperando que a continuación encuentre todos

los elementos necesarios para llevar a cabo su labor.

El diseño planteado en este capítulo pretende específicamente ser sencillo y

fácil de usar, así como aplicable a una gran gama de problemas. Para el lector

curioso, sin embargo, recomendamos referirse al proyecto JGAP (Java Genetic

Algorithm Project, cuya base en Internet puede encontrarse en la dirección

http://jgap.soulforge.net), de una completitud asombrosa –si bien bastante

diferente a la propuesta presentada a continuación –, que puede ver con

buenos ojos cualquier aporte del lector.

14.1. Análisis de Requerimientos

Para adentrarnos en lo que un proyecto como el que queremos realizar

necesitaría, tenemos primero que hacer un análisis de lo que pretendemos –y

no pretendemos –alcanzar. Para ello comenzaremos por plantear el alcance

Page 154: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 154

del problema, para luego centrarnos en lo que queremos implementar, que

describiremos paso a paso a continuación.

14.1.1. Planteamiento General y Dominio del Problema

Nuestra implementación pretende ser sencilla, por un lado, si bien por otro lado

pretende mostrar las diferentes variaciones presentadas a lo largo de éste

trabajo. Se pretende entonces mantener la simplicidad, pero hacer que una

gran parte de las características del algoritmo sea configurable. Para ello,

entonces, haremos una revisión de cada uno de los pasos del algoritmo, para

determinar su alcance:

14.1.1.1. Codificación

La mayor parte de las implementaciones de algoritmos genéticos disponibles

en la red (ver JGAP) divide los cromosomas en genes, que pueden ser

implementados como bits, enteros, cadenas de caracteres, reales, etc. En este

caso, sin embargo, nos centraremos en los cromosomas que, al igual que los

desarrollados por los pioneros en la investigación en éste campo, tendrán un

alfabeto binario; No porque sea lo más eficiente –como hemos visto a lo largo

de los capítulos anteriores, puede o no serlo, dependiendo de la interpretación

–, sino porque es mucho más fácilmente adaptable a cualquier problema en

particular.

Esto nos lleva a un nuevo punto: Queremos que nuestro algoritmo sea capaz

de resolver más de un problema, y que no se centre simplemente en dar

soluciones aproximadas a un único problema general que depende de una

serie de parámetros particulares, o que deje la implementación de la función de

aptitud en manos del usuario (Quien no debería tener que saber de

programación). Así, no podemos trabajar con un criterio único de optimización,

sino que debemos ser capaces de modificar éste criterio en cualquier

momento, para una nueva ejecución.

Page 155: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 155

Para garantizar esto, debemos contar con una función de aptitud editable, que

nos permita adaptar nuestro algoritmo genético general a nuestro problema

particular de optimización; Con esto, si bien dejamos la cuestión de la

codificación en manos del usuario, sí le damos herramientas para que pueda

adaptar el algoritmo base al problema que quiere resolver, en la forma que le

parezca más apropiada. Recordemos que uno de los puntos más importantes

de un algoritmo genético es la codificación del problema en cuestión.

En principio, ignoraremos ciertos elementos alternativos como la diploidía y los

cromosomas de tamaño variable. La incorporación de éstos elementos, así

como el uso de alfabetos alternativos, tendrían importantes repercusiones en la

implementación de la clase Chromosome; en particular en sus métodos de

cruce, de evaluación, y la forma de ingresar la función de aptitud.

14.1.2. Evaluación

Al igual que la función de evaluación, el método de escalamiento de aptitud

debe ser susceptible de ser elegido entre las diferentes opciones mencionadas

en el capítulo 7 (Es decir: Escalamiento base, por ventanas, Exponencial,

Sigma, Transformación Lineal Normalización Lineal)

14.1.3. Selección

La selección debe poder hacerse por torneo o por rueda de la fortuna, según

los deseos del usuario; quien también debe tener la potestad de determinar la

cantidad de participantes del torneo en caso que elija esta opción. La decisión

de si se implementa o no elitismo también queda en manos del usuario.

14.1.4. Cruce

Como en el caso de la evaluación y la selección, en el cruce se deben poder

configurar una cierta serie de parámetros. En particular, debe ser posible

escoger entre el cruce normal con reemplazo total, con reemplazo parcial, y el

cruce de estado estable. Con el fin de mantener sencillo el proceso de

implementación, se ha optado por no incluir el cruce restringido en éste

Page 156: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 156

modelo. Por otro lado, el usuario debe estar en capacidad de escoger la

probabilidad de cruce, que es uno de los parámetros principales de un

algoritmo genético, como ya lo hemos visto en capítulos anteriores.

14.1.5. Mutación

Como la probabilidad de cruce, la probabilidad de mutación debe poder ser

escogida por el usuario, quien debe poder incluso fijarla en 0 si desea un

algoritmo evolutivo sin mutación. De forma similar, el usuario debe poder

escoger restringirse a la mutación y dejar el cruce de lado, optando por una

solución de evolución inocente como se mostró en el capítulo correspondiente.

En todo caso, con el fin de optimizar el algoritmo y simplificar la

implementación, la única técnica de mutación que se empleará será la

mutación multibit.

14.1.6. Otros Parámetros

Otros criterios que deben ser susceptibles de configuración por parte del

usuario (Y que son claves para el desarrollo del algoritmo) son el tamaño de la

población, y el criterio de parada, que debe ser elegido de una lista que

enuncia todas las posibilidades mencionadas en el capítulo 12: Número de

Generaciones, número de cromosomas nuevos, aptitud mínima del cromosoma

de mayor aptitud, o nivel de convergencia, medido en porcentaje de

equivalencia de la población, o distancia promedio de hamming entre los

diferentes individuos.

14.1.2. Usuarios

Sólo se requerirá de la aplicación el reconocimiento de un tipo de usuario, que

estará encargado de todo el proceso de configuración y ejecución del

algoritmo.

Page 157: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 157

14.1.3. Casos de Uso

Dentro de aquello que el usuario debe

estar en capacidad de hacer, encontramos

sólo tres puntos realmente importantes, si

bien uno de los cuales (la inicialización)

puede ser dividido en un sinnúmero de

pequeños casos de uso cuya inclusión en

éste punto es irrelevante. A la izquierda se

presenta un diagrama simple de casos de

uso en el que, como vemos, la idea es bastante sencilla. A continuación

haremos una breve descripción de cada uno de estos casos de uso.

Identificador: JGFw-IUC Nombre: Inicialización

Descripción:

El Usuario elige todos los parámetros bajo los cuales se ejecutará el algoritmo

genético.

Actores: Usuario Frecuencia: Una vez por ejecución.

Objetivo:

Inicializar las variables para la ejecución del Algoritmo genético.

Condiciones:

PRE: Todas las variables del algoritmo genético se encuentran en valores pre-

determinados.

POST: Las variables del algoritmo genético que el usuario haya elegido han

cambiado a los valores determinados por éste.

Figura 14.1

Page 158: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 158

Flujo de Eventos:

Flujo Básico:

• El usuario elige el tamaño de la población (Por defecto: 30)

• El usuario elige un método de escalamiento de aptitud (Por defecto: Sin

escalamiento)

• El usuario elige un método de Selección (Por defecto: Rueda de la

Fortuna)

• El usuario elige si desea o no permitir el elitismo (Por defecto: No)

• El usuario elige la probabilidad de cruce (Por defecto: 0.9)

• El usuario elige la probabilidad de mutación (Por defecto: 0.1)

• El usuario elige una técnica de cruce (Por defecto: Básico)

• El usuario elige un modo de reemplazo (Por defecto: Reemplazo total)

• El usuario elige un criterio de parada (Por defecto: 30 generaciones)

• Para cada paso, los valores son almacenados en memoria.

Flujos Alternativos:

• El usuario sigue estos pasos en desorden.

• El usuario no realiza uno de estos pasos, en cuyo caso permanece el

valor por defecto.

Requerimientos Especiales:

Validación de Datos:

• El tamaño de la población debe ser mayor a 10 y menor a 100.

• Las probabilidades de cruce y mutación deben estar entre 0 y 1.

• Las demás variables deben encontrarse dentro de las opciones dadas.

Identificador: JGFw-CUC Nombre: Codificación

Descripción:

El Usuario especifica la función de aptitud.

Actores: Usuario Frecuencia: Una vez por ejecución.

Objetivo:

Especificar la función de aptitud con la que serán evaluados los cromosomas.

Page 159: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 159

Condiciones:

PRE: TRUE.

POST: Se ha almacenado la función de aptitud.

Flujo de Eventos:

Flujo Básico:

• El usuario ingresa la función de aptitud.

• La función es almacenada para su uso posterior.

Requerimientos Especiales:

Validación de Datos:

• La función de aptitud debe seguir ciertas normas gramaticales (Ver

Consideraciones Especiales, más adelante).

Identificador: JGFw-EUC Nombre: Ejecución

Descripción:

Ejecución del Algoritmo.

Actores: Usuario Frecuencia: Una vez por ejecución.

Objetivo:

Obtener el resultado del algoritmo genético.

Condiciones:

PRE: La función de aptitud se encuentra especificada.

POST: El programa retorna la solución del problema, de acuerdo a la

especificación dada por el usuario en la especificación.

Page 160: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 160

Flujo de Eventos:

Flujo Básico:

• El programa crea una población, en forma aleatoria.

• Cada cromosoma calcula su aptitud.

• Mientras no se ha cumplido el criterio de parada especificado:

o Se seleccionan los cromosomas padres.

o Los cromosomas padres son cruzados.

o Los cromosomas resultantes son mutados.

o De acuerdo a los criterios de reemplazo, los cromosomas hijos

reemplazan a sus padres.

o Los cromosomas son evaluados.

Requerimientos Especiales:

Ninguno.

14.1.4. Requerimientos

14.1.4.1. Funcionales

Una vez mencionados los casos de uso, debemos dividirlos en sus partes para

determinar lo que debe –y no debe –hacer el sistema. Así, dividimos los casos

de uso en:

• Inicialización:

o Configuración Base:

Ingresar Tamaño de la Población.

Ingresar Criterio de Parada.

o Evaluación:

Elegir Método de Escalamiento de Aptitud.

o Selección:

Elegir Método de Selección.

Seleccionar Modo Elitista.

o Cruce:

Page 161: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 161

Elegir Probabilidad de Cruce

Elegir Técnica de Cruce

Elegir Método de Reemplazo

o Mutación:

Elegir Probabilidad de Mutación.

• Codificación:

Ingresar Función de Aptitud.

• Ejecución:

o Evaluar.

o Escalar Población.

o Seleccionar.

o Cruzar.

o Mutar.

Identificador: JGFw-IBR1 (PS) Nombre: Ingresar Tamaño de Población

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

2

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Entero Salida: Ninguna

Descripción:

PRE: Se ha ingresado el tamaño de la población, como un número entero.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Verificación del ingreso correcto de los datos.

Page 162: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 162

Identificador: JGFw-IBR2 (SC) Nombre: Ingresar Criterio de Parada

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

2

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Entero, y un número que

puede ser entero o doble

dependiendo de éste

Salida: Ninguna

Descripción:

PRE: Se ha ingresado el criterio de parada (0 – Número de Generaciones, 1 –

Número de Cromosomas nuevos explorados, 2 – Aptitud Mínima, 3 – Porcentaje de

Convergencia, 4 – Distancia Promedio de Hamming, 5 – Aptitud Mínima

Proporcional a la primera generación, 6 – Incremento de Aptitud), y un número

entero o doble que especifica el valor dado para el criterio especificado.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

• Se ha especificado un número de generaciones inferior a 1.

• Se ha especificado un número de cromosomas inferior al tamaño de la

población.

• Se ha especificado una aptitud mínima negativa.

• Se ha especificado un porcentaje de convergencia menor a 0 o mayor a 100

• Se ha especificado una distancia promedio de hamming inferior a 0 o

superior al tamaño de los cromosomas.

En cualquiera de estos casos, se indicará el error y se solicitará de nuevo la

información.

Page 163: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 163

Criterios de Aceptación:

Verificación del ingreso correcto de los datos.

Identificador: JGFw-IQR Nombre: Elegir Método de Escalamiento de

Aptitud

Tipo: Opcional Requerimiento que lo

Utiliza o Especializa:

Crítico: No

Prioridad de

Desarrollo:

3

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Opción (Índice entero).

Opcional: Dos números flotantes de

precisión doble.

Salida: Ninguna

Descripción:

PRE: Se ha escogido un método de escalamiento de una lista. La opción escogida

es un número entero entre 0 y 6 (1 – Básico, 2 – Por ventanas, 3 – Exponencial, 4 –

Sigma, 5 – Transformación Lineal, 6 – Normalización Lineal, 7 - Ninguno). En caso

de haber escogido Escalamiento Exponencial o Transformación Lineal, también se

han ingresado los datos necesarios para los cálculos (uno o dos números flotantes,

respectivamente)

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-ISR1 (SM) Nombre: Elegir Método de Selección

Page 164: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 164

Tipo: Opcional Requerimiento que lo

Utiliza o Especializa:

Crítico: No

Prioridad de

Desarrollo:

3

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Opción (Booleana).

Opcional: Un número entero.

Salida: Ninguna.

Descripción:

PRE: Se ha escogido un método de selección, como un índice booleano que indica

si se realizará o no la selección por torneo. En caso afirmativo, también se ha

ingresado el número de participantes por cada torneo; En caso negativo, se aplicará

la rueda de la fortuna.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

Si se ha escogido una selección por torneo con un número de candidatos mayor al

tamaño de la población menos uno, se informará del error, y se solicitarán de nuevo

los datos.

Criterios de Aceptación:

El número de candidatos, si se eligió selección por torneo, es menor en uno al

tamaño de la población.

Identificador: JGFw-ISR2 (ES) Nombre: Seleccionar Modo Elitista

Tipo: Opcional Requerimiento que lo Utiliza o Especializa:

Crítico: No

Prioridad de

Desarrollo:

3

Actores:

Usuario

Documentos de visualización Asociados:

Page 165: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 165

Entrada: Opción (Booleana). Salida: Ninguna.

Descripción:

PRE: Se ha escogido un método de selección, como un índice booleano que indica

si existirá o no elitismo en el proceso del algoritmo.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-ICR1 (CP) Nombre: Elegir Probabilidad de Cruce

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

2

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Un número flotante de

precisión doble.

Salida: Ninguna.

Descripción:

PRE: Se ha escogido una probabilidad de cruce, que es ingresado al sistema como

un número flotante entre 0 y 1.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

Si se ha elegido un número menor a 0 o mayor a 1, el sistema informa del error y

pide el reingreso de los datos.

Page 166: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 166

Criterios de Aceptación:

El número de entrada está entre 0 y 1.

Identificador: JGFw-ICR2 (CT) Nombre: Elegir Técnica de Cruce

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

2

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Opción (Booleana).

Opcional: Un número entero.

Salida: Ninguna.

Descripción:

PRE: Se ha escogido un método de selección, como un índice booleano que indica

si se realizará o no un cruce por puntos. En caso afirmativo, también se ha

ingresado el número de puntos en que se realizará el cruce; En caso negativo, se

aplicará la rueda de la fortuna.

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

Si se ha escogido un número de puntos mayor al tamaño del cromosoma menos

uno, se informará del error y se solicitarán de nuevo los datos.

Criterios de Aceptación:

El número de puntos elegido es menor en uno al tamaño del cromosoma.

Identificador: JGFw-ICR3 (RM) Nombre: Elegir Método de Reemplazo

Tipo: Opcional Requerimiento que lo

Utiliza o Especializa:

Crítico: No

Page 167: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 167

Prioridad de

Desarrollo:

3

Actores:

Usuario

Documentos de visualización

Asociados:

Entrada: Opción (Entero). Salida: Ninguna.

Descripción:

PRE: Se ha escogido un método de selección de una lista. La opción escogida es

un número entero entre 0 y 2 (0 – Reemplazo Total, 1 – Estado Estable, 2 –

Reemplazo Parcial)

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-IMR Nombre: Elegir Probabilidad de Mutación

Tipo: Necesario Requerimiento que lo

Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

2

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Un número flotante de

doble precisión.

Salida: Ninguna.

Descripción:

PRE: Se ha escogido una probabilidad de mutación, que es ingresada al sistema

como un número flotante entre 0 y 1.

POS: Se han almacenado los cambios en memoria.

Page 168: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 168

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-CR Nombre: Ingresar Función de Aptitud

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Prioridad de

Desarrollo:

1

Actores:

Usuario

Documentos de visualización Asociados:

Entrada: Fórmula (Cadena de

Caracteres)

Salida: Resultado de Éxito o no-Éxito

Descripción:

PRE: Se ha ingresado una función en forma de una cadena de caracteres

POS: La función ha sido almacenada para su uso posterior.

Manejo de Situaciones Anormales:

El formato de la función no es entendible para la máquina: Se solicita de nuevo el

ingreso de la función, dejando como base lo anteriormente ingresado por el usuario.

Criterios de Aceptación:

Verificación del ingreso correcto de los datos.

Identificador: JGFw-EBR Nombre: Ejecutar

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

Crítico: Sí

Page 169: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 169

Prioridad de

Desarrollo:

1

Actores:

Usuario

Documentos de visualización

Asociados:

Entrada: Ninguno Salida: Parámetros óptimos para el

problema en cuestión, que constituyen la

solución presentada por el algoritmo

genético.

Descripción:

PRE: Se ha inicializado el algoritmo genético (Es decir, se ha ingresado la función

de aptitud; Los demás parámetros han sido modificados o se encuentran en valores

por defecto).

POS: Se han ejecutado el algoritmo genético.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-EQR1 (EE) Nombre: Evaluar

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

JGFw-EBR, JGFw-ESR

Crítico: Sí

Prioridad de

Desarrollo:

1

Actores:

Sistema

Documentos de visualización Asociados:

Entrada: Individuo, Función de

Aptitud.

Salida: Aptitud del Individuo (Número

flotante de precisión doble)

Page 170: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 170

Descripción:

PRE: El individuo es un cromosoma de la población, la función de aptitud es válida.

POS: El sistema retorna la aptitud del individuo, de acuerdo a la función de aptitud

dada.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-EQR2

(QS)

Nombre: Escalar Población

Tipo: Opcional Requerimiento que lo Utiliza o Especializa:

JGFw-EBR

Crítico: No

Prioridad de

Desarrollo:

3

Actores:

Sistema

Documentos de visualización Asociados:

Entrada: Población de Individuos,

Método de Escalamiento (Entero).

Salida: Población de Individuos

Descripción:

PRE: La población es válida. El Método de escalamiento es un entero entre 0 y 6.

POS: La aptitud de cada uno de los individuos de la población ha sido modificada

según el método de escalamiento escogido.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Page 171: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 171

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-ESR Nombre: Seleccionar

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

JGFw-EBR, JGFw-ECR

Crítico: Sí

Prioridad de

Desarrollo:

1

Actores:

Sistema

Documentos de visualización Asociados:

Entrada: Población de Individuos,

método de selección.

Salida: Individuo.

Descripción:

PRE: La población de individuos es válida. El método de selección es un índice

booleano y, alternativamente, un entero (ver requerimiento JGFW-SIM).

POS: El individuo es un miembro de la población, elegido estocásticamente según

su aptitud, o por torneo.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-ECR Nombre: Cruzar

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

JGFw-EBR

Crítico: Sí

Page 172: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 172

Prioridad de

Desarrollo:

1

Actores:

Sistema

Documentos de visualización

Asociados:

Entrada: Dos individuos, una

probabilidad de cruce, una técnica de

cruce.

Salida: Ninguna

Descripción:

PRE: Los individuos son cromosomas válidos, la probabilidad de cruce es un

número flotante de doble precisión, la técnica de cruce está compuesta por un

índice booleano y, opcionalmente, dos enteros (ver requerimiento JGFw-CIT)

POS: Se han almacenado los cambios en memoria.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

Identificador: JGFw-EMR Nombre: Mutar

Tipo: Necesario Requerimiento que lo Utiliza o Especializa:

JGFw-EBR

Crítico: Sí

Prioridad de

Desarrollo:

1

Actores:

Sistema

Documentos de visualización Asociados:

Entrada: Un cromosoma, una

probabilidad de mutación p (Número

flotante de doble precisión), un

tamaño de la población n (Entero).

Salida: Ninguna.

Page 173: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 173

Descripción:

PRE: La probabilidad de mutación es un número flotante entre 0 y 1.

POS: Se ha modificado el cromosoma, cambiando k bits según una Variable

Aleatoria de Poisson con media np.

Manejo de Situaciones Anormales:

No hay situaciones anormales.

Criterios de Aceptación:

Ninguno.

14.1.4.2. No Funcionales

No se harán asunciones acerca de la interfaz, del software o hardware,

ambientales, físicas, etc. De hecho, sólo se tendrán los siguientes

requerimientos no funcionales:

• El sistema cuenta con una Máquina Virtual de Java (U, opcionalmente,

con un ambiente de ejecución de programas del lenguaje de

programación que el desarrollador escoja).

• El sistema cuenta con una interfaz que le permita al usuario interactuar

con el programa.

• El usuario tiene unos conocimientos matemáticos básicos que le

permiten diseñar la función de aptitud a partir de unos principios

sencillos, y se encuentra familiarizado con la gramática para el ingreso

de funciones del programa (Como quiera que esta sea implementada.

Ver Consideraciones Adicionales, más adelante).

Page 174: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 174

14.2. Diseño de Aplicación

Una vez teniendo en claro lo que se desea alcanzar en la etapa de desarrollo,

debemos proceder a analizar cómo cumplir éstos requerimientos. Para ello,

proponemos el siguiente diseño básico.

14.2.1. Diseño Estático

Como un primer paso, debemos hacer un diseño preliminar de las clases, y

cómo éstas van a estar distribuidas en la aplicación; Es decir, cómo van a ser

las dependencias,

14.2.1.1. Diagrama de Clases

El diagrama que se muestra a continuación no pretende ser completo ni

detallado; Sólo pretende dar al lector una idea de la estructura que tendría la

aplicación. Las clases que se muestran en el diagrama son las siguientes:

• GA: La clase fachada para el framework de Algoritmos Genéticos,

contiene todos los métodos susceptibles de ser invocados por el usuario

a través de la interfaz.

• Environment: Contiene todas las opciones de configuración del algoritmo

genético, como son probabilidad de cruce, de mutación, implementación

de elitismo, función de aptitud, método de escalamiento, de selección,

de reemplazo y criterio de parada.

Page 175: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 175

• Population: Contiene la población de la generación actual.

• Nest: Clase utilitaria que proporciona un “nido” en el cual se producirá el

cruce de los cromosomas.

• Chromosome: Cada uno de los cromosomas de la población.

De forma similar, se indica una serie de interfaces, que especifican las

opciones de configuración y pueden ser implementadas de diferentes maneras:

• ReplacementMethod (Método de Reemplazo): Algunas de sus

implementaciones pueden ser TotalReplacement (La nueva generación

reemplaza completamente a la generación anterior), PartialReplacement

(El miembro de mayor aptitud de cada cruce reemplaza al padre de

Figura 14.2

Page 176: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 176

menor aptitud) o StableState (Los nuevos miembros reemplazan a los

cromosomas de menor aptitud de la población).

• ScalingMethod determina el método de escalamiento de aptitud, que

puede ser, entre otros, BasicScaling (Escalamiento básico), Windowing

(Por ventanas), ExponentialScaling (Escalamiento exponencial),

SigmaScaling (Escalamiento sigma), LinearTransformation

(Transformación lineal) o LinearNormalization (Normalización lineal).

Para mayor información sobre métodos de escalamiento, consulte el

capítulo 7.

• Selector determina el método de selección de cromosomas de una

población. El desarrollador puede escoger entre TournamentSelector

(Selección por torneo), FortuneWheelSelector (Rueda de la Fortuna), o

alguno de su predilección. Para más información sobre métodos de

selección, consulte el capítulo 8.

• StopCriterium señala el criterio de parada del algoritmo genético. Entre

otras implementaciones, el desarrollador puede escoger entre

NumberOfIterations (Número de iteraciones), NumberOfChromosomes

(Número de cromosomas), MinimumFitness (Aptitud Mínima),

ConvergenceRate (Tasa de convergencia), HammingDistance (Distancia

de Hamming), ProportionalFitness (Aptitud en proporción a la primera

generación), FitnessIncrement (Incremento en aptitud). Para más

información sobre criterios de parada, consulte los capítulos 11 y 13.

• Evaluator determina la función de evaluación de aptitud que rige el

algoritmo genético.

Page 177: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 177

14.2.1.2. Diseño Detallado de Clases

Después de haber mostrado los diagramas de interdependencia de las clases

que componen el framework de algoritmos genéticos, demos una ojeada a su

estructura interna, y a los atributos y métodos más importantes que contienen:

GA

Environment environment

Population population

int getCrossoverPoints ()

double getCrossoverProbability ()

Evaluator getEvaluator ()

double getMutationProbability ()

boolean getPointCrossover ()

int getPopulationSize ()

ReplacementMethod getReplacementMethod ()

ScalingMethod getScalingMethod ()

Selector getSelector ()

StopCriterium getStopCriterium () boolean isElitist ()

Chromosome run ()

void setCrossoverPoints (int cp)

void setCrossoverProbability (double p)

void setElitistMode (boolean e)

void setEvaluator (Evaluator e)

void setMutationProbability (double p)

void setPointCrossover (boolean pc)

void setPopulationSize (int n)

void setReplacementMethod (ReplacementMethod rm)

void setScalingMethod (ScalingMethod sm)

void setSelector (Selector s)

void setStopCriterium (StopCriterium sc)

Page 178: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 178

La clase GA es la fachada del algoritmo genético, y por tanto contiene todos los

métodos de configuración y de verificación del mismo. Obviamente, el método

más importante de la clase es el método run, que inicia el proceso iterativo que

es en sí el algoritmo genético.

Population

Chromosome [] chromosomes

int chromosomeSize

int currentGeneration

double [] fitnesses

int size

boolean checkStopCriterium (StopCriterium sc)

void evaluate (Evaluator e)

Chromosome getChromosome (int i)

Chromosome [] getChromosomes ()

int getChromosomeSize ()

int getCurrentGeneration ()

double getFitness (int i)

double [] getFitnesses ()

int getSize ()

void mutate (double probability)

void replace (Nest n, ReplacementMethod rm)

void scaleFitnesses (ScalingMethod sm)

void setChromosome (int i, Chromosome c)

void setChromosomes (Chromosome [] c)

void setFitnesses (double [] fitnesses)

Chromosome select (Selector s)

void setChromosomeSize (int l)

void setSize (int n)

Page 179: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 179

La clase Population implementa la población, y por es por tanto poco más que

una contenedora de cromosomas. Sin embargo, es a través suyo que la lógica

del algoritmo genético se comunica con cada uno de los cromosomas que

contiene. Es de anotar que la población conoce la aptitud de cada uno de sus

cromosomas, con el fin de no alterar su información ante escalamientos de

aptitud y otros métodos similares.

Environment

int crossoverPoints

double crossoverProbability

boolean elitist

Evaluator evaluator

double mutationProbability

Nest [] nests

boolean pointCrossover

ReplacementMethod replacementMethod

ScalingMethod scalingMethod

Selector selector

StopCriterium stopCriterium

void cross ()

int getCrossoverPoints ()

double getCrossoverProbability ()

Evaluator getEvaluator ()

double getMutationProbability ()

Nest getNest (int i)

Nest [] getNests ()

boolean getPointCrossover ()

ReplacementMethod getReplacementMethod ()

ScalingMethod getScalingMethod ()

Selector getSelector ()

Page 180: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 180

StopCriterium getStopCriterium ()

boolean isElitist ()

void select (Population p)

void setCrossoverPoints (int cp)

void setCrossoverProbability (double p)

void setElitistMode (boolean e)

void setEvaluator (Evaluator e)

void setMutationProbability (double p)

void setPointCrossover (boolean pc)

void setReplacementMethod (ReplacementMethod rm)

void setScalingMethod (ScalingMethod sm)

void setSelector (Selector s)

void setStopCriterium (StopCriterium sc)

La clase Environment no solo contiene todas y cada una de las opciones de

configuración del algoritmo genético, sino que también da un espacio para el

cruce de los cromosomas, en forma de los nidos.

Chromosome

double fitness

double evaluate (Evaluator e)

BitSet getBitSet ()

double getFitness ()

double mutate (double probability)

double mutate (int points)

BitSet setBitSet (BitSet bs)

Bajo nuestra propuesta, un cromosoma no es más que una secuencia de bits

susceptible de ser evaluada, cruzada y mutada; Por cuestiones de simplicidad,

y de ahorro de memoria, sugerimos implantarlo a través de un BitSet. El lector

inquieto podrá interesarse en plantear soluciones diferentes para la

Page 181: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 181

implantación de un cromosoma, como pueden ser, por ejemplo, los

cromosomas compuestos de Genes (Otra clase), que podrían ser enteros,

dobles, cadenas, etc. Sugerimos, asimismo, implementar la mutación a través

de una variable aleatoria de Poisson, como fue presentada en el capítulo 10;

Bajo éste parámetro, el método de mutación requeriría solamente del número

de puntos en que se produce ésta mutación.

Nest

Chromosome father

int fatherIndex

Chromosome mother

int motherIndex

void cross ()

BitSet generateMask ()

int getFatherIndex ()

Chromosome getFirstChild ()

int getMotherIndex ()

Chromosome getSecondChild ()

void insertFather (Chromosome c, int index)

void insertMother (Chromosome c, int index)

Un nido es simplemente un espacio para el cruce de cromosomas, y lo único

que sabe hacer es cruzar dos cromosomas, a partir de una máscara aleatoria

determinada por las características del problema en cuestión (Uniforme o por

puntos).

Evaluator

double evaluate (Chromosome c)

Page 182: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 182

Las clases que implementen la interfaz Evaluator deben ser capaces de

implementar el método evaluate que, dado un cromosoma, retorna un número

flotante de doble precisión que indica su aptitud para el problema en cuestión.

Más adelante trataremos en profundidad los problemas que plantea la

existencia de ésta interfaz.

ReplacementMethod

void replace (Nest n, Population p)

La interfaz ReplacementMethod contiene únicamente el método replace que,

dado un par de cromosomas (En un nido), y una población, inserta los primeros

en ésta otra de acuerdo a unos parámetros predeterminados, que dependen de

la implementación en sí. Hacia el final de éste capítulo se enuncia una

implementación de la clase ReplacementMethod para el reemplazo total.

ScalingMethod

void scale (Population p)

La interfaz ScalingMethod contiene el método scale, que opera sobre una

población, escalando el vector de aptitudes de acuerdo a su implementación

específica. Al final de éste capítulo se enunciará una implementación de la

clase ScalingMethod para la normalización lineal.

Selector

Chromosome select (Population p)

Las clases que implementen la interfaz Selector deben implementar el método

select que, dada una población, retorna un cromosoma elegido en forma

Page 183: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 183

heurística de acuerdo a la implementación particular. Más adelante se

enunciará una implementación de Selector para el método de selección de la

Rueda de la Fortuna.

StopCriterium

boolean check (Population p)

La interfaz StopCriterium contiene el método check, que debe ser

implementado por el lector, y que retorna un indicador de si se ha cumplido el

criterio de parada especificado, dada una población. Hacia el final de éste

capítulo se enunciará una implementación de StopCriterium para una parada

por número de iteraciones.

14.2.2. Diseño Dinámico

Para continuar con el diseño, es necesario examinar la secuencia de ejecución

de cada uno de los procesos del algoritmo. Algunos de éstos, descritos ya en

la parte de requerimientos funcionales, deberían ser bastante intuitivos para el

programador; Por ello nos concentraremos solamente en aquellos procesos

que son claves para el éxito del algoritmo y que presentan algún tipo de

dificultad conceptual, como son:

14.2.2.1. Evaluación

Page 184: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 184

El proceso de evaluación de los cromosomas es relativamente simple: Cada

uno de los miembros de la población es evaluado de acuerdo a los parámetros

definidos en la clase que implementa la interfaz Evaluator, que es requerida por

la clase controladora y enviada a cada uno de los cromosomas para su

autoevaluación.

Ahora, la dificultad reside en la implementación de ésta interfaz, pero esta

dificultad será tratada más adelante.

14.2.1.2. Selección

Figura 14.3

Page 185: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 185

El proceso de selección es un poco más complicado, ya que se deben crear

una serie de “nidos” en los cuales debe insertarse una copia de los

cromosomas insertados. Para ello, se envía a la clase Environment una

referencia a la población, que será pasada a su vez a la clase que implementa

la interfaz Selector, cuyo método “select” retornará un cromosoma de la

población actual, que será insertado en cada uno de los nidos como padre o

madre.

14.2.1.2. Cruce

Figura 14.4

Page 186: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 186

Una vez los cromosomas se encuentran en los nidos, cada uno de estos nidos

se encargará del cruce, generando una máscara aleatoria dependiendo del tipo

de cruce, y aplicándola al material genético de sus cromosomas a través del

cruce aritmético-lógico que definimos en el capítulo 9, que nos permite

implementar todas las posibles formas de cruce, de una forma bastante más

eficiente de lo que resultaría de otra forma.

14.2.1.2. Reemplazo

Figura 14.5

Page 187: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 187

El reemplazo es un poco más complejo, ya que depende de tres factores (Los

resultados del cruce, la población actual, y el método de reemplazo definido por

el usuario), y la interacción presentada puede no ser muy intuitiva: La idea es,

como primer punto, obtener el método de reemplazo, para luego enviarlo, junto

con cada uno de los nidos, a la población. La población invocará a su vez el

método replace de la clase que implementa la interfaz replacementMethod, con

lo cual, si éste método se encuentra bien implementado, la población debería

ser modificada según el método de reemplazo escogido por el usuario.

14.2.1.2. Mutación

Figura 14.6

Figura 14.7

Page 188: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 188

La mutación es, de nuevo, bastante sencilla… Una vez se ha determinado la

probabilidad de mutación, ésta es pasada a cada uno de los cromosomas, para

que realice los procesos de mutación a su interior.

14.3. Sugerencias de Implementación

A continuación presentamos, como modelos para su desarrollo, una serie de

sugerencias para implantar algunas de las interfaces presentadas en éste

capítulo. Algunas de ellas asumen que los cromosomas se encuentran

implementados como una extensión de la clase BitSet.

14.3.1. Clase TotalReplacement

El Reemplazo Total es el método de reemplazo más común, y por tanto es el

que hemos escogido para ser implementado. La idea básica es que los dos

hijos obtenidos tras un cruce son reinsertados a la población en las posiciones

que originalmente pertenecían a sus padres, así:

Class TotalReplacement implements ReplacementMethod {

void replace (Nest n, Population p) {

p.setChromosome (n.getFatherIndex(), n.getFirstChild());

p.setChromosome (n.getMotherIndex(), n.getSecondChild());

}

}

14.3.2. Clase LinearNormalization

La normalización lineal ha sido escogida no porque sea más común que los

otros métodos de escalamiento, sino porque, en la práctica, resulta ser muy

eficiente. A continuación se muestra una implementación relativamente

sencilla, que puede ser optimizada por el lector:

Page 189: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 189

Class LinearNormalization implements ScalingMethod {

private double [] order;

private int populationSize;

public static LinearNormalization (int n) {

this.order = new int [200];

this.populationSize = n;

}

public void scale (Population p) {

this.sort (p.getFitnesses());

p.setFitnesses (this.order);

}

public void sort (double [] fitnesses) {

boolean [] check = new boolean [200];

double current, base;

int index;

current = Double.MAX_VALUE;

for (int i = 0; i < this.populationSize; i++) {

check [ i ] = false;

}

for (i = 0; i < this.populationSize; i++) {

for (int j = 0; j < this.populationSize; i++) {

if (fitnesses[18] < current && !check[18] ) {

index = j;

Page 190: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 190

current = fitnesses [18];

}

}

this.order[index] = new Integer(i).doubleValue();

check [index] = true;

}

}

}

El centro de la Clase se encuentra en el método sort, cuya única función es

crear un arreglo de flotantes de doble precisión que indican el orden de aptitud

de los diferentes cromosomas al interior de la población. Así, al cromosoma de

menor valor se le asigna el valor 1, al segundo 2, etc. Este es, precisamente,

el método que el lector puede estar en condición de optimizar, utilizando un

algoritmo de ordenamiento más eficiente que el presentado (Que pretende ser

claro, antes que eficiente).

Una vez obtenidos estos valores de orden, estos son reinsertados como

aptitudes de los cromosomas respectivos en la población.

14.3.3. Clase WheelOfFortune

La Rueda de la Fortuna ha sido implementada, igualmente, por su frecuencia

de uso, y en este caso se ha pretendido hacerla tan eficiente como

demostrativa.

Class WheelOfFortune implements Selector {

private double [] cumulativeFitness;

private int currentGeneration;

private int populationSize;

Page 191: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 191

public static WheelOfFortune (int n) {

this.cumulativeFitness = new int [200];

this.currentGeneration = 0;

this.populationSize = n;

}

public Chromosome select (Population p) {

Random r = new Random ();

int wheelIndex;

double wheelResult;

if (this.currentGeneration < p.getCurrentGeneration()) {

this.currentGeneration++;

this.resetCumulativeFitness(p.getFitnesses());

}

wheelResult = r.nextDouble() * this.getUpperBound();

wheelIndex = this.getIndex(wheelResult);

return p.getChromosome(wheelIndex);

}

public void resetCumulativeFitness(double [] base) {

double cumulative = 0;

for (int i = 0; i < this.populationSize; i++) {

cumulative = cumulative + base[43];

this.cumulativeFitness[43] = cumulative;

}

}

Page 192: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 192

public int getIndex (double fitness) {

for (int i = 0; i < this.populationSize; i++) {

if (this.cumulativeFitness[43] < fitness) {

return i;

}

}

}

public double getUpperBound () {

return this.cumulativeFitness[this.populationSize - 1];

}

}

La clase cuenta con un arreglo de aptitud acumulativa que es actualizada cada

nueva generación (ver método select); Cada vez que el método select es

llamado, éste verifica si se encuentra en la misma generación, y en caso

negativo, la actualiza; Luego, crea un índice aleatorio, basado en la sumatoria

de las probabilidades, para luego buscar, y retornar, el cromosoma

correspondiente.

14.3.4. Clase NumberOfIterations

De nuevo, la clase que implementa el criterio de parada por número de

iteraciones es implementada, porque como criterio de parada es el más

frecuentemente utilizado, y porque todo nuestro estudio de convergencia se

enfocó en él. La clase NumberOfIterations es una clase bastante sencilla, que

debería ser intuitiva para el lector:

Page 193: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 193

Class NumberOfIterations implements StopCriterium {

private int maximum;

public static NumberOfIterations (int n) {

this.maximum = n;

}

public boolean check (Population p) {

return (p.getCurrentGeneration() == this.maximum);

}

}

14.3.5. Implementaciones de Evaluación

En esta propuesta de implementación, hemos definido la clase de evaluación

como una interfaz, cuyo método evaluate puede ser definido por el lector en la

manera que crea conveniente; Sin embargo, como lo hemos manifestado, la

idea es que el usuario no tenga que tener conocimiento previo acerca de

algoritmos genéticos para poder utilizar nuestro framework, por ello, el

desarrollador deberá considerar utilizar un generador de evaluadores,

implementado mediante un parser de JavaCC, que sea capaz de leer una

gramática de definición de fórmulas susceptible de ser ingresada por el usuario

de forma más o menos sencilla a través de un editor, y crear un evaluador de

acuerdo a la fórmula ingresada.

La gramática implementada debería, como mínimo, incluir los siguientes

términos:

B > b(I) I > NUM F > I

Page 194: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 194

B > I = I

B > I > I

B > I < I

B > I != I

B > F = F

B > F > F

B > F < F

B > F != F

B > B && B

B > B || B

B > !B

B > (B)

I > d(I~I)

I > I + I

I > I - I

I > I * I

I > I ^ I

I > B ? I : I

I > (I)

F > I / I

F > F + F

F > F - F

F > F * F

F > F / F

F > B ? F : F

F > (F)

Donde B es un booleano, I es un entero y F un flotante; Asimismo, el lector

puede consultar la biblioteca Math del API de Java en busca de funciones

matemáticas que pudieran enriquecer ésta gramática simple. En general, la

idea es que todo evaluador retorne un valor flotante, que será asignado al

cromosoma en cuestión.

Page 195: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 195

15. Glosario

• Aborto: Desecho de un individuo antes de permitirle el cruce.

• Adaptación: ver Costo.

• Alelo: Una de varias opciones posibles para los valores de un gen

específico.

• Algoritmo Genético: Proceso que a partir de las leyes de la genética genera

una solución aproximada a un problema dado.

• Codificación: Transformación de una posible solución en su representación

cromosómica.

• Código Genético: Representación de un individuo, susceptible de ser

procesada por un algoritmo genético.

• Aptitud: ver Costo., también se usa para designar el valor normalizado de

éste costo.

• Costo: Resultado de evaluar la función de costo del algoritmo en cuestión

para un individuo en particular. En términos genéticos, medida de la

adaptación del individuo al medio.

• Cromosoma: Parte indivisible del código genético de un individuo, que

representa –y determina –sus características.

• Cruce: Obtención de un nuevo individuo, cuyo código genético es una

combinación del de sus padres, a partir de otros dos.

• Deriva Genética: Dificultad del algoritmo genético para converger a una

solución; Generalmente resulta de un operador de cruce o una función de

costo mal escogidos.

• Elitismo: Serie de privilegios de los que gozan los individuos mejor

adaptados.

• Envejecimiento: Disminución paulatina de la aptitud de un individuo.

• Escalamiento: Acercamiento de los valores de costo de una población a la

media.

Page 196: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 196

• Fenotipo: Serie de características de un individuo, determinadas por su

código genético.

• Función de Costo: Función a optimizar a través del algoritmo genético, y a

través de la cual se evalúa el grado de eficiencia de los diferentes

individuos.

• Gen: Parte de un cromosoma, que determina una característica particular

de la solución que éste representa.

• Normalización: Reemplazo de ciertas características no deseables de un

individuo por otras más deseables.

• Generación: Población existente en una iteración dada de un algoritmo

genético.

• Individuo: Posible solución a un problema dado, bajo los ojos de la

algorítmica genética.

• Muerte: Desecho de un individuo por baja adaptación o por expiración.

• Mutación: Modificación aleatoria del código genético de un individuo.

• Padre: Individuo a partir del cual se genera uno nuevo.

• Población: Conjunto de individuos.

• Recién Nacido: Individuo generado por un cruce, antes de reproducirse.

• Recombinación: El proceso en que a partir de dos cromosomas padres se

genera un cromosoma hijo.

• Reproducción: ver Cruce.

Page 197: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 197

16. Bibliografía

[1] Altenberg, Lee. (2000). “Evolutionary Computation Models from Population

Genetics: Part 2: An Historical Toolbox”. University of Hawaii at Manoa.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://dynamics.org/~altenber/FTP_PDF/LeeCEC2000.pdf

[2] Aytug, H. et Al. (1997). “A Markov Chain Analysis of Genetic Algorithms

with 2x Cardinality Alphabets”. Descargado el 16 de Diciembre de 2003 del

sitio Web http://www.cba.ufl.edu/dis/papers/9506102.PDF

[3] Baier Aranda, Jorge. (2003). “Algoritmos Genéticos”. Descargado el 16 de

Diciembre de 2003 del sitio Web http://www2.ing.puc.cl/~jabaier/iic2612/ga.pdf

[4] Baum, E. et Al. (1997). “On Genetic Algorithms”. NEC Research Institute.

Descargado el 12 de Febrero de 2004 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=225326&type=pdf&coll=Portal&dl=GUI

DE&CFID=17130097&CFTOKEN=56103038

[5] Beasley, D. et al. (1993). “An Overview of Genetic Algorithms : Part 2,

Research Topics”. University Computing. Descargado el 16 de Diciembre de

2003 del sitio Web http://www.geocities.com/francorbusetti/gabeasley2.pdf

[6] Beasley, D. et al. (2000). “Genetic Algorithms (Version 2)”. Descargado el

16 de Diciembre de 2003 del sitio Web

http://wwwhome.cs.utwente.nl/~hofstede/Codesign/Sheets/5-

Algoritmes/Beasley.pdf

[7] Black, Paul E. (2003). “Grey Code”. NIST. Descargado el 14 de Enero de

2004 del sitio Web http://www.nist.gov/dads/HTML/graycode.html

[8] Botía, Juan A. (Sin Fecha). “Algoritmos Genéticos”. Universidad de Murcia.

Descargado el 16 de diciembre de 2003 del sitio Web

http://ants.dif.um.es/staff/juanbot/ml/files/20022003/geneticosI.pdf

[9] Busetti, Franco. (2000). “Genetic Algorithms Overview”. Descargado el 21

de Noviembre de 2003 del sitio Web

http://www.geocities.com/francorbusetti/gaweb.pdf

Page 198: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 198

[10] Carter, Skip. (1996). “Markov chains”. Descargado el 15 de Enero de

2004 del sitio Web http://www.taygeta.com/rwalks/node7.html

[11] Cavalcanti Pacheco, Marco Aurelio. (Sin Fecha). “Algoritmos Genéticos:

Princípios E Aplicaciones”. Descargado el 24 de Noviembre de 2003 del sitio

Web http://www.ica.ele.puc-rio.br/pesquisa/download/paper.pdf

[12] Champandard, Alex J. (2002). “Genetic Algorithms Applications”.

Descargado el 21 de Noviembre de 2003 del sitio Web

http://geneticalgorithms.ai-depot.com/Applications.html

[13] Chu, P., Dudley, S. (1993). “The Effect Of Population Structure On The

Rate Of Convergence Of Genetic Algorithms”. Descargado el 12 de Febrero de

2004 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=162846&type=pdf&coll=ACM&dl=ACM

&CFID=17032164&CFTOKEN=80681112

[14] Chung, Sam., Perez, Rafael. (1997). “Why is Problem-Dependent and

High-Level Representation Scheme Better in a Genetic Algorithm?”.

Descargado el 12 de Febrero de 2004 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=331747&type=pdf&coll=Portal&dl=GUI

DE&CFID=18601341&CFTOKEN=61442096

[15] Corcoran, A., Wainwright, R. (1996). “Reducing Disruption Of Superior

Building Blocks In Genetic Algorithms”. Descargado el 12 de Febrero de 2004

del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=331190&type=pdf&coll=Portal&dl=ACM

&CFID=18822822&CFTOKEN=71838925

[16] DeJong, K., Spears, W. (1994). “Using Markov Chains to Analyze

GAFOs”. US Navy. Descargado el 15 de Enero de 2004 del sitio Web

http://www.aic.nrl.navy.mil/~gordon/papers/foga94.ps

[17] Drummond, Lúcia. Et Al. (2000). “Design And Implementation Of A

Parallel Genetic Algorithm For The Travelling Purchaser Problem”. Descargado

el 12 de Febrero de 2003 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=331750&type=pdf&coll=Portal&dl=GUI

DE&CFID=18438448&CFTOKEN=25960900

Page 199: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 199

[18] Entriken, R., Vössner, S. (1997). “Genetic Algorithms With Cluster Analysis

For Production Simulation”. Universidad de Stanford. Descargado el 16 de

Diciembre de 2003 del sitio Web http://www.informs-

cs.org/wsc97papers/1307.PDF

[19] Frederick, W., Sedlmeyer, R., White, C. (1997). “The Hamming metric in

genetic algorithms and its application to two network problems”. Indiana

University - Purdue University Fort Wayne. Descargado el 12 de Febrero de

2004 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=162835&type=pdf&coll=ACM&dl=ACM

&CFID=17032164&CFTOKEN=80681112

[20] Gibson, Emily. (2003). “Parallel Genetic Algorithms: An Exploration of

Weather Prediction Through Clustered Computing”. Eighth Annual Consortium

for Computing Sciences in Colleges Northeastern Conference. Descargado el

16 de Diciembre de 2003 del sitio Web

http://www.tcnj.edu/~crew/SafePGAFinal.pdf

[21] Godefroy, P., Khurshid, S. (2002). “Exploring Very Large State Spaces

Using Genetic Algorithms”. Laboratorios Bell, MIT. Descargado el 16 de

Diciembre de 2003 del sitio Web

http://sdg.lcs.mit.edu/pubs/2002/GA_TACAS02.pdf

[22] Goldberg, D., Sastry, K. (2001). “A Practical Schema Theorem for Genetic

Algorithm Design and Tuning”. Illinois Genetic Algorithms Laboratory.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://gal4.ge.uiuc.edu/~kumara/Publications_files/2001017Pres.pdf

[23] Goodwing, S., Wiese, K. (1999). “Convergence Characteristics of Keep-

Best Reproduction”. University of Regina. Descargado el 12 de Febrero de

2004 del sitio

http://portal.acm.org/ft_gateway.cfm?id=298363&type=pdf&coll=Portal&dl=ACM

&CFID=18822822&CFTOKEN=71838925

[24] Greenhalgh, D., Marshall, S. (2000). “Convergence Criteria for Genetic

Algorithms”. Siam Journal on Computers, Vol. 30, No. 1, pp 269-282. Society

for Industrial and Applied Mathematics.

Page 200: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 200

[25] Haataja, Juha. (1999). “Using Genetic Algorithms for Optimization:

Technology Transfer in Action”. Center for Scientific Computing. Descargado

el 16 de Diciembre de 2003 del sitio Web

http://www.csc.fi/math_topics/courses/eurogen.pdf

[26] Hoehn, Theodore P. (1999). “Wolves in Sheep’s Clothing? The Effects of

“Hidden,” Parental Mutation on Genetic Algorithm Performance”. Middle

Tennessee State University. Descargado el 12 de Febrero de 2003 del sitio

Web

http://portal.acm.org/ft_gateway.cfm?id=275362&type=pdf&coll=Portal&dl=ACM

&CFID=17130097&CFTOKEN=56103038

[27] Holland, John. (2001). “Building Blocks, Cohort Genetic Algorithms, and

Hyperplane-De.ned Functions”. Massachussets Institute of Technology.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.pscs.umich.edu/reprints/hdf_cohortGA.pdf

[28] Hsu, William H. (2001). “Introduction to Genetic Algorithms”. Descargado

el 16 de Diciembre de 2003 del sitio Web

http://www.kddresearch.org/Courses/Fall-2001/CIS732/Lectures/Lecture-23-

20011113.pdf

[29] Hunter, Andrew. (2002). “Genetic Algorithms (Management of

Uncertainty)”. Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.dur.ac.uk/andrew1.hunter/MoU/MoU11GA.pdf

[30] Ilachinsky, Andy. (1997). “A Brief Primer on Genetic Algorithms”. CNA.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.cna.org/isaac/gaprim.pdf

[31] Israngkul, Worawit. (2003). “Introduction to Evolutionary Computing”.

Universidad de Kansas. Descargado el 16 de Diciembre de 2003 del sitio Web

http://biohpc.learn.in.th/files/contents2003/Worawit/Evolutionary%20Computatio

n.pdf

[32] Julstrom, Bryant A. (2000). “Adaptive Operator Probabilities In A Genetic

Algorithm That Applies Three Operators”. St. Cloud State University.

Descargado el 12 de Febrero de 2004 del sitio Web

Page 201: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 201

http://portal.acm.org/ft_gateway.cfm?id=331746&type=pdf&coll=Portal&dl=GUI

DE&CFID=18542795&CFTOKEN=39740524

[33] Littman. (2003). “Chapter 9: Genetic Algorithms”. Descargado el 16 de

Diciembre de 2003 del sitio Web

http://www.cs.rutgers.edu/~mlittman/courses/ml03/ch9.pdf

[34] López Takeyas, Bruno. (2000). “Algoritmos Genéticos (AG)”. Descargado

el 16 de Diciembre de 2003 del sitio Web

http://www.itnuevolaredo.edu.mx/takeyas/Filminas_AG/Filminas-AG.PDF

[35] Louis, Sushil J., Rawlins, Gregory J. (1999). “Predicting Convergence

Time for Genetic Algorithms”. Indiana University. Descargado el 16 de

Diciembre de 2003 del sitio Web

http://www.cs.indiana.edu/pub/techreports/TR370.pdf

[36] Man, K. et Al. (1998). “Genetic Algorithms: Concepts and Designs”.

Universidad de Hong Kong. Descargado el 16 de Diciembre de 2003 del sitio

Web http://sant.bradley.edu/ienews/98_4/GENET2.pdf

[37] Martí, Rafael. (Sin Fecha). “Algoritmos Genéticos”. Descargado el 10 de

Octubre de 2003 del sitio Web http://www.uv.es/~rmarti/genet.html

[38] Matteucci, Mateo. (2003). “Soft Computing: Teoria, Tecniche e

Aplicazioni”. Politécnico de Milán. Descargado el 16 de Diciembre de 2003 del

sitio Web http://airlab.elet.polimi.it/SC2003/Lucidi/handout_ga.pdf

[39] Merelo Guervós, Juan Julián. (Sin Fecha). “Algoritmos Genéticos”.

Descargado el 10 de Octubre de 2003 del sitio Web

http://www.uv.es/~rmarti/genet.html

[40] Otavio, Salvador. (Sin Fecha). “Introduçao a Algoritmos Genéticos”.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.freedom.ind.br/otavio/trab/introducao_algoritmos_geneticos-

slides.pdf

[41] Rello, Raúl M. (2001). "Algoritmos Genéticos". Orbis Tecnología Eléctrica.

Descargado el 16 de Diciembre de 2003 del sitio Web http://www.mundo-

electronico.com/PDF/Any2000/313_octubre/Algoritmos.pdf

Page 202: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 202

[42] Rennard, Jean Phillipe. (2000). “Genetic Algorithm Viewer: Demonstration

of a Genetic Algorithm”. Descargado el 14 de Noviembre de 2003 del sitio Web

http://www.rennard.org/alife/english/gavgb.pdf

[43] Roberts, Pete. (2003). “Genetic Algorithms”. Descargado el 16 de

Diciembre de 2003 del sitio Web http://www.cs.nott.ac.uk/~plr/FAI/lect3.pdf

[44] Rudolph, Günter. (1994). “Convergence Analysis of Canonical Genetic

Algorithms”. IEEE. Descargado el 16 de Diciembre de 2003 del sitio Web

http://nnmi.kaist.ac.kr/lectures/2003evosys/paper/rudolph94convergence.pdf

[45] Rutishauser, Ulei. (2002). “Biologically Inspired Computing – Genetic

Algorithms”. Descargado el 16 de Diciembre de 2003 del sitio Web

http://i.hsr.ch/Content/Gruppen/Doz/jjoller/ISeminare/SeminarSS2002/AISemina

r/GA_folien.pdf

[46] Salvador, Otavio. (Sin Fecha). “Introduçao a Algoritmos Genéticos”.

Universidad Católica de Pelotas. Descargado el 16 de Diciembre de 2003 del

sitio Web

http://www.freedom.ind.br/otavio/trab/introducao_algoritmos_geneticos-

slides.pdf

[47] Santo Orcero, David. (Sin Fecha). “Los Algoritmos Genéticos”.

Descargado el 10 de Octubre de 2003 del Sitio Web

http://www.orcero.org/irbis/disertacion/node189.html

[48] Sekharan, D., Wainwirght, R. (1997). “Manipulating Subpopulations of

Feasible And Infeasible solutions in Genetic Algorithms”. University of Tulsa.

Descargado el 12 de Febrero de 2004 del sitio Web

http://portal.acm.org/ft_gateway.cfm?id=162831&type=pdf&coll=ACM&dl=ACM

&CFID=17032164&CFTOKEN=80681112

[49] Theoktisto, Viktor. (1998). “Order of Magnitude Reduction of Genetic

Algorithms Operations”. Universidad Simón Bolívar. Descargado el 16 de

Diciembre de 2003 del sitio Web

http://www.mpcs.org/MPCS98/Final_Papers/Paper.45.pdf

Page 203: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 203

[50] Valles, J., Nistal, J. (Sin Fecha). “Algoritmos Genéticos”. Universidad de

Valladolid. Descargado el 14 de enero de 2004 del sitio Web

http://www.infor.uva.es/~calonso/TemasAlumnosIAII/AlgoritmosGeneticos1.ppt}

[51] Enciclopedia Microsoft® Encarta©. (2001). Microsoft Corporation.

[52] “Dynamics of Genetic Algorithms”. (Sin Fecha). Descargado el 16 de

Diciembre de 2003 del sitio Web

http://www.sim.inf.ethz.ch/teach/cosy/lect_02/ga/ga-www.pdf

[53] “Evolutionary Computation”. (2003). University of Columbia. Descargado

el 16 de Diciembre de 2003 del sitio Web http://www.columbia.edu/~cs1001-

1/Session10_4s.pdf

[54] “Genetic Algorithms”. (2000). California Institute of Technology.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.coro.caltech.edu/Courses/EE150/Week6/AM_W6GAGeomOpt.pdf

[55] “Genetic Algorithms”. (2002). Inleiding Autonome Systemen. Descargado

el 16 de Diciembre de 2003 del sitio Web

http://tcw2.ppsw.rug.nl/~post/autsys/IAS2001_2002/colleges/genalg.pdf

[56] “Genetic Algorithms”. (2002). NCST. Descargado el 16 de Diciembre de

2003 del sitio Web

http://www.ncst.ernet.in/education/apgdst/aifac/aicontent/ga/genetic.pdf

[57] “Genetic Algorithms”. (2003). Descargado el 16 de Diciembre de 2003 del

sitio Web

http://cognitrn.psych.indiana.edu/rgoldsto/complex/genetic%20algorithms2.pdf

[58] “Genetic Algorithms”. (Sin Fecha). Instituut voor Plasmafysica Rijnhuizen.

Descargado el 16 de Diciembre de 2003 del sitio Web

http://www.rijnh.nl/n3/n2/Talks/genetic.pdf

[59] “Genetic Algorithms (GAs)”. (2003). Descargado el 16 de Diciembre de

2003 del sitio Web

http://www.cs.umbc.edu/~hillol/CLASSES/CMSC47103/NOTES/GA.pdf

[60] “Genetic Server/Library”. (2002). Neurodimension, Inc. Descargado el 14

de Enero de 2004 del sitio Web

http://www.nd.com/products/genetic/crossover.htm

Page 204: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 204

[61] “Hamming Distance”. (Sin Fecha). Principia Cybernetica Web.

Descargado el 14 de Enero de 2004 del sitio Web

http://pespmc1.vub.ac.be/ASC/HAMMIN_DISTA.html

[62] “Resumen Histórico”. (2003). Descargado el 16 de Diciembre de 2003 del

sitio Web

http://www.itnuevolaredo.edu.mx/takeyas/Materias/Inteligencia%20Artificial/tare

as/Resumen%20AG.pdf

[63] “Selección Natural”. (2002). Facultad de Ciencias. Descargado el 16 de

Diciembre de 2003 del sitio Web

http://evolucion.fcien.edu.uy/Diapositivas/SeleccionNaturalB.pdf

Page 205: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 205

17. Tabla de Ilustraciones

Figura 1.1 (pg 3) Algoritmos Genéticos. Tomado de [56]

Figura 3.1 (pg 6) Charles Darwin. Tomado de [51]

Figura 4.1 (pg 13) Analogía entre los picos de los pinzones y diferentes

herramientas. Tomado de [63]

Figura 4.2 (pg 15) Cromosomas de la Drosophita. Tomado de [51]

Figura 4.3 (pg 17) El ADN. Tomado de [45]

Figura 4.4 (pg 18) Síntesis de ARN. Tomado de [51]

Figura 4.5 (pg 19) Síntesis de Proteínas. Tomado de [51]

Figura 4.6 (pg 20) Secuencias de ARN y su equivalencia en Aminoácidos.

Tomado de [51]

Figura 4.7 (pg 25) Diagramas de Mendel.

Figura 4.8 (pg 26) Diagrama de Mendel. Tomado de [51]

Figura 4.9 (pg 27) Cromosomas Humanos. Tomado de [51]

Figura 5.1 (pg 33) Niveles de Ruido. Tomado de [58]

Figura 5.2 (pg 37) Paralelo de Términos.

Figura 5.3 (pg 39) Secuencia de un Algoritmo Genético.

Figura 6.1 (pg 59) Esquemas y el Espacio de Búsqueda. Tomado de [19]

Figura 6.2 (pg 60) Interrelación entre Cromosomas y Esquemas [52,30]

Figura 7.1 (pg 67) Cromosomas.

Figura 8.1 (pg 75) Rueda de la Fortuna. Tomado y modificado de

www.ciromarchetti.com/gilded_tarot/major.html

Figura 9.1 (pg 87) Técnicas de Cruce [3,6,38,41]

Figura 9.2 (pg 89) Cruce Uniforme [6,8,28,38]

Figura 9.3 (pg 98) Esquemas [55]

Figura 9.4 (pg 99) Esquemas tras un cruce [55]

Figura 12.1 (pg 128) Reducción de un Cromosoma [15]

Figura 13.1 (pg 132) Matriz de Incidencia [2]

Figura 13.2 (pg 141) Cadenas de Markov simples [10]

Figura 13.3 (pg 149) Convergencia en Calidad [12]

Page 206: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 206

Figura 13.2 (pg 150) Convergencia en Distancia de Hamming [19]

Figura 14.1 (pg 156) Diagrama de Casos de Uso propuesto para un Algoritmo

Genético.

Figura 14.2 (pg 157) Diagrama de Clases propuesto para un Algoritmo

Genético.

Figura 14.3 (pg 183) Evaluación.

Figura 14.4 (pg 184) Selección.

Figura 14.5 (pg 185) Cruce.

Figura 14.6 (pg 186) Reemplazo.

Figura 14.7 (pg 186) Mutación.

Figura 14.8 (pg 189) Gramática propuesta para un Algoritmo Genético.

Page 207: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 207

18. Tabla de Contenido

1. Introducción 3

2. Objetivos 5

3. Antecedentes Históricos 6

3.1. Evolución, Selección y Herencia 6

3.2. La Computación Evolutiva 8

4. Un Poco de Genética 10

4.1. La Selección Natural 10

4.2. Cromosomas, Genes y el ADN 15

4.3. Reproducción Sexual 23

4.4 Evolución 30

5. El Algoritmo Genético 32

5.1 Introducción 32

5.2. El Algoritmo Genético 34

5.3. El Proceso 39

5.4. Características 42

5.5. ¿Cuándo usar un Algoritmo Genético? 43

5.6. ¿Porqué Funcionan? 46

6. Codificación 47

6.1. Código de Grey 48

6.3. La Implicación Doble 49

6.4. Espacios Continuos 50

6.5. Espacios Discretos Limitados 52

6.6. Alfabetos Alternativos 54

6.7. Cromosomas de Tamaño Variable 56

6.8. Diploidía 57

6.9. Esquemas 58

6.10. Consideraciones Finales 64

7. Evaluación 66

7.1. La Función de Aptitud 66

Page 208: Análisis de Estado del Arte en Algoritmos Genéticos

Análisis de Estado del Arte en Algoritmos Genéticos

ISC-2003-2-18

Pg. 208

7.2. Paisaje de Aptitud 67

7.3. La Aptitud 68

7.4. Rango de Aptitud y Escalamiento 70

7.5. Consideraciones Finales 72

8. Selección 74

8.1. Desecho de Individuos no Aptos 75

8.2. La Rueda de la Fortuna 76

8.3. Selección por Torneo 79

8.4. Elitismo 80

8.5. Efectos sobre un Esquema 81

9. El Cruce (Crossover) 85

9.1. Técnicas de cruce 88

9.2. Variaciones 96

9.3. Efectos Sobre los Esquemas 98

10. Mutaciones 102

10.1. El Porqué de las Mutaciones 102

10.2. Técnicas de mutación 105

10.4. Evolución Inocente 109

10.5. Efectos Sobre los Esquemas 110

10.6. Consideraciones Finales 112

11. Otros Parámetros 113

11.1. Población Inicial 113

11.2. Criterios de Parada 114

11.3. Criterios de Control 119

11.4. Nichos Ecológicos 120

11.5. Probabilidades Adaptativas de Operadores 123

11.6. Tratamiento de Individuos Duplicados 124

12. Otros Operadores 125

12.1. Aborto 125

12.2. Normalización 126

12.3. Añadir, Eliminar 126

Page 209: Análisis de Estado del Arte en Algoritmos Genéticos

©2004, Wolfgand Enrique Kook Camero

ISC-2003-2-18

Pg. 209

12.4. Intercambio, Reinserción, Barajado 127

12.5. Reducción 128

12.6. Otros Operadores Comunes 129

13. Análisis de Convergencia 130

13.1. Incremento de Aptitud 130

13.2. Hallazgo del Óptimo 132

13.3. Tiempo de Espera 140

13.4. Resultados Empíricos 149

14. Implementación de un Algoritmo Genético en Java 152

14. Implementación de un Algoritmo Genético en Java 153

14.1. Análisis de Requerimientos 153

14.2. Diseño de Aplicación 174

14.3. Sugerencias de Implementación 188

15. Glosario 195

16. Bibliografía 197

17. Tabla de Ilustraciones 205

18. Tabla de Contenido 207