狼群算法 matlab实现
时间: 2023-07-07 11:22:14 浏览: 102
狼群算法是一种基于自然界中狼群行为的优化算法,可以应用于多种优化问题。以下是狼群算法的Matlab实现示例:
```matlab
% 定义优化问题
fun = @(x) x(1)^2 + x(2)^2 - 2*x(1) - 4*x(2) + 5;
% 定义算法参数
max_iter = 100; % 最大迭代次数
n = 10; % 狼群数量
lb = [-5, -5]; % 自变量下界
ub = [5, 5]; % 自变量上界
% 初始化狼群位置
x = zeros(n, 2);
for i = 1:n
x(i, :) = lb + (ub-lb).*rand(1,2);
end
% 初始化狼群适应度
f = zeros(n, 1);
for i = 1:n
f(i) = fun(x(i,:));
end
% 开始迭代
for iter = 1:max_iter
% 更新狼群位置
for i = 1:n
% 计算狼群中心位置
x_mean = mean(x);
% 计算狼群中某个狼向其他狼跳跃的位置
a = 2 - 2*iter/max_iter; % 衰减因子
A = 2*a*rand(1,2) - a; % 衰减距离
C = 2*rand(1,2); % 狼群中心位置向量
D = abs(C.*x_mean - x(i,:)); % 狼群中心位置向量与某个狼的位置差
x1 = C - A.*D; % 新位置
% 限制新位置在自变量范围内
x1 = max(x1, lb);
x1 = min(x1, ub);
% 计算新位置适应度
f1 = fun(x1);
% 更新狼的位置和适应度
if f1 < f(i)
x(i,:) = x1;
f(i) = f1;
end
end
% 显示当前迭代次数和最优解
[best_f, best_idx] = min(f);
fprintf('Iteration %d: Best f = %f\n', iter, best_f);
end
% 显示最优解
fprintf('Best solution: x1 = %f, x2 = %f, f = %f\n', x(best_idx,1), x(best_idx,2), best_f);
```
在该示例中,我们定义了一个简单的二元函数作为优化问题,然后使用狼群算法进行优化。在每个迭代中,我们首先计算狼群中心位置,然后计算每个狼向其他狼跳跃的位置,并根据适应度函数来更新狼的位置和适应度。最后,我们显示每个迭代的最优解和最优解的位置。
阅读全文