一.基本理念

粒子群算法(PSO),最早由两位外国科学家在1995年提出,该算法源自对鸟类捕食问题的研究。

我们将鸟类补食性原则分为一下三个基数,每组基数对应一个粒子,而每组粒子我们将其称之为种群。所以我们将其在细分具体,基数一,为我们当前粒子的位置,基数二,为我们当前粒子的速度,基数三,为我们当前粒子的适应度值(这里的适应度值则是由我们当前的位置和速度综合求解得出的结果,对于每一个问题的自适应度值的求解过程都是不一样的)。

我们的每一个粒子都将其放入解空间中,在我们的解空间中,我们的粒子的每一代都得保留最优个体(Pbest),和最优种群值(Gbest),通过跟踪我们的最优粒子来更新最优位置,这里我们解释一个Pbest,是我们个体对应最优适应度值的最优位置,而Gbest是指种群中最优适应度值对应的最优位置。

我们对于每次的更新过程是通过比较新粒子的适应度值和个体极值,群体极值的适应度值更新最优个体(Pbest)和群里最优值(Gbest)。

二.更新函数

其中V是我们的每一次迭代更新的速度,X是每一次要更新的位置,Pid,和Pgd分别为个体最优值,和群体最优值。w,c1,c2为常数。这里的w是一个很关键的值,它在迭代更进过程会随着迭代次数的变化而变化,会导致两边的权值发生差异。但目前我们只将其设为常数,不考虑权值的变化。

三.具体实验步骤

四.样例举例

一元函数的优化过程

1.初始化过程

我们设定x=1:0.01:2  这是我们x的取值范围和移动精度。

设定y=sin(10*pi*x)./x    这是我们对应的函数移动趋向。

我们当前要解决的问题我们要求出对应精度,y的最大值,所以我们的最优值,求的就是x在y上的最大分布。

参数初始化

c1=1.49445     c2=1.49445   这里的两个参数,我们是随便定义的。

maxgen=50  sizepop=10   分别定义我们的进化次数和种群规模

Vmin=-0.5    Vmax=0.5   速度的偏移范围

popmin=1   popmax=2   x也就是我们位置的范围变化

初始化粒子基数(生成我们第一代粒子的位置和速度)

for i=1:sizepop%%我们随机产生一个种群pop(i,:)=(rands(1)+1)/2+1;%%这里的随机数生成方式是为了保证我们生成的数能够在我们的位置范围中。%%我们的pop中的每一行都保留一个个体的当前的x位置V(i,:)=0.5*rand %%这里我们随机化每个粒子的速度%%V这里的每一行我们表示当前粒子的速度fitness(i)=sin(10*pop(i,:)./pop(i,:))%%在这里我们的自适应度值就是我们当前位置对应的函数值
end

个体最优值和群体最优值的初始化更新

%%bestfitness我们的群体最优适应度的值
%%bestindex ↑其对应的下标
[bestfitness,bestindex]=max(fitness);%%我们得出我们的最大适应度和其下标
%%zbest 这里是我们的全局最佳个体
%%gbest 这里是我们的每个个体对应的最优值
zbest=pop(bestindex,:)
gbest=pop
fitnesszbest=bestfitness  %%群体中的最优适应度值
fitnessgbest=fitness %%每个个体的最优适应度值

2.进化代数寻优过程

for i=1:maxgen %%最大代数寻优for j=i:sizepop%%我们先进行速度的更新%%根据我们的速度公式V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:))%%c1*rand*(gbest(j,:)-pop(j,:))%%个体最优位置减去每个个体的位置 %%c2*rand*(zbest(j,:)-pop(j,:))%%群体最优位置减去每个个体的位置%%为了保证我们个体速度的范围V(j,find(V(j,:)>Vmax))=Vmax;V(j,find(V(j,:)<Vmin))=Vmin;%%种群位置的更新 (速度和位置先后更新次序不可颠倒)pop(j,:)=pop(j,:)+V(j,:);%%更据我们的公式我们得出%%同时我们保证位置的范围是否超出pop(j,find(pop(j,:)>popmax)) = popmax;%%局限最大pop(j,find(pop(j,:)<popmin)) = popmin;%%局限最小fitness(j)=fun(pop(j,:));%%对于每一个位置的适应度更新%%这里我们的fun函数返回就是x对于在y上的位置endfor j=1:sizepop%%在我们将个体位置,群体位置,还有每个位置的适应度得出后,我们还有对个体最优进行更新if fitness(j)>fitnessgbest(j)gbest(j,:)=pop(j,:)%%保留最优位置%%每个个体fitnessgbest(j)=fitness(j);%%保留最优适应度值%%每个个体end%%在将gbest和fitnessgbest更新完毕之后我们在将群体最优位置和群体最优适应度更新了if fitness(j)>fitnesszbestzbest=pop(j,:);fitnesszbest=fitness(j);endendhold onplot(gbest,fitnessgbest,'r*')%%将粒子的走向绘出yy(i)=fitnesszbest%%保留种群最优值,之后将其绘图用于识别适应代数和适应度变化的趋势
end

3.将结果进行绘图用于直观的看出粒子的走向和,进化代数和适应度的变化

