MATLAB实现灰狼算法优化Ackley函数
灰狼算法(Grey Wolf Optimizer)是一种启发式优化算法,用于寻找多维函数的最优解。下面是使用MATLAB实现灰狼算法并完成Ackley's Function函数的寻优的示例代码:
% 函数:Ackley's Function
function f = ackley(x)
d = length(x);
sum1 = sum(x.^2);
sum2 = sum(cos(2*pi*x));
f = -20*exp(-0.2*sqrt(sum1/d)) - exp(sum2/d) + 20 + exp(1);
end
% 灰狼算法
function [best_sol, best_fitness] = grey_wolf_optimizer()
% 初始化参数
num_wolves = 30; % 狼群数量
max_iterations = 100; % 最大迭代次数
lb = -32.768; % 变量下界
ub = 32.768; % 变量上界
dim = 2; % 变量维度
% 初始化狼群位置和适应度
wolves = lb + (ub-lb) * rand(num_wolves, dim);
fitness = zeros(num_wolves, 1);
for i = 1:num_wolves
fitness(i) = ackley(wolves(i,:));
end
% 寻找最优解
best_fitness = inf;
for iter = 1:max_iterations
% 更新狼群位置和适应度
for i = 1:num_wolves
if fitness(i) < best_fitness
best_fitness = fitness(i);
best_sol = wolves(i,:);
end
a = 2 - iter * (2 / max_iterations); % 衰减系数
A = 2 * a * rand() - a;
C = 2 * rand();
D = abs(C * best_sol - wolves(i,:));
wolves(i,:) = best_sol - A * D;
% 边界处理
wolves(i,:) = max(wolves(i,:), lb);
wolves(i,:) = min(wolves(i,:), ub);
% 更新适应度
fitness(i) = ackley(wolves(i,:));
end
end
end
% 测试
[best_sol, best_fitness] = grey_wolf_optimizer();
disp('最优解:');
disp(best_sol);
disp('最优适应度:');
disp(best_fitness);
上述代码中,ackley函数定义了Ackley's Function函数的计算方法。grey_wolf_optimizer函数实现了灰狼算法的寻优过程,包括初始化狼群位置和适应度、更新狼群位置和适应度等。最后,通过调用grey_wolf_optimizer函数来获取最优解和最优适应度。
你可以将上述代码保存为一个.m文件,在MATLAB命令窗口中运行即可得到Ackley's Function函数的最优解和最优适应度。
原文地址: https://www.cveoy.top/t/topic/WTX 著作权归作者所有。请勿转载和采集!