function [gBest,gBestScore,ConvergenceCurve]=BPSO(noP,Max_iteration,BPSO_num,CostFunction,noV)
%Initial Parameters for PSO
w=2; %Inirtia weight
wMax=0.9; %Max inirtia weight
wMin=0.4; %Min inirtia weight
c1=2;
c2=2;
Vmax=6;
Velocity=zeros(noP,noV);%Velocity vector
Position=zeros(noP,noV);%Position vector
%////////Cognitive component/////////
pBestScore=zeros(noP);
pBest=zeros(noP,noV);
%////////////////////////////////////
%////////Social component///////////
gBestScore=inf;
gBest=zeros(1,noV);
%///////////////////////////////////
ConvergenceCurve=zeros(1,Max_iteration); %Convergence vector
%Initialization
for i=1:size(Position,1) % For each particle
for j=1:size(Position,2) % For each variable
if rand<=0.5
Position(i,j)=0;
else
Position(i,j)=1;
end
end
end
for i=1:noP
pBestScore(i)=inf;
end
for l=1:Max_iteration
%Calculate cost for each particle
for i=1:size(Position,1)
fitness=CostFunction(Position(i,:));
if(pBestScore(i)>fitness)
pBestScore(i)=fitness;
pBest(i,:)=Position(i,:);
end
if(gBestScore>fitness)
gBestScore=fitness;
gBest=Position(i,:);
end
end
%update the W of PSO
w=wMax-l*((wMax-wMin)/Max_iteration);
%Update the Velocity and Position of particles
for i=1:size(Position,1)
for j=1:size(Position,2)
%Equation (1)
Velocity(i,j)=w*Velocity(i,j)+c1*rand()*(pBest(i,j)-Position(i,j))+c2*rand()*(gBest(j)-Position(i,j));
if(Velocity(i,j)>Vmax)
Velocity(i,j)=Vmax;
end
if(Velocity(i,j)<-Vmax)
Velocity(i,j)=-Vmax;
end
if BPSO_num==1
s=1/(1+exp(-2*Velocity(i,j))); %S1 transfer function
end
if BPSO_num==2
s=1/(1+exp(-Velocity(i,j))); %S2 transfer function
end
if BPSO_num==3
s=1/(1+exp(-Velocity(i,j)/2)); %S3 transfer function
end
if BPSO_num==4
s=1/(1+exp(-Velocity(i,j)/3)); %S4 transfer function
end
if BPSO_num<=4 %S-shaped transfer functions
if rand<s % Equation (4) and (8)
Position(i,j)=1;
else
Position(i,j)=0;
end
end
if BPSO_num==5
s=abs(erf(((sqrt(pi)/2)*Velocity(i,j)))); %V1 transfer function
end
if BPSO_num==6
s=abs(tanh(Velocity(i,j))); %V2 transfer function
end
if BPSO_num==7
s=abs(Velocity(i,j)/sqrt((1+Velocity(i,j)^2))); %V3 transfer function
end
if BPSO_num==8
s=abs((2/pi)*atan((pi/2)*Velocity(i,j))); %V4 transfer function (VPSO)
end
if BPSO_num>4 && BPSO_num<=8 %V-shaped transfer functions
if rand<s %Equation (10)
Position(i,j)=~Position(i,j);
end
end
end
end
ConvergenceCurve(l)=gBestScore;
end
end
fpga和matlab
- 粉丝: 18w+
- 资源: 2639
最新资源
- 后端pythonapp.py
- 另类Simulink模型自动化修改方式,能够对模型信号与参数名称的快速自动化调整,自动化脚本能够有效地对 Simulink 模型进行批量处理,例如对模型中的参数,信号进行批量修改,大大提高工程师的工作
- wps 数据表云端数据下载到本地 下载更新删除上传
- Sourcetree软件 Mac系统上的git管理工具
- Labview用面向对象操作者架构实现的模拟树莓派可视化编程,程序简洁,框架适合大型项目开发和维护,完整源代码,可运行,Labview2018版,对Labivew进阶编程也会有极大帮助和触发,适合有一
- 基于STM32的直流电机PID调速系统,源码+仿真+报告全套 本套资料是一套基于STM32的直流电机PID调速系统,包括了源码、Proteus仿真、汇报PPT和33页的word报告 该系统在STM3
- 基于图像处理的城市河流水位测量方法研究与实现-复杂天气条件下的精准监控系统
- WebGL与Three.js实现新年3D烟花效果HTML页面
- COMSOL采动应力影响下的煤层瓦斯抽采流固耦合模型
- 基于小程序的微信点餐系统源码(小程序毕业设计完整源码).zip
- 锂电池matlab建模仿真 基于二阶RC等效电路模型的matlab电池仿真 锂电池等效电路Simulink建模二阶RC模型 两个工况:HPPC CC
- 20250101 3S科学及其在灾害监测与预警中应用
- 风光储三相PQ控制并网发电系统参考文献 附带对应的参考文献结合仿真学习 1光伏模块:采用电导增量法实现最大功率的跟踪,参考文献给的文献第3章 2蓄电池储能:采用经典双闭环控制直流母线电压外
- 在visual studio code中运行和调试Java功能详解.pdf
- 欧姆龙RFID模块-V680S-HMD63的EDS文件
- html+css+js网页设计 美食 美食天下26个页面
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