没有合适的资源?快使用搜索试试~ 我知道了~
首页pso代码MATLAB实现
资源详情
资源评论
资源推荐
functi
on F=fitness(x)
F=0;
for i=1:length(x)
F=F+x(i)^2; f=0;
End
PSO 原代码
% 求最小值基本粒子群
clear all;
%------初始化种群的个体------------
N=15; % 粒子数目
D=30; % 问题维数
num_sum =150; % 迭代次数
c1=2; % 参数
c2=2; % 参数
for i=1:N
for j=1:D
x(i,j)=(rand-0.5)*200; % 随机初始化位置 (在搜索范围内放置小鸟)
v(i,j)=(rand-0.5)*200; % 随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化 Pi 和 Pg----------------------
for i=1:N
pbestfitness(i)=fitness(x(i,:));
pbest(i,:)=x(i,:); % pbest(i,:)为局部(每个粒子)最优位
置
end
gbest = x(N,:); % gbest 为全局最优粒子位置
for i=1:(N-1) % 找到初始状态真正的全局最优
if fitness(x(i,:))<fitness(gbest)
gbest=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代------------
% gene_max = 0.7; % 最大权重
% gene_min = 0.1; % 最小权重
w=0.8;
vmax = 0.7; % 最大移动速度 0.05
step_max = 0.5; % 最大加权因子 (用于整体速度加权)
step_min = 0.5; % 最小加权因子
for t=1:num_sum % 迭代步数
% outputdata; %实时输出结果
% w = gene_max - (gene_max - gene_min) * i / num_sum; % 惯性权重,
权重递减
% %step = step_max - (step_max - step_min) * i / num_sum;
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(pbest(i,:)-x(i,:))+c2*rand*(gbest-
x(i,:));% 速度更新公式
x(i,:)=x(i,:)+v(i,:); % 位置更新公式
if fitness(x(i,:))<pbestfitness(i) % pbest 比较更新
pbestfitness(i)=fitness(x(i,:));
pbest(i,:)=x(i,:);
end
if pbestfitness(i)<fitness(gbest) % gbest 比较更新
gbest=pbest(i,:);
end
end
Gbest(t)=fitness(gbest);
end
xm = gbest'
fv = fitness(gbest)
figure(2)
hold on
g=log10(Gbest);
plot(g,'r');
xlabel('迭代步数');
ylabel('适度值');
加取 20 次平均值
clear all;
%------初始化种群的个体------------
P=20; %取 20 次平均值
N=15; % 粒子数目
D=30; % 求最小值基本粒子群
% 问题维数
num_sum =150; % 迭代次数
c1=2; % 参数
c2=2; % 参数
for t=1:num_sum
Gbest(t)=0;
end
for r=1:P
for i=1:N
for j=1:D
x(i,j)=(rand-0.5)*200; % 随机初始化位置 (在搜索范围内放置小鸟)
v(i,j)=(rand-0.5)*200; % 随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化 Pi 和 Pg----------------------
for i=1:N
pbestfitness(i)=fitness(x(i,:));
pbest(i,:)=x(i,:); % pbest(i,:)为局部(每个粒子)最优位
置
end
gbest = x(N,:); % gbest 为全局最优粒子位置
for i=1:(N-1) % 找到初始状态真正的全局最优
if fitness(x(i,:))<fitness(gbest)
gbest=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代------------
% gene_max = 0.7; % 最大权重
% gene_min = 0.1; % 最小权重
w=0.8;
vmax = 0.7; % 最大移动速度 0.05
step_max = 0.5; % 最大加权因子 (用于整体速度加权)
step_min = 0.5; % 最小加权因子
for t=1:num_sum % 迭代步数
剩余24页未读,继续阅读
yangmishiwonvshen
- 粉丝: 333
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0