Hist´oricamente, tres paradigmas desarrollados independientemente, conforman los AE: las Estrategias Evolutivas (EEs), la Programaci´on Evolutiva (PE) y los Algorit- mos Gen´eticos (AGs). En ocasiones, algunos autores a˜naden uno m´as: la Progra- maci´on Gen´etica (PG). Hoy en d´ıa, una literatura extraordinariamente abundante se puede encontrar sobre AE, adem´as de ser considerados como un dominio de inves- tigaci´on muy prol´ıfico y de enorme inter´es. A continuaci´on se describen los cuatro paradigmas.
Fu´e Rechenberg [154] quien introdujo la primera versi´on de EEs, concebida para la resoluci´on de problemas de optimizaci´on con par´ametros con valores reales. La versi´on original, creaba un solo hijo a partir de un solo padre, ambos rivalizaban por sobrevivir y el mejor de los dos se manten´ıa en la poblaci´on mientras que el otro era eliminado. Este tipo de estrategia era denominada (1+1)-EE y se caracterizaba por la ausencia del operador de cruce, y la utilizaci´on de la mutaci´on Gaussiana para asegurar la evoluci´on. Rechenberg propuso la regla 1/5 para la adaptaci´on de forma determin´ıstica de la desviaci´on st´andard de la mutaci´on (La raz´on entre mutaciones exitosas y el total de mutaciones ha de ser 1/5. Si es mayor, entonces se incrementa la desviaci´on est´andar. Si es menor se decrementa). De otra parte, B¨ack [5][7] propuso una regla de ´exito 1/7.
Esta primera versi´on de EE, sirvi´o de base a Schwefel [177][178], para formular las estrategias (µ + λ)-EE y (µ, λ)-EE (donde µ son los padres y λ los hijos), a˜nadiendo adem´as el operador de cruce tomado de los AGs. En la primera estrategia, Schwefel selecciona los mejores individuos entre los padres y los hijos, mientras que en la segunda, selecciona los mejores entre la poblaci´on de hijos. En las EEs, no s´olo evolucionan las variables del problema sino tambi´en los par´ametros propios de la t´ecnica (las desviaciones est´andar) lo que se conoce como auto-adaptaci´on.
Programaci´on Evolutiva.
La PE propuesta por L.J. Fogel [66], consiste b´asicamente en hacer evolucionar una poblaci´on de aut´omatas de estado finito, y es utilizada para la resoluci´on de problemas de predicci´on. La t´ecnica consiste en exponer una poblaci´on de aut´omatas de estado finito padres, a una secuencia de s´ımbolos (ambiente). A medida que cada s´ımbolo de entrada es presentado a los aut´omatas padres, se hace una predicci´on para determinar el s´ımbolo de salida, el cual es comparado con el siguiente s´ımbolo de entrada. La idea es que el aut´omata, pueda predecir la secuencia futura de s´ımbolos de entrada. La evaluaci´on de la aptitud de los individuos corresponde al n´umero de s´ımbolos predichos correctamente. Cada aut´omata padre de la poblaci´on genera un hijo por mutaci´on y los mejores individuos de entre padres e hijos son seleccionados para sobrevivir y pasar a la siguiente generaci´on.
La PE ha sido extendida por David. B. Fogel [64][65], para que puedan trabajar con variables reales, y donde la selecci´on determinista es reemplazada por un torneo estoc´astico.
Los AGs son probablemente la rama de los Algoritmos Evolutivos m´as conocida y utilizada en la resoluci´on de problemas de b´usqueda y optimizaci´on. Fueron desarro- llados por John Holland [97] a principios de los a˜nos 1960. La idea de su sistema era estudiar y dise˜nar, sistemas artificiales (o programas) que imitaran los procesos de adaptaci´on de los sistemas naturales [97][98]. Los AGs, fueron aplicados por primera vez por De Jong [58] en el a˜no 1975 a un problema de optimizaci´on param´etrica, aunque es a partir de finales de los 80, cuando se popularizan con la aparici´on del li- bro de referencia escrito por Golberg [85]. Un AG, se caracteriza por el hecho de hacer evolucionar poblaciones de individuos, aplicando los mismos m´etodos de la evoluci´on biol´ogica: selecci´on de individuos, reproducci´on sexual y mutaci´on.
B´asicamente el funcionamiento de un AG sigue el pseudoc´odigo mostrado en el algoritmo 1. Inicialmente se genera una poblaci´on aleatoria de individuos P(0). En cada generaci´on t, se eval´ua la aptitud de todos los individuos que componen la poblaci´on P(t). A continuaci´on y en base a la aptitud, se selecciona de P(t) un grupo P’(t) de padres (llamado grupo de reproducci´on) para la creaci´on de descendientes. Luego, aplicando alg´un operador de cruce (o recombinaci´on), los genes de los indivi- duos padres de P’(t) son cruzados para obtener la poblaci´on de descendientes P”(t). Por ´ultimo, mediante el operador mutaci´on los genes de los individuos de la poblaci´on P”(t) son perturbados y se obtiene la poblaci´on P”’(t). Nuevas poblaciones de in- dividuos van a continuaci´on a sucederse, hasta alcanzar el criterio de parada tmax.
Los AGs, a diferencia de la PE o las EEs, act´uan sobre conjuntos de individuos o soluciones (genotipo) codificadas en cromosomas cuya representaci´on tradicional es la binaria, y no sobre el fenotipo (la evaluaci´on de un genotipo particular). En general no es posible asegurar la convergencia de los AGs al conjunto de soluciones ´optimas y se demuestra [168], que los AGs requieren de elitismo (mantener intacto al mejor individuo de la poblaci´on en cada generaci´on) af´ın de converger al ´optimo.
Programaci´on Gen´etica.
Desarrollada por John R. Koza [118] [119], la PG evoluciona poblaciones de individuos que representan programas o aut´omatas, descritos mediante S-expresiones Lisp, las cuales tienen la ventaja de ser f´acilmente representadas en ´arboles. Inicialmente, se genera una poblaci´on aleatoria de programas y en cada iteraci´on del algoritmo se eval´ua la aptitud de cada programa. Luego se realiza una selecci´on en base a la aptitud y se aplican los operadores de cruce y mutaci´on para la creaci´on de una nueva poblaci´on. El principio es el mismo que el de un AG cl´asico, pero los operadores de cruce y mutaci´on son algo diferentes pues trabajan directamente sobre la estructura de ´arbol del programa. La PG ha sido utilizada en la resoluci´on de un gran n´umero de
como funciones lineales [147], planeaci´on de movimientos de robots [119], grafos [194], entre otros.
Algoritmo 1. Pseudoc´odigo b´asico de un AG
tmax; //Numero m´aximo de generaciones.
t=0;
Generaci´on de P(t); //se genera aleatoriamente la poblaci´on P(0). Mientras t ≤ tmax; //test para criterio de parada.
Evaluaci´on; //se eval´ua la aptitud de cada individuo de P(t). Selecci´on; //bas´andose en la aptitud calculada en la fase anterior,
se selecciona de P(t) una subpoblaci´on P’(t) de padres para la producci´on de descendientes.
Cruce; //se cruzan los genes de los padres de P’(t) para obtener P”(t).
Mutaci´on; //se perturban de forma estoc´astica los genes de los individuos de P”(t) para obtener P”’(t).
P(t+1)=P”’(t); t=t+1;
Fin Mientras;
Comparaci´on de paradigmas.
En los trabajos de Coello [33] y S. Esther Alonso [2], se hace una interesante compa- rativa entre paradigmas. La comparativa se muestra en la tabla 3.1 (tomada de [2] y donde la autora remarca tener en cuenta que la informaci´on se refiere a las versiones originales de los paradigmas, y por tanto existen variaciones en posteriores versiones como por ejemplo: los AG actuales tambi´en pueden trabajar en codificaci´on real).