首页 > 编程语言 >混合粒子群算法通俗讲解(附MATLAB代码)

混合粒子群算法通俗讲解(附MATLAB代码)

时间:2022-09-29 17:01:41浏览次数:45  
标签:粒子 PSO 交叉 个体 算法 MATLAB 讲解 最优 通俗

混合粒子群算法通俗讲解(附MATLAB代码)_遗传算法



还是先声明本文参考《MATLAB智能算法30个案例分析》

今天小编为大家讲解粒子群算法(PSO),还是和往常一样,我的目的是为了带领大家快速入门,是为了让大家在最短的时间内上手粒子群算法。

首先讲一下PSO算法的思想,还是由一个很常规的例子引入:

设想一群鸟在随机搜索食物,已知在这块区域只有一块食物,所有的鸟都不知道食物在哪,但它们能感受到当前的位置离食物有多远,那么找到食物的最优策略是什么呢?

搜寻目前离食物最近的鸟的周围区域,根据自己的飞行经验判断食物的所在。这个策略的意思就是说只要找到最“厉害”的那只鸟,跟着那只鸟就能找到食物。


粒子群算法的基本思想就是根据各个粒子在搜索过程中的个体最优在每次搜索过程中最优的那个粒子(群体最优)更新个体位置。小编在这里不想介绍太多的基本概念,说实话感觉介绍那么多基本概念用处不大。

小编主要想传递的是PSO的思想,在实际用的时候,PSO大多数与其他算法结合使用,比如说在求解TSP问题时,可以引进遗传算法中交叉和变异的概念。在更新个体粒子和群体粒子的时候,个体粒子如何根据个体最优和群体最优更新自己???敲黑板划重点,下面是小编的个人理解,仅供参考

遗传算法中的交叉和变异思想恰好能应用到此处,比如说个体粒子先和个体最优交叉产生一个新的粒子,当然这里如果新产生的粒子没有原来粒子好,我们就舍弃这个新的粒子;与个体最优交叉完后,新的粒子还需与群体最优交叉,同样如果新产生的粒子没有原来粒子好,我们就舍弃这个新的粒子;交叉操作结束后,对新的粒子进行变异操作,同样如果新产生的粒子没有原来粒子好,我们就舍弃这个新的粒子。一直重复上述操作直至循环结束,最终输出群体最优粒子就是搜索过程中搜索到的最优粒子。

个体粒子在更新时与个体最优和群体最优先后进行交叉,这是不是体现了粒子群算法的基本思想呢,同时交叉操作和变异操作也体现出遗传算法的特点。

混合PSO的流程图如下所示:

混合粒子群算法通俗讲解(附MATLAB代码)_粒子群算法_02

再做一点说明,代码中的交叉不是往常意义上的交叉,例如交叉位置是3和5。

混合粒子群算法通俗讲解(附MATLAB代码)_搜索_03


混合粒子群求解TSP问题时,城市分布图

混合粒子群算法通俗讲解(附MATLAB代码)_粒子群算法_04

求解进化过程

混合粒子群算法通俗讲解(附MATLAB代码)_搜索_05

求解结果

混合粒子群算法通俗讲解(附MATLAB代码)_粒子群算法_06

再次声明,本matlab是《MATLAB智能算法30个案例分析》中的代码,链接如下(后台回复“混合粒子群TSP”提取代码)

链接:https://pan.baidu.com/s/1omhJioPIMxTEvUxg4oXVWg 

提取码:z1sa 



标签:粒子,PSO,交叉,个体,算法,MATLAB,讲解,最优,通俗
From: https://blog.51cto.com/u_15810430/5723541

相关文章

  • 遗传算法求解车间调度问题(附MATLAB代码)
    首先声明本文参考数据魔术师公众号的《遗传算法求解混合流水车间调度问题(附C++代码)》和《MATLAB智能算法30个案例分析》今天小编为大家讲解遗传算法求解车间调度问题。小编......
  • 蚁群算法通俗讲解(附MATLAB代码)
    本文依然参考《MATLAB智能算法30个案例分析》一书,文末的源代码也来自本书今天小编与大家聊聊蚁群算法,蚁群算法一个显著的特点是蚂蚁在经过路径后会释放信息素,蚂蚁之间能够相......
  • 模拟退火算法通俗讲解
    编辑:连吃十三碗校正:随心目录1. 模拟退火算法基本概念2. 模拟退火算法基本流程3. 遗传模拟退火算法matlab代码1.模拟退火算法基本概念自然凝结的、不受外界干扰而形成的......
  • CH573F蓝牙从机(peripheral)例程讲解(二)
    在上一篇外设例程讲解中讲述了蓝牙从机的收发接口,这样可以快速的上手,那么接下来就讲解另一个重要设置,从机的广播。在peripheral例程中,一直是以50ms的周期进行广播,使用手机......
  • python 使用HOG进行目标检测 + 非极大值抑制代码讲解(HOG(Histogram of Oriented Gradi
    最近在看《深度学习全书公式+推导+代码+TensorFlow》——清华大学出版社这本书,看到第8章——目标检测,其中有使用HOG进行目标检测的代码,觉得写的通俗易懂,就分享给大家......
  • 分支结构实战讲解
    分支结构实战讲解:#1.根据用户输入内容打印其权限'''jason-->超级管理员tom-->普通管理员jack,rain-->业务主管其他-->普通用户''......
  • 详细讲解三维动画与二维动画的优缺点有哪些?
    二维动画和三维动画是动画制作中两种重要的表现方式。它们有很多相似之处。三维动画制作是以二维动画为基础的。同时,立体动画制作具有更多的独立差异和优势。动画形象策划不......
  • 基础知识(5) --Matlab中特殊符号使用总结
    前言:上篇文章分享了Matlab经常会遇到(),[],与{}三种符号,下面接着捋一捋其他的特殊符号使用方法,主要有:冒号'分号&  &&与|   || 或~非.点1、:冒号冒号的主要用途是用......
  • Matlab爬虫获取王者荣耀英雄皮肤
    前言:周末闲来无事,玩了几局王者荣耀,突发奇想怎么获取到王者荣耀里面的英雄皮肤,本期分享一下如何通过matlab爬虫批量提取王者荣耀的英雄皮肤关键字:王者荣耀、爬虫、Matlab首先......
  • 在Linux上运行matlab
    1.首先在集群上把matlab这个模块加载上。moduleloadmatlabXXX2.接下来运行。matlab-nodesktop-nosplash-rmatlabfilename(不加.m,可执行文件)也可以进入matlab环......