UP目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

粒子群优化(PSO)是一种基于群体的随机优化技术。与其它基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是:进化计算遵循适者生存原则,而PSO模拟社会,将每一个可能产生的解表述为群中的一个微粒,每个微粒都具有自己的位置向量和速度向量,以及一个由目标函数决定的适应度。所有微粒在搜索空间中以一定的速度飞行,通过追随当前搜索到的最优值来寻找全局最优。

PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。

基本粒子群算法的流程如下:

第一:首先对粒子群的随机位置和速度进行初始化,即在速度和位置的限定

范围内产生随机值;

第二:利用适应度函数计算每个粒子的适应值;

第三:比较每个粒子的适应值和自身所经历过最好位置Pi的适应值,若当前值更好,则将当前值作为自身最好位置;

第四:比较每个粒子的适应值和全局最好位置Pg的适应值,若当前值更好,则将当前值作为全局最好位置;

第五:更新粒子的速度和位置;

第六:如此时已满足结束条件,即达到最大的迭代次数或最小的错误要求,则进化终止,输出最优解,否则,转到步骤2。

自适应的粒子群算法,在原有的基础上,它增加了3个改进的方面:

① 进化状态评估(ESE):
每一次粒子群移动后,都有一个全局的状态记录,目的是为了收敛的状态进行评估和划分,为后面自适应参数(c1,c2,w)提供基础

状态的划分步骤:

步骤一:计算每个粒子i的相对于其他粒子的平均距离(欧式距离),与其他粒子都计算一遍距离,最后求平均值;公式如下:

其中N是种群的大小,D为问题的维数,在我们优化SVM问题中,问题的维数为2,因为我们只优化2个参数(c,g)

步骤二:在众多di中选取dg,g为当前最优粒子的下标, 故dg代表了当前最优粒子与其他粒子的平均距离;同时选取中dmax与dmin,最大与最小平均距离;计算进化因子f;公式如下:

步骤三:根据进化因子f,选择当前隶属于哪一种状态,如下图,采用有规则基准的方式:

(1) 参数c1:个体认知加速度,促进该粒子获得它历史上最好的位置,有利于开发局部中最好的解,增加粒子群的多样性
(2) 参数c2:社会认知加速度,它能推进粒子向全局中最好的区域收敛,加快收敛速度

二、核心程序

.............................................................
%% 产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=init+range*rand(1,n);    %初始种群V(i,:)=rand(1,n);  %初始化速度%计算适应度fitness(i)=Rastrigrin(pop(i,:));   %染色体的适应度
end%% 个体极值和群体极值
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值%% 迭代寻优
for i=1:maxgeniind_1=ind;factor=calfactor(pop,sizepop,zbest);if i==1ind_1=1;endind=fuzzyclassification(factor,ind_1);if ind==1c1=c1+unifrnd(0.05,0.1);c2=c2-unifrnd(0.05,0.1);elseif ind==2c1=c1+0.5*unifrnd(0.05,0.1);c2=c2-0.5*unifrnd(0.05,0.1);elseif ind==3c1=c1+0.5*unifrnd(0.05,0.1);c2=c2+0.5*unifrnd(0.05,0.1);p=zbest;d=unidrnd(n);p(d)=p(d)+(popmax-popmin)*normrnd(0,sig^2);p(find(p(:)>popmax))=popmax;p(find(p(:)<popmin))=popmin;cv=Rastrigrin(p);if cv<fitnesszbestzbest=p;else[aa,bb]=max(fitness);pop(bb,:)=p;endelsec1=c1-unifrnd(0.05,0.1);c2=c2+unifrnd(0.05,0.1);endw=1/(1+1.5*exp(-2.6*factor));if c1<1.5c1=1.5;elseif c1>2.5c1=2.5;endif c2<1.5c2=1.5;elseif c2>2.5c2=2.5;endcrange=c1+c2;c1=(c1/crange)*4;c2=(c2/crange)*4;sig=sigmax-(sigmax-sigmin)*(i/maxgen);for j=1:sizepop  %速度更新V(j,:) = w*V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - 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)=Rastrigrin(pop(j,:));endfor j=1:sizepop%个体最优更新if fitness(j) < fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) < fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endendyy(i)=fitnesszbest;end
%% 结果分析
figure(1);
plot(yy,'r');
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
up105

三、测试结果

