function [xm,fv] = SecVibratPSO(fitness,N,w,c1,c2,M,D)
format long;
%------初始化种群的个体------------
for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
xl(i,j)=randn;
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
pg = x(N,:); %Pg为全局最优
for i=1:(N-1)
if fitness(x(i,:))<fitness(pg)
pg=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代------------
for t=1:M
for i=1:N
phi1 = c1*rand();
phi2 = c2*rand();
if t < M/2
ks1 = (2*sqrt(phi1)-1)*rand()/phi1;
ks2 = (2*sqrt(phi2)-1)*rand()/phi2;
else
ks1 = (2*sqrt(phi1)-1)*(1 + rand())/phi1;
ks2 = (2*sqrt(phi2)-1)*(1 + rand())/phi2;
end
v(i,:)=w*v(i,:)+phi1*(y(i,:)-(1+ks1)*x(i,:)+ks1*xl(i,:))+ ...
phi2*(pg-(1+ks2)*x(i,:)+ks1*xl(i,:));
xl(i,:) = x(i,:);
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:))<p(i)
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
if p(i)<fitness(pg)
pg=y(i,:);
end
end
Pbest(t)=fitness(pg);
end
xm = pg';
fv = fitness(pg);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
improved-particle-swarm-algorithm.rar (6个子文件)
improved particle swarm algorithm
AsyLnCPSO用学习因子异步变化的粒子群优化算法求解无约束优化问题.m 1KB
YSPSO用带压缩因子的粒子群算法求解无约束优化问题.m 1KB
LinWPSO用线性递减权重粒子群优化算法求解无约束优化问题.m 1KB
SecVibratPSO用二阶振荡粒子群优化算法求解无约束优化问题.m 1KB
LnCPSO用学习因子同步变化的粒子群优化算法求解无约束优化问题.m 1017B
RandWPSO用随机权重粒子群优化算法求解无约束优化问题.m 1KB
共 6 条
- 1
资源评论
钱亚锋
- 粉丝: 88
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功