Vous êtes sur la page 1sur 45

ALGORITMOS GENETICOS

Los Algoritmos Gentico 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 evidencia emprica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimizacin combinatoria. En el caso de que existan tcnicas especializadas para resolver un determinado problema, lo mas probable es que superen al AG, tanto en rapidez como en eficacia. El gran campo de aplicacin de los AG se relaciona con aquellos problemas para los cuales no existen tcnicas especializadas. Incluso en el caso en que dichas tcnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridndolas con los AG.

POR QU UTILIZAR ALGORITMOS GENTICOS EN LA OPTIMIZACIN?


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 determinanticos de las tcnicas tradicionales. Resulta sumamente fcil ejecutarlos en las modernas arquitecturas masivas en paralelo.

VENTAJAS DE LOS ALGORITMOSGENTICOS

intrnsecamente paralelos, es decir, operan de forma simultnea con varias soluciones, en vez de trabajar de forma secuencial como las tcnicas tradicionales. Esto significa que mientras tcnicas tradicionales 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, los algoritmos genticos simplemente desechan esta solucin subptima y siguen por otros caminos.

de optimizacin resultan menos afectados por los mximos locales (falsas soluciones) que las tcnicas tradicionales. Muchos algoritmos de bsqueda pueden quedar atrapados en los ptimos locales: si llegan a lo alto de una colina del paisaje adaptativo, descubrirn que no existen soluciones mejores en las cercanas y concluirn que han alcanzado la mejor de todas, aunque existan picos ms altos en algn otro lugar del mapa, situacin que no sucede para algoritmos genticos. para manipular muchos parmetros simultneamente. Resulta interesante en caso de tener varios objetivos a resolver.

problema que intentan resolver. Realizan cambios aleatorios en sus soluciones candidatas y luego utilizan la funcin de aptitud para determinar si esos cambios producen una mejora o no. arquitecturas masivas en paralelo.

determinsticos de las otras tcnicas.

operadores

DESVENTAJAS DE LOS ALGORITMOS GENETICOS


Definir una representacin del problema. El lenguaje utilizado para especificar soluciones candidatas debe ser robusto, debe ser capaz de tolerar cambios aleatorios que no produzcan constantemente errores fatales o resultados sin sentido. Se puede solucionar mediante la definicin de los individuos como listas de nmeros donde cada nmero representa algn aspecto de la solucin candidata. Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los parmetros que se utilicen tamao de la poblacin, nmero de generaciones. Pueden converger prematuramente debido a una serie de problemas. Si un individuo que es ms apto que la mayora de sus competidores emerge muy pronto en el curso de la ejecucin, se puede reproducir tan abundantemente que merme la diversidad de la poblacin demasiado pronto, provocando que el algoritmo converja hacia el ptimo local que representa ese individuo, en lugar de rastrear el paisaje adaptativo lo bastante a fondo para encontrar el
3

ptimo global. Esto es un problema especialmente comn en las poblaciones pequeas, donde incluso una variacin aleatoria en el ritmo de reproduccin puede provocar que un genotipo se haga dominante sobre los otros.

El Algoritmo Gentico Simple


El Algoritmo Gentico Simple, tambin denominado Cannico, se representa en la Figura 1. Como se ver a continuacin, se necesita una codificacin o representacin del problema, que resulte adecuada al mismo. Adems se requiere una funcin de ajuste adaptacin al problema, la cual asigna un nmero real a cada posible solucin codificada. Durante la ejecucin del algoritmo, los padres deben ser seleccionados para la reproduccin, a continuacin dichos padres seleccionados se cruzarn generando dos hijos, sobre cada uno de los cuales actuar un operador de mutacin. El resultado de la combinacin de las anteriores funciones ser un conjunto de individuos (posibles soluciones al problema), los cuales en la evolucin del Algoritmo Gentico formarn parte de la siguiente poblacin.

BEGIN /* Algoritmo Gentico Simple */ Generar una poblacin inicial. Computar la funcin de evaluacin de cada individuo. WHILE NOT Terminado DO BEGIN /* Producir nueva generacin */ FOR Tamaopoblacin/2 DO BEGIN /*Ciclo Reproductivo */ Seleccionar dos individuos de la anterior generacin, para el cruce (probabilidad de seleccin proporcional a la funcin de evaluacin del individuo). Cruzar con cierta probabilidad los dos individuos obteniendo dos descendientes. Mutar los dos descendientes con cierta probabilidad. Computar la funcin de evaluacin de los dos Descendientes mutados. Insertar los dos descendientes mutados en la nueva generacin. END IF la poblacin ha convergido THEN Terminado := TRUE END END Figura :Pseudocdigo del Algoritmo Gentico Simple

Anatoma de un algoritmo gentico simple

Los algoritmos genticos son mtodos sistemticos para la resolucin de problemas de bsqueda y optimizacin que aplican a estos los mismos mtodos de la evolucin biolgica: seleccin basada en la poblacin, reproduccin sexual y mutacin. Los algoritmos genticos son mtodos de optimizacin, que tratan de resolver el mismo conjunto de problemas que se ha contemplado anteriormente, es decir, hallar (xi,...,xn) tales que F(xi,...,xn) sea mximo. En un algoritmo gentico, tras parametrizar el problema en una serie de variables, (xi,...,xn) se codifican en un cromosoma. Todas los operadores utilizados por un algoritmo gentico se aplicarn sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo gentico va implcito el mtodo para resolver el problema; son solo parmetros de tal mtodo los que estn codificados, a diferencia de otros algoritmos evolutivos como la programacin gentica. Hay que tener en cuenta que un algoritmo gentico es independiente del problema, lo cual lo hace un algoritmo robusto, por ser til para cualquier problema, pero a la vez dbil, pues no est especializado en ninguno.

Codificacin

Se supone que los individuos (posibles soluciones del problema), pueden representarse como un conjunto de parmetros (que denominaremos genes), los cuales agrupados forman una lista de valores (a menudo referida como cromosoma). Si bien el alfabeto utilizado para representar los individuos no debe necesariamente estar constituido por el (0, l), buena parte de la teora en la que se fundamentan los Algoritmos Genticos utiliza dicho alfabeto. En trminos biolgicos, el conjunto de parmetros representando un cromosoma particular se denomina fenotipo. El fenotipo contiene la informacin requerida para construir un organismo, el cual se refiere como genotipo. Los mismos trminos se utilizan en el campo de los Algoritmos Genticos. La adaptacin al problema de un individuo depende de la evaluacin del genotipo. Esta ltima puede inferirse a partir del fenotipo, es decir puede ser computada a partir del cromosoma, usando la funcin de evaluacin. La funcin de adaptacin debe ser diseada para cada problema de manera especfica. Dado un cromosoma particular, la funcin de adaptacin le asigna un nmero real, que se supone refleja el nivel de adaptacin al problema del individuo representado por el cromosoma. Durante la fase reproductiva se seleccionan los individuos de la poblacin para cruzarse y producir descendientes, que constituirn, una vez. mutados, la siguiente generacin de individuos. La seleccin de
5

padres se efecta al azar usando un procedimiento que favorezca a los individuos mejor adaptados, ya que a cada individuo se le asigna una probabilidadde ser seleccionado que es proporcional a su funcin de adaptacin. Este procedimiento se dice que est basado en la ruleta sesgada. Segn dicho esquema, los individuos bien adaptados se escogern probablemente varias veces por generacin, mientras que, los pobremente adaptados al problema, no se escogern ms que de vez en cuando. Una vez seleccionados dos padres, sus cromosomas se combinan, utilizando habitualmente los operadores de cruce y mutacin. Las formas bsicas de dichos operadores se describen a continuacin.

