Question: % Par metros del algoritmo NP = 1 0 ; % Tama o de la poblaci n ( soluciones candidatas ) D = 1 0

% Parmetros del algoritmo
NP =10; % Tamao de la poblacin (soluciones candidatas)
D =10; % Nmero de variables (cada solucin candidata es un vector de D dimensiones)
MAX_GEN =300; % Nmero mximo de generaciones (criterio de parada)
% Lmites de las variables
xmin =-10;
xmax =10;
% Funcin objetivo
fun = @(x) sum(x.^2);
% Inicializacin de la poblacin
poblacion = xmin + rand(NP, D)*(xmax - xmin);
disp("Poblacin inicial:");
disp(poblacion)
% Evaluacin de la poblacin
fitness = arrayfun(@(i) fun(poblacion(i,:)),1:NP);
mejor_fitness_global = min(fitness);
mejor_solucion_global = poblacion(fitness == mejor_fitness_global, :);
% Generacin aleatoria de CR constante durante toda la corrida
CR = rand();
% Bucle principal
for g =1:MAX_GEN
% Generacin aleatoria de F en cada generacin
F = rand();
% Generacin de la poblacin mutada
poblacion_mutada = poblacion;
for i =1:NP
% Seleccin de tres vectores aleatorios
indices = setdiff(1:NP, i);
r = indices(randperm(NP -1,3));
r1= r(1);
r2= r(2);
r3= r(3);
% Mutacin
diferencia = poblacion(r2, :) - poblacion(r3, :);
vector_mutado = poblacion(r1, :) + F * diferencia;
% Asegurar al menos un componente de vector_mutado
jrand = randi(D);
% Recombinacin estrategia DE/rand/1/bin
for j =1:D
if rand()<= CR || j == jrand
poblacion_mutada(i, j)= vector_mutado(j);
end
end
% Reparacin de lmites
poblacion_mutada(i, :) = min(max(poblacion_mutada(i, :), xmin), xmax);
end
% Evaluacin de la poblacin mutada
fitness_mutada = arrayfun(@(i) fun(poblacion_mutada(i,:)),1:NP);
% Seleccin
for i =1:NP
if fitness_mutada(i)< fitness(i)
poblacion(i, :) = poblacion_mutada(i, :);
fitness(i)= fitness_mutada(i);
end
end
% Actualizacin de la mejor solucin global
[mejor_fitness_iteracion, idx]= min(fitness_mutada);
if mejor_fitness_iteracion < mejor_fitness_global
mejor_fitness_global = mejor_fitness_iteracion;
mejor_solucion_global = poblacion_mutada(idx, :);
end
end
% Imprimir resultados finales
disp(['CR (constante por corrida)=', num2str(CR)]);
disp(['Mejor Fitness Global =', num2str(mejor_fitness_global)]);
disp('Mejor Individuo Global:');
disp(mejor_solucion_global);este es algortimo de evolucion diferencial con cruza RAND/1/BIN. NECESITO LA IMPLEMENTACION RAND/A/1/EXP

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Accounting Questions!