Está en la página 1de 14

http://www.cs.us.es/~delia/sia/html98-99/pag-alumnos/web12/indice.

html

2. PROGRAMACIN GENTICA CLSICA.


2.1. Orgenes.
La Programacin Gentica (PG) es una materia de estudio bastante reciente, pese a que
podemos hallar la idea de su origen ya en los aos 50. Efectivamente, en esa dcada
Arthur Samuel plante la cuestin que ha llevado al desarrollo de la Computacin
Evolutiva: "Cmo pueden los ordenadores aprender a resolver problemas sin ser
explcitamente programados?"
La PG surgi como una evolucin de los Algoritmos Genticos (AGs). De forma
resumida, los AGs son una forma de aprendizaje basada en una evolucin simulada. Las
hiptesis se describen como cadenas de bits (cuya interpretacin depende de la
aplicacin), que van evolucionando siendo seleccionadas segn ciertos criterios.
Ya en la 1 Conferencia sobre Algoritmos Genticos, desarrollada en la Universidad de
Carnegie Mellon, podemos encontrar dos artculos que, sin usar explcitamente el
nombre de PG (que fue introducido por John R. Koza), pueden ser considerados como
precursores en la materia: "A Representation for the Adaptive Generation of Simple
Sequential Programs" [CRAM85] y "Using the Genetic Algorithm to Generate Lisp
Source Code to solve the Prisoners Dilemma" [FUJI87].
El primero de estos artculos plantea un sistema adaptativo para la generacin de
pequeos programas secuenciales. Para ello, hace uso de dos lenguajes: JB (que
representa los programas en forma de cadenas de nmeros) y TB (versin evolucionada
de JB, pero con estructura de rbol para representar programas). El objetivo principal
del artculo es conseguir una forma de representar programas que, por un lado, permita
la aplicacin de los operadores genticos clsicos (mutacin, cruce, inversin) y que,
por otro lado, produzca slo programas "bien formados", incluso cuando se apliquen
dichos operadores sobre los programas. No es importante que todos los programas que
se puedan obtener sean tiles (de eso ya se encargarn los criterios de seleccin): slo
importa que estn dentro del espacio de programas sintcticamente correctos.
La gran importancia de este artculo se halla en la constatacin de la importancia que
tiene la representacin de los programas para su manipulacin. Los problemas que
plantea el lenguaje JB pueden ser eliminados si se usa TB y su estructuracin en forma
de rboles. Este hecho, que en principio puede ser considerado poco relevante, ha
demostrado ser de gran utilidad en trabajos posteriores, y de hecho todo el material
actual que hay sobre PG se basa en la representacin arbrea.
El segundo artculo trata sobre la resolucin de un problema clsico: el dilema del
prisionero. En l, dos prisioneros son interrogados por separado. Cada uno debe decidir
si delatar o no al otro, y en funcin de la declaracin de ambos obtienen puntos. Si
ambos delatan al otro, obtienen cada uno 1 punto. Si ninguno delata al otro, obtienen

