Inteligencia Artificial - Algoritmos Geneticos brecha generacional

 
Vista:

Algoritmos Geneticos brecha generacional

Publicado por Marco Antonio (5 intervenciones) el 08/11/2017 12:26:19
Hola como estan estoy haciendo un algoritmo genetico y tengo que incluir la brecha generacional pero no entiendo que es brecha generacional ni como implementarlo usando matlab gracias de antemano aqui les dejo el codigo que estoy haciendo.

esto es usando matlab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
clear all
close all
clear var
clc
format long
% Rango de x1 [-8 8] length 16
% rango de x2 [-8 8] length 16
% Debe ser dividido en 16*100000
% El total de de length del cromosoma es 32
N=input('Tamaño de la poblacion: ')%pregunta al usuario por el tamaño de la poblacio
m=input('Seleccione 1 para minimizar o 2 para maximizar: ')
numerodeiteraciones=input('Numero de Iteraciones: ')
% numerodeiteraciones=input('Numero de iteraciones: ')
aj1=-5% Añade el valor 0 a aj, limite inferior del rango de la poblacion
bj1=10% Asigna el valor 10 a bj, limite superior del rango de la poblacion
n1=3% Asigna el valor 1 a n, numero de digitos despues del punto decimal
a1=(log((bj1-aj1)*(10^n1)+1))/log(2)% Calcula el Numero de bits requeridos
Number_of_bits1 = ceil(a1)% Redondea mj al prximo numero superior
aj2=-3% Añade el valor 0 a aj, limite inferior del rango de la poblacion
bj2=9% Asigna el valor 10 a bj, limite superior del rango de la poblacion
n2=3% Asigna el valor 1 a n, numero de digitos despues del punto decimal
a2=(log((bj2-aj2)*(10^n2)+1))/log(2)% Calcula el Numero de bits requeridos
Number_of_bits2 = ceil(a2)% Redondea mj al prximo numero superior
aj3=-1% Añade el valor 0 a aj, limite inferior del rango de la poblacion
bj3=2.5% Asigna el valor 10 a bj, limite superior del rango de la poblacion
n3=3% Asigna el valor 1 a n, numero de digitos despues del punto decimal
a3=(log((bj3-aj3)*(10^n3)+1))/log(2)% Calcula el Numero de bits requeridos
Number_of_bits3 = ceil(a3)% Redondea mj al prximo numero superior
Max_Number_of_Bits=Number_of_bits1+Number_of_bits2+Number_of_bits3% Suma numero de bit 1 y 2 para tener el total de bits
P1=randi([0 (2^Max_Number_of_Bits-1)],N,1)%Asigna valore decimales de forma aleatoria a P1
%calcular decimales separado
Mas1=(2^Number_of_bits3)-1%Crea una Mascara
Mas2=2^Max_Number_of_Bits-(2^(Number_of_bits2)-1)-1%Crea una Mascara
Mas3=2^Max_Number_of_Bits-(2^(Number_of_bits1+Number_of_bits3)-1)-1%Crea una Mascara
% dec2bin(Mas1)
% dec2bin(Mas2)
% dec2bin(Mas3)
 
%Crea un lazo que hace el bitand y bitshift y lo guarda en P11
for n = 1:size(P1)
x3(n,1)=bitand(Mas3,P1(n))
P11(n)=bitshift(x3(n,1),-(Number_of_bits1+Number_of_bits3));  %X
end
P12=(P11*(bj1-aj1)/(2^Number_of_bits1-1)+aj1)'
%Crea un lazo que hace el bitand y bitshift y lo guarda en P11
for n = 1:size(P1)
x4(n,1)=bitand(Mas2,P1(n))
P13(n)=bitshift(x4(n,1),-(Number_of_bits2));  %Y
end
P14=(P13*(bj2-aj2)/(2^(Number_of_bits2+Number_of_bits3)-1)+aj2)'% Y escalada.   Escala los valores decimales a el rango
for n = 1:size(P1)
x5(n,1)=bitand(Mas1,P1(n)) %Y
end
P15=x5*(bj3-aj3)/(2^Number_of_bits3-1)+aj3 % Z escalada.   Escala los valores decimales a el rango
 
 
for n1=1:size(P1)
 
        if m==1
            fx1(n1,1)=1/1+(((P12(n1)^2+P14(n1)^2)^(1/4)*(1+sin^2(50*(P12(n1)^2+P14(n1)^2)^(1/10))))+((P14(n1)^2+P15(n1)^2)^(1/4)*(1+sin^2(50*(P14(n1)^2+P15(n1)^2)^(1/10))))+((P12(n1)^2+P15(n1)^2)^(1/4)*(1+sin^2(50*(P12(n1)^2+P15(n1)^2)^(1/10)))))
                else m==2
                    fx1(n1,1)=(((P12(n1)^2+P14(n1)^2)^(1/4)*(1+sin^2(50*(P12(n1)^2+P14(n1)^2)^(1/10))))+((P14(n1)^2+P15(n1)^2)^(1/4)*(1+sin^2(50*(P14(n1)^2+P15(n1)^2)^(1/10))))+((P12(n1)^2+P15(n1)^2)^(1/4)*(1+sin^2(50*(P12(n1)^2+P15(n1)^2)^(1/10)))))+10
        end
end
%Elitismo
 
fX1=unique(sort(fx1,'descend'));
[maximo]=max(fX1)
fx1max(k)=[maximo]
[fila1, columna1]=find(fx1==maximo)
valor_correspondiente1=P1(fila1,columna1)
valor_correspondiente2(k)=valor_correspondiente1(1,1)
fx1avg(k)=mean(fx1)
 
% Calculando el Fitness Promedio
fxt=sum(fx1)
% Calculando el Ti
for n=1:size(P1)
    x6(n,1) = fx1(n,1)/fxt
