粒子群算法从入门到高阶全面详尽数模比赛中,经常见到有同学“套用”启发式算法(数模中常称为智能优化算法)去求解一些数模

数模比赛中,经常见到有同学“套用”启发式算法(数模中常称为智能优化算法)去求解一些数模问题,事实上,很大一部分问题是不需要用到启发式算法求解的,Matlab中内置的函数足够我们使用了。但是如果遇到的优化问题特别复杂的话,启发式算法就是我们求解问题的一大法宝。

今天我们就来学习第一个智能算法:粒子群算法,其全称为粒子群优化算法(ParticleSwarmOptimization,PSO)。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。本节我们主要侧重学习其思想,并将其用于求解函数的最值问题,下一节我们会使用粒子群算法求解几类较难处理的优化类问题。

注:“智能算法"是指在工程实践中提出的一些比较"新颖"的算法或理论,因此智能算法的范围要比启发式算法更大一点,如果某种智能算法可以用来解决优化问题,那么这种算法也可能认为是启发式算法。

启发式算法百度百科上的定义:一个基于直观或经验构造的算法,在可接受的花费下给出待解决优化问题的一个可行解。

2)什么是优化问题?工程设计中优化问题(optimizationproblem)指在一定约束条件下,求解一个目标函数的最大值(或最小值)问题。注:实际上和我们之前学过的规划问题的定义一样,称呼不同而已。

3)什么是可行解?得到的结果能用于工程实践(不一定非要是最优解)

常见的启发式算法:粒子群、模拟退火、遗传算法、蚁群算法、禁忌搜索算法等等(启发式算法解决的问题大同小异,只要前三个算法学会了在数学建模中就足够了)

从最简单的优化问题说起:

思考:怎么找到这个一元函数的最大值?(只有一个上下界约束,即函数的定义域)

假设图中的a=1,b=10,我们要找出连续函数y=f(x)在[1,10]的最大值。

有什么问题?

爬山法的缺陷:特别容易找到局部最优解

按照预定的策略实行搜索,在搜索过程中获取的中间信息不用来改进策略,称为盲目搜索;反之,如果利用了中间信息来改进搜索策略则称为启发式搜索。

例如:蒙特卡罗模拟用来求解优化问题就是盲目搜索,还有大家熟悉的枚举法也是盲目搜索。

1995年,美国学者Kennedy和Eberhart共同提出了粒子群算法,其基本思想源于对乌类群体行为进行建模与仿真的研究结果的启发。

它的核心思想是:利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的可行解。

最初提出的论文:KennedyJ,EberhartR.Particleswarmoptimization[c]//ProceedingsofICNN'95-InternationalConferenceonNeuralNetworks.IEEE,1995.

设想这样一个场景:一群鸟在搜索食物

假设:

那么想一下这时候会发生什么?

首先,离食物最近的鸟会对其他的鸟说:兄弟们,你们快往我这个方向来,我这离食物最近与此同时,每只鸟在搜索食物的过程中,它们的位置也在不停变化,因此每只鸟也知道自己离食物最近的位置,这也是它们的一个参考。最后,鸟在飞行中还需要考虑一个惯性。

图形的进一步解释

注意,这里我们没有在变量说明的表格中放入r1和r2这两个随机数,是因为他们表示的含义不太重要,我们只需要简单的交代一下就行

在最初提出粒子群算法的论文中指出,个体学习因子和社会(或群体)学习因子取2比较合适。(注意:最初提出粒子群算法的这篇论文没有惯性权重)

最初提出的论文:KennedyJ,EberhartR.Particleswarmoptimization[C]//ProceedingsofICNN'95‐InternationalConferenceonNeuralNetworks.IEEE,1995.

论文中得到的结论:惯性权重取0.9‐1.2是比较合适的,一般取0.9就行

引入惯性权重的论文:SHI,Y.AModifiedParticleSwarmOptimizer[C]//Proc.ofIEEEICECconference,Anchorage.1998.

注意:用粒子群算法求解函数最小值时,粒子适应度的计算我们仍设置为目标函数值,但是此时我们希望找到适应度最小的解。因此希望大家不要用我们中文的内涵去理解这里的“适应度”(中文的内涵就是越适应越好),为了避免混淆你可以就直接用目标函数值来代替适应度的说法。