cada uno 3 puntos. Si uno delata y el otro no, el delator obtiene 4 puntos y el otro 0. Al
cabo de un nmero determinado de interrogatorios (rondas) el que obtenga ms puntos
gana. Este problema ha sido usado como modelo en multitud de situaciones, desde el
nivel de las relaciones personales hasta las negociaciones entre grandes corporaciones.
Desde el punto de vista del presente trabajo, el inters del artculo se centra en el
apartado dedicado a la representacin del conocimiento. En teora, el sistema debera ser
lo suficientemente flexible como para encontrar una solucin nica y novedosa, aunque
en la prctica suele ser necesario, e incluso deseable, proporcionar cierto tipo de
conocimiento sobre la solucin para agilizar el proceso de bsqueda. En el sistema de
Hicklin, por ejemplo, este conocimiento es representado en forma de programa,
generado por medio de una serie de producciones. El grado de flexibilidad del sistema y
el grado de conocimiento incorporado depender en cmo sean definidas dichas
producciones. Para el artculo, en concreto, se us un conjunto restringido de
expresiones LISP, que demostr ser de gran utilidad y funcionalidad. Aunque no sea
explcitamente mencionado en el artculo, podemos constatar nuevamente como la
forma de representacin (LISP, con su facilidad para trabajar con estructuras en forma
de rbol) es vital para conseguir resultados adecuados.
Sin embargo, el considerado "padre" de la PG es John R. Koza. l acu el trmino que
da ttulo a este trabajo con la publicacin del libro "Programacin Gentica" (1992).
Este libro es el que establece de modo formal las bases de la PG sobre la que se trabaja
hoy en da. Posteriormente, el mismo autor ha publicado "Programacin Gentica II"
(1994) y, muy recientemente, "Programacin Gentica III" (1999), que exploran nuevas
posibilidades para la PG.
2.2. Qu es la Programacin Gentica?
A lo largo del perodo de evolucin de los seres vivos, se han ido seleccionando
conductas que son adecuadas para la supervivencia. Las especies y los individuos que
sobreviven son aquellos que estn mejor adaptados al ambiente que les rodea. En la
lucha por sobrevivir, los individuos mejor adaptados sobreviven ms fcilmente y por
tanto pueden reproducirse y transferir a sus descendientes las cualidades beneficiosas
que les permitieron estar mejor adaptados, lo cual constituye el proceso de seleccin
natural explicado por Charles Darwin en su libro "El origen de las especies" (1859).
Todos aquellos rasgos que faciliten la supervivencia del individuo tendern a
mantenerse, mientras que lo que constituya una dificultad o debilidad para la adaptacin
tender a desaparecer, pues su poseedor no tendr oportunidad de legarlo a su
descendencia.
Segn [MITC97], la PG es "una forma de Computacin Evolutiva en la que los
individuos de la poblacin evolutiva son programas de ordenador en vez de cadenas de
bits". Al igual que en los AGs, la poblacin se selecciona siguiendo el principio
darwiniano ya explicado de supervivencia del ms fuerte. Los conceptos utilizados aqu
son los mismos que en AGs, para mayor informacin se recomienda visitar la pgina de
Algoritmos Genticos.
Como ya hemos comentado previamente, la representacin del conocimiento es de gran
importancia en la PG. En [KOZA92], por ejemplo, podemos encontrar un captulo
completo dedicado a ello. Generalmente, los programas manipulados en PG estn

representados por rboles que corresponderan al rbol parse del programa. Cada
llamada a funcin se representara por un nodo en el rbol, y los argumentos de la
funcin vendran dados por sus nodos descendientes. En la siguiente figura podemos ver
un ejemplo de esto:

En este caso, estamos representando por medio de un rbol la expresin 0,234*Z+X0,789 para su posterior utilizacin con PG. Para ello, deberemos definir previamente un
conjunto de terminales y primitivas que nos permitan aplicar la bsqueda evolutiva
sobre los programas que pueden ser descritos con dichos elementos.
De forma similar a los AGs, el algoritmo de PG mantiene una poblacin de individuos
(programas representados por rboles), que en cada iteracin producen una nueva
generacin por medio de seleccin, mutacin y cruce.
Las siguientes figuras muestran ejemplos de esta ltima operacin genticas aplicadas
sobre programas.
En la primera vemos los dos rboles que van a ser los padres en el cruce:

A continuacin vemos los subrboles que van a ser intercambiados en el cruce:

En la tercera vemos a los padres despojados de dichos subrboles para que sean
intercambiados:

La cuarta muestra los hijos generados con el intercambio de los subrboles anteriores:

En las pruebas realizadas por Koza y presentadas en [KOZA92], [KOZA94] y


[KOZA99], el 10% de la poblacin se mantena de una generacin a otra,
seleccionndola probabilsticamente segn su aptitud para resolver el problema
planteado. El resto de la nueva generacin se crea por cruce de pares de programas de la