El operador de cruce, coge dos padres seleccionados y corta sus ristras de cromosomas en una posicin escogida al azar, para producir dos subristras iniciales y dos subristras finales. Despus se intercambian las subristras finales, producindose dos nuevos cromosomas completos (vase la Figura 2). Ambos descendientes heredan genes de cada uno de los padres. Este operador se conoce como operador de cruce basado en un punto. Habitualmente el operador de cruce no se aplica a todos los pares de individuos que han

Figura 2

Los padres de individuos que han sido seleccionados para emparejarse, sino que se aplica de manera aleatoria, normalmente con una probabilidad comprendida entre 0.5 y 1.0. En el caso en que el operador de cruce no se aplique, la descendencia se obtiene simplemente duplicando los padres.

El operador de mutacin se aplica a cada hijo de manera individual, y consiste en la alteracin aleatoria (normalmente con probabilidad

pequea) de cada gen componente del cromosoma. La Figura 3 muestra la mutacin del quinto gen del cromosoma. S bien

Figura 3 puede en principio pensarse que el operador de cruce es ms importante que el operador de mutacin, ya que proporciona una exploracin rpida del espacio de bsqueda, ste ltimo asegura que ningn punto del espacio de bsqueda tenga probabilidad cero de ser examinado, y es de capital importancia para asegurar la convergencia de los Algoritmos Genticos. Para criterios prcticos, es muy til la definicin de convergencia introducida en este campo por De Jong en su tesis doctoral. Si el Algoritmo Gentico ha sido correctamente implementado, la poblacin evolucionar a lo largo de las generaciones sucesivas de tal manera que la adaptacin media extendida a todos los individuos de la poblacin, as como la adaptacin del mejor individuo se irn incrementando hacia el ptimo global. El concepto de convergencia est relacionado con la progresin hacia la uniformidad: un gen ha convergido cuando al menos el 95 % de los individuos de la poblacin comparten el mismo valor para dicho gen. Se dice que la poblacin converge cuando todos los genes han convergido. Se puede generalizar dicha definicin al caso en que al menos un poco de los individuos de la poblacin hayan convergido. La Figura 4 muestra como vara la adaptacin media y la mejor adaptacin en un Algoritmo Gentico Simple tpico.

Figura 4 A medida que el nmero de generaciones aumenta, es ms probable que la adaptacin media se aproxime a la del mejor individuo. 4
Ejemplo

Como ilustracin de los diferentes componentes del Algoritmo Gentico Simple, supongamos el problema .adaptado de Goldberg de encontrar el mximo de la funcin f(z) = x2 sobre los enteros (1,2,...,32). Evidentemente para lograr dicho ptimo, bastara actuar por bsqueda exhaustiva, dada la baja cardinalidad del espacio de bsqueda. Se trata por tanto de un ejemplo con el que pretendemos ilustrar el comportamiento del algoritmo anteriormente descrito. Consultando l pseudocdigo de la Figura 1. Funcionamiento vemos que el primer paso a efectuar consiste en determinar el tamao de la poblacin inicial, para a continuacin obtener dicha poblacin al azar y computar la funcin de evaluacin de cada uno de sus individuos. Suponiendo que el alfabeto utilizado para codificar los individuos est constituido por (0, 1), necesitaremos ristras de longitud 5 para representar los 32 puntos del espacio de bsqueda. En la Tabla 1, hemos representado los 4 individuos que constituyen la poblacin inicial, junto con su funcin de adaptacin al problema, as como la probabilidad de que cada uno de dichos individuos sea seleccionado .segn el modelo de ruleta sesgada. ara emparejarse. Volviendo a consultar el pseudocdigo expresado en la Figura 1, vemos que el siguiente paso consiste en la seleccin de 2 parejas de individuos. Para ello es suficiente, con obtener 4 nmeros reales provenientes de una distribucin de probabilidad uniforme en el intervalo

Tabla 1

Tabla 2 (0, 1), y compararlos con la ltima columna de la Tabla l. As por ejemplo, supongamos que dichos 4 nmeros hayan sido: 0.58; 0.84; 0.11 y 0.43. Esto significa que los individuos seleccionados para el cruce han sido: el individuo 2 junto con el individuo 4, as como el individuo 1 junto con el individuo 2. Para seguir con el Algoritmo Gentico Simple, necesitamos determinar la probabilidad de cruce, p,. Supongamos que se fije en p, = 0.8. Valindonos al igual que antes de, 2 en este caso, nmeros provenientes de la distribucin uniforme, determinaremos si los emparejamientos anteriores se llevan a cabo. Admitamos, por ejemplo, que los dos nmeros extrados sean menores que 0.8, decidindose por tanto efectuar el cruce entre las dos parejas. Para ello escogeremos un nmero al azar entre l y 1 . 1 (siendo l la longitud de la ristra utilizada para representar el individuo). Notse que la restriccin impuesta al escoger el nmero entre 1 y l .l, y no l, se realiza con la finalidad de que los descendientes no coincidan con los padres. Supongamos, tal y como se indica en la Tabla 2, que los puntos de cruce resulten ser 2 y 3. De esta manera obtendramos los 4 descendientes descritos en la tercera columna de la Tabla 2. A continuacin siguiendo el pseudocdigo de la Figura 1, mutaramos con una probabilidad, p, cercana a cero, cada uno de los bit de las cuatro ristras de individuos. En este caso suponemos que el nico bit mutado corresponde al primer gen del tercer individuo. En las dos ltimas
9

columnas se pueden consultar los valores de los individuos, as como las funciones de adaptacin correspondientes. Como puede observarse, tanto el mejor individuo como la funcin de adaptacin media han mejorado sustancialmente al compararlos con los resultados de la Tabla 1.

Representacin. Todos los organismos vivos estn constituidos por clulas, y cada clula contiene uno o ms cromosomas (cadenas de ADN), que le sirven como una especie de plano al organismo. Un cromosoma puede ser conceptualmente dividido en genes cada uno de los cuales codifica una protena. En trminos generales, se puede decir que un gen se codifica como si fuera un rasgo, como puede serlo el color de ojos. Cada gen se encuentra en una posicin particular del cromosoma, y est formado por alelos.

Se supone que los individuos (posibles soluciones del problema), pueden representarse como un conjunto de parmetros (que denominaremos genes), los cuales agrupados forman una ristra de valores, a menudo referida como cromosoma. Debe existir una representacin de estos genes para poder utilizarlos posteriormente en el algoritmo gentico y dotarles de unos valores. Se pueden considerar tres tipos bsicos de representacin o codificacin de los genes:

Binaria: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un nmero binario.

Entera: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un nmero entero.

Real: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un
10

nmero

real.

Un individuo es una solucin potencial al problema que se trata. Cada individuo contiene un cromosoma. A un conjunto de individuos se le denomina poblacin. El fitness de un individuo es la evaluacin de la funcin de evaluacin e indica qu tan bueno es el individuo (es decir, la solucin al problema) con respecto a los dems.

Algoritmo. Desarrollado por John H. Holland, el algoritmo gentico opera entonces a nivel de genotipo de las soluciones mediante la siguiente secuencia:

1. Comenzar con una poblacin inicial, la cual puede ser generada de manera aleatoria. 2. Calcular el fitness (aptitud) de cada individuo. 3. Aplicar el operador de seleccin con base en el fitness de la poblacin. 4. Aplicar los operadores genticos de reproduccin, cruce y mutacin a la poblacin actual para generar a la poblacin de la siguiente generacin. 5. Ir al paso 2 hasta que la condicin de parada se satisfaga. 6. Cuando se cumple la condicin de parada, se devuelve al mejor individuo encontrado (bien el mejor de todas las generaciones, bien el mejor de la ltima generacin).

