matlab粒子群算法代码
时间: 2023-09-14 14:06:32 浏览: 75
很高兴帮助您,以下是一份简单的 Matlab 粒子群算法代码示例:
```
% 设置算法参数
w = 0.6; % 惯性权重
c1 = 1.8; % 个体学习因子
c2 = 1.8; % 社会学习因子
max_iter = 100; % 最大迭代次数
n = 30; % 群体大小
% 初始化
x = randn(2,n) * 50;
v = randn(2,n);
p = x;
pg = x(:,1);
% 迭代
for i = 1:max_iter
% 更新速度和位置
v = w*v + c1*rand(2,n).*(p-x) + c2*rand(2,n).*(pg-x);
x = x + v;
% 计算每个粒子的适应度
fun = @(x) x(1)^2 + x(2)^2;
f = arrayfun(fun, x);
% 更新个体最优解和群体最优解
idx = f < arrayfun(fun, p);
p(:,idx) = x(:,idx);
[~,i] = min(f);
pg = x(:,i);
end
% 输出结果
fprintf('Minimum found at x = [%.4f, %.4f]\n', pg(1), pg(2));
```
这段代码实现了粒子群算法用于寻找二维平面上的函数最小值。其中 `w`、`c1`、`c2` 等参数可以根据实际情况调整,`max_iter` 是迭代次数,`n` 是群体大小,`x` 和 `v` 是粒子的位置和速度,`p` 是每个粒子的个体最优解,`pg` 是整个群体的群体最优解。可以根据需要修改适应度函数 `fun`。
阅读全文