generacin actual, seleccionados tambin de forma probabilstica, mientras que el


operador de mutacin no se utiliz.
2.3. Pasos previos.
Para la ejecucin de un algoritmo de PG es necesario, como ya hemos comentado,
definir previamente una serie de aspectos relativos al funcionamiento del propio
algoritmo.
En primer lugar, debemos definir el conjunto de terminales, esto es, las entradas del
programa que debe resolver nuestro problema.
Las funciones primitivas deben ser apropiadamente definidas: operadores aritmticos,
lgicos, de programacin, etc. El conjunto de terminales ms el conjunto de funciones
primitivas deben cumplir el criterio de suficiencia, esto es, deben ser capaces de
expresar la solucin del problema. Por otro lado, cualquier funcin primitiva debe
aceptar como argumento cualquier valor devuelto por cualquier funcin y cualquier
valor que pueda ser usado como terminal. Esto es lo que se denomina requisito de
clausura.
La medida de aptitud nos permite evaluar cmo de bien funciona cada programa de la
poblacin en el entorno del problema. Esta medida debe estar completamente definida,
debe ser capaz de evaluar cualquier programa de la poblacin.
Los parmetros de control de ejecucin son varios, aunque bsicamente establecen el
tamao de la poblacin inicial (4000), el nmero de generaciones (50), el tanto por
ciento de individuos que pasan directamente a la siguiente generacin (10%), etc.
Por ltimo, el criterio de finalizacin debe indicar cundo finalizar la ejecucin del
algoritmo de PG, lo cual puede ocurrir cuando transcurra el nmero de generaciones
predeterminadas, o bien hallemos el programa que sea "perfecto" segn la medida de
aptitud que hemos proporcionado. La designacin del resultado se hace generalmente
utilizando el criterio de "mejor hasta el momento", esto es, se elige el mejor programa
de todos los obtenidos hasta la finalizacin de la ejecucin.
El diagrama de flujo que muestra el funcionamiento del paradigma de la PG es el
siguiente:

2.4. Ejemplo: bloques.


El siguiente ejemplo, extrado de [KOZA92], es bastante ilustrativo sobre la forma en
que trabaja la programacin gentica

La tarea a desarrollar consiste en desarrollar un algoritmo general para apilar bloques en


una sola pila que forme la palabra "universal", independientemente de la configuracin
inicial de los bloques. Las acciones disponibles para manipular bloques permiten mover
un solo bloque cada vez (el bloque superior de la pila a la superficie de la mesa o un
bloque de la superficie de la mesa a la pila).
Tal y como indica [MITC97], en la mayora de las aplicaciones de PG la eleccin de la
representacin del problema tiene una importancia significativa en la facilidad para
solucionar el problema. En concreto, la que se sigui para este ejemplo usaba un
conjunto de tres terminales:
CS (Current Stack, "pila actual"), referida al nombre del bloque que se halla en la
cima de la pila, o F si no hay pila
TB (Top correct Block, "bloque superior correcto"), que hace referencia al bloque
superior de la pila tal que el y todos los que estn por debajo de l mismo estn en orden
correcto
NN (Next Necessary, "siguiente necesario"), que hace referencia al nombre del
siguiente bloque necesitado sobre TB en la pila para formar la palabra "universal", o F
si no se necesitan ms bloques.
Junto a este conjunto de terminales, se defini el lenguaje de programacin de la
aplicacin, que poseera las siguientes funciones primitivas:
(MS x) (Move to Stack), si el bloque x se halla en la mesa este operador mueve x a la
cima de la pila y devuelve el valor T. En otro caso, no hace nada y devuelve el valor F.
(MT x) (Move to Table), si el bloque x se halla en la pila, mueve el bloque que se
halle en la cima de la pila a la mesa y devuelve el valor T. En otro caso, devuelve el
valor F.
(EQ x y) (Equal), devuelve T si x es igual a y, F en otro caso.
(NOT x), devuelve T si x=F y F si x=T.

