%%%%%%%%%%%%%%%%Particle Swarm Optimization%%%%%%%%%%%%%%%%%%%%%
%%%%自适应PSO算法,测试基准函数为Sphere
clear all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%------初始化-------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dmin=0.4;
Dmax=0.94;
wmax=10;
j=5;
c1=2;
c2=2; %%%加速常数
w=0.8;
MaxDT=500; %%%迭代次数
D=10; %%%数据维度
N=40; %%%群体个数
rang_l=-100;
rang_r=100;
%%%%初始化种群和速度
x=rang_l + (rang_r - rang_l) * rand(N,D);
v=rang_l*0.2 +(rang_r - rang_l)*0.2 * rand(N,D); %%%根据经验一般取空间范围的10%~20%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%------计算适应度-------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1:N %用测试函数输出每个数据的值
p(i) = fitness(x(i,:));
end
y=x;
pg=x(1,:); %%%初始化全局最优解
for i=2:N
if p(i)<fitness(pg)
pg=x(i,:);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%------PSO算法开始-------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for t=1:MaxDT
if(rand()<0.1)
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-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
else
for i=1:N
D=((max(x(i,:)))-(min(x(i,:))))/abs((max(x(i,:)))+(min(x(i,:))));%%%分布向量惯性权重
if (D>Dmax)
D=Dmax;
else
if (D<Dmin)
D=Dmin;
end
end
v(i,:)=D*(w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-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
end
Gbest(t)=fitness(pg);
%if(t>2)
%if (Gbest(t)-Gbest(t-1)<j)
%if(w<1)
% w=w+1;
%else
% w=w+0;
%end
%end
%end
end
disp('函数的全局最优位置为:')
Solution=pg
disp('最后得到的优化极值为:')
Result=fitness(pg)
plot(1:MaxDT,Gbest,'m')
hold on
PSO和改进的PSO代码
需积分: 14 187 浏览量
2016-02-23
19:39:42
上传
评论 6
收藏 3KB RAR 举报
sinat_26300393
- 粉丝: 1
- 资源: 1
最新资源
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- htmlzwbjq_downyi.com.zip
- 无头单向非循环链表的实现(Test.c)
- 无头单向非循环链表的实现(SList.c)
- 浏览器重定向插件更新文件
- SSA-BP麻雀算法优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
- 粒子群算法优化BP神经网络PSO-BP的MATLAB代码(数值预测)
- 基于Springboot的一起看书平台.zip
- 无头单向非循环链表的实现(SList.h)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