hold on
plot(zbest,fitnessbest,'r*')%%输出我们群体最优值的对于的点figure
%%直观的查看每一代的适应度是如何变化的
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

4. 数据绘图

1.初始函数绘图

2.每代最优粒子分布情形

3.每代种群最优适应度的变化 

群智能算法-粒子群1相关推荐

  1. 2018-3-23论文一种新的群智能算法--狼群算法(框架结构+感想一点点)

    一.文章的总体的结构 中文摘要:  总体的说提出了一种算法,并应用与15个基准函数---得出结论 英文摘要: 0     引言------ 各个群智能算法的列举+解释群智能算法的好处,本质 1     ...

  2. 基于群智能算法的函数最值优化问题

    基于群智能算法的函数最值优化问题 摘要 针对求解函数的极值问题的群智能算法,大部分函数在定义域内都可以通过微分的方式求得极值点和找到最值.但是存在一些测试函数,他们的最值用求解的微分的方式只能使得计算 ...

  3. 【人工智能】群智能算法

    群智能概述 群(swarm):某种交互作用的组织或agent的结构集合.人们把群居昆虫的集体行为称作"群智能",即低智能的主体通过合作表现出高智能行为的特性. 群智能算法是一种基于 ...

  4. 人工智能:群智能算法的一般框架、特点和不足

    一般框架 输入:解空间的初始种群 输出:最佳个体 步骤1:初始化种群规模.迭代次数等参数: 步骤2:在解空间中随机初始化种群: 步骤3:判断是否满足终止条件,如果不满足则继续进行迭代: 步骤4:计算当 ...

  5. 介绍一种新的群智能算法---黏菌算法

    一种新的群智能算法-黏菌算法 介绍一种新的群智能算法-黏菌算法 近些年群智能算法由于其效率较高,使用方便的优点引起了广大科研者的关注与兴趣.最近看文献,温州大学的李世民(现在去复旦读研究生了)提出了一 ...

  6. 蝙蝠算法c语言,一种新颖的群智能算法:飞蛾扑火优化算法

    李志明+莫愿斌+张森 摘要 飞蛾扑火优化(MFO)算法是一种新颖的群智能优化算法,该算法的主要灵感来源于飞蛾在自然界中被称为横向定位的飞行方式.作为一种新提出的仿生群智能优化算法,分析了飞蛾扑火优化算 ...

  7. 关于单目标群智能算法的一些思考

    关于计算机算法发展至今,已有很多不同的分类,目前运用最多是泛化群智能优化算法.譬如:粒子群优化算法(PSO).鲸鱼优化算法(WOA).灰狼优化算法(GWO).蜻蜓优化算法(DA).宇宙优化算法(MVO ...

  8. 10种混沌映射优化灰狼算法,可一键切换,可用于优化所有群智能算法,以灰狼算法为例进行介绍...

    " 本篇文章采用10种常见的和不常见的混沌映射用于优化群智能算法,代码可一键切换,可用于所有智能算法优化,本篇文章以灰狼算法为例进行介绍" 本文涉及10种混沌映射算法,用于在初始化 ...

  9. 群智能算法及其应用(蚁群算法和粒子群算法)

    粒子群算法 粒子群优化算法及其应用 粒子群优化算法流程图 粒子群优化算法的参数分析 粒子群算法解决TSP问题 项目结构 运行截图 数据集 NAME: st70 TYPE: TSP COMMENT: 7 ...

最新文章

  1. 25.2. String
  2. C#--封装、继承、多态
  3. python 数据平滑_数据平滑方法的原理和应用
  4. C#设计模式之20-状态模式
  5. h5 html被缓存,【Web前端问题】html5离线缓存,不能被缓存问题
  6. OPENSSH升级为7.4
  7. H3C 常用信息查看命令
  8. 密码学的发展(第五篇:量子加密)
  9. matlab 编写雷达波形,雷达信号处理+Matlab程序
  10. 2021爱分析·中国人工智能应用趋势报告——新基建助推,人工智能应用迈入新阶段
  11. JavaScript 浮点运算
  12. c语言 一个数组奇数左边 偶数右边,C语言设计实验报告(第七次)
  13. mysql 拷贝表(复制表)的几种方式
  14. 正大国际期货:智星在线交易平台是什么?提供哪些交易执行模式和订单类型?
  15. 配置daocloud加速
  16. 职场必备!学会这4个技巧,便可轻松操作Excel!
  17. Leetcode刷题986. 区间列表的交集
  18. 家里有两只猫给挖坑,还有世界美食的诱惑,我就被无监督学习彻底收服了!...
  19. 第 338 场周赛 (力扣周赛)
  20. 稳定靠谱的企业云桌面选择

热门文章

  1. 艾永亮:超级产品与营销的本质区别
  2. MATLAB软件应用及语法学习基础
  3. MD5算法和SHA-1算法
  4. load data inpath的实践
  5. was中奇怪的生僻字乱码案例
  6. Yarn01:诞生背景、架构和工作机制介绍
  7. 微信小程序使用WeUI入门教程
  8. 硬盘无法格式化怎么解决?数据丢失怎么恢复?
  9. android 反射机制
  10. Nmap.sqlmap.暴力破解