(DU x y) (Do Until), ejecuta la expresin x repetidamente hasta que la expresin y


sea T.
Para permitir al sistema evaluar la aptitud de cualquier programa, se suministr un
conjunto de 166 ejemplos de entrenamiento representando una extensa variedad de
configuraciones de bloques iniciales. La aptitud de cualquier programa generado se
medira como el numero de ejemplos resueltos por el algoritmo. La poblacin inicial fue
de 300 programas aleatorios, y apenas 10 generaciones despus, el sistema descubri el
programa capaz de resolver los 166 ejemplos de entrenamiento.
(EQ (DU (MT CS) (NOT CS)) (DU (MS NN) (NOT NN)) )
Como se puede observar, el programa tiene dos expresiones "Do Until". La primera
mueve repetidamente los bloques de la pila a la mesa hasta que no queda ninguno en la
pila. La segunda va moviendo repetidamente los bloques necesarios a la pila.
En tan slo unas generaciones la PG ha sido capaz de encontrar un programa que
resolviese todos los ejemplos, aunque sabemos que la habilidad del sistema para hallar
la solucin depende en gran medida de los terminales y primitivas suministradas, as
como en el conjunto de ejemplos de entrenamiento. Como ya se vio en [FUJI], es
importante suministrar informacin sobre la posible solucin del problema para agilizar
la bsqueda de la misma.

La aplicacin de pg
Hay aplicaciones numerosas de programacin gentica. Tenemos particularmente
inters en ejercer programacin gentica para
Boicotee a Art Problems, como la sntesis automatizada de analog circuitos
elctricos, los controladores, las antenas, las redes de reacciones qumicas,
sistemas pticos, y otras reas de diseo
Programando al Unprogrammable implicar la creacin automtica de
computadora programa para dispositivos poco convencionales de computacin
como sistemas de autmatas celulares, del multiagente, igualan sistemas
programadores, los conjuntos imponentes programables en campo de la portilla,
la inteligencia del analog de programable en campo conjuntos imponentes, de la
hormiga de colonias, del enjambre, los sistemas distribuidos, y algo semejante, y
(PTU)
Inventions (CUNI) comercialmente Nuevo til implicando el uso de
programacin gentica como una "mquina" automatizada de "invencin" para
creando comercialmente invenciones nuevas utilizables.
Andamos constantemente buscando que reas nuevas de para dominio en las cuales
ejerzan las tcnicas de programacin gentica para lograr inteligencia competitiva en
humano de la mquina.

QUE SON LOS ALGORTIMOS GENETICOS


Los organismos vivos poseen destreza consumada en la resolucin de problemas y se
manifiesta una versatilidad capaz de avergonzar a los problemas ms refinados. Una
definicin bastante completa de un Algoritmo Gentico es la propuesta por Jhon Kosa
[Coello 95]: Es un Algoritmo matemtico altamente paralelo que transforma un
conjunto de objetos matemticos con respecto al tiempo usando operaciones modeladas
de acuerdo al principio Darwiniano de reproduccin y supervivencia del mas apto, y tras
haberse presentado de forma natural una serie de operaciones genticas de entre las que
destaca la recombinacin sexual. Cada uno de estos objetos matemticos suele ser una
cadena de caracteres (letras o nmeros) de longitud fija que se ajusta al modelo de las
cadenas de cromosomas, y se asocian con una cierta funcin matemtica que refleja su
aptitud. Los Algoritmos Genticos utilizan una analoga directa del fenmeno de
evolucin en la naturaleza. Trabajan con una poblacin de individuos, cada uno
representado una posible solucin a un problema dado. A cada individuo se le asigna
una puntuacin de adaptacin, dependiendo de que tan buena fue la respuesta al
problema. A los ms adaptados se les da la oportunidad de reproducirse mediante
cruzamientos con otros individuos de la poblacin, produciendo descendientes con
caractersticas de ambos padres. Los miembros menos adaptados poseen pocas
probabilidades de que sean seleccionados para la reproduccin, y desaparecen. El
evaluar esta adaptacin no es sencillo de hacer, pues el entorno esta modificndose
constantemente por lo que nunca se llegara al superindividuo perfecto, sino que la
naturaleza tendera a optimizar los individuos de cada especie en las circunstancias
actuales. Existen varios tipos de Algoritmos Genticos, cada uno basado en una
metfora distinta de la naturaleza.