与原来的相比,现在惯性权重和迭代次数有关

参考论文:Shi,Y.andEberhart,R.C.(1999)EmpiricalStudyofParticleSwarmOptimization.Proceedingsofthe1999CongressonEvolutionaryComputation,WashingtonDC,6‐9July1999,1945‐1950.

其中:

与原来的相比,现在惯性权重和迭代次数以及每个粒子适应度有关

一个较大的惯性权值有利于全局搜索

而一个较小的权值则更利于局部搜索

假设现在一共五个粒子ABCDE,此时它们的适应度分别为1,2,3,4,5取最大惯性权重为0.9,最小惯性权重为0.4那么,这五个粒子的惯性权重应该为:0.4,0.65,0.9,0.9,0.9适应度越小,说明距离最优解越近,此时更需要局部搜索适应度越大,说明距离最优解越远,此时更需要全局搜索

假设现在一共五个粒子ABCDE,此时它们的适应度分别为1,2,3,4,5取最大惯性权重为0.9,最小惯性权重为0.4那么,这五个粒子的惯性权重应该为:0.9,0.9,0.9,0.65,0.4适应度越小,说明距离最优解越远,此时更需要全局搜索适应度越大,说明距离最优解越近,此时更需要局部搜索

个体学习因子c1和社会(群体)学习因子c2决定了粒子本身经验信息和其他粒子的经验信息对粒子运行轨迹的影响,其反映了粒子群之间的信息交流。设置c1较大的值,会使粒子过多地在自身的局部范围内搜索,而较大的c2的值,则又会促使粒子过早收敛到局部最优值。为了有效地控制粒子的飞行速度,使算法达到全局搜索与局部搜索两者间的有效平衡,Clerc构造了引入收缩因子的PSO模型,采用了压缩因子,这种调整方法通过合适选取参数,可确保PSO算法的收敛性,并可取消对速度的边界限制。

下面我们就来用粒子群算法求解这四个测试函数

张玮,王华奎.粒子群算法稳定性的参数选择策略分析[J].系统仿真学报,2009,21(014):4339‐4344.

纪震等《粒子群算法及应用》科学出版社,2009,P13‐14

注意:

Matlab中particleswarm函数采用的是自适应的邻域模式

惯性权重InertiaRange默认设置的范围为:[0.1,1.1],注意,在迭代过程中惯性权重会采取自适应措施,随着迭代过程不断调整。

个体学习因子SelfAdjustmentWeight默认设置为:1.49(和压缩因子的系数几乎相同)

社会学习因子SocialAdjustmentWeight默认设置为:1.49(和压缩因子的系数几乎相同)

邻域内粒子的比例MinNeighborsFraction默认设置为:0.25,由于采取的是邻域模式,因此定义了一个“邻域最少粒子数目”:minNeighborhoodSize=max{2,(粒子数目*邻域内粒子的比例)的整数部分},在迭代开始后,每个粒子会有一个邻域,初始时邻域内的粒子个数(记为Q)就等于“邻域最少粒子数目”,后续邻域内的粒子个数Q会自适应调整。

速度初始化:和我们之前的类似,只不过最大速度就是上界和下界的差额vmax=ub–lb;v=‐vmax+2vmax.rand(n,narvs);

位置初始化:和我们之前的类似会将每个粒子的位置均匀分布在上下界约束内

计算每个粒子的适应度适应度仍设置为我们要优化的目标函数,由于该函数求解的是最小值问题,因此,最优解应为适应度最小即目标函数越小的解。

初始化个体最优位置和我们自己写的代码一样,因为还没有开始循环,因此这里的个体最优位置就是我们初始化得到的位置。

初始化所有粒子的最优位置因为每个粒子的适应度我们都已经求出来了,所以我们只需要找到适应度最低的那个粒子,并记其位置为所有粒子的最优位置。

在每次迭代中,我们要分别更新每一个粒子的信息。例如:对于现在要更新的粒子i,我们要进行以下几个操作:

