Вы находитесь на странице: 1из 36

Algoritmos Genticos

Bibliografa:

Genetic Algorithms in Serch,Optimization & Machine Learning. David Goldberg. Addison-Wesley.1989.


Genetic Algorithms + Data Structures = Evolution Programs. 3er Edition, Zbigniew Michalewicz. Springer. 1996

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 un proceso determinstico para alcanzar la solucin

Comienzan en un punto aleatorio.

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.

Mutaciones y recombinaciones genticas.


Seleccin de acuerdo con algn criterio (valor de aptitud o fitness), en funcin del cual se decide cules son los individuos ms adaptados, que sobreviven, y cules los menos aptos, que son descartados.
5

Bsqueda en un enfoque evolutivo

Poblacin Poblacin Individuos Inicial 1 2 3 seleccionados Generacin tras para (1 Generacin) mutaciones cruce y mutacin y cruces

Algoritmo Gentico Bsico


Iniciar poblacin Evaluar poblacin Mientras no se termine Seleccionar pares de padres Generar una nueva poblacin a partir de los padres Evaluar poblacin Fin
7

Algoritmos Genticos Ejemplos

Maximizacin de una funcin en 3D.

http://www.oursland.net/projects/PopulationExperiment/

Algoritmos Genticos Ejemplos

Travelling Salesman Problem:


http://www.eecs.wsu.edu/~cook/ai/lectures/applets/gatsp/TSP.html

Algoritmos Genticos Ejemplos

Problema de estacionamiento de un camin:

http://www.eecs.wsu.edu/~cook/ai/lectures/applets/gatd/gatd.html

10

Algoritmos Genticos Ejemplos

Caminantes virtuales: http://www.eecs.wsu.edu/~cook/ai/lectures/applets/gaanim/environ.htm

11

Algoritmos Genticos Ejemplos

Criaturas virtuales Karl Sims

http://www.genarts.com/karl/evolved-virtual-creatures.html
SIMS.CREATURES_DEMO

Otros
SeekEnemyfull.avi
12

Algoritmo Gentico

Su aplicacin implica determinar

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

Algoritmo Gentico Bsico


t := 0; inicializar P(t); evaluar los individuos de P(t); mientras( la condicin de terminacin no se satisfaga ) t := t + 1; select_repro C(t) desde P(t-1); recombinar y mutar los individuos en C(t) formando C(t); evaluar los individuos en C(t); select_replace P(t) desde C(t) y P(t-1); fin mientras;
14

Note que la seleccin puede aplicarse para la reproduccin o el reemplazo.

Ejemplo: maximizar la funcin f(x) = x2 sobre los enteros [0..31]

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

Seleccin Proporcional al valor del fitness

1
4

2
15

Ejemplo: maximizar la funcin f(x) = x2 sobre los enteros [0..31]

Obtencin de la prxima generacin


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

Ejemplo: maximizar la funcin f(x) = x2 sobre los enteros [0..31]

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

Ejemplo: maximizar la funcin f(x) = x2 sobre los enteros [0..31]

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

Repetir hasta que se cumpla la condicin de finalizacin

18

Ejercicio 1: Hallar el mnimo de la funcin f(x) = x2 en los reales [-10,50]


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

Ejercicio 1: Hallar el mnimo de la funcin f(x) = x2 en los reales [-10,50]


lchrom = 20 popsize = 50 pcross = 0.65 pmutation = 0.001 maxgen = 20
cmax = 2500; MinInterv = -10 MaxInterv = 50
20

% long. del cromosoma % tamao de la poblacion % probabilidad de crossover % probabilidad de mutacion % mx. cant.de generaciones

Ejercicio 1: Hallar el mnimo de la funcin f(x) = x2 en los reales [-10,50]


% Visualizar la funcin FUN1 en el intervalo % indicado hold off Intervalo = MinInterv:0.1:MaxInterv; y = FUN1(Intervalo); plot(Intervalo,y); hold on

21

Ejercicio 1: Hallar el mnimo de la funcin f(x) = x2 en los reales [-10,50]


%Construccin y visualizacin de la poblacion inicial

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

Lmites del intervalo Valor mximo para un cromosoma de 5 bits


1 0 0 1 0 1 1 1 1 0 0 1 1 0 1

0 1 1 0 1 = 23+22+1=13 -10 + 13/(25-1) * (50 (-10)) -10 + 13/31 * 60 = 15.1613

Fenotipos = 30.6452 24.8387 48.0645

15.1613

Valor 5 =entre Long. 0 del y1 cromosoma

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

Algoritmo Gentico Bsico


gen = 0; while (gen <= maxgen), gen = gen + 1; NewPop = generar(Pop, Fitness, pcross, pmutation); Fenotipos = CromToNro(NewPop, MinInterv, MaxInterv); Salida = FUN1(Fenotipos); Fitness = abs(cmax * ones(1,popsize) - Salida); % Redibujar hold off Pop = NewPop; plot(Intervalo,y); end

hold on plot(Fenotipos,Salida,'*'); pause(0.5)

27

Generacin de la nueva poblacin


function y = generar(Pop, Fitness, pcross, pmutation) [long, col] = size(Pop); col = round(col / 2); % por c/iteracion se generan dos hijos y = []; for i=1:1:col, p1 = select(Fitness); % seleccionar la posicin de p2 = select(Fitness); % los dos padres % generar los dos hijos [h1, h2] = cruzar_y_mutar(Pop,p1,p2,pcross,pmutation);

y = [y, h1, h2]; end


28

Ejemplo de Seleccin Proporcional


Fitness = [ 1560.9 1883.0 189.8 Suma de los fitness = 5903.9

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

Ejercicio 2: Hallar el mnimo de la funcin f(x) = -x . sin(10**x) + 1 en [-2,1]


Long.cromosoma = 20 y c_max=3 y= ((-x) .* sin(10 * pi * x) )+ ones(1,length(x))
Agregarle ELITISMO

36

Вам также может понравиться