CLASES DE ALGORITMOS GENTICOS


Algoritmos Genticos Generacionales
Se asemejan a la forma de reproduccin de los insectos, donde una generacin pone
huevos, se aleja geogrficamente o muere y es substituida por una nueva. En este
momento se realizan cruces en una piscina de individuos, los descendientes son puestos
en otra, al final de la fase reproductiva se elimina la generacin anterior y se pasa a
utilizar la nueva. Este modelo tambin es conocido como Algoritmo Gentico Cannico.
Algoritmos Genticos de estado Fijo.
Utilizan el esquema generacional de los mamferos y otros animales de vida larga,
donde coexisten padres y sus descendientes, permitiendo que los hijos sean educados
por sus progenitores, pero tambin que a la larga se genere competencia entre ellos.
En este modelo, no solo se deben seleccionar los dos individuos a ser padres, si no
tambin cuales de la poblacin anterior sern eliminados, para dar espacio a los
descendientes.
La diferencia esencial entre el reemplazo generacional y el modelo de estado fijo es que
las estadsticas de la poblacin son recalculadas luego de cada cruce y los nuevos
descendientes estn disponibles inmediatamente para la reproduccin. Esto permite al
modelo utilizar las caractersticas de un individuo prometedor tan pronto como es
creado.
Algunos autores dicen que este modelo tiende a evolucionar mucho ms rpido que el
modelo generacional, sin embargo investigaciones de Goldberg y deb [GOLDBERG

93], encontraron que las ventajas parecen estar relacionadas con la alta tasa de
crecimiento inicial, ellos dicen que los mismos efectos pueden ser obtenidos en rangos
de adaptacin exponencial o seleccin por competencia. No encontraron evidencia que
este modelo sea mejor que el Generacional.
Algoritmos Genticos Paralelos.
Parte de la metfora biolgica que motivo a utilizar la bsqueda gentica consiste en
que es inherentemente paralela, donde al evolucionar se recorren simultneamente
muchas soluciones, cada una representada por un individuo de la poblacin. Sin
embargo, es muy comn en la naturaleza que no solo sea una poblacin evolucionando,
si no varias poblaciones, normalmente aisladas geogrficamente, que originan
respuestas diferentes a la presin evolutiva. Esto origina dos modelos que toman es
cuenta esta variacin, y utilizan no una poblacin como los anteriores si no mltiples
concurrentemente.
Modelos de Islas.
Si se tiene una poblacin de individuos, esta se divide en subpoblaciones que
evolucionan independientemente como un Algoritmo Gentico normal. Ocasionalmente,
se producen migraciones entre ellas, permitindoles intercambiar material gentico.
Con la utilizacin de la migracin, este modelo puede explotar las diferencias en las
subpoblaciones; esta variacin representa una fuente de diversidad gentica. Sin
embargo, si un nmero de individuos emigran en cada generacin, ocurre una mezcla
global y se eliminan las diferencias locales, y si la migracin es infrecuente, es probable
que se produzca convergencia prematura en las subpoblaciones.
Modelo Celular
Coloca cada individuo en una matriz, donde cada uno slo podr buscar reproducirse
con los individuos que tenga a su alrededor (mas cerca de casa) escogiendo al azar o al
mejor adaptado. El descendiente pasara a ocupar una posicin cercana.
No hay islas en este modelo, pero hay efectos potenciales similares. Asumiendo que el
cruce esta restringido a individuos adyacentes, dos individuos separados por 20 espacios
estn tan aislados como si estuvieran en dos islas, este tipo de separacin es conocido
como aislamiento por distancia.
Luego de la primera evaluacin, los individuos estn todavia distribuidos al azar sobre
la matriz. Posteriormente, empiezan a emerger zonas como cromosomas y adaptaciones
semejantes. La reproduccin y seleccin local crea tendencias evolutivas aisladas, luego
de varias generaciones, la competencia local resultara en grupos mas grandes de
individuos semejantes.

