Академический Документы
Профессиональный Документы
Культура Документы
Bibliografa:
Algoritmos Genticos
Fueron creados por John Holland en los aos 1970. Son llamados as porque se inspiran en la evolucin biolgica y su base genticomolecular. Bsicamente son un mtodo de bsqueda y optimizacin.
Algoritmos Genticos
Cmo funcionan?
Utilizan una regla de transicin especificada previamente para indicar la direccin de bsqueda
Algoritmos Genticos
Algoritmos Genticos
Cmo funcionan?
Estos algoritmos hacen evolucionar una poblacin de individuos sometindola a acciones semejantes a las que actan en la evolucin biolgica.
Poblacin Poblacin Individuos Inicial 1 2 3 seleccionados Generacin tras para (1 Generacin) mutaciones cruce y mutacin y cruces
http://www.oursland.net/projects/PopulationExperiment/
http://www.eecs.wsu.edu/~cook/ai/lectures/applets/gatd/gatd.html
10
11
http://www.genarts.com/karl/evolved-virtual-creatures.html
SIMS.CREATURES_DEMO
Otros
SeekEnemyfull.avi
12
Algoritmo Gentico
Representacin gentica de las soluciones Creacin de la poblacin inicial Funcin de aptitud o fitness Operadores genticos de cruce y mutacin Valores de los parmetros
13
Generacin 1
N 1 2 3 4 String 01101 11000 01000 10011 Total Valor X 13 24 8 19
Valor de aptitud del individuo en la Cromosoma Fenotiporesolucin (caracterstica ( (representacin 169 / 1170 externa ) * 100 del genotipo) observable) del problema
Fitness X2 169 576 64 361 1170 % del total de fitness 14.4 49.2 5.5 30.9 100.0
1
4
2
15
Accionar la ruleta dos veces para elegir dos individuos. Obtener dos hijos del par de padres seleccionados. Repetir el proceso hasta obtener tantos hijos como padres y reemplazar la vieja poblacin por la nueva.
16
Supngase que al accionar 4 veces la ruleta se obtienen los siguientes resultados en el orden indicado: 2,1,4,2. Se aplicar crossover con probabilidad 0.8
PadreID 2 1 PadreID 4 2 Cromosoma 11000 4 01101 Cromosoma 10011 2 11000 11 | 000 11011 0110 | 1 Pto.cruce 10 | 011 01100 Hijos 10000 Pto.cruce 1100 | 0 Hijos 11001
Note que existe una probabilidad de 0.2 de que las parejas pasen intactas. Aplicar mutacin con probabilidad baja. Ej: 0.001
17
Generacin 2
N 1 2 3 4 String 11001 01100 10000 11011 Total Valor X 25 12 16 27 Fitness X2 625 144 256 729 1754 % del total de fitness 35.6 8.2 14.6 41.6 100.0
18
Long.cromosoma = 20
Prob.Crossover = 0.65 Prob.Mutacin = 0.001 c_max=2500 Fitness(x) = c_max - f(x) Reemplazo total de la poblacin de padres por la de hijos. Probar con otras estrategias de reemplazo.
19
% long. del cromosoma % tamao de la poblacion % probabilidad de crossover % probabilidad de mutacion % mx. cant.de generaciones
21
Pop = round(rand(lchrom,popsize)); Fenotipos = CromToNro(Pop, MinInterv, MaxInterv); Salida = FUN1(Fenotipos); Fitness = abs(cmax * ones(1, popsize) - Salida); plot(Fenotipos,Salida,'*');
Vector fila conteniendo el cromosoma valor real Cada columna contiene un Vectores fila con las evaluaciones de los correspondiente a cada cromosoma. representando un elemento de la poblacin fenotipos y sus fitness correspondientes.
22
FUN1
function y = FUN1(x) %FUN1(x) = x * x
y = x .* x;
23
CromToNro
Convierte un nro.binario en un real entre 10 y 50
Pop = 1 0 1 0 1
15.1613
24
CromToNro
function y = CromToNro(x, MinInterv,MaxInterv) % x es una matriz de 20x50 % y es un vector con el valor de los fenotipos [long, col] = size(x); ValorMax = max.valor alcanzable por la representacin;
y = [ ]; for i = 1:1:col, nro = valor decimal de la columna i y(i) = MinInterv + (nro/ValorMax) * (MaxInterv - MinInterv); end
25
CromToNro
function y = CromToNro(x, MinInterv,MaxInterv) % x es una matriz de 20x50 % y es un vector con el valor de los fenotipos [long, col] = size(x); ValorMax = 2^long - 1;
y = [ ]; for i = 1:1:col, nro = bi2de(x(:,i)' , 'left-msb' ); y(i) = MinInterv + (nro/ValorMax) * (MaxInterv - MinInterv); end
26
27
2270.1]
Generar un nro. random entre 0 y 5903.9 Ej : 341.7816 Retornar el ndice del elemento del vector de manera que la suma de sus valores desde el ndice 1 hasta l (inclusive) supere el valor random. En este caso retornara 1.
29
Seleccin proporcional
function y = select(Fitness) cuantos = length(Fitness); sumFitness = sum(Fitness); aleatorio = rand * sumFitness; % posicion dentro de la ruleta suma = Fitness(1); j = 1; while (suma < aleatorio) & (j<cuantos), j = j + 1; suma = suma + Fitness(j); end y = j; % posicin elegida
30
Cruzar_y_mutar
CROSSOVER Generar un nro. random entre 0 y 1. Si su valor es <= a la probabilidad de crossover hay cruce Calcular el pto de crossover mediante un valor random entre 0 y la long.del cromosoma 1. Cruzar los padres para formar los dos hijos. Si no hay crossover, los hijos son copia de los padres.
31
Cruzar_y_mutar
MUTACION Para cada bit de cada hijo Generar un nmero random entre 0 y 1 Si es <= que la probabilidad de mutacin Cambiar el bit. Si es 0 poner 1 o si es 1 poner 0. Si no, NO hay mutacin. El bit queda igual
32
Cruzar_y_mutar
function [h1, h2] = cruzar_y_mutar(Pop,p1,p2, pcross,pmutation) [long, col] = size(Pop); %ver si corresponde aplicar crossover hayCrossover = ((pcross==1) | (rand<=pcross)); if hayCrossover, posicion = round(rand * (long-2)) + 1; else posicion = long; end for i=1:1:posicion, h1(i,1) = mutar(Pop(i,p1),pmutation); h2(i,1) = mutar(Pop(i,p2),pmutation); end
33
Cruzar_y_mutar (cont)
if hayCrossover, for i=posicion+1:1:long, h1(i,1) = mutar(Pop(i,p2),pmutation); h2(i,1) = mutar(Pop(i,p1),pmutation); end end
34
Cruzar_y_mutar (cont)
function NewAlelo = mutar( Alelo, probabilidad) %muta el ALELO con la probabilidad inidicada if (probabilidad==1) | (rand<=probabilidad), % hay mutacion NewAlelo = ~Alelo; else NewAlelo = Alelo; end
35
36