Operadores genticos. En su forma ms simple, un algoritmo gentico consta de los siguientes operadores genticos: seleccin, reproduccin, cruce (crossover) y mutacin. Seleccin El proceso de seleccin sirve para escoger a los individuos de la poblacin mejor adaptados, para que acten de progenitores de la siguiente generacin. En la naturaleza existen varios factores que intervienen para que un individuo pueda tener descendencia. El primero de todos es que consiga sobrevivir, ya sea porque no es devorado por depredadores, o porque sea capaz de procurarse alimento. Lo segundo es que encuentre pareja para reproducirse. El
11

ltimo factor es que la combinacin de ambos individuos sea apta para crear un nuevo individuo. Sin embargo, en la realidad es posible que el mejor individuo no pueda reproducirse, pero otro individuo de peor calidad pueda conseguirlo. Aunque este hecho es menos probable, sigue siendo posible. En los algoritmos genticos, la seleccin es un conjunto de reglas que sirven para elegir a los progenitores de la siguiente generacin. Estos progenitores se reproducirn (cruzamiento gentico) y generarn descendencia. Un sistema muy utilizado en los algoritmos genticos es la seleccin por torneo. Este sistema consiste en escoger aleatoriamente de la poblacin un cierto nmero de individuos. De esos individuos se escoge el mejor de todos para ser el padre. Para escoger la madre se repite el proceso: se escoge aleatoriamente a un nmero de individuos de la poblacin y se elige al individuo con mejor calidad. Este sistema garantiza un mnimo de diversidad, ya que no siempre se elegir al mejor individuo de la poblacin para tener descendencia. Pero, por el contrario, existen grandes posibilidades de que ste tenga descendencia, ya que si es escogido en algn torneo, ser el vencedor. Reproduccin En este contexto, se entender por reproduccin la clonacin de un individuo. Es decir, un individuo pasar a la siguiente generacin sin modificacin. De esta manera, la reproduccin es un operador gentico que se contrapone al cruce y la mutacin, puesto que estos ltimos modifican los individuos que pasan a la siguiente generacin. El objetivo de la reproduccin es mantener en la siguiente generacin a individuos con fitness alta de la presente generacin. Relacionado con el concepto de reproduccin est el de elitismo, el cual mantiene a los mejores individuos de una generacin a la siguiente, para que no se pierda su informacin. Cruce Durante esta fase se cruzan o mezclan los individuos seleccionados en la fase anterior. Es decir, los genes de los dos padres se mezclan entre s para dar lugar a los diferentes hijos. Existen diversos mtodos de cruce, pero los ms utilizados son los siguientes:

Cruce basado en un punto: los dos individuos seleccionados para jugar el papel de padres, son recombinados por medio de la seleccin de un punto de corte, para posteriormente intercambiar las secciones que se encuentran a la derecha de dicho punto. Es decir, los genes del padre1 a la izquierda del punto de corte forman parte del hijo1 y los situados a la derecha formaran parte del hijo2, mientras que con el padre2 suceder lo contrario. Cruce punto a punto: este tipo de cruce es similar al anterior pero realizndose para cada gen de los padres. Por tanto, en este cruce los
12

genes pares del padre1 formarn parte del hijo1 y los genes impares formarn parte del hijo2, mientras que para el padre2 suceder lo contrario. Cruce multipunto: en este tipo de cruce se selecciona aleatoriamente la cantidad de puntos que se van a utilizar para el cruce. De esta forma, y de manera anloga al anterior cruce, se irn intercambiando los genes para formar los dos nuevos hijos. Cruces especficos de codificaciones no binarias: Para este tipo de codificacin se pueden definir, adems de los anteriores, otros tipos de operadores de cruce: o Media: el gen de la descendencia toma el valor medio de los genes de los padres. Tiene la desventaja de que nicamente se genera un descendiente en el cruce de dos padres. o Media geomtrica: cada gen de la descendencia toma como valor la raz cuadrada del producto de los genes de los padres. Presenta el problema aadido de qu signo dar al resultado si los padres tienen signos diferentes. o Extensin: se toma la diferencia existente entre los genes situados en las mismas posiciones de los padres y se suma el valor ms alto o se resta del valor ms bajo. Solventa el problema de generar un nico descendiente.

Mutacin La mutacin se considera un operador bsico, que proporciona un pequeo elemento de aleatoriedad en 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, el operador de mutacin es el responsable del aumento o reduccin del espacio de bsqueda dentro del algoritmo gentico y del fomento de la variabilidad gentica de los individuos de la poblacin. Existen varios mtodos para aplicar la mutacin a los individuos de una poblacin, pero el ms comnmente utilizado es el de mutar un porcentaje de los genes totales de la poblacin. Este porcentaje de genes a mutar se puede seleccionar de dos maneras, de forma fija, especificando el mismo porcentaje de mutacin a todas las generaciones del algoritmo gentico y de forma variable, es decir, modificando el porcentaje de mutacin de una generacin a otra, por ejemplo reducindolo. De esta manera, se consigue hacer una bsqueda ms amplia y global al principio e ir reducindola en las siguientes generaciones. Con otro tipo de codificaciones (por ejemplo codificacin real) existen otras opciones de mutacin, aplicadas con una probabilidad generalmente pequea:

Mutacin al azar: Modifica el valor de un gen asignando con un nuevo valor que se encuentra dentro de un determinado rango. El nuevo valor es independiente del valor previo del gen. Mutacin gaussiana: Dado un cromosoma p con un gen seleccionado para la mutacin i, se le aplica una distribucin normal N de media pi y

13

desviacin estndar s (parmetro). Alternativamente se puede disminuir el valor de s a medida que aumenta el nmero de generaciones.

EXTENSIN Y MODELO DE ALGORITMO SIMPLE


#define POBLACION 11 #define LONG_COD 20 #define LIMITE -5.12 #define PROB_CRUCE 0.3 #define PROB_MUTACION 0.001 #define INTERVALO 10.24/pow(2,LONG_COD/2) #include <stdio.h> #include <stdlib.h> #include <math.h>

typedef struct { int genotipo[LONG_COD]; double aptitud; } Individuo; void decoder (double *, double *, int *); double fitness (double, double); int generarBinario (void); Individuo generarIndividuo (void); Individuo * generarPoblacion (void); Individuo * seleccionTorneos(Individuo * pob);

void mutacionHijos (Individuo *); void cruzarSeleccion (Individuo *); Individuo elite(Individuo *); void AG();
14

void imprimePoblacion (Individuo *); void imprimeGenotipo(Individuo); void generarGraficoGeneracional(void);