ELEMENTOS DE UN ALGORITMO GENETICO


Como los Algoritmos Genticos se encuentra basados en los procesos de evolucin de
los seres vivos, casi todos sus conceptos se basan en conceptos de biologa y gentica
que son fciles de comprender.
Individuo
Un individuo es un ser que caracteriza su propia especie. El individuo es un cromosoma
y es el codigo de informacin sobre el cual opera el algoritmo. Cada solucin parcial del
problema a optimizar est codificada en forma de cadena o String en un alfabeto

determinado, que puede ser binario. Una cadena representa a un cormosoma, por lo
tanto tambien a un individuo y cada posicin de la cadena representa a un gen. Esto
significa que el algoritmo trabaja con una codificacin de los parametros y no con los
parametros en si mismos.
El genotipo, es el conjunto de genes ordenados y representa las caracteristicas del
individuo. Cada individuo tinen una medida de su adecuacin como solucin al
problema.
Poblacin
A un conjunto de individuos (Cromosomas) se le denomina poblacin. El mtodo de
A.Gs consiste en ir obteniendo de forma sucesiva distintas poblaciones. Por otra parte
un Algoritmo Gentico trabaja con un conjunto de puntos representativos de diferentes
zonas del espacio de bsqueda y no con un solo punto (como lo hace Hillclimbing).
Funcin Fitness.
La nica restriccin para usar un algoritmo gentico es que exista una funcin llamada
fitness, que le informe de cuan bueno es un individuo dado en la solucin de un
problema. Esta funcin fitness o de evaluacin es el principal enlace entre el Algoritmo
Gentico a un problema real, es la efectividad y eficiencia de la funcin fitness que se
tome, por lo tanto debe procurarse que la funcin fitness sea similar, si no igual a la
funcin objetivo que se quiere optimizar. Esta medida se utiliza como parmetro de los
operadores y gua la obtencin de nuevas poblaciones.

OPERADORES GENETICOS.
Son los diferentes mtodos u operaciones que se pueden ejercer sobre una poblacin y
que nos permite obtener poblaciones nuevas. Una vez que se ha evaluado cada
individuo sobre una funcin fitness, se aplican los operadores genticos. En Algoritmos
Genticos se destacan los siguientes operadores.
Operador de Seleccin.
El paso siguiente a la evaluacin es escoger los miembros de la poblacin que sern
utilizados para la reproduccin. Su meta es dar mas oportunidades de seleccin a los
miembros ms aptos de la poblacin. As funciona: se calcula el cociente entre el valor
fitness de un individuo y la suma total de los valores fitness de todos los individuos de
la poblacin. Este resultado mide la probabilidad de seleccin Ps (i) de cada individuo.

Ecuacin No. 1 Probabilidad de seleccin.


Empezando desde la poblacin P (t) de N individuos se obtiene una nueva poblacin
P(t+1) aplicando N veces el operador de seleccin. Los individuos se seleccionan de
una especie de rueda de ruleta (como se muestra en la figura 1) donde cada uno tiene
asignado un trozo en proporcin a su probabilidad seleccin Ps.

Figura No.1 Operador de Seleccin