end
x7 = sum(x6)
% Calculando qi
x9(1,1) = x6(1,1)
for i=2:length(x6);
  x9(i,1) = x9(i-1,1)+x6(i,1)
end
x9
x10=rand(size(P1))
 
% Ruleta
 
PDEC=P1;
x11(1)=0;
for i=1:(size(x10,1))
    for j=1:size(x10,1)
        if x10(i,1)<=x9(j,1)
            x11(i,1)=PDEC(j,1);
            break
        end
    end
end
x11
%Cruce
j=1
while j<length(P1)
    macho=x11(j)
    hembra=x11(j+1)
    r=rand(1)
    if r<=0.8
     ptocruce=randi([1,32],1)
% ptocruce=1
    mane1=2^ptocruce-1
    mane2=(2^Max_Number_of_Bits)-mane1
    a=bitand(round(hembra),round(mane2))
    b=bitand(round(macho),round(mane2))
    c=bitand(round(hembra),round(mane1))
    d=bitand(round(macho),round(mane1))
    w1=bitor(d,a)
    w2=bitor(c,b)
    else
    w1=x11(j)
    w2=x11(j+1)
    end
    x12(j)=w1
    x12(j+1)=w2
    j=j+2
end
x13=x12'

%Mutacion
Total_numero_de_bits=Max_Number_of_Bits*N
Bit_a_mutar=Total_numero_de_bits*0.05

for n=1:Bit_a_mutar
        Numero_Aleatorio = randi([1 length(x13)],1,1)
        Eleccion(1:1,1)=P1(Numero_Aleatorio)
        b=randi([1 42])
        Mas=2^b-1
        P1_Mutada=bitxor(Eleccion,Mas)
        x13(Numero_Aleatorio,1)=P1_Mutada
end
P1=x13
end
end
plot(fx1max-10)
figure
plot(fx1avg)
figure
plot(valor_correspondiente2)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 19
Ha mantenido su posición en Inteligencia Artificial (en relación al último mes)
Gráfica de Inteligencia Artificial

Algoritmos Geneticos brecha generacional

Publicado por JESUS DAVID ARIZA ROYETH (8 intervenciones) el 10/11/2017 03:05:14
es la comparación entre tu población actual y tu población anterior, puedes hacerla sacando el promedio de cada gen en cada población, y luego comparar qué tanto se parece cada uno, investiga el comando corr2, para sacar promedios se usa mean
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Algoritmos Geneticos brecha generacional

Publicado por Marco Antonio (5 intervenciones) el 10/11/2017 03:18:03
En la tarea que me dieron me dice que tenga una brecha generacional del 10% sabes que quiere decir?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 19
Ha mantenido su posición en Inteligencia Artificial (en relación al último mes)
Gráfica de Inteligencia Artificial

Algoritmos Geneticos brecha generacional

Publicado por JESUS DAVID ARIZA ROYETH (8 intervenciones) el 10/11/2017 16:39:18
si es así entonces te estás refiriendo a lo que en inglés se conoce como "Generation Gap" , y sería el porcentaje de la población que es reemplazado en cada iteración , consulta sobre elitismo y Generation Gap en inglés

en conclusión hay veces que no se reemplaza toda la población sino un porcentaje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Algoritmos Geneticos brecha generacional

Publicado por Marco Antonio (5 intervenciones) el 10/11/2017 18:57:20
Eso es lo que no entiendo quien remplaza a esa parte de la poblacion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 19
Ha mantenido su posición en Inteligencia Artificial (en relación al último mes)
Gráfica de Inteligencia Artificial

Algoritmos Geneticos brecha generacional

Publicado por JESUS DAVID ARIZA ROYETH (8 intervenciones) el 10/11/2017 21:02:41
la nueva generación reemplaza a la población anterior, pero si se define elitismo hay población vieja que debe quedar en la nueva ese es el asunto, por ejemplo:

tienes 20 individuos pero solo vas a reemplazar 10, así que solo debes generar 10 hijos y la población siguiente serán los 10 hijos más 10 individuos de la población anterior y así sucesivamente , entonces en este ejemplo hay un reemplazo del 50% de la población
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Algoritmos Geneticos brecha generacional

Publicado por Marco Antonio (5 intervenciones) el 10/11/2017 21:54:37
Muchas Gracias ya entendi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Aarón Castillo
Val: 28
Ha mantenido su posición en Inteligencia Artificial (en relación al último mes)
Gráfica de Inteligencia Artificial

Algoritmos Geneticos brecha generacional

Publicado por Aarón Castillo (5 intervenciones) el 11/11/2017 20:45:45
Básicamente te dice que vas a hacer reemplazos, supongamos que tienes: Pp -> población padre y Ph -> población hija, donde Ph no es otra cosa más que el resultado de haber aplicado los operadores de selección, cruza y mutación en Pp, dando como resultado una población "hija".

Entonces la brecha generacional consiste en sustituir en Ph sus k peores elementos por los k mejores de Pp, dependiendo del problema puede ser un porcentaje o un número concreto. La clasificación de "peor" a "mejor" se logra tomando como referencia su fitness.

Lo anterior garantiza que durante las generaciones no se pierda la mejor solución creada hasta el momento (al pasar las de Pp a Ph), ahora debes tener cuidado en que el número (o porcentaje) k no sea demasiado grande ya que puedes caer en algo que se llama "presión selectiva", es decir, no le estás dando la oportunidad al algoritmo genético de que juegue con todos los valores para darte una solución óptima.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Algoritmos Geneticos brecha generacional

Publicado por Marco Antonio (5 intervenciones) el 11/11/2017 21:15:26
Muchas Gracias me sirvió de mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar