**
(一)PSO算法简要介绍

**

PSO算法是一种最优化算法。它预定义一组粒子,和计算粒子适应值(fitness value)的函数。然后进行如下步骤:

(1) 随机化这些粒子,并根据适应值函数算出所有粒子的适应值;
(2) 选出当前所有粒子适应值最优的粒子,保存为全局最优粒子gbest;保存当前所有粒子的适应值,为局部最优粒子lbest(,)(由于现在是第一次求粒子fitness value,故选择当前所有粒子的适应值为每个粒子的局部最优粒子);
(3) 将每个粒子按如下公式迭代更新,再次计算适应值。

v=swarm+c1∗rand∗(gbest−swarm)+c2∗rand∗(lbest−swarm)

v=swarm+c1∗rand∗(gbest−swarm)+c2∗rand∗(lbest−swarm)

swarm=swarm+v

swarm=swarm+v

(4) 根据适应值更新全局最优粒子和局部最优粒子,重复(3)步骤,直至迭代n次。

我们可以看到,这里一共需要定义:
c1 , c2 , 迭代次数n , 粒子个数m ,
除此之外,还需要定义最大迭代速度vmax,最小迭代速度vmin,粒子的最大值max, 最小值min,
(二)代码实现

feature_num = 5;
w = 0.8;
c1 = 0.2;
c2 = 0.025;
swarmsize = 50;             //粒子数目
maxiter = 100;              //迭代数目
vmax = ones(1,feature_num)*0.5;     //最大速度
vmin = ones(1,feature_num)*0.005;   //最小速度
max = ones(1,feature_num)*10;       //最大值
min = ones(1,feature_num)*0.1;      //最小值%初始化粒子群
range = ones(1,feature_num).*(max-min);
swarm = rand(swarmsize,feature_num);
%得到具有初始化位置的粒子群
for i = 1:swarmsizeswarm(i,:) = swarm(i,:).*range+min;
end
%初始化速度
vstep = rand(swarmsize,feature_num);
for i = 1:swarmsizevstep(i,:) = vstep(i,:).*(vmax-vmin)+vmin;
endfswarm = zeros(swarmsize,1);
%存放每个粒子的适应值%初始化得到适应值
for i = 1:swarmsizea = swarm(i,:);rms = fitness(data,label,a,17);   //data是数据 label是值fswarm(i,1) = rms;
end%个体最优和全局最优
[best,bestIndex] = min(fswarm);
gbest = swarm;              %个体最优解,当前为所有初始值
fgbest = fswarm;            %个体最优适应值
zbest = swarm(bestIndex,:); %全局最优解
fzbest = best;             %全局最优适应值;%迭代寻优
yfitness = zeros(1,maxiter);        %存放每一次迭代的全局最优适应值
ybest = zeros(feature_num,maxiter); %存放每一次迭代的全局最优解
for i = 1:maxiterif(max(fswarm)-min(fswarm)>0.0003)for j = 1:swarmsizevstep(j,:) = vstep(j,:)+c1*rand*(gbest(j,:)-swarm(j,:))+c2*rand*(zbest-swarm(j,:)); vstep(j,vstep(j,:)-vmax>0) = vmax(1,vstep(j,:)-vmax>0);vstep(j,vstep(j,:)-vmin<0) = vmin(1,vstep(j,:)-vmin<0);%控制速度范围swarm(j,:) = swarm(j,:) + vstep(j,:);swarm(j,swarm(j,:)-max>0) = max(1,swarm(j,:)-max>0);vstep(j,swarm(j,:)-min<0) = min(1,swarm(j,:)-min<0);%计算适应值fswarm(j,1) = fitness(data,label,swarm(j,:),17);if fswarm(j,1)<fgbest(j)fgbest(j) = fswarm(j,1);gbest(j,:) = swarm(j,:);endif fswarm(j,1)<fzbestfzbest = fswarm(j,1);zbest = swarm(j,:);endendyfitness(1,i) = fzbest;ybest(:,i) = zbest;end
end[out.fitness, index] = min(yfitness);
out.best = ybest(:,index);

