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

数模比赛中,经常见到有同学“套用”启发式算法(数模中常称为智能优化算法)去求解一些数模问题,事实上,很大一部分问题是不需要用到启发式算法求解的,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.数学建模——启发式算法(模拟退火遗传算法)启发式算法是基于直观或经验构造的算法,在可接受的计算时间和空间条件下,给出待解决优化问题的一个可行https://kaiwu.qboson.com/forum.php?mod=viewthread&tid=431&extra=page%3D1
2.启发式算法详解:贪心禁忌搜索模拟退火遗传算法本文详细介绍了启发式算法,包括贪心算法、禁忌搜索、模拟退火算法、遗传算法的原理和应用。贪心算法每次选择局部最优解,禁忌搜索通过禁忌列表避免局部最优解,模拟退火算法引入随机性和温度控制,遗传算法模拟生物进化优化解。这些算法在不同问题和领域中有广泛应用。 https://blog.csdn.net/runqu/article/details/138411522
3.超启发式算法的分类有哪些?LTD知识百科增长黑武器由于超启发式算法的研究尚处于起步阶段,对于已有的各种超启发式算法,国际上尚未形成一致的分类方法。按照高层策略的机制不同,现有超启发式算法可以大致分为4类:基于随机选择、基于贪心策略、基于元启发式算法和 由于超启发式算法的研究尚处于起步阶段,对于已有的各种超启发式算法,国际上尚未形成一致的分类方法。按照高层https://ltd.com/article/5377476944108263
4.什么叫启发式算法,主要优点和不足有哪些?什么叫启发式算法,主要优点和不足有哪些?相关知识点: 试题来源: 解析 答:在问题结构不良的情况下,为得到近似可用的解,分析人员必须运用自己的感知和洞察力,从与其有关而较基本的模型及算法中寻求其间的联系,从中得到启发,去发现适于解决该问题的思路和途径,这种方法称为启发式方法,由此建立的算法称为启发式算法。https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=fe2ebc0feff9aef8941e0627&fr=search
5.以下对基因遗传算法描述正确的是()。B是一种启发式的搜索算查看完整题目与答案 参考解析: 基因遗传算法反映了自然选择的过程;是一种启发式的搜索算法 AI解析 重新生成最新题目 【单选题】如果将人眼比作照相机的话,则相当于暗盒的是( )。 查看完整题目与答案 【单选题】道德是人类社会生活中依据社会舆论、( )和内心信念,以善恶评价为标准的意识、规范、行为和https://www.shuashuati.com/ti/c593711798a74c9a982cf55a7b69423c.html?fm=bd678dea3fa47e926b67e67cbef0c20e02
6.算法式和启发式提出假设就是提出解决问题的可能途径与方案,选择恰当的解决问题的操作步骤,提出假设是问题解决的关键阶段。常用的方式主要有两种:算法式和启发式。它们之间的区别是: 一、算法式 【定义】 算法式是把解决问题的所有可能的方案都列举出来,逐一尝试。此种方式虽然可以保证解决问题,但效率不高。其优点是能够保证问题的解http://m.tj.zgjsks.com/html/2020/zx_0417/33684.html
7.启发式算法设计中的骨架分析与应用37, No. 3 March, 2011 启发式算法设计中的骨架分析与应用 江贺 1 邱铁 1 胡燕 1 李明楚 1 罗钟铉 1, 2 摘要 骨架是指一个 NP- 难解问题实例的所有全局最优解的相同部分, 因其在启发式算法设计中的重要作用而成为该领域 的研究热点. 本文对目前骨架及相关概念的研究成果进行了全面综述, 将骨架本身的http://www.aas.net.cn/CN/article/downloadArticleFile.do?attachType=PDF&id=17389
8.路径规划(十)启发式InformedRRT*算法可能有人会直接想,这里只不过是缩小了采样空间,并不会明显改进算法。但是实际上,当拓展到高维空间时,效率的提升是巨大的。 那么,如何表达这个椭圆呢?下面介绍椭圆采样区域的表达方式 方法1: 先在标准椭圆的方程中采样,再将采样点旋转平移到实际采样区域,需要两个矩阵:平移向量、旋转矩阵。这两个参数只需要在初始化https://www.baltamatica.com/community/sposts/detail/9ba5d708-d44e-a616-28f8-02bdf52cbfb8.html
9.双重信息编码遗传算法在选址模型中的应用AET目前,越来越多的研究人员趋向于采用遗传算法、拉格朗日松弛法、模拟退火算法等启发式算法来达到或逼近该问题的最优解[2]。参考文献[3]使用两步骤近似法构建在库存和运输双重能力约束下,每个周期配送中心的库存成本计算方法,分别用遗传算法、克隆选择算法、粒子群算法求解所建立的模型;参考文献[4]使用经遗传算法改进的人http://www.chinaaet.com/article/185115