int main() { srand(time(NULL)); AG(); return 0; } void decoder (double * x, double * y, int * genotipo) { int i; *x = *y = 0.0; // calcula el primer decimal for(i=0; i<LONG_COD/2; i++) *x += genotipo[i] * pow(2, (LONG_COD/2)-(i+1)); *x = (*x) * INTERVALO + LIMITE; //calcula el segundo decimal for(;i<LONG_COD;i++) *y += genotipo[i] * pow(2, LONG_COD-(i+1)); *y = (*y) * INTERVALO + LIMITE; } double fitness (double p1, double p2) { return pow(p1,2) + pow(p2,2); } int generarBinario (void) { if (1 + (int) (10.0*rand()/(RAND_MAX+1.0)) > 5) return 1; else return 0; } Individuo generarIndividuo (void){ Individuo ind;
15

int i; double x, y; for (i=0; i<LONG_COD; i++) ind.genotipo[i]=generarBinario(); decoder(&x, &y, ind.genotipo); ind.aptitud = fitness(x,y); return ind; } Individuo * generarPoblacion(void) { Individuo * poblacion; int i; poblacion = (Individuo *) malloc(sizeof(Individuo)*POBLACION); for(i=0;i<POBLACION;i++) poblacion[i] = generarIndividuo(); return poblacion; } Individuo * seleccionTorneos (Individuo * poblacion) { Individuo candidato_a, candidato_b; int i; Individuo * seleccion = (Individuo *) malloc (sizeof(Individuo)*POBLACION); for (i=0; i<POBLACION-1; i++) { candidato_a = poblacion[(int) (((double) POBLACION)*rand()/(RAND_MAX+1.0))]; candidato_b = poblacion[(int) (((double) POBLACION)*rand()/(RAND_MAX+1.0))];

if (candidato_a.aptitud < candidato_b.aptitud) seleccion[i] = candidato_a; else seleccion[i] = candidato_b; }


16

return seleccion; } void mutacionHijos (Individuo * hijos) { int i, j; for(i=0; i<2; i++) for(j=0; j<LONG_COD; j++) if ((double) rand()/(RAND_MAX+1.0) < PROB_MUTACION) { if(hijos[i].genotipo[j]) hijos[i].genotipo[j] = 0; else hijos[i].genotipo[j] = 1; } } void cruzarSeleccion (Individuo * seleccion) { int i, j, punto, aux; double x, y; for(i=0; i<POBLACION-1; i+=2) { if((double) rand()/(RAND_MAX+1.0) < PROB_CRUCE) { punto = (int) (((double) LONG_COD)*rand()/(RAND_MAX+1.0)); for(j=punto; j<LONG_COD; j++) { aux=seleccion[i].genotipo[j]; seleccion[i].genotipo[j]=seleccion[i+1].genotipo[j]; seleccion[i+1].genotipo[j]=aux; } mutacionHijos(&seleccion[i]); decoder(&x, &y, seleccion[i].genotipo); seleccion[i].aptitud = fitness(x,y); decoder(&x, &y, seleccion[i+1].genotipo); seleccion[i+1].aptitud = fitness(x,y);
17

} } } Individuo elite (Individuo * poblacion) { int i; Individuo best = poblacion[0]; for(i=0; i<POBLACION; i++) if(best.aptitud > poblacion[i].aptitud) best = poblacion[i]; return best; } void AG (void) { Individuo * seleccion, * poblacion = generarPoblacion(); Individuo best; int generacion = 0; double x, y; do { seleccion = seleccionTorneos(poblacion); cruzarSeleccion(seleccion); seleccion[POBLACION-1] = elite(poblacion); free(poblacion); poblacion = seleccion; generacion++; } while (elite(poblacion).aptitud > pow(10,-2)); best = elite(poblacion); free(poblacion); decoder(&x, &y, best.genotipo); printf ("*************************************\n"); printf ("* FIN DEL ALGORITMO *\n");

printf ("*************************************\n"); printf (" - En el punto (%.5f, %.5f)\n", x, y);


18

printf (" - Su fenotipo es %.5f\n", best.aptitud); printf (" - Es la generacion numero %i\n", generacion); printf ("*************************************\n"); } void imprimePoblacion (Individuo * pob) { int i; double x, y; for(i=0;i<POBLACION;i++) { decoder(&x, &y, pob[i].genotipo); printf ("INDIVIDUO NUMERO %i \t", i+1); printf ("(%f,", x); printf (" %f)", y); printf ("\tAptitud = %.20f\n", pob[i].aptitud); } } void imprimeGenotipo (Individuo x) { int i; for(i=0; i<LONG_COD; i++) printf ("%i ", x.genotipo[i]); printf ("\n"); } void generarGraficoGeneracional() { FILE *f; int generacion, j; double media; Individuo *seleccion, *poblacion = generarPoblacion(); f=fopen("Puntos.dat", "at"); fprintf (f, "\n0 %.40f\n", elite(poblacion).aptitud); for(generacion=1; generacion<2000;) {
19

media = 0; for(j=0; j<10; j++, generacion++) { seleccion = seleccionTorneos(poblacion); cruzarSeleccion(seleccion); seleccion[POBLACION-1] = elite(poblacion); media += elite(poblacion).aptitud; free(poblacion); poblacion = seleccion; } media /= j; fprintf (f, "%i %.40f\n", generacion, media); } fprintf (f, "\n\n"); fclose(f); }

20

ALGORITMOS GENTICOS PARALELOS


Un programa es paralelo si en cualquier momento de su ejecucin puede ejecutar ms de un proceso. Para crear programas paralelos eficientes hay que poder crear, destruir y especificar procesos as como la interaccin entre ellos. Bsicamente existen tres formas de paralelizar un programa: Paralelizacin de grano fino: la paralelizacin del programa se realiza a nivel de instruccin. Cada procesador hace una parte de cada paso del algoritmo (seleccin, cruce y mutacin) sobre la poblacin comn. Paralelizacin de grano medio: los programas se paralelizan a nivel de bucle. Esta paralelizacin se realiza habitualmente de una forma automtica en los compiladores. Paralelizacin de grano grueso: se basan en la descomposicin del dominio de datos entre los procesadores, siendo cada uno de ellos el responsable de realizar los clculos sobre sus datos locales.

La paralelizacin de grano grueso tiene como atractivo la portabilidad, ya que se adapta perfectamente tanto a multiprocesadores de memoria distribuida como de memoria compartida. Este tipo de paralelizacin se puede a su vez realizar siguiendo tres estilos distintos de programacin: paralelismo en datos, programacin por paso de mensajes y programacin por paso de datos. Paralelismo en datos: El compilador se encarga de la distribucin de los datos guiado por un conjunto de directivas que introduce el programador. Estas directivas hacen que cuando se compila el programa las funciones se distribuyan entre los procesadores disponibles. Como principal ventaja presenta su facilidad de programacin. Los lenguajes de paralelismo de datos mas utilizados son el estndar HPF (High Performance Fortran) y el OpenMP. Programacin por paso de mensajes: El mtodo ms utilizado para programar sistemas de memoria distribuida es el paso de mensajes o alguna variante del mismo. La forma ms bsica consiste en que los procesos coordinan sus actividades mediante el envo y la recepcin de mensajes. Las libreras ms utilizadas son por este orden la estndar MPI (Message Passing Interface) y PVM (Parallel Virtual Machine). 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
21

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. la eficiencia de los AG para encontrar una solucin optima, est determinada por el tamao de la poblacin. Por lo tanto, una poblacin grande requiere de ms 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 ms espacio de almacenamiento, sino tambin con el uso de ellos se podrn producir y evaluar ms soluciones en una cantidad de tiempo ms 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. 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 cmputo 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 cmputo en un AG se gasta en la funcin 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 est trabajando.

22

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 ptimo diferente. El operador de migracin permite extraer de las diferentes subpoblaciones las buenas caractersticas, para luego mezclarlas.