在matlab2021a中仿真得到如下的效果:

自适应粒子群优化算法的MATLAB性能仿真相关推荐

  1. matlab粒子群优化算法工具箱,MATLAB粒子群优化算法(PSO)

    MATLAB粒子群优化算法(PSO) 一.介绍 粒子群优化算法(Particle Swarm Optimization Algorithm)是一种群智能算法,为了寻求全局最优.群体迭代,粒子在解空间追 ...

  2. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码

    1 简介 针对PSO算法在求解问题的优化问题中易陷入局部收敛且收敛速度较慢等缺陷,引入一种初始化改进策略,并将模拟退火算法与PSO算法相结合,提出了一种全新的算法.该算法将寻优过程分为两个阶段:为了提 ...

  3. pso解决tsp matlab,计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc...

    计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc 摘要:TSP是一个典型的NPC问题.本文首先介绍旅行商问题和粒子群优化算法的基本概念.然后构造一种基于交换子和交换序[1]概念 ...

  4. 自适应变异粒子群matlab,一种自适应变异粒子群优化算法的制作方法

    本算法属于数据挖掘领域,涉及到SVM分类器和参数寻优,特别涉及到其变异操作,使得能够最大限度的搜索到全局最优解. 背景技术: 网格划分法是SVM分类器中常用的一种参数寻优方法,原因如下:一是网格划分法 ...

  5. 采用粒子群优化算法实现投资组合优化【Matlab实现】

    目录 一. 粒子群算法  1.1 概念 1.1.1 粒子群优化算法思想 1.1.2 更新规则  1.1.3 惩罚项 1.2 程序框图 二.投资组合优化  三.Matlab实现  3.1 结果及可视化 ...

  6. matlab 动态邻域粒子群,求解TSP问题的动态邻域粒子群优化算法

    1引言粒子群优化(ParticleSwarmOptimization,PSO)算法于1995年由Eberhart博士和Kennedy博士提出,它是一类新兴的基于群智能优化算法[1],同其它的进化算法相 ...

  7. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  8. 改进粒子群优化算法(IWAPSO)的MATLAB源程序

    改进粒子群优化算法(IWAPSO)的MATLAB源程序 作者:aaron8967    主页:http://aaron8967.blog.51cto.com 说明:粒子群优化算法(Particle S ...

  9. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

最新文章

  1. elasticsearch 索引 red 状态恢复 green
  2. 中国北斗全球系统核心星座将于2019年年底部署完成
  3. 以太坊私链搭建、truffle项目开发
  4. 权限管理系统之模块管理
  5. linux需要的GLIBCXX版本,GCC版本中没有GLIBCXX_3.4.15解决
  6. linux系统去吧,要开始另一个linux操作系统的尝试了,说说我以前的ubuntu吧
  7. 音频杂音问题_OBS直播出现杂音或者电流声、没声音或者调大音量等操作
  8. 根据日志统计出每个用户在站点所呆时间最长的前2个的信息
  9. PostgreSQL 之 分区表
  10. python移位运算,python移位运算
  11. 单页面网站优化技巧有哪些?
  12. 【旋转摆正验证码】知苗易约小程序旋转摆正验证码识别——识别解绝方法
  13. 今日头条2017校招编程题
  14. 【小工具】- Ubuntu如何查看cpu支持的指令集
  15. 指数多项式的Galois群计算
  16. 人脸识别、行人识别、图片库
  17. 艾灸排病反应及解决方案(中),建议收藏!
  18. 【whistle】Whistle 安装及使用
  19. Unity关于选关界面的制作
  20. 光伏电池PV建模,基于Boost/Buck电路实现最大功率追踪MPPT,包括扰动观察法

热门文章

  1. Springboot毕业设计毕设作品,校园疫情防控系统 开题报告
  2. 微型计算机的三种线路,微机线路保护
  3. 【论文总结】Meta-Learning for semi-supervised few-shot classification(附翻译)
  4. Spring Boot + Vue 如此强大!
  5. ADI最新基带处理芯片 ADRV9002特性及 FPGA 驱动开发调试记录分享
  6. js高级函数之(函数)柯里化方法
  7. MySQL数据库学习资料(四)
  8. 【师德皓大教育】怎么样?说说我的体验
  9. ubuntu中英文输入法设置
  10. Freeline 让AndroidStudio快的飞起来