Este mecanismo puede causar problemas de convergencia prematura, causada por la
aparicin de un individuo que es mucho mejor que los otros de la poblacin aunque esta
lejos de optimo; las copias de este individuo pueden dominar rpidamente a la
poblacin, sin poder escapar de este mnimo local.
Operador de Cruce
Consiste en unir en alguna forma los cromosomas de los padres que han sido
previamente seleccinados de la generacin anterior para formar dos descendientes.
Existen diversas variaciones, dependiendo del nmero de puntos de divisin a emplear y
la forma de ver el cromosoma. El operador cruce se aplica en dos pasos: en el primero
los individuos se aparean (se seleccionan de dos a dos) aleatoriamente con una
determinada probabilidad, llamada probabilidad de cruce Pc; en el segundo paso a cada
par de individuos seleccionados anteriormente se le aplica un intercambio en su
contenido desde una posicin aleatoria K hasta el final, con K [1, m-1], donde m es la
longitud de individuo. K es el denominado punto de cruce y determina la subdivisin de
cada padre en dos partes que se intercambian para formar dos nuevos hijos, segn
podemos ver en la figura 2 Esto se conoce como cruce ordinario o cruce de un punto. El
objetivo del operador de cruce es recombinar subcadenas de forma eficiente; esta
gestin recibe el nombre de construccin de bloques.

Figura No. 2 Operador de Cruce


Mutacin.
El operador de mutacin consiste en la alteracin aleatoria de cada uno de los genes del
individuo con una probabilidad de mutacin PM, como se puede ver en la figura 3.
El objetivo de la mutacin es producir diversidad en la poblacin. Si al generar
aleatoriamente la poblacin inicial o despus de varias generaciones, en la misma
posicin de todos los cromosomas slo aparece un nico elemento del alfabeto

utilizado, esto supondr que con los operadores de reproduccin y cruce, nunca
cambiara dicho elemento, por lo que puede ocurrir que jamas se alcance la solucin ms
optima a nuestro problema. La probabilidad de aparicin del operador de mutacin no
debe ser grande para no perjudicar la correcta construccin de bloques. El operador de
mutacin origina variaciones elementales en la poblacin y garantiza que cualquier
punto del espacio de bsqueda pueda ser alcanzado.

Figura No. 3 Operador de Mutacin

CICLO GENERAL DE UN ALGORITMO GENETICO ESTANDAR


El AG estndar se puede expresar en pseudocodigo con el siguiente ciclo. [Coello 95]:
1. Generar aleatoriamente la poblacin inicial de individuos P(0). Generacin = 0:
2. Mientras ( numero _ generaciones <= mximo _ nmeros _ generaciones)
Hacer
{

Evaluacin;
Seleccin;
Reproduccin;
Generacin ++;

3.Mostrar resultados;
Fin de la generacin
Estas caractersticas de los AG, a su vez, describen las diferencias entre ellos, y otros
mtodos normales de optimizacin.
1. Un Algoritmo Gentico trabaja con codificacin de los parmetros que busca
optimizar y no con los parmetros en s mismo.
2. Un Algoritmo Gentico trabaja con un conjunto de puntos representativos de
diferentes zonas del espacio y no con un solo punto. Por el contrario necesita
considerables recursos de computacin.
3. La aplicacin de AG no depende de ninguna propiedad de la funcin a optimizar
(derivable, continua, ni siquiera conocida), o de que el conjunto de posibles soluciones
sea finito o no lo sea.
4. Un AG utiliza reglas de transicin probabilisticas, no deterministas, lo cual hace que
dos aplicaciones consecutivas de un AG a un mismo problema puedan producir dos
soluciones distintas.
EL ejemplo siguiente nos da una pequea ilustracin de un Pseudocdigo de Algoritmo
Gentico.
BEGIN /* Algoritmo Gentico */
Generar una poblacin inicial.

Computar la funcin de evaluacin de cada individuo.


WHILE NOT Terminado DO
BEGIN /* Producir nueva Generacin */
FOR Tamao Poblacin /2 DO
BEGIN /* Ciclo Reproductivo */
Seleccionar dos individuos de la anterior generacin
El cruce (probabilidad de seleccin proporcional a la
Funcin de evaluacin de individuo).
Cruzar con cierta probabilidad los dos individuos
obtenida 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

También podría gustarte