SEGN EL LIBRO DE STENDER (1993) En este apartado se introducirn tres maneras diferentes de explotar el paralelismo de los Algoritmos Genticos, por medio de los denominados modelos de islas. Para una profundizacin sobre el tema puede consultarse Stender (1993). Modelos de islas. La idea bsica consiste en dividir la poblacin total en varias sub- poblaciones en cada una de las cuales se lleva a cabo un Algoritmo Gentico. Cada cierto nmero de generaciones, se efecta un intercambio de informacin entre las sub- poblaciones, proceso que se denomina emigracin. La introduccin de la emigracin hace que los modelos de islas sean capaces de explotar las diferencias entre las diversas subpoblaciones, obtenindose de esta manera una fuente de diversidad gentica. Cada subpopulacin es una isla", definindose un procedimiento por medio del cual se mueve el material gentico de una isla" a otra. La determinacin de la tasa de migracin, es un asunto de capital importancia, ya que de ella puede depender la convergencia prematura de la bsqueda. Se pueden distinguir diferentes modelos de islas en funcin de la comunicacin entre las subpoblaciones. Algunas comunicaciones tpicas son las siguientes: Comunicacin en estrella, en la cual existe una subpoblacin que es seleccionada como maestra (aquella que tiene mejor media en el valor de la funcin objetivo), siendo las dems consideradas como esclavas. Todas las subpoblaciones esclavas mandan sus h1 mejores individuos (h1 > 1) a la subpoblacin maestra la cual a su vez manda sus h2 mejores individuos (h2 >1) a cada una de las subpoblaciones esclavas. Vase Figura siguiente:

23

Figura1: Algoritmo Gentico Paralelo. Modelo de Islas. Comunicacin en estrella Comunicacin en red, en la cual no existe una jerarqua entre las subpoblaciones, mandando todas y cada una de ellas sus h3 (h3 1) mejores individuos al resto de las subpoblaciones. Vase Figura 2. Comunicacin en anillo, en la cual cada subpoblacin enva sus h4 mejores individuos (h4 >1), a una poblacin vecina, efectundose la migracin en un nico sentido de lujo. Vase Figura 3.

Figura: Algoritmo Gentico Paralelo. Modelo de Islas. Comunicacin en red.

24

Figura: Algoritmo Gentico Paralelo. Modelo de Islas. Comunicacin en anillo

El modelo de islas ha sido utilizado por varios autores (Whitley y Starkweather, 1990; Gorges-Schleuter, 1989; Tanese, 1987).

Comparacin con otros mtodos de optimizacin


Algoritmo Gentico.

Los Algoritmos Genticos (AGs) 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 ms fuertes, postulados por Darwin. Por imitacin de este proceso, los Algoritmos Genticos 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. Un algoritmo gentico consiste en una funcin matemtica o una rutina de software que toma como entradas a los ejemplares y retorna como salidas cules de ellos deben generar descendencia para la nueva generacin. Versiones ms complejas de algoritmos genticos generan un ciclo iterativo que directamente toma a la especie (el total de los ejemplares) y crea una nueva generacin que reemplaza a la antigua una cantidad de veces determinada por su propio diseo. Una de sus caractersticas principales es la de ir perfeccionando su propia heurstica en el proceso de ejecucin, por lo que no requiere largos perodos de entrenamiento especializado por parte del ser humano, principal defecto de otros mtodos para solucionar problemas, como los Sistemas Expertos.

25

Algoritmos Genticos y Matemticos

Existen problemas de optimizacin que pueden ser resueltos por la implementacin de un algoritmo tradicional. En este caso lo ms conveniente es utilizarlo. Por ejemplo: Si tenemos la funcin "Es el doble de", sta puede ser interpretada como: Ecuacin 1 ( ) * +

Esto tambin es vlido para funciones booleanas (retornan un valor de Verdadero o Falso). Por ejemplo la funcin "Es mayor que", puede ser interpretada como Ecuacin 2 ( ) * +

Para resolver un problema que requiera como solucin saber solamente cual nmero es ms grande, resulta ms eficaz utilizar el algoritmo matemtico directamente. Sin embargo, stos no son aplicables a problemas que posean algunas de estas caractersticas: La funcin representativa del problema no es continua. En este caso el mismo no es computable. Los algoritmos genticos pueden trabajar con todo tipo de funciones ya que encontrarn un mnimo aceptable si no es posible encontrar el ptimo. La funcin representativa es dinmica: La relacin entre las variable cambia dependiendo de los valores que tomen las mismas. Esta relacin puede ser advertida o no. Las reglas del tipo "X es igual a Y si el valor de X es chico; X es 1.5 de Y si el valor de X es grande No se sabe que pasa para valores medios de X" No pueden ser convertidas en un algoritmo algebraico ya que existen valores que se desconocen. A diferencia de un algoritmo tradicional, un algoritmo gentico puede ser diseado para trabajar bajo estas condiciones.

26

Algoritmos Genticos y Mtodos Enumerativos

Existe la posibilidad terica de encontrar soluciones a problemas a optimizacin enumerando todas las soluciones posibles para todos los casos y posteriormente buscando la misma en la base de datos resultante. Los problemas se limitan entonces a un sistema de bsqueda eficiente del caso concreto. Por ejemplo los libros con tablas de logaritmos tradicionales constan de una larga serie de clculos para todos los valores usuales. La solucin consiste simplemente en buscar en la lista el nmero decimal y retornar el logaritmo dado. La memorizacin de las tablas de multiplicar que se ensean a los nios es otro ejemplo usual. Se espera que ante la pregunta Cunto es siete por cinco? los nios respondan instantneamente "35" sin tener que estar calculando mentalmente la multiplicacin. Este mtodo es factible siempre que el nmero de valores sea manejable. De otra manera el simple clculo de los mismos se vuelve imposible. Ejemplo: Generar una tabla que contenga todas las movidas de todos los partidos posibles de un juego de damas resultara imposible de hacer en la prctica. La "memorizacin" de una serie de datos no es otra cosa que la construccin en la memoria del equivalente a una base de datos en donde se busca la pregunta y se encuentra automticamente la respuesta. Los algoritmos genticos usan heurstica para la resolucin de problemas, lo cual limita drsticamente el nmero de datos a utilizar.

Algoritmos Genticos y Sistemas Expertos

Un Sistema Experto es un programa de computadora que encuentra soluciones a problemas del tipo condicional con la estructura: Si ocurren los hechos A, B, C, D cual sera el valor del suceso E Ejemplo: Si un anlisis mdico detecta los sntomas A, B, C y D en un paciente, Cul ser la enfermedad del sujeto? Ejemplo: Si el anlisis geolgico de una capa de suelo detecta la presencia de los compuestos qumicos A, B, C y D Es factible que exista petrleo en la misma? Si bien existen en la literatura ejemplos de la utilidad de sta tcnica, las reglas deben ser provistas por un especialista (o varios) en el tema. Por ende, se
27

