Professional Documents
Culture Documents
NDICE
ndice
1. GENERALIDADES
1.1. INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.5. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . .
13
17
18
2. ALGORITMOS GENTICOS
20
20
20
22
22
22
25
26
27
28
30
32
37
40
NDICE
3. ALGORITMOS GENTICOS: CDIGO EN R
43
43
49
3.2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.2.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.2.3. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.2.4. Detalles . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.2.5. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
52
3.3.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.3.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.3.3. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . .
53
53
3.4.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.4.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.4.3. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.4.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . .
54
55
3.5.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.3. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.5.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . .
56
59
3.6.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . .
59
3.6.2. Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
NDICE
3.6.3. Argumentos . . . . . . . . . . . . . . . . . . . . . . . . .
59
3.6.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . .
59
4. APLICACIN
60
5. CONCLUSIONES
64
GENERALIDADES
1.
GENERALIDADES
1.1.
INTRODUCCIN
1.1.1.
Resea Historica
Los algoritmos genticos (AG), fueron inventados en 1975 por John Holland, de
la Universidad de Michigan. Los AG son, simplificando, algoritmos de optimizacin, es decir, tratan de encontrar la mejor solucin a un problema dado entre un
conjunto de soluciones posibles. Los mecanismos de los que se valen los AG para
llevar a cabo esa bsqueda pueden verse como una metfora de los procesos de
evolucin biolgica.
John Holland desde pequeo, se preguntaba cmo logra la naturaleza, crear seres
cada vez ms perfectos. No saba la respuesta, pero tena una cierta idea de como hallarla: tratando de hacer pequeos modelos de la naturaleza, que tuvieran
alguna de sus caractersticas, y ver cmo funcionaban, para luego extrapolar sus
conclusiones a la totalidad.
Fue a principios de los 60, en la Universidad de Michigan en Ann Arbor, donde,
dentro del grupo Logic of Computers, sus ideas comenzaron a desarrollarse y a
dar frutos. Y fue, adems, leyendo un libro escrito por un bilogo evolucionista,
R. A. Fisher, titulado La teora gentica de la seleccin natural, como comenz a
descubrir los medios de llevar a cabo sus propsitos de comprensin de la naturaleza. De ese libro aprendi que la evolucin era una forma de adaptacin ms
potente que el simple aprendizaje, y tom la decisin de aplicar estas ideas para
desarrollar programas bien adaptados para un fin determinado.
En esa universidad, Holland imparta un curso titulado Teora de sistemas adaptativos. Dentro de este curso, y con una participacin activa por parte de sus estudiantes, fue donde se crearon las ideas que ms tarde se convertiran en los AG.
Por tanto, cuando Holland se enfrent a los AG, los objetivos de su investigacin
fueron dos:
imitar los procesos adaptativos de los sistemas naturales, y
disear sistemas artificiales (normalmente programas) que retengan los mecanismos importantes de los sistemas naturales.
GENERALIDADES
Unos 15 aos ms adelante, David Goldberg, actual delfn de los AG, conoci a
Holland, y se convirti en su estudiante. Goldberg era un ingeniero industrial trabajando en diseo de pipelines, y fue uno de los primeros que trat de aplicar los
AG a problemas industriales. Aunque Holland trat de disuadirle, porque pensaba
que el problema era excesivamente complicado como para aplicarle AG, Goldberg consigui lo que quera, escribiendo un AG en un ordenador personal Apple
II. Estas y otras aplicaciones creadas por estudiantes de Holland convirtieron a
los AG en un campo con bases suficientemente aceptables como para celebrar la
primera conferencia en 1985, ICGA85.
1.1.2.
Los AG son mtodos adaptativos que pueden usarse para resolver problemas de
bsqueda y optimizacin. Estn basados en el proceso gentico de los organismos
vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza
de acorde con los principios de la seleccin natural y la supervivencia de los mas
fuertes, postulados por Darwin (1859). Por imitacin de este proceso, los AG son
capaces de ir creando soluciones para problemas del mundo real. La evolucin de
dichas soluciones hacia valores ptimos del problema depende en buena medida
de una adecuada codificacin de las mismas.
En la naturaleza los individuos de una poblacin compiten entre si en la bsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de
una misma especie compiten a menudo en la bsqueda de un compaero. Aquellos individuos que tienen mas xito en sobrevivir y en atraer compaeros tienen
mayor probabilidad de generar un gran numero de descendientes. Por el contrario individuos poco dotados producirn un menor numero de descendientes. Esto
significa que los genes de los individuos mejor adaptados se propagaran en sucesivas generaciones hacia un nmero de individuos creciente. La combinacin de
buenas caractersticas provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptacin es mucho mayor que la de
cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando
unas caractersticas cada vez mejor adaptadas al entorno en el que viven.
El poder de los AG proviene del hecho de que se trata de una tcnica robusta, y
pueden tratar con xito una gran variedad de problemas provenientes de diferentes
reas, incluyendo aquellos en los que otros mtodos encuentran dificultades. Si
bien no se garantiza que el AG encuentre la solucin optima del problema, existe
GENERALIDADES
La razn del creciente inters por los AG es que estos son un mtodo global y
robusto de bsqueda de las soluciones de problemas. La principal ventaja de estas
caractersticas es el equilibrio alcanzado entre la eficiencia y eficacia para resolver
diferentes y muy complejos problemas de grandes dimensiones.
Lo que aventaja a los AG frente a otros algoritmos tradicionales de bsqueda es
que se diferencian de estos en los siguientes aspectos:
Trabajan con una codificacin de un conjunto de parmetros, no con los
parmetros mismos.
Trabajan con un conjunto de puntos, no con un nico punto y su entorno (su
tcnica de bsqueda es global.) Utilizan un subconjunto del espacio total,
para obtener informacin sobre el universo de bsqueda, a travs de las evaluaciones de la funcin a optimizar. Esas evaluaciones se emplean de forma
eficiente para clasificar los subconjuntos de acuerdo con su idoneidad.
No necesitan conocimientos especficos sobre el problema a resolver; es
decir, no estn sujetos a restricciones. Por ejemplo, se pueden aplicar a funciones no continuas, lo cual les abre un amplio campo de aplicaciones que
no podran ser tratadas por los mtodos tradicionales.
Utilizan operadores probabilsticos, en vez de los tipicos operadores determinsticos de las tcnicas tradicionales.
Resulta sumamente fcil ejecutarlos en las modernas arquitecturas masivas
en paralelo.
GENERALIDADES
Ventajas
El primer y ms importante punto es que los AG son intrnsecamente paralelos. La mayora de los otros algoritmos son en serie y slo pueden explorar
el espacio de soluciones hacia una solucin en una direccin al mismo tiempo, y si la solucin que descubren resulta subptima, no se puede hacer otra
cosa que abandonar todo el trabajo hecho y empezar de nuevo. Sin embargo, ya que los AG tienen descendencia mltiple, pueden explorar el espacio
de soluciones en mltiples direcciones a la vez. Si un camino resulta ser
un callejn sin salida, pueden eliminarlo fcilmente y continuar el trabajo
en avenidas ms prometedoras, dndoles una mayor probabilidad en cada
ejecucin de encontrar la solucin.
Sin embargo, la ventaja del paralelismo va ms all de esto. Considere lo
siguiente: todas las cadenas binarias (cadenas de ceros y unos) de 8 dgitos
forman un espacio de bsqueda, que puede representarse como ********
(donde * significa o 0 o 1). La cadena 01101010 es un miembro de este
espacio. Sin embargo, tambin es un miembro del espacio 0*******, del espacio 01******, del espacio 0******0, del espacio 0*1*1*1*, del espacio
10*01**0, etc. Evaluando la aptitud de esta cadena particular, un AG estara sondeando cada uno de los espacios a los que pertenece. Tras muchas
evaluaciones, ira obteniendo un valor cada vez ms preciso de la aptitud
media de cada uno de estos espacios, cada uno de los cuales contiene muchos miembros. Por tanto, un AG que evale explcitamente un nmero pe-
GENERALIDADES
GENERALIDADES
10
GENERALIDADES
11
cruzamiento, cada solucin individual va por su cuenta, explorando el espacio de bsqueda en sus inmediaciones sin referencia de lo que el resto de
individuos puedan haber descubierto. Sin embargo, con el cruzamiento en
juego, hay una transferencia de informacin entre los candidatos prsperos
-los individuos pueden beneficiarse de lo que otros han aprendido, y los esquemas pueden mezclarse y combinarse, con el potencial de producir una
descendencia que tenga las virtudes de sus dos padres y ninguna de sus debilidades. Este punto est ilustrado en Koza et al. 1999[41], p. 486, donde los
autores analizan el problema de sintetizar un filtro de paso bajo utilizando
programacin gentica. En una generacin se seleccionaron dos circuitos
progenitores para llevar a cabo el cruzamiento; un padre tena una buena
topologa (componentes como inductores y condensadores colocados en el
sitio correcto) pero malos tamaos (valores demasiado bajos de inductancia
y capacidad para los componentes). El otro padre tena mala topologa pero
buenos tamaos. El resultado de aparearlos mediante cruzamiento fue una
descendencia con la buena topologa de un padre y los buenos tamaos del
otro, dando como resultado una mejora sustancial de la aptitud sobre sus
dos padres.
El problema de encontrar el ptimo global en un espacio con muchos ptimos locales tambin se conoce como el dilema de la exploracin versus
explotacin, un problema clsico de todos los sistemas que pueden adaptarse y aprender. Una vez que un algoritmo (o un diseador humano) ha
encontrado una estrategia para resolver problemas que parece funcionar satisfactoriamente, debera centrarse en hacer el mejor uso de esa estrategia,
o buscar otras? Abandonar una estrategia de probada solvencia para buscar otras nuevas casi garantiza que supondr una prdida y degradacin del
rendimiento, al menos a corto plazo. Pero si uno se queda con una estrategia particular excluyendo a todas las dems, corre el riesgo de no descubrir
estrategias mejores que existen pero no se han encontrado. De nuevo, los
AG han demostrado ser muy buenos en dar con este equilibrio y descubrir
buenas soluciones en un tiempo y esfuerzo computacional razonables.
Otra rea en el que destacan los AG es su habilidad para manipular muchos
parmetros simultneamente. Muchos problemas de la vida real no pueden
definirse en trminos de un nico valor que hay que minimizar o maximizar,
sino que deben expresarse en trminos de mltiples objetivos, a menudo involucrando contrapartidas: uno slo puede mejorar a expensas de otro. Los
AG son muy buenos resolviendo estos problemas: en particular, su uso del
GENERALIDADES
12
GENERALIDADES
13
Desventajas
Aunque los AG han demostrado su eficiencia y potencia como estrategia de resolucin de problemas, no son la panacea. Los AG tienen ciertas limitaciones; sin
embargo, se demostrar que todas ellas pueden superarse y que ninguna de ellas
afecta a la validez de la evolucin biolgica.
La primera y ms importante consideracin al crear un AG es definir una
representacin del problema. El lenguaje utilizado para especificar soluciones candidatas debe ser robusto; es decir, debe ser capaz de tolerar cambios
aleatorios que no produzcan constantemente errores fatales o resultados sin
sentido.
Hay dos maneras principales para conseguir esto. La primera, utilizada por
la mayora de los AG, es definir a los individuos como listas de nmeros
-binarios, enteros o reales- donde cada nmero representa algn aspecto de
la solucin candidata. Si los individuos son cadenas binarias, un 0 o 1 podra
significar la ausencia o presencia de una cierta caracterstica. Si son listas
de nmeros, estos nmeros podran representar muchas cosas distintas: los
pesos de las conexiones en una red neuronal, el orden de las ciudades visitadas en un recorrido dado, la situacin espacial de componentes electrnicos,
los valores con los que se alimenta a un controlador, los ngulos de torsin
de los enlaces pptidos de una protena, etc. As, la mutacin implica cambiar estos nmeros, cambiar bits o sumar o restar valores aleatorios. En este
caso, el propio cdigo del programa no cambia; el cdigo es lo que dirige
la simulacin y hace un seguimiento de los individuos, evaluando sus aptitudes y quiz asegurando que slo se producen valores realistas y posibles
para el problema dado.
En otro mtodo, la programacin gentica, el propio cdigo del programa s
cambia. Como ya se dijo en la seccin Mtodos de representacin, la PG
representa a los individuos como rboles de cdigo ejecutables que pueden
mutar cambiando o intercambiando subrboles. Ambos mtodos producen
GENERALIDADES
14
GENERALIDADES
15
GENERALIDADES
16
GENERALIDADES
17
La aplicacin ms comn de los AG ha sido la solucin de problemas de optimizacin, en donde han mostrado ser muy eficientes y confiables.
Sin embargo, no todos los problemas pudieran ser apropiados para la tcnica, y
se recomienda en general tomar en cuenta las siguientes caractersticas del mismo
antes de intentar usarla:
Su espacio de bsqueda (i.e., sus posibles soluciones) debe de estar delimitado dentro de un cierto rango.
Debe permitir definir una funcin de aptitud que nos indique que tan buena
o mala es una cierta respuesta.
Las soluciones deben codificarse de una forma que resulte relativamente
fcil de implementar en el computador.
GENERALIDADES
18
GENERALIDADES
19
Ecologa: En la modelizacin de fenmenos ecolgicos tales como las carreras de armamento biolgico, la coevolucin de parsito-huesped, la simbiosis, y el flujo de recursos.
Gentica de poblaciones: En el estudio de preguntas del tipo "Bajo qu
condiciones ser viable evolutivamente un gene para la recombinacin?".
Evolucin y aprendizaje: Los AG se han utilizado en el estudio de las relaciones entre el aprendizaje individual y la evolucin de la especie.
Sistemas sociales: En el estudio de aspectos evolutivos de los sistemas sociales, tales como la evolucin del comportamiento social en colonias de
insectos, y la evolucin de la cooperacin y la comunicacin en sistemas
multi-agentes.
Aunque esta lista no es, en modo alguno, exhaustiva, s transmite la idea de la
variedad de aplicaciones que tienen los AG. Gracias al xito en estas y otras reas,
los AG han llegado a ser un campo puntero en la investigacin actual.
20
ALGORITMOS GENTICOS
2.
ALGORITMOS GENTICOS
2.1.
2.1.1.
Tipos de Representacin
Durante los primeros aos el tipo de representacin utilizado era siempre binario,
debido a que se adapta perfectamente al tipo de operaciones y el tipo de operadores que se utilizan en un AG. Sin embargo, las representaciones binarias no son
siempre efectivas por lo que se empezaron a utilizar otro tipo de representaciones.
En general, una representacin ha de ser capaz de identificar las caractersticas
constituyentes de un conjunto de soluciones, de forma que distintas representaciones dan lugar a distintas perspectivas y por tanto distintas soluciones. Podemos
considerar tres tipos bsicos de representaciones:
Representacin binaria: Cada gen es un valor 1 0.
101101
Representacin entera: Cada gen es un valor entero.
1 0 3 -1 0 4
Representacin real: Cada gen es un valor real.
21
ALGORITMOS GENTICOS
de la cadena corresponde a un valor en particular. Colocar un 1 en alguna posicin, indica que el atributo puede tomar el valor correspondiente. Por ejemplo, la
cadena 010, representa la restriccin cielo = nublado. De manera similar, la cadena 011 representa la restriccin mas general cielo = nublado cielo = lluvia.
Observe que 111 representa la restriccin mas general posible, indicando que no
importa que valor tome el atributo cielo.
Dado este mtodo para representar restricciones sobre atributos, las conjunciones
de restricciones sobre mltiples atributos pueden representarse por concatenacin.
Por ejemplo, considere un segundo atributo, viento, con valores posibles fuerte y
dbil. La precondicin de una regla como: (cielo = nublado lluvia) (viento =
fuerte) puede representarse por la siguiente cadena de bits de longitud 5:
cielo viento
011 10
Las post-condiciones, como jugar-tenis? = si, pueden representarse de la misma
manera.
La regla completa puede describirse concatenando tambin la cadena que representa la post-condicin. Por ejemplo, la regla: Si viento = fuerte Entonces jugartenis? = si, puede representarse como:
cielo viento jugar-tenis?
111
10
10
Los primeros tres bits indican que no nos importa el valor del atributo cielo; los
siguientes dos describen la restriccin sobre viento; los dos ltimos bits representan la post-condicin de la regla. Aqu asumimos que jugar-tenis? Puede tomar
valores si o no. Esto nos da una representacin donde las reglas que nos interesan
se codifican como cadenas de bits de longitud fija.
Es til considerar que toda cadena de bits que es sintacticamente valida, representa una hiptesis bien definida. Por ejemplo, en el cdigo anterior, la cadena 111
10 11, representa una regla cuya post-condicin no establece restricciones sobre
el atributo jugar tenis?. Para evitar esta posibilidad, se puede usar un cdigo diferente, por ej., para el atributo jugar-tenis? usar un solo bit que indique los valores
si o no; o bien, se pueden alterar los operadores genticos para evitar explcitamente la construccin de tales cadenas de bits; o simplemente asignar un valor de
adaptacin muy bajo a estas cadenas.
ALGORITMOS GENTICOS
2.1.2.
22
Tamao de la Poblacin
Poblacin Inicial
Habitualmente la poblacin inicial se escoge generando ristras al azar, pudiendo contener cada gen uno de los posibles valores del alfabeto con probabilidad
uniforme. Se podria preguntar que es lo que sucedera si los individuos de la poblacin inicial se obtuviesen como resultado de alguna tcnica heurstica o de
optimizacin local. En los pocos trabajos que existen sobre este aspecto, se constata que esta inicializacin no aleatoria de la poblacin inicial, puede acelerar la
convergencia del AG. Sin embargo en algunos casos la desventaja resulta ser la
prematura convergencia del algoritmo, queriendo indicar con esto la convergencia
hacia ptimos locales.
La poblacin inicial de un AG puede ser creada de muy diversas formas, desde
generar aleatoriamente el valor de cada gen para cada individuo, utilizar una funcin vida o generar alguna parte de cada individuo y luego aplicar una bsqueda
local.
2.1.4.
Funcin Objetivo
Dos aspectos que resultan cruciales en el comportamiento de los AG son la determinacin de una adecuada funcin de adaptacin o funcin objetivo, as como la
codificacin utilizada.
ALGORITMOS GENTICOS
23
Idealmente nos interesara construir funciones objetivo con ciertas regularidades, es decir funciones objetivo que verifiquen que para dos individuos que se
encuentren cercanos en el espacio de bsqueda, sus respectivos valores en las funciones objetivo sean similares. Por otra parte una dificultad en el comportamiento
del AG puede ser la existencia de gran cantidad de ptimos locales, as como el
hecho de que el ptimo global se encuentre muy aislado.
La regla general para construir una buena funcin objetivo es que sta debe reflejar
el valor del individuo de una manera real, pero en muchos problemas de optimizacin combinatoria, donde existe gran cantidad de restricciones, buena parte
de los puntos del espacio de bsqueda representan individuos no vlidos.
Para este planteamiento en el que los individuos estn sometidos a restricciones,
se han propuesto varias soluciones. La primera sera la que se podria denominar
absolutista, en la que aquellos individuos que no verifican las restricciones, no
son considerados como tales, y se siguen efectuando cruces y mutaciones hasta
obtener individuos vlidos, o bien, a dichos individuos se les asigna una funcin
objetivo igual a cero.
Otra posibilidad consiste en reconstruir aquellos individuos que no verifican las
restricciones. Dicha reconstruccin suele llevarse a cabo por medio de un nuevo
operador que se acostumbra a denominar reparador.
Otro enfoque est basado en la penalizacin de la funcin objetivo. La idea general
consiste en dividir la funcin objetivo del individuo por una cantidad (la penalizacin) que guarda relacin con las restricciones que dicho individuo viola. Dicha
cantidad puede simplemente tener en cuenta el nmero de restricciones violadas
bien el denominado costo esperado de reconstruccin, es decir el coste asociado
a la conversin de dicho individuo en otro que no viole ninguna restriccin.
Otra tcnica que se ha venido utilizando en el caso en que la computacin de la
funcin objetivo sea muy compleja es la denominada evaluacin aproximada de la
funcin objetivo. En algunos casos la obtencin de n funciones objetivo aproximadas puede resultar mejor que la evaluacin exacta de una nica funcin objetivo
(supuesto el caso de que la evaluacin aproximada resulta como mnimo n veces
ms rpida que la evaluacin exacta).
Un problema habitual en las ejecuciones de los AG surge debido a la velocidad
con la que el algoritmo converge. En algunos casos la convergencia es muy rpida, lo que suele denominarse convergencia prematura, en la cual el algoritmo
converge hacia ptimos locales, mientras que en otros casos el problema es justo
el contrario, es decir se produce una convergencia lenta del algoritmo. Una posible solucin a estos problemas pasa por efectuar transformaciones en la funcin
24
ALGORITMOS GENTICOS
h(d(Itj , Iti )) =
Kd(It ,Iti )
si
si
(1)
P
A continuacin para cada individuo Itj definimos tj = i, j h(d(Itj , Iti )), valor que
utilizaremos para devaluar la funcin objetivo del individuo en cuestin. Es decir,
g (Itj ) = g(Itj )/tj . De esta manera aquellos individuos que estn cercanos entre s
vern devaluada la probabilidad de ser seleccionados como padres, aumentndose
la probabilidad de los individuos que se encuentran ms aislados.
(la distancia de Hamming se define como el nmero de bits que tienen que cambiarse para transformar una palabra de cdigo vlida en otra palabra de cdigo
vlida.
Si dos palabras de cdigo difieren en una distancia d, se necesitan d errores para
convertir una en la otra.
Por ejemplo:
La distancia Hamming entre 1011101 y 1001001 es 2.
La distancia Hamming entre 2143896 y 2233796 es 3.
La distancia Hamming entre toned y roses es 3.)
ALGORITMOS GENTICOS
2.1.5.
25
Operador de Seleccin
El operador de Seleccin es el encargado de transmitir y conservar aquellas caractersticas de la soluciones que se consideran valiosas a lo largo de las generaciones. El principal medio para que la informacin til se transmita es que aquellos
individuos mejor adaptados (mejor valor de funcin de evaluacin) tengan ms
probabilidades de reproducirse. Sin embargo, es necesario tambin incluir un factor aleatorio que permita reproducirse a individuos que aunque no estn muy bien
adaptados, puedan contener alguna informacin til para posteriores generaciones, con el objeto de mantener as tambin una cierta diversidad en cada poblacin. Algunas de las tcnicas de las cuales se dispone son las siguientes:
Ruleta o Seleccin Proporcional: Con este mtodo la probabilidad que tiene un
individuo de reproducirse es proporcional a su valor de funcin de evaluacin, es
decir, a su adaptacin. En este mtodo se define un rango con las caractersticas de
la seleccin por sorteo. El nmero al azar ser un nmero aleatorio forzosamente
menor que el tamao del rango. El elemento escogido ser aquel en cuyo rango
est el nmero resultante de sumar el nmero aleatorio con el resultado total que
sirvi para escoger el elemento anterior. El comportamiento es similar al de una
ruleta, donde se define un avance cada tirada a partir de la posicin actual. Tiene
la ventaja de que no es posible escoger dos veces consecutivas el mismo elemento,
y que puede ser forzado a que sea alta la probabilidad de que no sean elementos
prximos en la poblacin -esto ltimo no es una ventaja de por s; salvo que algunos de los otros operadores genticos, es mejor utilizar un mtodo de seleccin
directa basado en la posicin relativa de los individuos de la poblacin-.
Seleccin por Ranking: Desarrollado por Whitley(1989) consiste en calcular las
probabilidades de reproduccin atendiendo a la ordenacin de la poblacin por el
valor de adaptacin en vez de atender simplemente a su valor de adecuacin. Estas
probabilidades se pueden calcular de diversas formas, aunque el mtodo habitual
es el ranking lineal (Baker (1985)).
Seleccin por Torneo: Reporta un valor computacional muy bajo debido a su sencillez. Se selecciona un grupo de t individuos (normalmente t = 2, torneo binario)
y se genera un nmero aleatorio entre 0 y 1. Si este nmero es menor que un cierto
umbral K (usualmente 0,75), se selecciona para reproducirse al individuo con mejor adaptacin, y si este nmero es menor que K, se selecciona, por el contrario,
al individuo con peor adaptacin.
Esta tcnica tiene la ventaja de que permite un cierto grado de elitismo -el mejor
ALGORITMOS GENTICOS
26
nunca va a morir, y los mejores tienen ms probabilidad de reproducirse y de emigrar que los peores- pero sin producir una convergencia gentica prematura, si la
poblacin es, al menos, un orden de magnitud superior al del nmero de elementos involucrados en el torneo. En caso de que la diferencia sea menor no hemos
observado mucha diferencia entre emplear el torneo o no.
2.1.6.
Operador de Cruce
El operador de cruce permite realizar una exploracin de toda la informacin almacenada hasta el momento en la poblacin y combinarla para crear mejores individuos. Dentro de los mtodos habituales destacamos los siguientes:
Cruce de un punto: Es el mtodo de cruce ms sencillo. Se selecciona una posicin
en las cadenas de los progenitores, y se intercambian los genes a la izquierda de
esta posicin.
Cruce de n puntos: Es una generalizacin del mtodo anterior. Se seleccionan
varias posiciones (n) en las cadenas de los progenitores y se intercambian los
genes a ambos lados de estas posiciones.
Cruce Uniforme: Se realiza un test aleatorio para decidir de cual de los progenitores se toma cada posicin de la cadena.
Cruces para permutacin: Existe una familia de cruces especficas para los problemas de permutacin, siendo algunos de ellos:
Cruce de mapeamiento parcial: Toma una subsecuencia del genoma del
padre y procura preservar el orden absoluto de los fenotipos -es decir, orden
y posicin en el genoma- del resto del genoma lo ms parecido posible de
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 ms
parecido posible de la madre.
Cruce de ciclo: Tomamos el primer gen del genoma del padre, ponindolo
en la primera posicin del hijo, y el primer gen del genoma de la madre, ponindolo dentro del genoma del hijo en la posicin que ocupe en el genoma
del padre. El fenotipo que est en la posicin que ocupa el gen del genoma
del padre igual al primer gen del genoma de la madre se va a colocar en la
ALGORITMOS GENTICOS
27
Operador de Mutacin
La mutacin se considera un operador bsico, que proporciona un pequeo elemento de aleatoriedad en la vecindad (entorno) de los individuos de la poblacin.
Si bien se admite que el operador de cruce es el responsable de efectuar la bsqueda a lo largo del espacio de posibles soluciones, tambin parece desprenderse
de los experimentos efectuados por varios investigadores que el operador de mutacin va ganando en importancia a medida que la poblacin de individuos va
convergiendo (Davis). El objetivo del operador de mutacin es producir nuevas
soluciones a partir de la modificacin de un cierto nmero de genes de una solucin existente, con la intencin de fomentar la variabilidad dentro de la poblacin.
Existen muy diversas formas de realizar la mutacin, desde la ms sencilla ( Puntual ), donde cada gen muta aleatoriamente con independencia del resto de genes,
hasta configuraciones ms complejas donde se tienen en cuanta la estructura del
problema y la relacin entre los distintos genes.
Schaffer y col. encuentran que el efecto del cruce en la bsqueda es inferior al que
previamente se esperaba. Utilizan la denominada evolucin primitiva, en la cual,
el proceso evolutivo consta tan slo de seleccin y mutacin. Encuentran que dicha evolucin primitiva supera con creces a una evolucin basada exclusivamente
en la seleccin y el cruce. Otra conclusin de su trabajo es que la determinacin
del valor ptimo de la probabilidad de mutacin es mucho ms crucial que el relativo a la probabilidad de cruce. Si bien en la mayora de las implementaciones de
AG se asume que tanto la probabilidad de cruce como la de mutacin permanecen constantes, algunos autores han obtenido mejores resultados experimentales
modificando la probabilidad de mutacin a medida que aumenta el nmero de
iteraciones.
ALGORITMOS GENTICOS
2.1.8.
28
Cada vez que se aplica el operador de cruce, nos encontramos con un nmero de
nuevos individuos (la descendencia) que se han de integrar en la poblacin para
formar la siguiente generacin. Esta operacin se puede hacer de diversas formas,
pero en general existen tres mtodos fundamentales para realizar el reemplazo:
- Cuando el nmero de individuos llega a un cierto nmero, se elimina un subconjunto de la poblacin conteniendo a los individuos peor adaptados.
- Cada vez que se crea un nuevo individuo, en la poblacin se elimina el peor
adaptado para dejar su lugar a este nuevo individuo.
- Cada vez que se crea un nuevo individuo, en la poblacin se elimina aleatoriamente una solucin, independientemente de su adaptacin.
En cuanto a el criterio de parada, generalmente viene determinado por criterios a
priori sencillos, como un nmero mximo de generaciones o un tiempo mximo
de resolucin, o ms eficientemente por estrategias relacionadas con indicadores
del estado de evolucin de la poblacin, como por la prdida de diversidad dentro
de la poblacin o por no haber mejora en un cierto nmero de iteraciones, siendo
por lo general una condicin mixta lo ms utilizado, es decir, limitar el tiempo de
ejecucin a un nmero de iteraciones y tener en cuenta algn indicador del estado de la poblacin para considerar la convergencia antes de alcanzar tal limitacin.
El problema que confrontan los AG consiste en identificar dentro de un espacio
de hiptesis candidato, la mejor, donde la mejor hiptesis es aquella que optimiza
una medida numrica predefinida para el problema, llamada adaptacin ( f itness)
de la hiptesis. Por ejemplo, si la tarea de aprendizaje es el problema de aproximar una funcin desconocida dado un conjunto de entrenamiento de entradas y
salidas, la adaptacin puede definirse como la precisin de la hiptesis sobre el
conjunto de entrenamiento (porcentaje de xitos al predecir la salida). Si la tarea
de aprendizaje tiene la forma de un juego, la adaptacin puede medirse en trminos del porcentaje de partidas ganadas. Aunque los detalles de implementacin
varan entre diferentes AG, todo comparten en general la siguiente estructura: El
algoritmo opera iterativamente, actualizando un conjunto de hiptesis llamada poblacin. En cada iteracin, todos los miembros de la poblacin son evaluados de
acuerdo a una funcin de adaptacin. Una nueva poblacin es generada, seleccionando probabilsticamente los individuos de mayor adaptacin en la poblacin
presente. Algunos de estos individuos pasan intactos a la siguiente generacin.
ALGORITMOS GENTICOS
29
Otros son seleccionados para crear una nueva generacin, aplicando operaciones
genticas como el cruce y la mutacin.
El prototipo de un AG simple se muestra a continuacin:
generacin de la poblacin inicial
while no se cumpla la condicin de parada do
.
evaluacin de los individuos
.
seleccin
.
cruce
.
mutacin
end while
Las entradas de este algoritmo incluyen una funcin de adaptacin para evaluar
los candidatos a hiptesis, un umbral definiendo el nivel aceptado de adaptacin
para dar por terminado el algoritmo, el tamao que debe mantener la poblacin, y
los parmetros necesarios para determinar como evoluciona la poblacin, esto es,
la fraccin de la poblacin que ser remplazada en cada generacin y la tasa de
mutacin presente.
Observen que cada iteracin de este algoritmo produce una nueva generacin de
hiptesis, con base en la poblacin actual de hiptesis. Primero, un cierto nmero
de hiptesis en la poblacin ((1 r) p) es seleccionado probabilsticamente para
su inclusin en la prole. La probabilidad de una hipotesis hi pob de ser seleccionada esta dada por:
adaptacion(hi )
Pr (hi ) = P p
j=1 adaptacion(hi )
(2)
ALGORITMOS GENTICOS
30
Otros Operadores
Estos operadores no son utilizados en todos los problemas, solamente son empleados en algunos, y en principio su variedad es infinita. Generalmente son operadores que exploran el espacio de soluciones de una forma ms ordenada, y que
actan ms en las ltimas fases de la bsqueda, en la cul se pasa de soluciones
asi buenas.a "buenas"soluciones.
Cromosomas de Longitud Variable: Hasta ahora se han descrito cromosomas de longitud fija, donde se conoce de antemano el nmero de parmetros
de un problema. Pero hay problemas en los que esto no sucede. Por ejemplo,
en un problema de clasificacin, donde dado un vector de entrada, queremos
agruparlo en una serie de clases, podemos no saber siquiera cuntas clases
hay. Por ejemplo, en un perceptrn hay reglas que dicen cuantas neuronas
se deben de utilizar en la capa oculta; pero en un problema determinado
puede que no haya ninguna regla heurstica aplicable; se tendra que utilizar
los AG para hallar el nmero ptimo de neuronas.
En estos casos, se necesitan operadores ms: aadir y eliminar. Estos operadores se utilizan para aadir un gen, o eliminar un gen del cromosoma. La
forma ms habitual de aadir un gen es duplicar uno ya existente, el cul
sufre mutacin y se aade al lado del anterior. En este caso, los operadores
del AG simple (seleccin, mutacin, cruce) funcionarn de la forma habitual, salvo, claro est, que slo se har cruce en la zona del cromosoma de
menor longitud.
Operadores de Nicho (Ecolgico): Otros operadores importantes son los
operadores de nicho. Estos operadores estn encaminados a mantener la
diversidad gentica de la poblacin, de forma que cromosomas similares
ALGORITMOS GENTICOS
31
sustituyan slo a cromosomas similares, y son especialmente tiles en problemas con muchas soluciones; un AG con estos operadores es capaz de
hallar todos los mximos, dedicndose cada especie a un mximo. Ms que
operadores genticos, son formas de enfocar la seleccin y la evaluacin de
la poblacin.
Uno de las formas de llevar esto a cabo es la introduccin del crowding
(apiamiento). Otra forma es introducir una funcin de comparticin o sharing, que indica cun similar es un cromosoma al resto de la poblacin. La
puntuacin de cada individuo se dividir por esta funcin de comparticin,
de forma que se facilita la diversidad gentica y la aparicin de individuos
diferentes.
Tambin se pueden restringir los emparejamientos, por ejemplo, a aquellos
cromosomas que sean similares. Para evitar las malas consecuencias del
inbreeding (destinado a potenciar ciertas caractersticas frente a otras) que
suele aparecer en poblaciones pequeas, estos periodos se intercalan con
otros periodos en los cules el emparejamiento es libre.
Operadores Especializados: En una serie de problemas hay que restringir
las nuevas soluciones generadas por los operadores genticos, pues no todas
las soluciones generadas van a ser vlidas, sobre todo en los problemas con
restricciones. Por ello, se aplican operadores que mantengan la estructura
del problema. Otros operadores son simplemente generadores de diversidad, pero la generan de una forma determinada:
Zap:En vez de cambiar un solo bit de un cromosoma, cambia un gen completo de un cromosoma.
Creep:Este operador aumenta o disminuye en 1 el valor de un gen; sirve
para cambiar suavemente y de forma controlada los valores de los genes.
Transposicin:Similar al cruce y a la recombinacin gentica (Cuando las
dos clulas sexuales, o gametos, una masculina y otra femenina se combinan, los cromosomas de cada una tambin lo hacen, intercambindose genes, que a partir de ese momento pertenecern a un cromosoma diferente.),
pero dentro de un solo cromosoma; dos genes intercambian sus valores, sin
afectar al resto del cromosoma. Similar a este es el operador de eliminacinreinsercin, en el que un gen cambia de posicin con respecto a los dems.
ALGORITMOS GENTICOS
2.1.10.
32
33
ALGORITMOS GENTICOS
34
ALGORITMOS GENTICOS
Nmero Aleatorio
0.1<0.359<0.5
0.1<0.188<0.5
0.5<0.654<0.8
0.1<0.399<0.5
Individuo Seleccionado
x1
x1
x2
x1
Nuevo Valor
x0
x1
x2
x3
obtener una nueva generacin como mezcla de esta con la que se esta trabajando. Una vez que se tienen las parejas, se hace la recombinacin. Una
alternativa: media aritmtica; otra: media geomtrica. Otra, la ms usada:
cortar los dos nmeros "paps"por un lugar al azar y conseguir los "hijos"intercambiando partes.
Para ejemplificar mejor veamos: si los individuos son 456 y 123, se elige
al azar un nmero entre 1 y 2 (ya que hay tres cifras). Si, por ejemplo, se
obtiene el 1, entonces un posible hijo podra ser el 4-23 y otro 1-56. Aunque
lo ms habitual es trabajar en base 2 (por lo menos, los nmeros sern ms
largos).
En este momento ya se tiene una nueva generacin. Generalmente, mejor
dotada que la inicial. Lo que se hace ahora es volver al tercer punto (clculo
de una poblacin intermedia). Por supuesto, el algoritmo se para cuando se
considere prudente o necesario. Por ejemplo, cuando se lleve un nmero de
iteraciones determinado, o cuando la poblacin no mejore demasiado.
Una variante posible es permitir la existencia de mutaciones (por ejemplo,
introducir cada cierto nmero de generaciones alguna variacin en una cifra en busca de mejores soluciones. Esto es interesante debido a que, por
ejemplo, si se estn dando vueltas en torno a un mximo local, la variacin
introducida podra llevarnos hacia un genotipo mejor dotado.
Otra variante es la elitista, consistente en que los mejores genotipos no se
recombinen, sino que pasen directamente -tal cual- a la siguiente generacin.
Ejemplo:
Un AG puede verse como un mtodo de optimizacin general, que busca en un
gran espacio de candidatos, a los elementos que tienen mejor desempeo con respecto a la funcin de objetivo. Aunque no garantizan encontrar el elemento opti-
35
ALGORITMOS GENTICOS
mo, los AG generalmente tienen xito en encontrar un elemento con alta adaptacin.
Para ilustrar el uso de los AG en el aprendizaje de conceptos, se presentara brevemente el sistema GABIL que usa AG para aprender conceptos booleanos representados como un conjunto disyuntivo de reglas preposicionales.
Se tomara el parmetro r = 0,6 que determina el porcentaje de la poblacin que
ser remplazada por cruce,. El parmetro m que determina la tasa de mutacin,
fue fijado en 0.001.
Estos son valores tipicos para ambos parmetros. El tamao de la poblacin vario
entre 100 y 1000, dependiendo de la tarea de aprendizaje especfica en cada experimento. Las hiptesis en GABIL se representan como un conjunto disyuntivo de
reglas proposicionales, solo que el atributo objetivo es codificado por un solo bit.
Para representar el conjunto de reglas, las cadenas representando reglas individuales son concatenadas. Por ejemplo, consideren un espacio de hiptesis donde las
pre-condiciones de las reglas son conjunciones restricciones sobre dos atributos
a1 y a2 . El atributo objetivo es c. Entonces, la hiptesis que consta de estas dos
reglas:
Si a1 = T a2 = F Entonces c = T ; Si a2 = T Entonces c = F, se representa por
la cadena:
a1 a2
10 01
c a1 a2 c
1 11 10 0
36
ALGORITMOS GENTICOS
h1 =
a1 a2 c a1 a2 c
10 01 1 11 10 0
h2 =
a1 a2 c a1 a2 c
01 11 0 10 01 0
y:
a1 a2 c a1 a2 c
1[0 01 1 11 1]0 0
h2 =
a1
0[1
a2
1]1
c a1 a2 c
0 10 01 0
a1 a2 c
11 10 0
y:
a1 a2 c a1 a2 c a1 a2 c
h4 = 00 01 1 11 11 0 10 01 0
Como se puede ver en el ejemplo, este operador de cruce permite que la prole
contenga diferente nmero de reglas que sus padres, y al mismo tiempo garantiza
que todas las cadenas de bits generadas de esta forma, representen conjuntos de
reglas bien definidos.
La funcin objetivo para cada hiptesis se basa en su precisin como clasificador
sobre un conjunto de ejemplos de entrenamiento. En particular, la funcin usada
para medir la adaptacin es:
adaptacion(h) = (correcto(h))2
donde correcto(h) es el porcentaje de ejemplos bien clasificados por la hiptesis
h.
ALGORITMOS GENTICOS
2.2.
37
ALGORITMOS GENTICOS
38
Programacin por paso de datos: A diferencia del modelo de paso de mensajes, la transferencia de datos entre los procesadores se realiza con primitivas unilaterales tipo put-get, lo que evita la necesidad de sincronizacin
entre los procesadores emisor y receptor. Es un modelo de programacin de
muy bajo nivel pero muy eficiente, aunque en la actualidad son muy pocos
los fabricantes que los soportan.
Una de las principales ventajas de los AG es que permite que sus operaciones se
puedan ejecutar en paralelo. Debido a que la evolucin natural trata con una poblacin entera y no con individuos particulares, excepto para la fase de seleccin,
durante la cual existe una competencia entre los individuos y en la fase de reproduccin, en donde se presentan iteraciones entre los miembros de la poblacin,
cualquier otra operacin de la poblacin, en particular la evaluacin de cada uno
de los miembros de la poblacin, pueden hacerse separadamente. Por lo tanto, casi
todas las operaciones en los AG son implcitamente paralelas.
Se ha establecido que la eficiencia de los AG para encontrar una solucin optima,
esta determinada por el tamao de la poblacin. Por lo tanto, una poblacin grande
requiere de mas memoria para ser almacenada. Tambin se ha probado que toma
mayor cantidad de tiempo para converger. Si n es el tamao de la poblacin, la
convergencia esperada es n log(n).
Al utilizar computadores en paralelo, no solamente se provee de mas espacio de
almacenamiento, sino tambin con el uso de ellos se podrn producir y evaluar
mas soluciones en una cantidad de tiempo mas pequeo. Debido al paralelismo,
es posible incrementar el tamao de la poblacin, reducir el costo computacional
y mejorar el desempeo de los AG.
Probablemente el primer intento que se hizo para implementar los AG en arquitecturas en paralelo fue en 1981, por John Grefenstette. Los primeros ensayos
consistan en un paralelismo global. Esta aproximacin trataba por paralelizar explcitamente las tareas paralelas implcitas de los AG secunciales, por lo tanto
la naturaleza de los problemas permaneca invariable. El algoritmo simplemente
manejaba una sencilla poblacin en donde cada individuo poda combinarse con
cualquiera de los otros, pero la generacin de los nuevos hijos y/o su evaluacin se
haca en paralelo. La idea bsica es que los diferentes procesadores puedan crear
nuevos individuos y computar sus aptitudes en paralelo, sin tener que comunicarse
con los otros.
ALGORITMOS GENTICOS
39
La evaluacin de la poblacin en paralelo es simple de implementar. A cada procesador se le asigna un subconjunto de individuos para ser evaluados. Por ejemplo,
en un computador de memoria compartida, los individuos pueden estar almacenados en la memoria, y cada uno de los procesadores puede leer los cromosomas
asignados y puede grabar los resultados del computo de las aptitudes. Este mtodo solamente supone que los AG trabajan con una generacin actualizada de la
poblacin. Se necesita adems, alguna sincronizacin entre las generaciones.
Generalmente, la mayor parte del tiempo de computo en un AG se gasta en la
funcion objetivo. El tiempo que se gasta en el manejo de los cromosomas durante
las fases de seleccin y recombinacin es despreciable. En un computador de memoria distribuida se puede almacenar la poblacin en un procesador "maestro", el
cual es responsable de enviar los individuos a los otros procesadores esclavos".
El "maestro", tambin es responsable por guardar los resultados de la evaluacin.
Una desventaja de esta implementacin es que se pueden presentar cuellos de botella, cuando los esclavos estn desocupados y solo el maestro esta trabajando.
Pero si se hace un buen uso del procesador maestro, se puede mejorar el factor de
balance, distribuyendo dinmicamente los individuos a los procesadores esclavos,
cuando ellos terminen sus trabajos.
Una segunda clase de AG paralelos consiste en dividir la poblacin en subpoblaciones, y cada una de ellas ejecutarlas en un procesador. El intercambio entre
subpoblaciones es posible por medio de un operador de "migracin".
Se emplea el modelo de islas para mostrar como los AG se comportan como si
el mundo fuera constituido por islas que se desarrollaran en forma independiente,
unas de las otras. En cada una de las islas, la poblacin es libre de converger hacia
un optimo diferente. El operador de migracin permite extraer de las diferentes
subpoblaciones las buenas caractersticas, para luego mezclarlas.
A continuacin se muestra el seudocdigo de un algoritmo con la evaluacin paralelizada:
ALGORITMOS GENTICOS
40
. mutacin
end while
y en el siguiente esquema se muestra el seudocdigo de un AG con varias poblaciones que evolucionan en paralelo:
do in parallel
generacin de la poblacin inicial
while no se cumpla la condicin de parada do
.
evaluacin de los individuos
.
seleccin
.
produccin de nuevos individuos
.
mutacin
end while
end parallel do
Escoger la mejor solucin
2.3.
ALGORITMOS GENTICOS
41
ALGORITMOS GENTICOS
42
3.
3.1.
43
simulaciones<-1000
tasas.t<-array(NA,dim=c(simulaciones,2))
for (im in 1:simulaciones){
library(MASS)
muestral<-mvrnorm(n=20,rep(l,2),matrix(c(l,0.3,0.3,1),2,2))
muestra2<-mvrnorm(n=20,rep(2,2),matrix(c(1,O.1,O.1,1),2,2))
poblacin.simulada<-rbind((cbind(muestral,c(0))),(cbind(muestra2,c(1))))
muestralK-mvrnorm(n=20,rep(1,2),matrix(c(l,0.3,0.3,1),2,2))
muestra22<-mvrnorm(n=20,rep(2,2),matrix(c(l,0.1,0.1,1),2,2))
poblacin.simuladal<-rbind((cbind(muestral1,c(0))),(cbind(muestra22,c(l))))
tamao.p<-30
variables<-2
iteraciones<-30
Ngen<-11
cromosomas<-array(sample(c(0,1),(Ngen*variables)*(tamano.p),replace=T),
dim=c(tamano.p,(variables*Ngen)))
transforma.binario.a.decimal<-function(Ngen){
y<-length(Ngen)
pot<-2seq((y 1), 0)
temp < sum(Ngen pot)
}
generacion.de.w<-function(matriz,variables){
n<-ncol (matriz)
m<-nrow (matriz)
z<-variables-1
tamano<-(n/variables)-1
matriz.w<-array(NA,dim=c(m,variables))
for(j in 1:m){
for(i in 0:z){
x<-i*(tamano+l)+2
y<-(tamano+1)*(i+1)
w<-(tamano+1)*i+1
if(matriz[j,w]==0
matriz.w[j,(i+1)]<-(transforma.binario.a.decimal(matriz[j,x:y]))*(-1)
}
else{
matriz.w[j,(i+1)]<-transforma.binario.a.decimal(matriz[j,x:y])
}
}
}
matriz.w
matriz.w1<-apply (matriz,w,2,abs)
matriz.w2<-apply(matriz,w1,1,max)
matriz.w3<-matriz.w/matriz.w2
}
generacion.de.z<-function(matriz.x,vector.w){
tempK-apply (vector,w,1,as.vector)
matriz. x %* %temp1
operacion<-function(obj,y){
temp<-obj-y
temp1<-apply(temp,2,sum)
}
Operacion1<-function(obj,y){
temp<-abs(obj-y)
temp1<-apply(temp,2,sum)
}
indice<-function(z1 ,z2){
44
n<-ncol(z1)
resultado<-array(0,dim=c(nrow(zl),n))
resultado1<-array(0,dim=c(nrow(z1),n))
for(i in l:n){
if (i==i) {resultado[,i]<-apply(as.matrix(z1[,i]),1,
operacion,as.matrix(z2[,i]))
resultado1[,i]<-apply(as.matrix(z1[,i]),1,operacion1,as.matrix(z2[,i]))}}
resultado<-resultado*(-1)
resultado<-apply(resultado,2,sum)
resultado1<-apply(resultado1,2,sum)
resultadofinal<-(resultado/resultado1)
}
SortMat<-function(Mat,Sort){
m<-do.call(order,as.data.frame(Mat[,Sort]))
Mat[m,]
}
Genera un par de hijos por la pareja
generar.hijos.de.pareja<-function(padremadre){
n1-length(padremadre)
n<-n1/2
padre<-padremadre[1:n]
madre<-padremadre[(n+1):n1]
k<-sample(1:(n-1),1)
hijo1<-c(padre[1:k],madre[(k+1):n])
hijo2<-c(madre[1:k],padre[(k+1):n])
result<-c(hijo1,hijo2)
Funcion de seleccin
seleccion<-function(poblacin.ordenada){
n<-nrow(poblacin.ordenada)
nmedio<-n %/ %2
npar<-(nmedio %/ %2)*2
padres<-poblacion.ordenada[seq(1,npar,by=2),]
45
madres<-poblacion.ordenada[seq(2,npar,by=2),]
hijos<-apply(cbind(padres,madres),1,generar.hijos.de.pareja)
hijos<-matrix(hijos,ncol=ncol(poblacion.ordenada),byrow=T)
nueva.poblacion<-rbind(padres,madres,hijos)
nueva.poblacion
}
Funcin mutacin
mutaciones<-function(Poblacin,porcentaje=0.05){
n<-nrow(Poblacion)
n1<-ceiling(n*porcentaje)
k1<-sample(2:n,n1,replace=F)
k2<-sample(1:ncol(Poblacion),n1,replace=T)
Poblacion[k1,k2]<-((Poblacion[kl,k2]+l) % % 2)
Poblacion
}
discriminacion<-function(matriz,numero,corte){
punto.de.corte<-quantile(matriz[,numero],probs = corte)
n<-nrow(matriz)
temp<-array(NA,dim=c(n,1))
for(i in 1:n){
if(matriz[i,numero]<=punto.de.corte){
temp[i,1]<-1
}
else{
temp[i,l]<-0
}
}
matriz<-cbind(matriz,temp)
}
discriminacion1<-function(matriz,numero,corte){
punto.de.corte<-quantile(matriz[,numero],probs = 1-corte)
n<-nrow(matriz)
temp<-array(NA,dim=c(n,1))
f or(i in 1 :n){
if (matriz [i , numero]<=punto.de.corte){
temp[i,l]<-0
46
}
else{
temp[i,1]<-1
}
}
matriz<-cbind (matriz, temp)
}
iteraciones
uno<-generacion.de.w(cromosomas,variables)
z1<-generacion.de.z(muestra1,uno)
z2<-generacion.de.z(muestra2,uno)
dos<-cbind(cromosomas,indice(z1,z2))
poblacion<-SortMat(dos,(Ngen*variables)+l)
for(ic in 1 : iteraciones) {
hijos<-seleccion(poblacion[,1:(Ngen*variables)])
generacion<-mutaciones(hijos [,1:(Ngen*variables)],porcentaje=0.05)
uno1-generacion.de.w(generacion,variables)
z1<-generacion.de.z(muestra1,uno1)
z2<-generacion.de.z(muestra2,uno1)
dos1<-cbind(generacion,indice(z1,z2))
poblacion<-SortMat(dos1,(Ngen*variables)+1)
}
cromosomas<-poblacion[,l:(Ngen*variables)]
uno<-generacion.de.w(cromosomas,variables)
w.elegido<-as.matrix(uno[1,])
sco.resultados<-generacion.de.z(poblacion.simulada[,1:2],w.elegido)
poblacin.total<-cbind(poblacion.simulada1,sco.resultados)
poblacin.total<-SortMat(poblacin.total,4)
resul<-discriminacion(poblacion.total,4, nrow(muestra2)
/(nrow(muestral)+nrow(muestra2)))
resul-resul[,-4]
DISCRIMINACION LOGISTICA
x1<-poblacion.simulada[,1]
47
x2<-poblacion.simulada[,2]
y<-poblacion. simulada[,3]
simulacion<-data.frame(x1,x2,y)
datos<-glm(y x1+x2,family=binomial)
predicho<-array(predict(datos),dim=c(nrow(simulacion),1))
logistica<-cbind(poblacin.simuladal,predicho)
logistica<-SortMat(logstica,4)
salida<-diseriminacionKlogstica,4,nrow(muestra2)
/(nrow(muestral)+nrow(muestra2)))
salida<-salida[,-4]
TASA DE CLASIFICACIN ERRONEA
matriz. clasificacion<-function(matriz,res.final){
a<-ifelse(matriz==0&res.final==0,1,0)
b<-ifelse(matriz==l&res.final==l,1,0)
c<-ifelse(matriz==0&res.final==1,1,0)
d<-ifelse(matriz==lres.final==0,1,0)
final<-cbind(a,b,c,d)
e<-apply(final,2,sum)
}
nda<-matriz.clasificacion( resul [,3] ,resul[,4] )
logistica<-matriz.clasificacion( salida[,3],salida [, 4] )
t asa.de.error.nda<- (nda [3] +nda [4] ) /sum (nda)
tasa.de.error.logistica<-(logistica[3]+logistica[4] ) /sum (logstica)
tasa.erronea<-cbind (tasa.de.error.nda,tasa.de.error.logistica)
tasas .t [im,] <-tasa. erronea
}
tasas.t
sum(tasas.t[,1])
sum(tasas.t[,2])
48
49
3.2.
3.2.1.
Descripcin
Dado un conjunto de variables, un AG del algoritmo busca un subconjunto kvariable que sea ptimo, como sustituto para el sistema del conjunto, con respecto
a un criterio dado.
3.2.2.
Uso
3.2.3.
Argumentos
50
Detalles
Para cada valor k (con k extendindose de kmin al kmax), una poblacin inicial
de popsize k-variables se selecciona aleatoriamente de un sistema completo de
variables de p (p que no excede de 300). En cada iteracin, los pares popsize/2
se forman entre la poblacin y cada par genera a hijo (un nuevo subconjunto de
k-variable) que hereda las caractersticas de sus padres (especficamente, hereda
todas las variables comunes a padres y a una seleccin al azar de variables en
la diferencia simtrica del maquillaje gentico de sus padres). Cada descendiente
puede experimentar opcionalmente una mutacin (bajo la forma de algoritmo local de la mejora). Alinean a los padres y al descendiente segn su valor de criterio,
y el mejores popsize de estos k-subconjuntos compondrn la generacin siguiente, que se utiliza como la poblacin actual en la iteracin subsecuente.
La regla que para el algoritmo es el nmero de las generaciones (nger).
El usuario puede forzar variables para ser incluidas y/o para ser excluidas de los
k-subconjuntos, y puede especificar a una poblacin inicial.
Para cada valor k, el nmero total de llamadas al procedimiento que computa los
valores del criterio es popsize + el nger x popsize/2.
3.2.5.
51
Ejemplo
para la ilustracin del uso, una pequea base de datos con pocas iteraciones del
algoritmo.
data(swiss)
genetic(cor(swiss),3,4,popsize=10,nger=5,criterion=Rv")
For cardinality k=
4
there is not enough genetic diversity in generation number
5
for acceptable levels of consanguinity (couples differing by at
least 2 genes).
Try reducing the maximum acceptable number of clones (maxclone) or increasing the population size (popsize)
Best criterion value found so far:
0.9590526
$subsets
.
Var.1 Var.2 Var.3
Solution 1
1
2
3
Solution 2
1
2
3
Solution 3
1
2
5
Solution 4
1
2
6
Solution 5
3
4
6
Solution 6
3
4
5
Solution 7
3
4
5
Solution 8
1
3
6
Solution 9
2
4
5
Solution 10 1
3
4
$values
Solution 1 Solution 2 Solution 3 Solution 4 Solution 5 Solution 6
0.9141995 0.9141995 0.9098502 0.9074543 0.9034868 0.9020271
Solution 7 Solution 8 Solution 9 Solution 10
0.9020271 0.8988192 0.8982510 0.8940945
52
$bestvalues
Card.3
0.9141995
$bestsets
Var.1 Var.2 Var.3
1
2
3
3.3.
FUNCIN PLOT
3.3.1.
Descripcin
Traza caractersticas del funcionamiento gentico de la optimizacin del algoritmo. El diagrama del defecto indica el mnimo valor de la evaluacin, indicando
hasta dnde ha progresado el GA.
El diagrama del "hist"demuestra para el cromosoma binario la frecuencia de la
seleccin del gene, es decir, el tiempo en el que un gen en el cromosoma fue
seleccionado en la poblacin actual. En caso de los cromosomas float, har los
histogramas para cada una de las variables para indicar los valores seleccionados
en la poblacin.
Los "vars"trazan la funcin de la evaluacin contra el valor de la variable. Esto es
til para mirar correlaciones entre las variables y los valores de la evaluacin.
3.3.2.
Uso
3.3.3.
Argumentos
3.3.4.
53
Ejemplos
3.4.
CROMOSOMA FLOTANTE
3.4.1.
Descripcin
3.4.2.
Uso
rbga(stringMin=c(), stringMax=c(),
suggestions=NULL,
popSize=200, iters=100,
mutationChance=NA,
elitism=NA,
54
monitorFunc=NULL, evalFunc=NULL,
showSettings=FALSE, verbose=FALSE)
rbga (stringMin=c (), stringMax=c (), suggestions=NULL, popSize=200, iters=100,
mutationChance=NA, elitism=NA, monitorFunc=NULL, evalFunc=NULL, showSettings=FALSE,
verbose=FALSE)
3.4.3.
Argumentos
Ejemplos
55
else {
stop(Expecting a chromosome of length 2!);
}
returnVal
}
monitor <- function(obj) {
# plot de la poblacin
xlim = c(obj$stringMin[1], obj$stringMax[1]);
ylim = c(obj$stringMin[2], obj$stringMax[2]);
plot(obj$population, xlim=xlim, ylim=ylim, xlab=pi, ylab=sqrt(50)); }
rbga.results = rbga(c(1, 1), c(5, 10), monitorFunc=monitor, evalFunc=evaluate,
verbose=TRUE, mutationChance=0.01)
plot(rbga.results) plot(rbga.results, type="hist") plot(rbga.results, type="vars")
3.5.
CROMOSOMA BINARIO
3.5.1.
Descripcin
Uso
rbga.bin(size=10,
suggestions=NULL,
popSize=200, iters=100,
mutationChance=NA,
elitism=NA, zeroToOneRatio=10,
56
monitorFunc=NULL, evalFunc=NULL,
showSettings=FALSE, verbose=FALSE)
3.5.3.
Argumentos
3.5.4.
Ejemplos
57
58
returnVal
}
else {
xtrain = NIR$Xtrain[,chromosome == 1]; pls.model = pls(xtrain, NIR$Ytrain,
validation=CV, grpsize=1,
ncomp=2:min(10,sum(chromosome)))
returnVal = pls.model$val$RMS[pls.model$val$nLV-(minLV-1)] returnVal
}
}
monitor <- function(obj) { minEval = min(obj$evaluations);
filter = obj$evaluations == minEval;
bestObjectCount = sum(rep(1, obj$popSize)[filter]);
if (bestObjectCount >1) {
bestSolution = obj$population[filter,][1,];
} else {
bestSolution = obj$population[filter,];
}
outputBest = paste(obj$iter, #selected=, sum(bestSolution),
Best (Error=, minEval, ): , sep=);
for (var in 1:length(bestSolution)) {
outputBest = paste(outputBest,
bestSolution[var], ,
sep=);
}
outputBest = paste(outputBest, sep=);
cat(outputBest);
}
nir.results = rbga.bin(size=numberOfWavelenghts, zeroToOneRatio=10,
evalFunc=evaluateNIR, monitorFunc=monitor,
popSize=200, iters=100, verbose=TRUE)
# # End(Not run)
3.6.
FUNCIN SUMMARY
3.6.1.
Descripcin
59
Uso
Argumentos
Ejemplos
4.
60
APLICACIN
APLICACIN
1
2
1
6
1 1
4 2
Total
16
1
2
1 Total
1
4
El siguiente paso es hacer competir a los individuos entre s. Este proceso se conoce como seleccin.
61
APLICACIN
SELECCIN (XA)
N del individuo
1
2
3
4
5
6
Individuo en binario
(1,1,1,1,0)
(1,1,1,0,0)
(1,1,0,0,0)
(0,0,0,1,1)
(0,0,1,1,1)
(0,1,1,1,1)
Valor de XA
14
10
4
6
12
14
Pareja aleatoria
5
3
1
6
2
4
Individuo en binario
(1,1,0)
(1,0,1)
(0,1,1)
(0,0,1)
(1,0,0)
(0,1,0)
Valor de XA
3
2
3
1
1
2
Pareja aleatoria
4
1
5
3
6
2
SELECCIN (XB)
N del individuo
1
2
3
4
5
6
Individuo XB
Individuo XA
1
2
3
4
5
6
1
396
376
396
356
356
376
2
300
280
300
260
260
280
3
156
136
156
116
116
136
4
204
184
204
164
164
184
5
348
328
348
308
308
328
6
396
376
396
356
356
376
Como se puede observar el mejor individuo para XA puede ser 1,6 y para XB 1,3
conformando las parejas (1,1),(1,3),(6,1) y (6,3) ya que al evaluar las parejas en
la funcin el resultado es el mayor con f = 396.
Una manera de realizar el proceso de seleccin es mediante un torneo entre dos.
A cada individuo de la poblacin se le asigna una pareja y entre ellos se establece
un torneo: el mejor genera dos copias y el peor se desecha. La columna (4) indica
62
APLICACIN
Individuo en binario
(1,1,1,1,0)
(1,1,1,1,0)
(1,1,1,0,0)
(1,1,1,0,0)
(0,1,1,1,1)
(0,1,1,1,1)
Pareja aleatoria
3
6
2
1
4
5
Punto de cruce
1
2
1
1
2
2
Individuo en binario
(1,1,0)
(1,1,0)
(1,1,0)
(1,1,0)
(0,1,1)
(0,1,1)
Pareja aleatoria
2
5
1
6
4
3
Punto de cruce
1
2
1
1
2
1
CRUCE (XB)
N del individuo
1
2
3
4
5
6
Individuo en binario
(1,1,1,0,0)
(1,1,1,1,0)
(1,1,1,1,1)
(0,1,1,1,0)
(1,1,1,1,0)
(1,1,1,0,0)
Valor de XA
10
14
16
12
14
10
63
APLICACIN
Individuo en binario
(1,1,0)
(1,1,0)
(1,1,1)
(0,1,0)
(1,1,0)
(1,1,0)
Valor de XA
3
3
4
2
3
3
Individuo XB
Individuo XA
1
2
3
4
5
6
1
300
300
320
280
300
300
2
396
396
416
376
396
396
3
444
444
464
424
444
444
4
348
348
368
328
348
348
5
396
396
416
376
396
396
6
300
300
320
280
300
300
5.
CONCLUSIONES
64
CONCLUSIONES
Como se ha podido observar, una de las principales ventajas de los AG puede observarse en su sencillez; puesto que se necesita muy poca informacin sobre el
espacio de bsqueda ya que se trabaja sobre un conjunto de soluciones o parmetros codificados (hiptesis o individuos). Al igual que sus campos de aplicacin,
se puede afirmar que es un mtodo muy completo de optimizacin, puesto que sus
reas de estudio son muy amplias, y se puede ver generalizado en muchos sucesos
cotidianos.
Se ha observado de igual forma que los AG estn indicados para resolver todo
tipo de problemas que se puedan expresar como un problema de optimizacin
donde se define una representacin adecuada para las soluciones y para la funcin
a optimizar. Se busca una solucin por aproximacin de la poblacin, en lugar de
una aproximacin punto a punto.
Probablemente el punto ms delicado de todo se encuentra en la definicin de la
funcin objetivo, ya que de su eficiencia depende la obtencin de un buen resultado. El resto del proceso es siempre el mismo para todos los casos.
La programacin mediante AG supone un nuevo enfoque que permite abarcar todas aquellas reas de aplicacin donde no se sabe de ante mano como resolver el
problema.
Tambin es importante anotar que a pesar de que es una tcnica muy buena, en
el caso de un problema especifico en donde se sepa que para su optimizacin se
puede utilizar otro mtodo, pues en este caso lo ms recomendable es hacerlo por
el otro mtodo, ya que con seguridad se encontrara una solucin ms optima (sino
la ms optima) de la que se hubiese podido encontrar con un AG.
En la parte final Se pueden observar las diferentes aplicaciones que tiene los AG
en el paquete estadstico R, al igual que algunas de las funciones que se utilizan
para su aplicacin, segn sea el caso.
Por ultimo se detalla una de las muchas aplicaciones que tiene este mtodo, que es
la optimizacin; all se observa la forma de proceder de este mtodo tan completo
y a la ves tan aparentemente"sencillo.
REFERENCIAS
Referencias
[1] http://www.dii.uchile.cl/ ceges/publicaciones/ceges73.pdf
[2] http://taylor.us.es/componentes/miguelangel/algoritmosgeneticos.pdf
[3] http://www.elrincondelprogramador.com/default.asp?pag=articulos/
leer.asp&id=6
[4] http://www.utp.edu.co/php/revistas/ScientiaEtTechnica/docsFTP/
21273285-290.pdf
[5] http://descargas.cervantesvirtual.com/servlet/SirveObras/120394186289
25940987435/002760_11.pdf
[6] http://eddyalfaro.galeon.com/geneticos.html
[7] http://www.uv.mx/aguerra/teaching/MIA/MachineLearning/
clase08.pdf
[8] http://tigre.aragon.unam.mx/geneticos/indice.htm
[9] http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t2geneticos.pdf
[10] http://147.96.80.155/sistemaoptimizacion/AlgoritmoGenetico.htm
[11] http://www.redcientifica.com/gaia/ce/agsp_c.htm
[12] http://www.frro.utn.edu.ar/isi/algoritmosgeneticos/
html_data/3algoritmos/Algoritmo.htm
[13] http://www.redcientifica.com/imprimir/doc199904260011.html
[14] http://www.divulgamat.net/weborriak/TestuakOnLine/02-03/
PG02-03-iglesias.pdf
[15] http://www.uv.es/asepuma/X/J24C.pdf
[16] http://www.uv.es/asepuma/X/J01C.pdf
[17] http://webdiis.unizar.es/jcampos/EDA/ea/slides/9Algoritmos %20geneticos.pdf
[18] http://pbil.univ-lyon1.fr/library/subselect/html/genetic.html
65