THE END
1.专业学习如何绘制算法流程图?算法流程图怎么做人们为了方便地使用流程图交流算法,而不至于因图形符号的问题引起对算法过程理解的混淆。人们规定了一组预定义的图形符号来表示算法的过程,并给出每个图形符号的说明。标准的流程图符号包括开始/结束符号、输入/输出符号、流程符号、子流程符号、判断符号、流程线6种图形符号,用这6种图形符号可以绘制任何类型的流程图。https://blog.csdn.net/weixin_63253486/article/details/144084968
2.浅析推理框架之计算图如何自定义计算图? 机器学习框架中,计算图的基本构成是张量和算子,算子之间考虑计算依赖,控制流管理节点循环执行次数,最后基于链式法则计算梯度。 图2 模型转换通用流程 AI框架生成计算图(以静态图表示),常用基于源码AST转换和基于Trace的方式。 对接主流通用算子,并重点处理计算图中的自定义算子。 目标格式转换,将模型https://zhuanlan.zhihu.com/p/717980650
3.算法流程图绘制方法,简单画算法流程图算法流程图是一种图形化表示算法解决问题过程的工具,可以把算法直观可视化地呈现出来。 算法流程图使用用途也较为广泛,例如写程序时可用于说明程序的算法情况;数学教学时用于逻辑运算,有利于学生整理学习思路;制作活动策划时用于展示创作者策划的逻辑思路,让参与者明白并跟上活动节奏等。 https://m.liuchengtu.com/tutorial/sflcthzjc.html
4.算法流程图新手指导说到流程图,其实大家都不陌生,在我们生活中经常会看到流程图,并需要按照流程图的要求去执行流程图中的各个步骤。流程图的目的,就是让我们能够明确每一个步骤,避免出现遗漏和差错。 算法流程图,顾名思义,就是以特定的图形符号加上说明,表示算法的图,算法流程图包括传统流程图和结构流程图两种。一张图胜过千言万语https://modao.cc/flowchart/algorithm-flow-chart-beginners-guide.html
5.九年级信息技术《算法与流程图》教学设计模板教学内容: 信息技术九年级(下)第4节《算法与顺序、选择结构程序》一、《算法与流程图》 教学内容: 知识与技能:(1)了解编制程序解决问题的大致过程(2)了解算法概念,了解流程图(3)会用流程图设计和描述算法。 过程与方法:在自主学习常用的程序流程图符号https://www.oh100.com/kaoshi/jiaoxuesheji/508667.html
6.信息技术课用流程图描述算法信息技术信息技术课 用流程图描述算法信息技术课 下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢! 并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作https://wenku.baidu.com/view/6be2c7bec181e53a580216fc700abb68a882ad06.html
7.第3课流程图描述算法(教学设计)五年级上册信息技术浙教版本节课的主要教学内容是五年级上册信息技术浙教版第3课“流程图描述算法”。通过本节课的学习,学生将掌握流程图的基本概念、组成部分及其在算法描述中的应用。教学内容与学生已有知识的联系主要体现在:学生已掌握了计算机的基本操作,具备一定的逻辑思维能力,为本节课学习流程图描述算法奠定了基础。本节课的内容将引导学https://m.book118.com/html/2024/0929/8101041053006131.shtm
8.算法流程图教案(精选7篇)①了解算法的含义、算法的思想. ②理解程序框图的三种基本逻辑结构:顺序、选择、循环. ③理解几种基本算法语句—输入语句、输出语句、赋值语句、条件语句、循环语句的含义.考情分析: ①高考对本章的考查主要以填空题的形式出现,单独命题以考查考生对流程图的识别能力为主,对算法语言的阅读理解能力次之。 https://www.360wenmi.com/f/fileeyi644fh.html
9.用实例解释什么是算法和流程图有输入信息:明确指出程序中需要输入哪些资料 有输出结果:至少有一个以上的输出结果 2.流程图的定义: 流程图是由一些简单的图标符号和表示流程走向的箭头以及线条组成的,如图,其中图框表示各种操作的内容,带箭头的流程线表示操作的先后次序。 二、算法流程图的基本结构结构 https://www.edrawsoft.cn/explain-algorithm-flowchart/
10.专题05python基础程序,流程图专题05 python基础程序、流程图 1.【2023年1月浙江省选考真题信息技术第7题】 某算法的部分流程图如图所示,执行这部分流程,若输入x的值依次为10,7,8,12,0,则输出k的值是 A.2 B.3 C.4 D.5 2.【2023年2月浙江十校联盟高三信息技术第4题】 已知部分选择题的标准答案和学生提交的作答分别存储于字符串https://www.zxxk.com/soft/42798034.html
11.使用流程图表示算法(计算机基础)流程图是表示算法也是表示业务逻辑的一种方式使用图形表示算法的方式是一种极好的方法。 下图是流程图预定义的符号: 下面是流程图示例(既表示业务逻辑也表示程序逻辑): 绘制流程图直接使用word文档就行流程图绘制方式: 1.点击插入-->形状-->流程图,图片示例如下: 通过这些形状以及我们提供的流程图示例,就可以进行https://www.pianshen.com/article/81431148068/
12.高项:信息系统项目管理思维导图模板企业应开始对实施智能制造的基础和条件进行规划,能够对核心业务活动(设计、生产、物流、销售、服务)进行流程化管理; 二级(规范级) 企业应采用自动化技术、信息技术手段对核心装备和业务活动等进行改造和规范,实现单一业务活动的数据共享; 三级(集成级) 企业应对装备、系统等开展集成,实现跨业务活动间的数据共享;https://www.processon.com/view/6493040849c3ea6f151f4c07
13.望繁信速递:CTO分享浅谈流程挖掘为了能够满足这一“清晰”的要求,望繁信走了一条自己的创新流程图算法之路,也是我们团队潜心研究的成果,在现有d3-dagre算法的基础上做了很多创新。 为了能够展现望繁信在流程图算法上的优势,我们拿市场上做的最好的Celonis作为比较对象给大家详细讲解一下。大家看如下两张流程图:https://maimai.cn/article/detail?fid=1734306355&efid=37Z08PUb7ebMIHGAelgxgg
14.图像特征点SIFT特征点之图像金字塔腾讯云开发者社区SIFT算法流程图 1、图像金字塔 1.1、高斯金字塔 图像高斯金字塔(Gaussian Pyramid)是采用高斯函数对图像进行模糊以及降采样处理得到。其形成过程可如下图所示: 其中高斯模糊系数计算公式如下: 1.1.1、高斯函数与图像卷积 根据3σ原则,使用NxN的模板在图像每一个像素点处操作,其中N=[(6σ+1)]且向上取最邻近奇数。https://cloud.tencent.com/developer/article/1526518
15.三轴加速度传感器在跌倒检测中的应用AnalogDevices图6 算法流程图 算法中,关于各种中断的门限以及时间参数的设置如下所述 1. 初始化后,系统等待Free_Fall中断(失重),这里把THRESH_FF设为0.75g,把TIME_FF设为30ms。 2. Free_Fall中断产生之后,系统开始等待Activity中断(撞击),这里把THRESH_ACT设为2g,Activity中断为DC coupled工作模式。 https://www.analog.com/cn/analog-dialogue/articles/detecting-falls-3-axis-digital-accelerometer.html
16.交互设计流程图怎么画?人人都是产品经理设计流程图长得并不特别,跟全世界流程图都差不多,也同样是作为一种表达工具存在。 1 什么不是设计流程图? 以下是百度百科关于流程图的定义: 以特定的图形符号加上说明,表示算法的图,称为流程图或框图。流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程https://www.woshipm.com/ucd/137757.html
17.设计算法.输入正整数n.计算它的阶乘n!.画出流程图.用for语句描述解:算法流程图如答图所示: 用for语句描述算法如下: 输入n; T:=1; for i:=1 to n do begin T:=T*i; end. 输出T. 练习册系列答案 创新教程系列答案 互动中考复习大讲义系列答案 中考阶段总复习ABC系列答案 达优测试卷系列答案 剑指中考系列答案 http://www.1010jiajiao.com/gzsx/shiti_id_77d21cec7625a12d71db452d984156ef