算法 - 粒子群(PSO)算法
文章目录
- 0. 简介
- 1. 原理
- 2. 流程
- 3. 代码
- 4. 权重的选择
0. 简介
粒子群算法( particle swarm optimization, PSO)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有效的策略就是搜寻当前距离食物最近的鸟的周围区域。PSO算法是从这种生物种群行为特征中得到启发并用于求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。
PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征,适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。粒子在解空间中运动,通过跟踪个体极值Pbest和群体极值Gbest更新个体位置。个体极值Pbest是指个体粒子搜索到的适应度值最优位置,群体极值Gbest是指种群中的所有粒子搜索到的适应度最优位置。粒子每更新–次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值Pbest和群体极值Gbest位置。
1. 原理
2. 流程
3. 代码
主函数:
%% 清空环境
clc
clear%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;maxgen=300; % 进化次数
sizepop=20; %种群规模Vmax=0.5;
Vmin=-0.5;
popmax=2;
popmin=-2;%% 产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=2*rands(1,2); %初始种群V(i,:)=0.5*rands(1,2); %初始化速度%计算适应度fitness(i)=fun(pop(i,:)); %染色体的适应度
end%% 个体极值和群体极值
[bestfitness bestindex]=max(fitness);
zbest=pop(bestindex,:); %全局最佳
gbest=pop; %个体最佳
fitnessgbest=fitness; %个体最佳适应度值
fitnesszbest=bestfitness; %全局最佳适应度值%% 迭代寻优
for i=1:maxgenfor j=1:sizepop%速度更新V(j,:) = 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)=fun(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);endend yy(i)=fitnesszbest; end
%% 结果分析
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
适应度函数:
function y = fun(x)
%函数用于计算粒子适应度值
%x input 输入粒子
%y output 粒子适应度值
y=sin( sqrt(x(1).^2+x(2).^2) )./sqrt(x(1).^2+x(2).^2)+exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)-2.71289;
4. 权重的选择
参考书籍《MATLAB智能算法30个案例分析》
https://blog.csdn.net/daaikuaichuan/article/details/81382794
算法 - 粒子群(PSO)算法相关推荐
- 智能优化算法——粒子群优化算法(PSO)(小白也能看懂)
前言: 本文主要参考B站的一篇学习视频后,加之自己的理解和浓缩精华,不想看文字的可以直接划到末尾去b站看原视频,非常通俗易懂. 理论知识: 感性认知:如下面一张图片所示.在一个范围内,以三点(三)为例 ...
- 【优化算法】粒子群优化算法
粒子群优化算法 粒子群优化算法简介 粒子群优化算法原理 粒子群优化算法的数学描述 粒子群优化算法框架 PySwarms:Python中粒子群优化的研究工具包 PySwarms快速使用 示例:编写自己的 ...
- 2021-01-26 粒子群优化算法(PSO)以及Matlab实现
粒子群优化算法(PSO)以及Matlab实现 1.粒子群算法 粒子群算法是一种智能优化算法.关于智能,个人理解,不过是在枚举法的基础上加上了一定的寻优机制.试想一下枚举法,假设问题的解空间很小,比如一 ...
- Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略
Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机&GA遗传算法&PSO粒子群优化算法).案例应用之详细攻略 目录 1.SVM算法使用案例 1.1.Libsvm ...
- Particle Swarm Optimization粒子群优化算法(PSO算法)概念及实战
Particle Swarm Optimization 粒子群算法(PSO算法) 定义 粒子群算法,又称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO, 是近 ...
- pso解决tsp matlab,计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc...
计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc 摘要:TSP是一个典型的NPC问题.本文首先介绍旅行商问题和粒子群优化算法的基本概念.然后构造一种基于交换子和交换序[1]概念 ...
- 优化算法 | 随机漂移粒子群优化算法(附标准PSO算法Python工具包)
目录 ▎标准PSO算法 ▎RDPSO算法 ▎标准PSO算法Python工具包 01 | 工具包适用范围 02 | 工具包安装方法 03 | 工具包使用实例 ▎参考文献 今天为各位讲解一种改进的粒子群优 ...
- 【老生谈算法】标准粒子群算法(PSO)及其Matlab程序和常见改进算法——粒子群算法
1.算法详解: 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]标准粒子群算法(PSO)及其Matlab程序和常见改进算法.docx 2 ...
- 粒子群优化算法(PSO算法)
目录 粒子群算法的发展 粒子群算法的概述 粒子群算法的步骤与实现 算法步骤 算法的实现(MATLAB) 调用示例 关于惯性权重[^7] 自适应权重法 随机权重法 关于学习因子[^8] 同步变化的学习因 ...
- 初探粒子群优化算法(PSO)
初探粒子群优化算法(PSO) 粒子群优化算法简介 PSO的优点 PSO的缺点 PSO的原理及基本概念 算法描述 参数分析 粒子群的拓扑结构 初始化时的前人经验 粒子群算法matlab实现:点击这里 粒 ...
最新文章
- 解决Linux CENTOS服务器 tree命令出现乱码 解析原因
- AJAX 传值数据类型问题
- AppDomain,应用程序域
- mysql slave 线程 简书_MySQL主从复制(Master-Slave)实践
- PCB 零件尺寸图:Arduino Mega 2560 尺寸
- C#中在窗体应用中使用StringBuilder拼接显示网页
- C# 打印PDF文档的10种方法
- Linux之软连接和硬链接
- 查看topic信息_如何规划的你博客文章主题(Topic)
- 推荐系统从0到1_1
- 支持x86/aarch/mips/loongarch的jogamp-2.3.2源码开源
- potel99se 文件损坏修复
- 【ZeyFra个人随记02】23考研,重新出发,决不投降,真正的为自己脚踏实地认真努力拼一次吧
- tgp登录dnf一直显示连接服务器失败,DNF总网络连接失败是为什么?
- 分享丨人脸数据集的史上最大规模调查
- 新浪批量短网址生成php源码,最新新浪短网址API接口与短网址在线批量生成工具的使用方法...
- 无题--仅以此文来总结我过去的五年
- 记录一次jar文件在windows系统下开机自启
- 运维开发团队技能与效率提速利器:运维+低代码
- position详解
热门文章
- 无限重启-千牛app
- 无法连接到语音信箱服务器,信箱帐户电子信箱格式
- java三国kill_蓝牙三国Kill:这算不算是鸡肋?
- 云顶之弈机器人怎么拉人_云顶之弈:3青龙刀机器人无限拉人,3虚4斗已经找不到对手了...
- 计算机大赛鼓励语录,班级标语激励语录(精选50句)
- POJ 1870 Bee Breeding G++ 正六边形矩阵 巧妙 背
- windows 7上安装centos 6.5时遇到问题
- 掌门1对1java面试_掌门1对1
- 为什么cookie获取不到?
- iOS7各个尺寸的图标上传