写一段matlab的粒子群代码
时间: 2023-05-28 07:05:47 浏览: 47
以下是一个简单的 Matlab 粒子群代码:
% 设置初始参数
n = 50; % 粒子数
dim = 2; % 维度
c1 = 1; % 学习因子1
c2 = 2; % 学习因子2
w = 0.7; % 惯性权重
max_iter = 100; % 最大迭代次数
% 初始化粒子群
x = rand(n, dim) * 10; % 粒子位置
v = zeros(n, dim); % 粒子速度
pbest = x; % 个体最优解
gbest = x(1, :); % 全局最优解
% 开始迭代
for i = 1:max_iter
% 更新速度和位置
v = w * v + c1 * rand(n, dim) .* (pbest - x) + c2 * rand(n, dim) .* (repmat(gbest, n, 1) - x);
x = x + v;
% 计算适应度
fitness = sum(x.^2, 2);
% 更新个体最优解和全局最优解
for j = 1:n
if fitness(j) < sum(pbest(j,:).^2)
pbest(j,:) = x(j,:);
end
if fitness(j) < sum(gbest.^2)
gbest = x(j,:);
end
end
% 显示当前迭代次数和全局最优解
fprintf('Iteration %d: Best solution = %f\n', i, sum(gbest.^2));
end
disp('Optimization finished!');