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

数模比赛中,经常见到有同学“套用”启发式算法(数模中常称为智能优化算法)去求解一些数模问题,事实上,很大一部分问题是不需要用到启发式算法求解的,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.计算器网络知识点梳理思维导图模板计算机网络的定义与功能 定义概述 资源共享与通信 功能分类 数据传输、资源共享、分布式处理 网络的分类 按范围分类 局域网、城域网、广域网 按拓扑结构分类 总线型、星型、环型、网状型 协议的定义与分层架构 协议的基本概念 通信规则与标准 OSI七层模型 https://www.processon.com/view/6762834cb50dca53768d653d
2.算法笔记(三)算法学习技巧总结算法时,我们要认识到每个算法都有自己独特的特点,这个特点是其他算法所不具备的特点,关系,为了方便表示各算法特点以及相互关系,画了一张导图,如下: 思考 1.如何总结各个算法? 首先找出各个算法自己的主要特性,拿出来之后去和其它算法比较,时间复杂度和空间复杂度相互比较,这是建立知识之间联系的一个过程,其次,也https://www.code456.com/article/3598351.html
3.计算机及编程基础教学算法和流程图[6] 计算机硬件组装 1.6万播放 1:35:22 [7] 计算机组成基本原理 8074播放 58:05 [8] 存储信息和信息运算 6833播放 2:12:20 [9] 算法和流程图 7619播放 待播放 [10] 选择结构 4379播放 2:27:22 [11] 循环结构 3592播放 2:55:18 [12] 计算机病毒 https://open.163.com/newview/movie/free?pid=OETG4QCKS&mid=AETG4UV4M
4.使用流程图表示算法(计算机基础)使用流程图表示算法(计算机基础) 技术标签:+ Basics 查看原文 《C程序设计》课程学习(2)——第二章 程序的灵魂—算法 1.算法:为解决某一特定问题而采取的具体工作步骤和方法。 2.算法的表示:(1) 自然语言。(2)流程图表示法。算法的特性 1.有穷性 2.确定性 3.有零个或多个输入 4.有一个或多个输出 5https://www.pianshen.com/article/81431148068/
5.计算机视觉轮廓搜索和图像分割实验流程图计算机视觉框架计算机视觉轮廓搜索和图像分割实验流程图 计算机视觉框架 其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 正文 1.TorchCV 1.1 TorchCV整体介绍 TorchCV是作者开发的基于PyTorch的计算机视觉框架,目前支持的任务包括图像分类、目标检测https://blog.51cto.com/u_16213631/8709219
6.算法流程图教案(精选7篇)①了解算法的含义、算法的思想. ②理解程序框图的三种基本逻辑结构:顺序、选择、循环. ③理解几种基本算法语句—输入语句、输出语句、赋值语句、条件语句、循环语句的含义.考情分析: ①高考对本章的考查主要以填空题的形式出现,单独命题以考查考生对流程图的识别能力为主,对算法语言的阅读理解能力次之。 https://www.360wenmi.com/f/fileeyi644fh.html
7.C语言算法流程图.ppt计算机 C/C++资料C语言算法流程图.ppt 10页内容提供方:mv2323 大小:48.5 KB 字数:约2.95千字 发布时间:2016-12-13发布于河南 浏览人气:83 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)C语言算法流程图.ppt 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线https://max.book118.com/html/2016/1208/69681889.shtm
8.创客教育促进学生信息技术核心素养发展内容计算机算法流程图与功能流程图的最大差别就是强调了计算机编程的指令性。从流程图到算法的过程完成了对学生从功能到脚本图的正向引导。计算思维的具体化具备再次抽象的过程,这样再次培养了计算思维的整体性和有序性。 l用编程语言表达世界 表达世界对于每个学科都需要不同的形式。以上流程图的描述,需要通过智能原件并通https://tpd.xhedu.sh.cn/cms/app/info/doc/index.php/92074
9.电阻加热炉温度控制C、数字控制算法子程序流程图 d、LED显示流程图 六、完整的系统电路图 七、系统调试 在设计完成后进行调试,根据设计逻辑图制作好实验样机,就可以进入硬件调试,调试的主要任务是排除样机的故障,其中包括设计错误和工艺性故障,然后在进行软件的调试用微型机对MCS51系列单片机程序进行交叉汇编。在硬件,软件单独调试后,即可https://www.unjs.com/zuixinxiaoxi/ziliao/20170704000008_1381227.html
10.计算思维计算机算法的表示和设计.pptx资源在信息时代,计算思维是分析复杂工程问题的重要思维方式,计算机则是求解问题的重要工具。本课程以计算机经典问题求解为导向,通用算法思维和自动编程流程图培养为目标,引入经典算法,精心安排课程的理论教学和编程实践。本课程学习将有助于学员提高计算思维能力及算法思维的能力。 本课程主要讲授计算机问题求解的经典算法设计https://download.csdn.net/download/qq_43966957/87827557
11.单片机原理及应用教程第4版第1章单片机应用基础概述在线免费图1-4 PC与单片机通信连接 1.2 数制与编码 在计算机中,任何命令和信息都是以二进制数据的形式存储的。计算机所执行的全部操作都归结为对数据的处理和加工,为了便于理解计算机系统的基本工作原理,掌握数字、字母等字符在计算机系统中的表示方法及处理过程,本节主要介绍计算机中使用的数制和编码等方面的基础知识。 https://fanqienovel.com/reader/7110144623195982860
12.第1讲算法及流程图(教案)算法的设计要求(1)确定性和有限性是算法的两个重要特征,我们在写算法时,一定要注意满足返两个特征.江苏学大南京分公司教案2(2)虽然解决一个问题的算法丌是唯一的,但丌同的算法有繁有简,因此在设计一个算法时,应本着简捷方便的原则迕行.(3)要保证算法正确,且能够被计算机执行.4.流程图的概念流程图是由一些https://www.docin.com/p-2496197999.html
13.算法程序框图基本算法语句(3)算法的描述:自然语言、程序框图、程序语言。 2. 程序框图 (1)程序框图的概念:程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形; (2)构成程序框的图形符号及其作用 程序框 名称 功能 起止框 表示一个算法的起始和结束,是任何算法程序框图不可缺少的。 https://www.360doc.cn/article/925413_215308067.html
14.程序流程图程序流程图是用规定的符号描述一个专用程序中所需要的各项操作或判断的图示。这种流程图着重说明程序的逻辑性与处理顺序,具体描述了微机解题的逻辑及步骤。当程序中有较多循环语句和转移语句时,程序的结构将比较复杂,给程序设计与阅读造成困难。程序流程图用图的形式画出程序流向,是算法的一种图形化表示方法,具有直观、https://www.meipian.cn/38kq7re4
15.算法描述的5种方法在C 语言中,有 5 种常用的算法描述方法:自然语言、流程图、N-S 图、伪代码和程序设计语言。 用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较直观、https://www.54benniao.com/a/18.html
16.计算机视觉+TensorflowSORT目标跟踪算法的讲解(图文解释超二、SORT目标跟踪算法 对于多目标的SORT算法,目标跟踪算法是将各帧的目标检测结果分别赋予跟踪序号的过程,在不同视频帧出现的同一目标需要赋予相同的跟踪序号,算法流程图如下 下面对算法流程中介绍的卡尔曼滤波器和匈牙利算法进行详细介绍 1:卡尔曼滤波器 卡尔曼滤波器不需要存储大量的历史数据,只需要保留系统前一时刻的https://developer.aliyun.com/article/1399028
17.常见的流程图符号及含义,分分钟Get!特定的图形符号加上说明,表示算法的图,称为流程图。流程图常常用来表示一些动态过程,通常会有一个“起点”,?可以有一个或多个终点,流程图可以直观、明确地表示动态过程从开始到结束的全部步骤,在日常生活和工作中的应用范围十分广泛。 高手必备在线流程图制作软件 https://boardmix.cn/article/liuchengtufuhao/
18.计算机导论——算法的特点和算法的分析标准传统的流程图 PAD图,是一种以二维树形结构图的方式对结构化程序进行描述,因此由PAD图设计出来的程序也必然是结构化程序,通过软件工具可以将这样的PAD图翻译成程序代码。见下表: 上部分是盒图,下部分是PAD图 3)伪代码(PDL):“伪”就代表假,它是使用介于自然语言和计算机语言的文字和符号来描述算法。它本质上时https://www.jianshu.com/p/33f022f07025
19.SIFT特征点提取「建议收藏」腾讯云开发者社区SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 2、SIFT算法流程图 二、SIFT算法操作步骤 https://cloud.tencent.com/developer/article/2038518