Академический Документы
Профессиональный Документы
Культура Документы
Algoritmo Genético:
Código:
else
competencia(i)=competencia(i+1); %Se copiaron los mejores individuos
end
end
procreacion=competencia(randperm(length(competencia))); %Forman pares, pero para
procrear
mat_cruce=dec2bin(procreacion); %Se transforma a binario, toda la poblacion
[n numero_de_genes]=size(mat_cruce); %Se toma el numero de genes
for i=1:2:n-1
while 1
pcruce =randi([1,numero_de_genes]); %Se elige un punto de cruce aletorio
[hijo1,hijo2] =cruce(mat_cruce(i,:),mat_cruce(i+1,:),pcruce,numero_de_genes);
nuevo(i,:) =hijo1; %Se guarda al hijo1
nuevo(i+1,:)=hijo2; %Se guarda al hijo 2
if bin2dec(hijo1)>minimo & bin2dec(hijo2)>minimo & bin2dec(hijo1)<=maximo &
bin2dec(hijo2)<=maximo
break %Se comprueba que los 2 hijos esten dentro del rango establecido por
el usuario
end
end
end
poblacion=bin2dec(nuevo); %Se convierte la poblacion de binario a decimal, y
poblacion = nueva generacion
generacion(k,:)=(poblacion(:,:))'; %Se guarda la nueva poblacion en la matriz de
generaciones
k=k+1;
end
fprintf('Generacion final:\n ')
disp(poblacion')