%%全局粒子群标准算法(PSO)
%算法开始
clc,clear;
%% ---------------------参数的初始化-------------------------%%
n=1; % 自变量个数
popsize=30; % 粒子数
%一般情况下,粒子数20~40,惯性因子0.6~0.75,权重系数都为2
w=0.6; % 惯性权重
c1=2; % 跟踪自己历史最优值的权重系数
c2=2;%跟踪群体最优值的权重系数
Vmax=2; % 粒子的最大速度
Vmin=-2; % 粒子的最小速度
generation=100; % 迭代次数
xmax=4; % 定义粒子的移动范围
xmin=-3; %即自变量的定义域
%% ----------------------初始化粒子群-------------------------%%
% 初始化位置
x=-3+10*rand(popsize,n); %注意改变初始位置和速度
% 初始化速度
v=-2+4*rand(popsize,n);
% 计算个体适应度函数值
for i=1:popsize
y(i)=fitness(x(i,:)); % 适应度函数
end
% 初始时的局部最优
pbest=x; % 位置
pbestval=y;
% 初始时的全局最优
[gbestval,gbestindex]=min(y);
gbest(1,:)=pbest(gbestindex,:); % 全局最优值的位置 可以是一个也可以是一组数
%% ----------------------迭代循环--------%%%%%%%%%
for k=1:generation
for i=1:popsize
y(i)=fitness(x(i,:));
if y(i)<pbestval(i) %(当前值与个体历史最优值对比) 寻找个体的历史最优值,局部最优
pbestval(i)=y(i); % 变换个体历史最优
pbest(i,:)=x(i,:); % 记录个体的历史最优值所在的位置,目标函数中x1,x2的值,即三维图像中的x轴和y轴坐标
end
end
[gbestval(k),gbestindex]=min(pbestval); % 寻找粒子群中最优值,全局最优
gbest(k,:)=pbest(gbestindex,:); % 记录粒子群中最优值的位置
% 更新速度和位置
for i=1:size(v,1)%计算v的行数
% 更新速度
v(i,:)=w*v(i,:)+c1*rand*(pbest(i,:)-x(i,:))+c2*rand*(x(gbestindex,:)-x(i,:));
% 限制最大速度和最小速度
for j=1:size(v,2)%计算v的列数
if v(i,j)>Vmax
v(i,j)=Vmax;
elseif v(i,j)<Vmin
v(i,j)=Vmin;
end
end
% 更新位置
x(i,:)=x(i,:)+v(i,:);
% 限制位置的最大值和最小值
for j=1:size(v,2)
if x(i,j)>xmax
x(i,j)=xmax;
elseif x(i,j)<xmin
x(i,j)=xmin;
end
end
end
end
%% ------------------绘制迭代结果曲线及原图像-----%%%
figure
plot(1:generation,gbestval,'LineWidth',2)
grid on
title('迭代曲线')
xlabel('迭代次数')
ylabel('每代的全局最优值')
% 原函数图像
figure
x1=[-5:0.01:5];
x2=[-5:0.01:5];
for i=1:length(x1)
for j=1:length(x2)
f(i,j)=fitness([x1(i),x2(j)]);
end
end
[X Y]=meshgrid(x1,x2);
mesh(X,Y,f);
hold on
% 在三维图像中画出每代的全局最优质的位置
% plot3(gbest(:,1),gbest(:,2),gbestval,'bp','MarkerSize',15)
PSO.rar_PSO_optimization_pso fitness.m_pso算法_粒子群
版权申诉
136 浏览量
2022-07-14
23:40:04
上传
评论
收藏 1KB RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
最新资源
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
- multiled.zip
- 基于php实现的哈希算法的人脸检索
- 单片机 电子钟 设计报告/课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