最优化算法 之 PSO算法
**
(一)PSO算法简要介绍
**
PSO算法是一种最优化算法。它预定义一组粒子,和计算粒子适应值(fitness value)的函数。然后进行如下步骤:
(1) 随机化这些粒子,并根据适应值函数算出所有粒子的适应值;
(2) 选出当前所有粒子适应值最优的粒子,保存为全局最优粒子gbest;保存当前所有粒子的适应值,为局部最优粒子lbest(,)(由于现在是第一次求粒子fitness value,故选择当前所有粒子的适应值为每个粒子的局部最优粒子);
(3) 将每个粒子按如下公式迭代更新,再次计算适应值。
v=swarm+c1∗rand∗(gbest−swarm)+c2∗rand∗(lbest−swarm)
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算法相关推荐
- Particle Swarm Optimization粒子群优化算法(PSO算法)概念及实战
Particle Swarm Optimization 粒子群算法(PSO算法) 定义 粒子群算法,又称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO, 是近 ...
- 蚁群算法,PSO算法以及两种算法可以融合的几种方法
蚁群算法(ACO)是受自然界中蚂蚁搜索食物行为的启发,是一种群智能优化算法.它基于对自然界真实蚁群的集体觅食行为的研究,模拟真实的蚁群协作过程.算法由若干个蚂蚁共同构造解路径,通过在解路径上遗留并交换 ...
- 粒子群优化算法(PSO算法)
目录 粒子群算法的发展 粒子群算法的概述 粒子群算法的步骤与实现 算法步骤 算法的实现(MATLAB) 调用示例 关于惯性权重[^7] 自适应权重法 随机权重法 关于学习因子[^8] 同步变化的学习因 ...
- matlab算法改进,pso算法改进含MATLAB代码
%% No-dealing LOO RBF % 程序运行完以后,观察一下数据 %QPSO输出 % Validation_err(curCount,Swarmsize) ...
- 优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)
目录 ▎标准PSO算法 ▎RDPSO算法 ▎标准PSO算法Python工具包 01 | 工具包适用范围 02 | 工具包安装方法 03 | 工具包使用实例 ▎参考文献 今天为各位讲解一种改进的粒子群优 ...
- 粒子群优化算法(PSO)简介及MATLAB实现
目录 粒子群优化算法概述 PSO算法步骤 PSO(粒子群优化算法)与GA(遗传算法)对比 PSO的MATLAB实现 粒子群优化算法概述 • 粒子群优化(PSO, particle swarm opti ...
- 一种非线性动态自适应惯性权重PSO算法-附代码
一种非线性动态自适应惯性权重PSO算法 文章目录 一种非线性动态自适应惯性权重PSO算法 1.粒子群优化算法 2. 改进粒子群算法 2.1 改进的动态自适应惯性权重 PSO 算法 3.实验结果 4.参 ...
- 【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码
1 简介 针对传统的K-means算法对初始聚类中心的选取敏感,容易收敛到局部最优的缺点,提出一种基于改进粒子群优化算法(PSO)的K-means优化聚类算法.该算法利用PSO算法强大的全局搜索能力对 ...
- 遗传算法、贪婪算法、粒子群算法、蚂蚁算法概念简介
遗传算法 遗传算法是计算数学中用于解决最佳化的搜索算法,是进化算法的一种.进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传.突变.自然选择以及杂交等.遗传算法通常实现方式为一种 ...
最新文章
- cacti监控java,Cacti for Oracle监控
- 13-MySQL面向对象设计:数据表与Java对象对应关系
- 2020-06-18 CVPR2020 VL论文讨论(1) 笔记
- git:如何让不同开发者提交在同一条直线上
- 工业机械人运动学正逆解,简单粗暴!!!!!!
- php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
- 还没毕业就被阿里30万年薪预定,他凭什么?
- java树的基本知识_Java数据结构和算法(二)树的基本操作
- flex measure
- 微软全球副总裁洪小文:微软未来的三大战略
- 淘宝+京东+拼多多+苏宁易购+聚划算百亿补贴,双11秒杀抢购助手脚本,分享源码
- 传世单机架设,账号登陆后,无法选择服务器,点击无效,无法进入游戏。
- 网康NGFW下一代防火墙远程命令执行漏洞复现
- 使用一条sql语句在postgres中查询总数和分页数据
- 弥散阴影html,设计弥散阴影效果海报图片的PS实例教程
- 黑帽SEO之技巧篇【认准SEO黑帽大神】
- 封基高折价 投资机会扩大
- 项目管理:KANO模型
- 不得不吐槽一下《IOS开发指南》关东升
- 在vue中实现单页面打印之cdn引入打印