requiere que los conocimientos estn disponibles, que sean estructurados o factibles de ser estructurados (convertidos a reglas heursticas) y que los hechos de la realidad sean relativamente estticos, es decir que las causas para arribar a una determinada conclusin no cambien, ya que cada vez que esto sucede, los expertos deben reelaborar las reglas , lo cual dificulta y retarda considerablemente la operatoria del sistema. Las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto pueden observarse en el cuadro GA1. Los Sistemas Expertos tuvieron su apogeo en la dcada de los 80`s, aproximadamente de 1979 a 1985. En esa poca se los lleg a considerar verdaderas panaceas que resolveran muchos de los problemas cotidianos del hombre. Incluso se formaron en ese entonces varias compaas con el objeto especfico de realizarlos y comercializarlos. Algunos fueron exitosos y funcionaron bien, pero las dificultades planteadas anteriormente no tardaron en aparecer. En particular: Existen temas en los cuales el conocimiento no es esttico, sino que la aparicin de nueva informacin altera las pautas o reglas de inferencia de los resultados. La necesidad permanentes de reevaluar las reglas por medio de expertos humanos lleva al sistema a una operatoria lenta y burocrtica. Cada conocimiento nuevo implica re entrenar manualmente el sistema. Los Sistemas Expertos demostraron no ser tiles en este campo. Existen temas en los cuales la interrelacin de ciertas variables no es conocida. Si la informacin disponible de cierto asunto es limitada, y no se conoce el comportamiento de algunas de sus variables, el Sistema experto tendr grandes dificultades de programarse ya que sus reglas sern imprecisas. El Cuadro GA1 muestra las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto Condiciones bsicas necesarias para la implementacin efectiva de un sistema experto

28

Cuadro: GA1 Los expertos no siempre estructuran su conocimiento. Existen numerosas personas que razonan por mtodos empricos. Esto hace que les resulte muy difcil traducir sus pensamientos o su mtodo deductivo a reglas que la computadora pueda interpretar. Un Sistema experto no podr llegar a resultados valederos cuando los especialistas en un tema no puedan tener estructurados sus pensamientos. Por ejemplo: supngase que se quiera programar un sistema experto para calificar obras de arte. Difcilmente se encontrar un crtico de arte que pueda estructurar las razones por las cuales considera "buena" o "mala" a una obra de arte. En general las palabras que pueda decir resultarn a los odos del programador del Sistema como una serie de subjetividades imposibles de sistematizar. Luego de observar todo esto, se empez a considerar a los Sistemas expertos como aptos solamente para entornos reducidos y con condiciones de ejecucin acotadas. La idea del Sistema Experto como "resolvedor universal de problemas" qued sepultada. Si bien la investigacin bsica de los algoritmos genticos es contempornea a la de los sistemas expertos, la renovada importancia que se les dio en el mbito cientfico se produjo en paralelo a la desvalorizacin que sufrieron estos ltimos.
29

Los algoritmos genticos se revalorizaron ya que poseen las siguientes ventajas competitivas: Solo necesitan asesoramiento del experto cuando se agregan o suprimen variables al modelo. Los Sistemas Expertos requieren la presencia del mismo ante cada modificacin del entorno. Los algoritmos genticos solo requieren el asesoramiento del experto para identificar las variables pertinentes, aunque no es necesario que stos definan sus valores ni sus relaciones (las reglas) inciales o finales. Los Sistemas Expertos solo trabajan con las reglas y valores que les dictan los seres humanos.

Algoritmos Genticos y Redes Neuronales

Una red neuronal es el intento de poder realizar una simulacin computacional del comportamiento de partes del cerebro humano mediante la rplica en pequea escala de los patrones que ste desempea para la formacin de resultados a partir de los sucesos percibidos. El cerebro consta de unidades llamadas neuronas, las cuales estn conectadas entre s formando una red (de ah la denominacin "red neuronal") Concretamente, se trata de poder analizar y reproducir el mecanismo de aprendizaje de sucesos que poseen los animales ms evolucionados. La red simula grupos de neuronas, llamados " capas " las cuales estn relacionadas unas con otras. Los datos se introducen en la primera capa, llamada "capa de entradas" Cada capa transfiere la informacin a sus vecinas., teniendo un peso o ponderacin para los valores, lo que va modificando los mismos en su paso a travs de la red Cuando los datos llegan a la ltima de las capas, llamada "capa de salida" el valor resultante es tomado como el resultado de la red. La red puede ser entrenada para diversos usos, entre ellos como mecanismo de optimizacin. En este sentido, se puede expresar que seran un modelo alternativo competitivo con los algoritmos genticos, si se las programara para este fin. En rigor de verdades, la literatura sugiere que se podran hacer modelos mixtos o hbridos en donde se combinen las ventajas de las redes neuronales y los algoritmos genticos, aunque hay muy poco material disponible en este campo. Tal vez esto se deba al hecho que los GA y el estudio de las redes forman dos ramas o escuelas separadas dentro de la inteligencia artificial, por lo que existe una preferencia en los investigadores en perfeccionar alguno de los dos modelos antes que tratar de unirlos.

30

Tcnicas de bsqueda.

31

OPERACIONES DE LOS ALGORITMOS GENTICOS.


Tras parametrizar el problema en una serie de variables, se codifican en un cromosoma. Todos los operadores utilizados por un algoritmo gentico se aplicarn sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo gentico va implcito el mtodo para resolver el problema. Hay que tener en cuenta que un algoritmo gentico es independiente del problema, lo cual lo hace un algoritmo robusto, al resultar til en cualquier mbito de accin, pero a la vez dbil, pues no est especializado en ninguno. Las soluciones codificadas en un cromosoma compiten para ver cul constituye la mejor solucin (aunque no necesariamente la mejor de todas las soluciones posibles). El ambiente, constituido por las otras soluciones, ejercer una presin selectiva sobre la poblacin, de forma que slo los mejor adaptados (aquellos que resuelvan mejor el problema) sobrevivan o leguen su material gentico a las siguientes generaciones, igual que en la evolucin de las especies. La diversidad gentica se introduce mediante mutaciones y reproduccin sexual. Por lo tanto, un algoritmo gentico consiste en hallar de qu parmetros depende el problema, codificarlos en un cromosoma, y aplicar los mtodos de la evolucin: seleccin y reproduccin sexual con intercambio de informacin y mutaciones que generen diversidad.
Codificacin de las Variables

Los cromosomas de alguna manera debern contener informacin acerca de la solucin que representa. La codificacin se puede realizar de varias formas. La ms utilizada es mediante una cadena de nmeros binarios (1s o 0s). Pero tambin se puede realizar la codificacin mediante nmeros enteros o incluso cadenas de palabras. La eleccin de la codificacin depender tambin del problema a resolver pues puede darse la situacin en la que la resolucin de un caso sea ms ptimo el uso de una codificacin basada en nmeros reales mientras que esa codificacin complique la solucin en otro caso. As pues hay que estudiar la codificacin ms ptima segn el caso que se est estudiando.
Codificacin Binaria

Es la codificacin ms extendida debido a que los primeros algoritmos genticos utilizaron este tipo de codificacin. En este caso, cada cromosoma es
32

una cadena de bits (0 o 1). A su favor tiene que puede abarcar muchos cromosomas incluso con un nmero reducido de genes. Sin embargo por otro lado esta opcin no es la idnea para muchos problemas y en algunas ocasiones es necesario realizar correcciones despus de la reproduccin y/o mutacin. Este tipo de codificacin se utiliza por ejemplo en el problema de la mochila. En este problema tenemos una mochila con una cierta capacidad y una serie de objetos que queremos introducir. Estos objetos tendrn un peso y un beneficio o un valor para nosotros. La capacidad de la mochila es inferior a la suma del peso de todos los objetos. El objetivo es conseguir que la suma de los beneficios o valores sea mxima y que la suma de los pesos no supere el de la capacidad de la mochila.
Codificacin Numrica

En este tipo de codificacin se utilizan cadenas de nmeros que representan un nmero en una secuencia. Se utiliza en problemas en los que hay que ordenar algo, donde resulta muy til. En algunos casos tambin es necesario como en el caso anterior realizar correcciones tras relaciones o mutaciones.
Codificacin por Valor Directo

Este tipo de codificacin ser el utilizado en caso de resolucin de problemas en el que se requiera del uso de valores de cifrado complicado como podra ser en el uso de nmeros reales, cuya codificacin con nmeros binarios sera muy complejo. En codificacin por valor directo cada cromosoma es una cadena de valores relacionados con el problema a estudiar, pudiendo ser desde nmeros decimales, cadenas de caracteres o incluso una combinacin de varios de ellos. Su aplicacin es muy buena en ciertos problemas concretos. Por el contrario para la utilizacin de esta codificacin, normalmente es necesario desarrollar nuevas tcnicas de reproduccin y mutacin especificas hacia la resolucin del problema. Una aplicacin de esta codificacin se da en la resolucin de problemas para la bsqueda de pesos para las redes neuronales. En este asunto se trata de encontrar el peso de las neuronas para ciertas entradas y as entrenar a la red para obtener la salida deseada. El valor del peso de las entradas vendr representado en el propio cromosoma con dicha codificacin. Figura 3. Esquema red neuronal

33

Codificacin en rbol

Este tipo de codificacin se utiliza principalmente en el desarrollo de programas o expresiones para programacin gentica. Cada cromosoma ser en este caso un rbol con ciertos objetos. En este mtodo, los cambios aleatorios pueden generarse cambiando el operador, alterando el valor de un cierto nodo del rbol o simplemente sustituyendo un subrbol por otro.

Seleccin

Como ya hemos visto anteriormente es necesario hacer una seleccin con los individuos ms capacitados para que stos sean los que se reproduzcan con ms probabilidad de acuerdo con la teora de Darwin en la cual los ms capacitados son los que deben sobrevivir y crear una nueva descendencia ms facultada. Por lo tanto una vez evaluado cada cromosoma y obtenida su puntuacin, se tiene que crear la nueva poblacin teniendo en cuenta que los buenos rasgos de los mejores se transmitan a sta. Esta seleccin se puede realizar de varias formas como se ver a continuacin.
Seleccin por Rueda de Ruleta

Se crea para esta seleccin una ruleta con los cromosomas presentes en una generacin. Cada cromosoma tendr una parte de esa ruleta mayor o menor en funcin a la puntuacin que tenga cada uno. Se hace girar la ruleta y se seleccin el cromosoma en el que se para la ruleta. Obviamente el cromosoma con mayor puntuacin saldr con mayor probabilidad. En caso de que las probabilidades difieran mucho, este mtodo de seleccin dar problemas puesto que si un cromosoma tiene un 90% de posibilidades de ser seleccionado, el resto apenas saldr lo que reducira la diversidad gentica.
Seleccin por Rango

En este mtodo a cada cromosoma se le asigna un rango numrico basado en su aptitud y la seleccin se realiza en base a este ranking. Vemos como en este ltimo caso se va a producir una variedad gentica mucho ms rica que en el primer caso. El problema de esta seleccin es que la
34

convergencia puede ser ms lenta ya que no existe tanta diferencia entre el mejor cromosoma y el resto como ocurra antes.
Seleccin Elitista

En ciertas ocasiones puede suceder que tras el cruce y la mutacin, perdamos el cromosoma con mejor adaptacin. Este mtodo de seleccin copia el mejor cromosoma o alguno de los mejores en la nueva poblacin. El resto se realiza de la misma forma que hemos visto anteriormente. El elitismo puede mejorar el funcionamiento de los algoritmos genticos al evitar que se pierda la mejor solucin. Una variacin del elitismo es que el mejor cromosoma solo se copie a la siguiente generacin en caso de que tras una reproduccin/mutacin no se haya generado un cromosoma mejor.

Seleccin por Estado Estacionario

La descendencia de los individuos seleccionados en cada generacin vuelve a la poblacin gentica preexistente, reemplazando a algunos de los miembros menos aptos de la anterior generacin. Se conservan algunos individuos entre generaciones.
Seleccin por Torneo

Se escogen de forma aleatoria un nmero de individuos de la poblacin, y el que tiene puntuacin mayor se reproduce, sustituyendo su descendencia al que tiene menor puntuacin.
Seleccin Escalada

Al incrementarse la aptitud media de la poblacin, la fuerza de la presin selectiva tambin aumenta y la funcin de aptitud se hace ms discriminadora. Este mtodo puede ser til para seleccionar ms tarde, cuando todos los individuos tengan una aptitud relativamente alta y slo les distingan pequeas diferencias en la aptitud.
Seleccin Jerrquica

En esta seleccin, los individuos atraviesan mltiples rondas de seleccin en cada generacin. Las evaluaciones de los primeros niveles son ms rpidas y menos discriminatorias, mientras que los que sobreviven hasta niveles ms altos son evaluados ms rigurosamente. La ventaja de este mtodo es que
35

reduce el tiempo total de clculo al utilizar una evaluacin ms rpida y menos selectiva para eliminar a la mayora de los individuos que se muestran poco o nada prometedores, y sometiendo a una evaluacin de aptitud ms rigurosa y computacionalmente ms costosa slo a los que sobreviven a esta prueba inicial.
Otras Selecciones

Existen otras tcnicas de seleccin que simplemente se comentarn a continuacin. Una de ellas es la seleccin por prueba de aptitud en las que los cromosomas con ms aptitud tienen ms posibilidad de ser seleccionados pero no la certeza. La seleccin generacional en la que ningn miembro de la poblacin anterior se encuentra en la nueva.
Reproduccin o Crossover

Una vez se realiza la seleccin de los cromosomas se procede a realizar la reproduccin o cruce entre dos de estos cromosomas Ms concretamente, el crossover consiste en el intercambio de material gentico entre dos cromosomas. El objetivo del cruce es conseguir que el descendiente mejore la aptitud de sus padres. Para aplicar el cruce habr que seleccionar con anterioridad dos individuos de la poblacin con una de las diversas tcnicas de seleccin que hemos mencionado en el punto anterior. Adems esta seleccin puede elegir el mismo padre para un descendiente. Esto no es ningn problema pues se asegura la perpetuacin del cromosoma ms dominante pero si este cruce se produjese con mucha frecuencia podra acarrear consecuencias adversas en caso de que ese cromosoma dominante presente algunos genes no deseados. Hay diferentes formas de realizar los cruces para cada codificacin siendo algunas tcnicas aplicables indistintamente a las distintas codificaciones como veremos a continuacin.
Crossover 1 Punto

Los dos cromosomas padres se cortan por un punto. Se copia la informacin gentica de uno de los padres desde el inicio hasta el punto de cruce y el resto se copia del otro progenitor. Es una de las formas clsicas de crossover.

36

Crossover 2 Puntos

Se trata de la misma filosofa que en el caso anterior peo en este caso los padres se cortan por dos puntos. Se copiar al descendiente los genes de un cromosoma progenitor desde el principio hasta el primer punto de cruce, los genes del otro progenitor desde el primer punto de cruce hasta el segundo y del segundo punto de cruce hasta el final se copiar del otro progenitor.
Crossover Uniforme

Cada gen del descendiente se obtiene de cualquiera de los padres de forma aleatoria. Una opcin es generar un nmero aleatorio. Si este nmero supera un cierto umbral se elegir un padre determinado y si no lo supera se elige al otro. Directo. Otra opcin es seleccionar una mscara. En caso de que el bit correspondiente a la mscara est a 1, se copia el gen de un progenitor y en caso de que est a 0 se copia el gen del otro progenitor.
Crossover Aritmtico

Los progenitores se re combinan segn algn operador aritmtico para generar su descendiente.
utacin

Tras el cruce, tiene lugar la mutacin. Si nos referimos en trminos de evolucin, la mutacin se manifiesta de forma extraordinaria, nada comn. Las mutaciones suelen en promedio ser beneficiosas pues contribuyen a la diversidad gentica de la especie. Adems previenen a las soluciones de la poblacin de verse limitadas por un ptimo local. Por lo tanto la mutacin consiste en modificar ciertos genes de forma aleatoria atendiendo a la probabilidad de mutacin establecida con anterioridad. La mutacin depende de la codificacin y de la reproduccin. Si se abusa de la mutacin podemos caer en el uso del algoritmo gentico como una simple bsqueda aleatoria. Por lo tanto antes de aumentar las mutaciones, conviene estudiar otras soluciones que aporten diversidad a la poblacin como podra ser el aumento del tamao de la poblacin o garantizar la aleatoriedad de la poblacin inicial. Para el caso de una codificacin binaria, la mutacin consiste simplemente en la inversin del gen mutado que corresponder con un bit. En el caso de una codificacin numrica, la mutacin podra consistir en sustituir un nmero por otro o intercambiar un nmero por otro que est en otra posicin del
37

cromosoma. En el caso de codificacin por valor directo en el que por ejemplo usemos nmeros reales, la mutacin puede consistir simplemente en modificar el valor en unos decimales. Por ltimo, en una codificacin en rbol, la mutacin podra radicar en el cambio de operador, de un nmero o incluso en la mutacin de una rama entera.

PROBLEMA DEL VIAJERO TSP


Temas

1. 2. 3. 4.

Definicin del problema Heurstica de construccin para el tsp. Optimizacin de rutas . Ejemplo.

DEFINICION DEL PROBLEMA

38

Dado un deposito y n clientes , encontrar la ruta que comienza y termina en el deposito , que visita cada cliente una nica vez y cuya longitud es mnima . Un vehculo Sin restricciones de capacidad Minimizar distancia . Sin ventanas de tiempo. Sin restricciones de compatibilidad. Sin reglas de otro tipo. En un grafo G con pesos se pretende encontrar un ciclo que pase por todos los vrtices de forma que la suma de los pesos de las aristas escogidas para formar el ciclo sea lo menor posible. Ruta mas corta Un grafo con pesos es un grafo en el cual se asignan valores a las aristas y que la longitud de un camino en un grafo con pesos es la suma de los pesos de las aristas en el camino. Con frecuencia se desea determinar la ruta mas corta entre dos vrtices dados. Dijkstra escribi el algoritmo que resuelve este problema. Algoritmo de Dijkstra Suponemos que los pesos son nmeros positivos. Se desea determinar el camino mas corto de a hasta z. El grafo es conexo. Sea L(v) la etiqueta del vrtice v. En algn momento algunos vrtices tienen etiquetas temporales y otros permanentes. Sea T el conjunto de tienen etiquetas temporales. En principio todos los vrtices tienen etiquetas temporales. En cada iteracin el algoritmo modifica el estado de una etiqueta de temporal a permanente. El algoritmo concluye cuando z recibe una etiqueta permanente, L(z) proporciona la longitud mnima de a hasta z. El peso de la arista (i,j) es w(i,j) A las ciudades se les llaman nodos y a los caminos entre estas ciudades se le llama arcos.

39

A las ciudades se les llaman nodos y a los caminos entre estas ciudades se le llama arco.

Arco dirigido

Arco no dirigido

HEURSTICA DE CONSTRUCCIN PARA EL TSP.

40

APLICACIONES Acustica .- Disenar sala de conciertos optimas con propiedades acusticas

Inteligencia Aero Espacial .- Para el diseno de la forma de la ala de un avion supersonico . Mercado Financiero .- Predicir al rendimiento futuro de 1600 acciones ofertadas publicamente . Ejercito .- Utilizacion de algoritmos geneticos para planes tacticos para las batallas militares. Robtica Una aplicacin del Problema del Vendedor Viajero tiene que ver con la resolucin de problemas de fabricacin de mquinas que realizan trabajos repetitivos y de alta precisin. Por ejemplo, minimizar la cantidad de desplazamientos que la mquina debe realizar para perforar una plancha o en una tarjeta de circuito integrado. Cada desplazamiento posee un costo, por lo que se busca que la mquina realice el menor nmero de desplazamientos posibles.

41

reas de logstica de Transporte

Una de las aplicaciones del Problema del Vendedor Viajero es en logstica de transporte. En diversos tipos de situaciones interesa saber la ruta mnima desde un punto de origen, pasando por puntos conocidos una vez y que finalice en el origen. Por ejemplo un sistema de despacho, donde la planificacin de la ruta de los vehculos de la empresa busca minimizar el consumo de combustible y que el tiempo de reparto de sus productos se produzca lo antes posible.

OPTIMIZADOR DE RUTAS

Consiste en visitar un conjunto dado de lugares pasando por cada uno de ellos una nica vez y recorriendo la menor distantacia posible. Aplicacin optimizador de rutas que encuentra el camino mas corto entre un punto de inicio y un punto final de una determinada cuidad. Planificador de ruta este es una aplicacin que utiliza un algoritmo gentico para encontrar un camino mas corto entre un punto incial y un punto final de un recorrido de una determinada ciudad para el ejemplo crearemos una ciudad.

42

EJEMPLO DE LA RUTA DE LA RUTA MAS CORTA

RECORRIDO DE UN PUNTO DE INICIO A UN PUNTO FINAL DE UNA CIUDAD

43

Contenido
ALGORITMOS GENETICOS ............................................................................................................. 1 POR QU UTILIZAR ALGORITMOS GENTICOS EN LA OPTIMIZACIN? .................................. 2 VENTAJAS DE LOS ALGORITMOSGENTICOS ............................................................................ 2 DESVENTAJAS DE LOS ALGORITMOS GENETICOS ..................................................................... 3 El Algoritmo Gentico Simple ....................................................................................................... 4 Anatoma de un algoritmo gentico simple .............................................................................. 5 Codificacin ........................................................................................................................... 5 Ejemplo.................................................................................................................................. 8 Funcionamiento .................................................................................................................. 8 Representacin..................................................................................................................... 10 Algoritmo. ........................................................................................................................... 11 Operadores genticos. ........................................................................................................ 11 Seleccin ........................................................................................................................... 11 Reproduccin .................................................................................................................... 12 Cruce .................................................................................................................................. 12 Mutacin............................................................................................................................. 13 EXTENSIN Y MODELO DE ALGORITMO SIMPLE .................................................................... 14 ALGORITMOS GENTICOS PARALELOS.................................................................................... 21 Comparacin con otros mtodos de optimizacin ................................................................. 25 Algoritmo Gentico. ............................................................................................................ 25 Algoritmos Genticos y Matemticos ............................................................................ 26 Algoritmos Genticos y Mtodos Enumerativos .......................................................... 27 Algoritmos Genticos y Sistemas Expertos ................................................................. 27 Algoritmos Genticos y Redes Neuronales.................................................................. 30 OPERACIONES DE LOS ALGORITMOS GENTICOS. .................................................................. 32 Codificacin de las Variables ............................................................................................... 32 Codificacin Binaria ............................................................................................................. 32 Codificacin Numrica ........................................................................................................ 33 Codificacin por Valor Directo ............................................................................................ 33 Codificacin en rbol .......................................................................................................... 34 Seleccin.............................................................................................................................. 34

44

Seleccin por Rueda de Ruleta............................................................................................ 34 Seleccin por Rango ............................................................................................................ 34 Seleccin Elitista .................................................................................................................. 35 Seleccin por Estado Estacionario ...................................................................................... 35 Seleccin por Torneo........................................................................................................... 35 Seleccin Escalada ............................................................................................................... 35 Seleccin Jerrquica ............................................................................................................ 35 Otras Selecciones ................................................................................................................ 36 Reproduccin o Crossover .................................................................................................. 36 Crossover 1 Punto ............................................................................................................... 36 Crossover 2 Puntos.............................................................................................................. 37 Crossover Uniforme ............................................................................................................ 37 Crossover Aritmtico ........................................................................................................... 37 utacin................................................................................................................................. 37 PROBLEMA DEL VIAJERO TSP ................................................................................................. 38 Temas .................................................................................................................................. 38 DEFINICION DEL PROBLEMA...................................................................................... 38

45

Vous aimerez peut-être aussi