最优化算法 之 PSO算法相关推荐

  1. Particle Swarm Optimization粒子群优化算法(PSO算法)概念及实战

    Particle Swarm Optimization 粒子群算法(PSO算法) 定义 粒子群算法,又称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO, 是近 ...

  2. 蚁群算法,PSO算法以及两种算法可以融合的几种方法

    蚁群算法(ACO)是受自然界中蚂蚁搜索食物行为的启发,是一种群智能优化算法.它基于对自然界真实蚁群的集体觅食行为的研究,模拟真实的蚁群协作过程.算法由若干个蚂蚁共同构造解路径,通过在解路径上遗留并交换 ...

  3. 粒子群优化算法(PSO算法)

    目录 粒子群算法的发展 粒子群算法的概述 粒子群算法的步骤与实现 算法步骤 算法的实现(MATLAB) 调用示例 关于惯性权重[^7] 自适应权重法 随机权重法 关于学习因子[^8] 同步变化的学习因 ...

  4. matlab算法改进,pso算法改进含MATLAB代码

    %% No-dealing LOO RBF %      程序运行完以后,观察一下数据 %QPSO输出 %      Validation_err(curCount,Swarmsize)        ...

  5. 优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)

    目录 ▎标准PSO算法 ▎RDPSO算法 ▎标准PSO算法Python工具包 01 | 工具包适用范围 02 | 工具包安装方法 03 | 工具包使用实例 ▎参考文献 今天为各位讲解一种改进的粒子群优 ...

  6. 粒子群优化算法(PSO)简介及MATLAB实现

    目录 粒子群优化算法概述 PSO算法步骤 PSO(粒子群优化算法)与GA(遗传算法)对比 PSO的MATLAB实现 粒子群优化算法概述 • 粒子群优化(PSO, particle swarm opti ...

  7. 一种非线性动态自适应惯性权重PSO算法-附代码

    一种非线性动态自适应惯性权重PSO算法 文章目录 一种非线性动态自适应惯性权重PSO算法 1.粒子群优化算法 2. 改进粒子群算法 2.1 改进的动态自适应惯性权重 PSO 算法 3.实验结果 4.参 ...

  8. 【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码

    1 简介 针对传统的K-means算法对初始聚类中心的选取敏感,容易收敛到局部最优的缺点,提出一种基于改进粒子群优化算法(PSO)的K-means优化聚类算法.该算法利用PSO算法强大的全局搜索能力对 ...

  9. 遗传算法、贪婪算法、粒子群算法、蚂蚁算法概念简介

    遗传算法 遗传算法是计算数学中用于解决最佳化的搜索算法,是进化算法的一种.进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传.突变.自然选择以及杂交等.遗传算法通常实现方式为一种 ...

最新文章

  1. cacti监控java,Cacti for Oracle监控
  2. 13-MySQL面向对象设计:数据表与Java对象对应关系
  3. 2020-06-18 CVPR2020 VL论文讨论(1) 笔记
  4. git:如何让不同开发者提交在同一条直线上
  5. 工业机械人运动学正逆解,简单粗暴!!!!!!
  6. php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
  7. 还没毕业就被阿里30万年薪预定,他凭什么?
  8. java树的基本知识_Java数据结构和算法(二)树的基本操作
  9. flex measure
  10. 微软全球副总裁洪小文:微软未来的三大战略
  11. 淘宝+京东+拼多多+苏宁易购+聚划算百亿补贴,双11秒杀抢购助手脚本,分享源码
  12. 传世单机架设,账号登陆后,无法选择服务器,点击无效,无法进入游戏。
  13. 网康NGFW下一代防火墙远程命令执行漏洞复现
  14. 使用一条sql语句在postgres中查询总数和分页数据
  15. 弥散阴影html,设计弥散阴影效果海报图片的PS实例教程
  16. 黑帽SEO之技巧篇【认准SEO黑帽大神】
  17. 封基高折价 投资机会扩大
  18. 项目管理:KANO模型
  19. 不得不吐槽一下《IOS开发指南》关东升
  20. 在vue中实现单页面打印之cdn引入打印

热门文章

  1. make menuconfig配置方法
  2. sqlserver四舍六入五留双函数
  3. PB动态数据管道技术实用编程
  4. 麻辣江湖服务器正在维护,麻辣江湖今日新服开启 炫彩背饰砸不停
  5. Android 1000实例代码集结(一 )
  6. 237_自定义抽签器三
  7. 辛迪加、卡特尔、托拉斯
  8. 删除交换机和路由器配置信息
  9. 批量给没有扩展名的文件追加新的扩展名从而修改文件名
  10. 滴滴出行打车APP-增加RFID认证、海外版、司机证件号码识别功能