1. 优化算法笔记(十八)灰狼算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
灰狼算法(Grey Wolf Algorithm)是受灰狼群体捕猎行为启发而提出的算法。算法提出于2013年,仍是一个较新的算法。目前为止(2020)与之相关的论文也比较多,但多为算法的应用,应该仍有研究和改进的余地。
灰狼算法中,每只灰狼的位置代表了解空间中的一个可行解。群体中,占据最好位置的三只灰狼为狼王及其左右护法(卫)。在捕猎过程中这三只狼将带领着狼群蛇皮走位,抓捕猎物,直至找到猎物(最优解)。当然狼王不会一直是狼王,左右护法也是一样,每一轮走位后,会根据位置的优劣重新选出新的狼王和左右护法。狼群中的每一只灰狼会向着(也可能背向)这三只位置最优的灰狼移动一定的距离,来决定这一步自己将如何走位。简单来说, 灰狼个体会向则群体中最优的三个个体移动 。
很明显该算法的主角就是灰狼了。
设定目标灰狼为
,当前灰狼的为 ,则该灰狼向着目标灰狼移动后的位置 可以由一下公式计算得出:
灰狼群体中位置最好的三只灰狼编号为1,2,3,那么当前的灰狼i通过观察灰狼1、灰狼2和灰狼3,根据公式(1)得出的三个位置为Xi1,Xi2,Xi3。那么灰狼i将要移动到的位置可以根据以下供述计算得出:
可以看出该灰狼的目标位置是通过观察三只头狼得到的三个目标位置的所围成的区域的质心。(质心超出边界时,取值为边界值)。
灰狼算法的论文描述很多,但是其公式和流程都非常简单,主要对其参数A和C的作用效果进行了详细描述。
C主要决定了新位置相对于目标灰狼的方位,而A则决定新位置向目标靠近还是远离目标灰狼。当|A|>=1时,为远离目标,表现出更强的全局搜索能力,|A|<1时靠近目标,表现出更强的局部搜索能力。
适应度函数 。
实验一:
看看这图像和结果,效果好极了。每当我这么认为时,总会出现意想不到的转折。
修改一下最优解位置试一试, 。
实验二 : 。
其结果比上面的实验差了不少,但我觉得这才是一个优化算法应有的搜索图像。其结果看上去较差只是因为迭代次数较少,收敛不够迅速,这既是优点也是缺点,收敛慢但是搜索更细致。
仔细分析灰狼算法的流程,它并没有向原点靠近的趋势,那只能理解为算法群体总体上向着群体的中心移动。 猜想 :当初始化群体的中心恰好是正解时,算法的结果将会非常的好。
下面使用 ,并将灰狼的初始位置限定在(50,100)的范围内,看看实验图像是否和实验二的图像一致。
实验三 . ,初始种群取值范围为(50,100)
这图像和结果跟实验一的不是一样的吗?这说明从实验二中得出的猜想是错误的。
从图像和结果上看,都和实验二非常相似,当解在解空间的中心时但不在原点时,算法的结果将差一些。
为什么会这样呢?从算法的流程上看,灰狼算法的各个行为都是关于头狼对称的,当最优解在原点且头狼在附近时,公式(1)将变为如下:
实验五 . ,三只头狼添加贪心算法。
从图像可以看出中心的三个点移动的频率要比其他点的移动频率低。从结果上可以看出其结果相对稳定了不少,不过差距非常的小,几乎可以认为是运气好所导致。如果所有的个体都添加贪心算法呢?显然,算法的全局搜索能力将进一步减弱,并且更容易向群体中心收敛,这并不是一个好的操作。
实验六 . ,
在实验五的基础上为狼群添加一个统一的步长,即每只狼每次向着目标狼移动的距离不能大于其步长,将其最大步长设为1,看看效果。
从图像可以看出,受到步长的约束每只狼的移动距离较小,在结束时还没有收敛,其搜索能力较强但收敛速度过慢且极易陷入局部最优。现在将最大步长设置为10(1/10解空间范围)使其搜索能力和收敛速度相对平衡,在看看效果。
从图像可以看出,算法的收敛速度快了不少,但从结果可知,相较于实验五,算法的提升并不太大。
不过这个图像有一种似曾相识的感觉,与萤火虫算法(FireFly Algorithm)差不多,仔细对比这两个算法可以发现, 灰狼算法相当于萤火虫算法的一个简化 。实验六种对灰狼算法添加步长的修改,让其离萤火虫算法更近了一步。
实验七 . ,
在实验六的基础上让最大步长随着迭代次数增加递减。
从实验七的图像可以看出,种群的收敛速度好像快了那么一点,结果也变好了不少。但是和改进后的萤火虫算法相比仍然有一定的差距。
灰狼算法在全局搜索和局部搜索上的平衡已经比较好了,尝试过对其进行改进,但是修改使搜索能力更强时,对于局部最优的函数求解效果很差,反之结果的精度较低,总体而言修改后的算法与原算法相差无几。
灰狼算法是根据灰狼群体的捕猎行动而提出的优化算法,其算法流程和步骤非常简单,数学模型也非常的优美。灰狼算法由于没有贪心算法,使得其有着较强的全局搜索能力同时参数A也控制了算法的局部搜索范围,算法的全局搜索能力和局部搜索能力比较平衡。
从算法的优化图像可以看出,灰狼算法和萤火虫算法非常的相似。可以认为,灰狼算法是对萤火虫算法的一种改进。萤火虫算法向着由于自己的个体飞行,而灰狼算法则的条件更为苛刻,向着群体前三强前进,萤火虫算法通过步长控制搜索范围,而灰狼算法则直接定义搜索范围参数A,并令A线性递减。
灰狼算法的结构简单,但也不容易改进,数次改进后只是改变了全局搜索能力和局部搜索能力的比例,综合能力并没有太大变化。
由于原点对于灰狼算法有着隐隐的吸引力,当测试函数目标值在原点时,其结果会异常的好。因此,灰狼算法的实际效果没有论文中的那么好,但也不差,算是一个中规中矩的优化算法。
参考文献
Mirjalili S , Mirjalili S M , Lewis A . Grey Wolf Optimizer[J]. Advances in Engineering Software, 2014, 69:46-61. 提取码:wpff
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(十七)万有引力算法
下一篇 优化算法笔记(十九)头脑风暴算法
优化算法matlab实现(十八)灰狼算法matlab实现
2. 优化算法笔记(七)差分进化算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
差分进化算法(Differential Evolution Algorithm,DE)是一种基于群体的进化算法,它模拟了群体中的个体的合作与竞争的过程。算法原理简单,控制参数少,只有交叉概率和缩放比例因子,鲁棒性强,易于实现。
差分进化算法中,每一个个体的基因表示待求问题的一个候选解。每次迭代将先进行变异操作,选择一个或多个个体的基因作为基,然后选择不同的个体的差分来构成差分基因,最后将作为基的基因与差分基因相加来得出新的个体。交叉操作将新的个体将于父代的对应个体交叉,然后进行选择操作,比较交叉后的个体与父代的对应个体,选择较优的个体保留至下一代。在迭代完成之后将选择种群中最优个体的基因作为解。
差分进化算法可以算是我所使用过的优化算法中大魔王级别的算法,虽然它每个方面都没有强到离谱,但是综合起来的效果好于大多数算法。它就像一个每个科目都能考到90分(百分制)的学生,虽然没门课都不是最优秀的,但是论综合,论总分,它有极大的概率是第一名。
在我研究优化算法的小路上,我的目标就是找到一个能打败大魔王或是能在大多数方面压制魔王的算法。
这次的主角就选魔王军吧(或者蚁王军,为了与蚁群算法区别还是叫魔王军吧),个体则称之为魔王兵。
魔王兵的能力取决于它们的基因,它们可以根据环境或者需要改变自己的基因使得自己更加强大,更方便的处理问题,问题的维度与基因维度相同。
表示第i个魔王兵在进化了第t次后的基因,该个体有D位基因。
与遗传算法同为进化算法的差分进化算法,它们的操作(算子)也都非常相似的,都是交叉,变异和选择,流程也几乎一样(遗传算法先交叉后变异,差分进化算法先变异后交叉)。
说到差分进化算法中的变异,我就想到一句论语 “三人行,必有我师焉。择其善者而从之,其不善者而改之。” ,其实这句论语已经向我们说明了差分进化算法的整个流程:
“三人行,必有我师焉”——变异,交叉。
“择其善者而从之,其不善者而改之”——选择。
差分进化算法中,当一个魔王兵变异时,它会先找来3个小伙伴,当然是随机找来3个小伙伴,避免同化。在一个小伙伴的基因上加上另外两个小伙伴基因之差作为自己的目标基因。其变异公式如下:
表示第i个魔王兵找到了编号为r1、r2和r3的三个魔王兵,当然了i、r1、r2、r3为互不相同的整数,F为缩放比例因子,通常 ,一般取F=0.5。 为第i个魔王兵交叉后的目标基因图纸,不过这是个半成品,再经过交叉后,目标基因图纸才算完成。
其实现在我们已经有了5个基因图纸了 ,接下来将进行交叉操作。由于变异操作,差分进化算法的种群中个体数至少为4,即魔王军中至少有4个小兵。
交叉操作中,魔王兵i会将目标基因图纸 进行加工得到 ,加工过程如下:
其中 。 为交叉概率,其值越大,发生交叉的概率越大,一般取 。 为{1,2,…,D}中的随机整数,其作用是保证交叉操作中至少有一维基因来自变异操作产生的基因,不能让交叉操作的努力白费。
从公式上可以看出交叉操作实际上是从变异操作得出的基因图纸上选择至少一位基因来替换自己的等位基因,得到最终的基因图纸。
选择操作相对简单,魔王兵i拿到了最终的基因图纸 ,大喊一声,进化吧,魔王兵i的基因改变了。它拿出了能力测量器fitness function,如果发现自己变强了,那么就将基因 保留到下一代,否则它选择放弃进化,让自己还原成 。
实验又来啦,还是那个实验 ,简单、易算、好画图。
实验1 :参数如下
图中可以看出在第20代时,群体已经非常集中了,在来看看最终得出的结果。
这结果真是好到令人发指,恶魔在心中低语“把其他的优化算法都丢掉吧”。不过别往心里去,任何算法都有优缺点,天下没有免费的午餐,要想获得某种能力必须付出至少相应的代价。
实验2:
将交叉率CR设为0,即每次交叉只选择保留一位变异基因。
看看了看图,感觉跟实验1中相比没有什么变化,那我们再来看看结果。
结果总体来说比实验1好了一个数量级。为什么呢?个人感觉应该是每次只改变一位基因的局部搜索能力比改变多位基因更强。下面我们将交叉率CR设为1来看看是否是这样。
实验3:
将交叉率CR设为1,即每次交叉只选择保留一位原有基因。
实验3的图与实验1和实验2相比好像也没什么差别,只是收敛速度好像快了那么一点点。再来看看结果。
发现结果比实验2的结果还要好?那说明了实验2我得出的结论是可能是错误的,交叉率在该问题上对差分进化算法的影响不大,它们结果的差异可能只是运气的差异,毕竟是概率算法。
实验4:
将变异放缩因子设为0,即变异只与一个个体有关。
收敛速度依然很快,不过怎么感觉结果不对,而且个体收敛的路径好像遗传算法,当F=0,时,差分进化算法退化为了没有变异、选择操作的遗传算法,结果一定不会太好。
果然如此。下面我们再看看F=2时的实验。
实验5:
将变异放缩因子设为2。
实验5的图可以明显看出,群体的收敛速度要慢了许多,到第50代时,种群还未完全收敛于一点,那么在50代时其结果也不会很好,毕竟算法还未收敛就停止进化了。
结果不算很好但也算相对稳定。
通过上面5个实验,我们大致了解了差分进化算法的两个参数的作用。
交叉率CR,影响基因取自变异基因的比例,由于至少要保留一位自己的基因和变异的基因导致CR在该问题上对算法性能的影响不大(这个问题比较简单,维度较低,影响不大)。
变异放缩因子F,影响群体的收敛速度,F越大收敛速度越慢,F绝对值越小收敛速度越快,当F=0是群体之间只会交换基因,不会变异基因。
差分进化算法大魔王已经如此强大了,那么还有什么可以改进的呢?当然有下面一一道来。
方案1 .将3人行修改为5人行,以及推广到2n+1人行。
实验6:
将3人行修改为5人行,变异公式如下:
五人行的实验图看起来好像与之前并没有太大的变化,我们再来看看结果。
结果没有明显提升,反而感觉比之前的结果差了。反思一下五人行的优缺点,优点,取值范围更大,缺点,情况太多,减慢搜索速度。
可以看出算法的收敛速度比之前的变慢了一点,再看看结果。
比之前差。
差分进化算法的学习在此也告一段落。差分进化算法很强大,也很简单、简洁,算法的描述都充满了美感,不愧是大魔王。不过这里并不是结束,这只是个开始,终将找到打败大魔王的方法,让新的魔王诞生。
由于差分进化算法足够强,而文中实验的问题较为简单导致算法的改进甚至越改越差(其实我也不知道改的如何,需要大量实验验证)。在遥远的将来,也会有更加复杂的问题来检验魔王的能力,总之,后会无期。
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(六)遗传算法
下一篇 优化算法笔记(八)人工蜂群算法
优化算法matlab实现(七)差分进化算法matlab实现
3. 智能优化算法及其应用的目录
第1章绪论1
1.1最优化问题及其分类1
1.1.1函数优化问题1
1.1.2组合优化问题10
1.2优化算法及其分类12
1.3邻域函数与局部搜索13
1.4计算复杂性与NP完全问题14
1.4.1计算复杂性的基本概念14
1.4.2P,NP,NP?C和NP?hard14
第2章模拟退火算法17
2.1模拟退火算法17
2.1.1物理退火过程和Metropolis准则17
2.1.2组合优化与物理退火的相似性18
2.1.3模拟退火算法的基本思想和步骤19
2.2模拟退火算法的马氏链描述20
2.3模拟退火算法的收敛性21
2.3.1时齐算法的收敛性21
2.3.2非时齐算法的收敛性26
2.3.3SA算法渐进性能的逼近26
2.4模拟退火算法关键参数和操作的设计27
2.5模拟退火算法的改进29
2.6并行模拟退火算法31
2.7算法实现与应用32
2.7.1组合优化问题的求解32
2.7.2函数优化问题的求解33
第3章遗传算法36
3.1遗传算法的基本流程36
3.2模式定理和隐含并行性38
3.3遗传算法的马氏链描述及其收敛性40
3.3.1预备知识40
3.3.2标准遗传算法的马氏链描述41
3.3.3标准遗传算法的收敛性42
3.4一般可测状态空间上遗传算法的收敛性44
3.4.1问题描述45
3.4.2算法及其马氏链描述45
3.4.3收敛性分析和收敛速度估计45
3.5算法关键参数与操作的设计47
3.6遗传算法的改进50
3.7免疫遗传算法51
3.7.1引言51
3.7.2免疫遗传算法及其收敛性52
3.7.3免疫算子的机理与构造54
3.7.4TSP问题的免疫遗传算法56
3.8并行遗传算法58
3.9算法实现与应用59
第4章禁忌搜索算法62
4?1禁忌搜索62
4?1?1引言62
4?1?2禁忌搜索示例63
4?1?3禁忌搜索算法流程67
4?2禁忌搜索的收敛性68
4?3禁忌搜索的关键参数和操作70
4?4并行禁忌搜索算法75
4?5禁忌搜索的实现与应用77
4?5?1基于禁忌搜索的组合优化77
4?5?2基于禁忌搜索的函数优化78
第5章神经网络与神经网络优化算法83
5.1神经网络简介83
5.1.1神经网络发展回顾83
5.1.2神经网络的模型84
5.2基于Hopfield反馈网络的优化策略89
5.2.1基于Hopfield模型优化的一般流程89
5.2.2基于Hopfield模型优化的缺陷90
5.2.3基于Hopfield模型优化的改进研究90
5.3动态反馈神经网络的稳定性研究94
5.3.1动态反馈网络的稳定性分析94
5.3.1.1离散对称动态反馈网络的渐近稳定性分析95
5.3.1.2非对称动态反馈网络的全局渐近稳定性分析99
5.3.1.3时延动态反馈网络的全局渐近稳定性分析101
5.3.2动态反馈神经网络的收敛域估计103
5.4基于混沌动态的优化研究概述105
5.4.1基于混沌神经网络的组合优化概述106
5.4.2基于混沌序列的函数优化研究概述108
5.4.3混沌优化的发展性研究109
5.5一类基于混沌神经网络的优化策略110
5.5.1ACNN模型的描述110
5.5.2ACNN模型的优化机制111
5.5.3计算机仿真研究与分析112
5.5.4模型参数对算法性能影响的几点结论116
第6章广义邻域搜索算法及其统一结构118
6.1广义邻域搜索算法118
6.2广义邻域搜索算法的要素119
6.3广义邻域搜索算法的统一结构120
6?4优化算法的性能评价指标123
6?5广义邻域搜索算法研究进展125
6.5.1理论研究概述125
6.5.2应用研究概述128
6.5.3发展性研究129
第7章混合优化策略130
7.1引言130
7.2基于统一结构设计混合优化策略的关键问题131
7.3一类GASA混合优化策略132
7.3.1GASA混合优化策略的构造出发点132
7.3.2GASA混合优化策略的流程和特点133
7.3.3GASA混合优化策略的马氏链描述135
7.3.4GASA混合优化策略的收敛性136
7.3.5GASA混合优化策略的效率定性分析141
第8章混合优化策略的应用143
8.1基于模拟退火?单纯形算法的函数优化143
8.1.1单纯形算法简介143
8.1.2SMSA混合优化策略144
8.1.3算法操作与参数设计145
8.1.4数值仿真与分析146
8.2基于混合策略的控制器参数整定和模型参数估计研究149
8.2.1引言149
8.2.2模型参数估计和PID参数整定149
8.2.3混合策略的操作与参数设计150
8.2.4数值仿真与分析151
8.3基于混合策略的TSP优化研究154
8.3.1TSP的混合优化策略设计154
8.3.2基于典型算例的仿真研究156
8.3.3对TSP的进一步讨论158
8.4基于混合策略的加工调度研究159
8.4.1基于混合策略的Job?shop优化研究159
8.4.1.1引言159
8.4.1.2JSP的析取图描述和编码161
8.4.1.3JSP的混合优化策略设计163
8.4.1.4基于典型算例的仿真研究166
8.4.2基于混合策略的置换Flow?shop优化研究170
8.4.2.1混合优化策略170
8.4.2.2算法操作与参数设计172
8.4.2.3数值仿真与分析172
8.4.3基于混合策略的一类批量可变流水线调度问题的优化研究174
8.4.3.1问题描述及其性质174
8.4.3.2混合优化策略的设计175
8.4.3.3仿真结果和分析177
8.5基于混合策略的神经网络权值学习研究177
8.5.1BPSA混合学习策略178
8.5.2GASA混合学习策略178
8.5.3GATS混合学习策略179
8.5.4编码和优化操作设计180
8.5.5仿真结果与分析180
8.6基于混合策略的神经网络结构学习研究184
8.6.1RBF网络简介184
8.6.2RBF网络结构优化的编码和操作设计184
8.6.3RBF网络结构的混合优化策略186
8.6.4计算机仿真与分析187
8.7基于混合策略的光学仪器设计研究189
8.7.1引言189
8.7.2模型设计190
8.7.3仿真研究和设计结果191
附录Benchmark问题193
A:TSP Benchmark问题193
B: 置换Flow?shop Benchmark问题195
C:Job?shop Benchmark问题211
参考文献217
4. 请推荐几本多目标优化算法的书
《基于微粒群算法的堆石坝坝料参数反演分析》 ·《基于演化算法的多目标优化方法及其应用研究》 ·《粒子群优化算法的理论分析与应用研究》 ·《多目标遗传算法及其在发动机控制系统设计中的应用》
5. 求推荐Matlab数学建模与实验的书,要有大量实例的,如级数求和,求积分,微分,泰勒展开,傅立叶级
你选一个吧:都是我看过的好书,直接可以用于数学建模的!(最好的一本是《MATLAB在数学建模中的应用》
)
《MATLAB N个实用技巧—MATLAB 中文论坛精华总结》
《MATLAB GUI设计学习手记》含第二、三版
《MATLAB 与控制系统仿真实践》(含第二版)
《金融数量分析—基于 MATLAB 编程》含第二、三版
《图论算法及其 MATLAB 实现》
《MATLAB 神经网络30个案例分析》
《MATLAB统计分析与应用:40个案例分析》
《MATLAB高效编程技巧与应用:25个案例分析》
《Simulink与信号处理》含第二版
《MATLAB在数学建模中的应用》(含第二版)
《MATLAB神经网络:从零开始》(共上下两册)
《高等光学仿真(MATLAB)版》——光波导、激光(含第2版)
《精通MATLAB与C/C++混合程序设计》
《模式识别与智能计算的MATLAB实现》
《实战MATLAB之并行程序设计》
《MATLAB面向对象编程——从入门到设计模式》
《MATLAB从零到进阶》
《MATLAB在语音信号分析和合成中的应用》
《基于MATLAB的高等数学问题求解》
《MATLAB神经网络原理与实例精解》
《MATLAB图像处理实例详解》
《MATLAB之父:编程实践》《Experiment with MATLAB》
《MATLAB图像处理——程序实现与模块化仿真》
《MATLAB图像处理——能力提高与应用案例》
《实战MATLAB之文件与数据接口技术》
《MATLAB/Simulink机电动态系统仿真及工程应用》
《传感器信息融合——MATLAB程序实现》
《MATLAB及在电子信息课程中的应用(第4版)》
《MATLAB优化算法案例分析与应用》
《MATLAB车辆工程应用实战》
《MATLAB数值计算(2013修订版)》《Numerical Computing with MATLAB(Revised in 2013)》
《机械工程设计分析和MATLAB应用》(第4版)
《MATLAB数学建模经典案例实战》
6. 优化算法笔记(二十六)和声搜索算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
和声搜索算法(Harmony Search)是受音乐中的和声启发而提出的启发式算法,其提出(发表)年份为2001年,算是一个比较老的算法了。和声搜索算法放在现在,其性能非常一般,不过它提出了一种领域搜索的具体实现方式,可以和不同的算法融合,提高其他算法的性能。
单独看一个和声意义不大,一个和声的一个维度会根据群体中该维度的所以取值来确定其领域范围,然后再进行领域搜索。
原算法受音乐启发,所以它所解决的目标问题也是离散的问题。
和声搜索算法中的一个个体被称为和声记忆(Harmony Memory,HM),群体中和声记忆的数量为N,每个和声记忆中的音数(维度)为D。每一维的取值范围为 。
原算法中每个维度的取值范围L是一组有序的离散的值,即在指定的变量值中选取一个作为和声记忆的值。
每个和声记忆每次迭代只能变为其领域的值。
和声算法中有两种操作:1.移动到领域,2.变异到领域
其概率分别为Harmony Memory Considering Rate(HMCR)和Pitch Adjusting Rate(PAR)。
其中HMCR取值约为0.95,PAR取值约为0.10。
可以看出该算法的步骤和数值参考了遗传算法,而且两者都是为了处理离散问题。
例子如下:
和声记忆的数量为3,维度为2,其中第1维的取值范围为{A,B,C,D,E,F,G},第2维的取值为{3,4,5,6}。
第1代,三个个体的取值如下
在计算第2代时,每个个体的每一维只能去到该维度的邻域的值。
个体1_2能取到的值为(A,3) (A,4) (B,3) (B,4)
个体2_2能取到的值为(F,4)(F,5)(F,6)(G,4)(G,5)(G,6)
个体3_2能取到的值为(C,3)(C,4)(C,5)(D,3)(D,4)(D,5)(E,3)(E,4)(E,5),
图中标出了这三个个体能够到达的邻域。
变异到邻域到操作也很简单,该操作是对标了遗传算法中的变异操作。
变异到邻域操作时,该维度不会变异到当前已有的值。
如个体1_1变异第1维,由于群体中第1维的取值为{A,D,G}故该维度只能取到{B,C,E,F}。
下图中标有颜色的块出了变异操作无法到达的位置,空白位置为变异操作能够到达的位置。(如果没有空白位置呢?概率非常小,毕竟个体位置远少于解空间位置,如果出现了,不变异或者随机一个位置都行)
迭代过后,如果新的位置更好,则保留该和声记忆,并去除最差的和声记忆。
最后文章给出了判断找到的解是否是最优解的判断函数
其中Hr=HMCR,Hi会在该维度找到更好值时随着迭代次数递增。该公式的作用主要是为了判断何时去结束算法程序,不过在之前我们都是使用的最大迭代次数来结束算法程序,所有好像没多大用处。
算法的流程也挺简单的:
和声搜索的原算法是根据音乐中和声概念提出的,音符是离散的,所有算法也是离散的,对标遗传算法用于处理离散解空间问题,那么如何修改和声搜索算法使其能处理连续数值问题呢?
最关键的点是如何处理“邻域”,在连续解空间上,很难定义出一个点的领域,而且每个维度上的取值数量也是无穷的。
为和声搜索算法定义邻域也有几种思路:
1 . 将所有的个体定义为该个体的邻域,即每次随机从群体中选择一个个体,该维度移动到所选中的个体处。
其中D,E,F分别为AB,AC,BC的中点,A,B,C三个和声记忆的邻域将由DEF这三个点及解空间边界决定,此时的邻域比思路2中的更小,也不会出现重叠部分。
当某一维度的两个领域值相等时,上述(二维)的邻域(面)将会退化成邻域(线),可能会导致该维度快速收敛到该值,故此时需要忽略重复值,将邻域重新展开(成为面)。
在连续算法中,当满足HCMR条件时,算法将根据上面的色块在邻域中随机选择一个值;当满足PAR条件时,由于无法剔除指定值,简单起见,直接移动到随机的和声记忆的该维度。
后续的实验由于是求解连续函数最值,故会选择上述连续算法中的三种思路来进行。
适应度函数 。
实验一 : 思路一
从图像可以看出,思路一的策略与遗传算法非常的相似,移动路线类似于十字架,最终也收敛到了正解附近。前期搜索主要靠邻域移动,后期移动则是靠变异。
从结果也可以看出与遗传算法的差距不大,算法不是很稳定,其策略是飞到相邻的和声记忆上,所以跨越度比较大,精度全靠变异。
实验二 : 思路二
从图像中可以看出,种群的搜索路径不在像实验一中那样直来直去的十字路径,收敛的速度也慢了不少,但是仍能在正解附近收敛。
从结果中可以看出,思路二的结果好了不少,同时也更加稳定(误,运气好,之前实验出现过不好的结果,没能重现)。该思路的邻域搜索面积会更大,且个体之间的邻域存在重叠部分,故会有可能收敛于不好的位置,不过概率也较小。
实验三 : 思路三
图像逐渐贪吃蛇化!前期的图像与思路一相似,后期的图像有点类似遗传算法,可能是邻域的面积逐渐缩小成了长条状所致,不过最终“贪吃蛇”还是吃到了食物。
结果可以看出,思路三的稳定性不太行,当全部个体收敛到了一点后会开始进行思路一的替换操作,但无论如何替换都是相同的值,难以找到更优的位置,于是会出现一个较差的结果。这里也可以增加范围随机来跳出局部最优。
和声搜索算法是根据和声乐理知识提出的算法。由于音符是离散的值,算法也对标了遗传算法,故原算法也是针对离散问题提出的。在解决连续性问题时,需要对其邻域概念进行扩展和修改,最终的效果与遗传算法相差不大。
在现在看来,和声搜索算法的效果属实一般,对于其的针对性研究也不太多,该算法主要提出了其不同于遗传算法的遍历解空间的方式。所以在很多论文中都能看到用和声搜索算法与其他算法融合来进行改进的例子。
与遗传算法相比,和声搜索算法的邻域概念,将遗传算法的基因由线扩展到了面上。这一点有点类似于SVM和卷积神经网络的关系,不过,遗传算法和和声搜索算法的差别并没有那么大,只是搜索方式不同罢了。
参考文献
Geem Z W , Kim J H , Loganathan G V . A New Heuristic Optimization Algorithm: Harmony Search[J]. Simulation, 2001, 2(2):60-68. 提取码:4udl
Omran M , Mahdavi M . Global-best harmony search[J]. Applied Mathematics and Computation, 2008, 198(2):643-656. 提取码:pk3s
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(二十五)飞蛾扑火算法
下一篇 优化算法笔记(二十七)蜉蝣算法
7. 优化算法笔记(一)优化算法的介绍
(以下描述,均不是学术用语,仅供大家快乐的阅读)
我们常见常用的算法有排序算法,字符串遍历算法,寻路算法等。这些算法都是为了解决特定的问题而被提出。
算法本质是一种按照固定步骤执行的过程。
优化算法也是这样一种过程,是一种根据概率按照固定步骤寻求问题的最优解的过程。与常见的排序算法、寻路算法不同的是,优化算法不具备等幂性,是一种 概率算法 。算法不断的 迭代 执行同一步骤直到结束,其流程如下图。
等幂性即 对于同样的输入,输出是相同的 。
比如图1,对于给定的鱼和给定的熊掌,我们在相同的条件下一定可以知道它们谁更重,当然,相同的条件是指鱼和熊掌处于相同的重力作用下,且不用考虑水分流失的影响。在这些给定的条件下,我们(无论是谁)都将得出相同的结论,鱼更重或者熊掌更重。我们可以认为,秤是一个等幂性的算法(工具)。
现在把问题变一变,问鱼与熊掌你更爱哪个,那么现在,这个问题,每个人的答案可能不会一样,鱼与熊掌各有所爱。说明喜爱这个算法不是一个等幂性算法。当然你可能会问,哪个更重,和更喜欢哪个这两个问题一个是客观问题,一个是主观问题,主观问题没有确切的答案的。当我们处理主观问题时,也会将其转换成客观问题,比如给喜欢鱼和喜欢熊掌的程度打个分,再去寻求答案,毕竟计算机没有感情,只认0和1(量子计算机我不认识你)。
说完了等幂性,再来说什么是概率算法。简单来说就是看脸、看人品、看运气的算法。
有一场考试,考试的内容全部取自课本,同时老师根据自己的经验给同学们划了重点,但是因为试卷并不是该老师所出,也会有考试内容不在重点之内,老师估计试卷中至少80%内容都在重点中。学霸和学渣参加了考试,学霸为了考满分所以无视重点,学渣为了pass,因此只看了重点。这样做的结果一定是score(学霸)>=score(学渣)。
当重点跟上图一样的时候,所有的内容都是重点的时候,学霸和学渣的学习策略变成了相同的策略,则score(学霸)=score(学渣)。但同时,学渣也要付出跟学霸相同的努力去学习这些内容,学渣心里苦啊。
当课本如下图时
学霸?学霸人呢,哪去了快来学习啊,不是说学习一时爽,一直学习一直爽吗,快来啊,还等什么。
这时,如果重点内容远少于书本内容时,学渣的学习策略有了优势——花费的时间和精力较少。但是同时,学渣的分数也是一个未知数,可能得到80分也可能拿到100分,分数完全取决于重点内容与题目的契合度,契合度越高,分数越高。对学渣来说,自己具体能考多少分无法由自己决定,但是好在能够知道大概的分数范围。
学霸的学习策略是一种遍历性算法,他会遍历、通读全部内容,以保证满分。
学渣的学习策略则是一种概率算法,他只会遍历、学习重点内容,但至于这些重点是不是真重点他也不知道。
与遍历算法相比,概率算法的结果具有不确定性,可能很好,也可能很差,但是会消耗更少的资源,比如时间(人生),空间(记忆)。概率算法的最大优点就是 花费较少的代价来获取最高的收益 ,在现实中体现于节省时间,使用很少的时间得到一个不与最优解相差较多的结果。
“庄子:吾生也有涯,而知也无涯;以有涯随无涯,殆矣。”的意思是:人生是有限的,但知识是无限的(没有边界的),用有限的人生追求无限的知识,是必然失败的。
生活中概率算法(思想)的应用其实比较广泛,只是我们很少去注意罢了。关于概率算法还衍生出了一些有趣的理论,比如墨菲定律和幸存者偏差,此处不再详述。
上面说到,优化算法就是不停的执行同样的策略、步骤直到结束。为什么要这样呢?因为优化算法是一种概率算法,执行一次操作就得到最优结果几乎是不可能的,重复多次取得最优的概率也会增大。
栗子又来了,要从1-10这10个数中取出一个大于9的数,只取1次,达到要求的概率为10%,取2次,达到要求的概率为19%。
可以看出取到第10次时,达到要求的概率几乎65%,取到100次时,达到要求的概率能接近100%。优化算法就是这样简单粗暴的来求解问题的吗?非也,这并不是一个恰当的例子,因为每次取数的操作之间是相互独立的,第2次取数的结果不受第1次取数结果的影响,假设前99次都没达到要求,那么再取一次达到要求的概率跟取一次达到要求的概率相同。
优化算法中,后一次的计算会依赖前一次的结果,以保证后一次的结果不会差于前一次的结果。这就不得不谈到马尔可夫链了。
由铁组成的链叫做铁链,同理可得,马尔可夫链就是马尔可夫组成的链。
言归正传, 马尔可夫链(Markov Chain, MC) ,描述的是 状态转移的过程中,当前状态转移的概率只取决于上一步的状态,与其他步的状态无关 。简单来说就是当前的结果只受上一步的结果的影响。每当我看到马尔可夫链时,我都会陷入沉思,生活中、或者历史中有太多太多与马尔可夫链相似的东西。西欧封建等级制度中“附庸的附庸不是我的附庸”与“昨天的努力决定今天的生活,今天的努力决定明天的生活”,你的下一份工作的工资大多由你当前的工资决定,这些都与马尔可夫链有异曲同工之处。
还是从1-10这10个数中取出一个大于9的数的这个例子。基于马尔可夫链的概率算法在取数时需要使当前取的数不小于上一次取的数。比如上次取到了3,那么下次只能在3-10这几个数中取,这样一来,达到目标的概率应该会显着提升。还是用数据说话。
取1次达到要求的概率仍然是
取2次内达到要求的概率为
取3次内达到要求的概率为
取4次内……太麻烦了算了不算了
可以看出基于马尔可夫链来取数时,3次内能达到要求的概率与不用马尔可夫链时取6次的概率相当。说明基于马尔可夫链的概率算法求解效率明显高于随机概率算法。那为什么不将所有的算法都基于马尔可夫链呢?原因一,其实现方式不是那么简单,例子中我们规定了取数的规则是复合马尔可夫链的,而在其他问题中我们需要建立适当的复合马尔科夫链的模型才能使用。原因二,并不是所有的问题都符合马尔科夫链条件,比如原子内电子出现的位置,女朋友为什么会生(lou)气,彩票号码的规律等,建立模型必须与问题有相似之处才能较好的解决问题。
介绍完了优化算法,再来讨论讨论优化算法的使用场景。
前面说了优化算法是一种概率算法,无法保证一定能得到最优解,故如果要求结果必须是确定、稳定的值,则无法使用优化算法求解。
例1,求城市a与城市b间的最短路线。如果结果用来修建高速、高铁,那么其结果必定是唯一确定的值,因为修路寸土寸金,必须选取最优解使花费最少。但如果结果是用来赶路,那么即使没有选到最优的路线,我们可能也不会有太大的损失。
例2,求城市a与城市b间的最短路线,即使有两条路径,路径1和路径2,它们从a到b的距离相同,我们也可以得出这两条路径均为满足条件的解。现在将问题改一下,求城市a到城市b耗时最少的线路。现在我们无法马上得出确切的答案,因为最短的线路可能并不是最快的路线,还需要考虑到天气,交通路况等因素,该问题的结果是一个动态的结果,不同的时间不同的天气我们很可能得出不同的结果。
现实生产、生活中,也有不少的场景使用的优化算法。例如我们的使用的美图软件,停车场车牌识别,人脸识别等,其底层参数可能使用了优化算法来加速参数计算,其参数的细微差别对结果的影响不太大,需要较快的得出误差范围内的参数即可;电商的推荐系统等也使用了优化算法来加速参数的训练和收敛,我们会发现每次刷新时,推给我们的商品都有几个会发生变化,而且随着我们对商品的浏览,系统推给我们的商品也会发生变化,其结果是动态变化的;打车软件的订单系统,会根据司机和客人的位置,区域等来派发司机给客人,不同的区域,不同的路况,派发的司机也是动态变化的。
综上我们可以大致总结一下推荐、不推荐使用优化算法的场景的特点。
前面说过,优化算法处理的问题都是客观的问题,如果遇到主观的问题,比如“我孰与城北徐公美”,我们需要将这个问题进行量化而转换成客观的问题,如身高——“修八尺有余”,“外貌——形貌昳丽”,自信度——“明日徐公来,孰视之,自以为不如;窥镜而自视,又弗如远甚”,转化成客观问题后我们可以得到各个解的分数,通过比较分数,我们就能知道如何取舍如何优化。这个转化过程叫做问题的建模过程,建立的问题模型实际上是一个函数,这个函数对优化算法来说是一个黑盒函数,即不需要知道其内部实现只需要给出输入,得到输出。
在优化算法中这个黑盒函数叫做 适应度函数 , 优化算法的求解过程就是寻找适应度函数最优解的过程 ,使用优化算法时我们最大的挑战就是如何将抽象的问题建立成具体的模型,一旦合适的模型建立完成,我们就可以愉快的使用优化算法来求解问题啦。(“合适”二字谈何容易)
优化算法的大致介绍到此结束,后面我们会依次介绍常见、经典的优化算法,并探究其参数对算法性能的影响。
——2019.06.20
[目录]
[下一篇 优化算法笔记(二)优化算法的分类]
8. 谁有matlab数学建模经典案例实战 余胜威 的电子版
你选一个吧:都是我看过的好书,直接可以用于数学建模的!(最好的一本是《MATLAB在数学建模中的应用》
)
《MATLAB N个实用技巧—MATLAB 中文论坛精华总结》
《MATLAB GUI设计学习手记》含第二、三版
《MATLAB 与控制系统仿真实践》(含第二版)
《金融数量分析—基于 MATLAB 编程》含第二、三版
《图论算法及其 MATLAB 实现》
《MATLAB 神经网络30个案例分析》
《MATLAB统计分析与应用:40个案例分析》
《MATLAB高效编程技巧与应用:25个案例分析》
《Simulink与信号处理》含第二版
《MATLAB在数学建模中的应用》(含第二版)
《MATLAB神经网络:从零开始》(共上下两册)
《高等光学仿真(MATLAB)版》——光波导、激光(含第2版)
《精通MATLAB与C/C++混合程序设计》
《模式识别与智能计算的MATLAB实现》
《实战MATLAB之并行程序设计》
《MATLAB面向对象编程——从入门到设计模式》
《MATLAB从零到进阶》
《MATLAB在语音信号分析和合成中的应用》
《基于MATLAB的高等数学问题求解》
《MATLAB神经网络原理与实例精解》
《MATLAB图像处理实例详解》
《MATLAB之父:编程实践》《Experiment with MATLAB》
《MATLAB图像处理——程序实现与模块化仿真》
《MATLAB图像处理——能力提高与应用案例》
《实战MATLAB之文件与数据接口技术》
《MATLAB/Simulink机电动态系统仿真及工程应用》
《传感器信息融合——MATLAB程序实现》
《MATLAB及在电子信息课程中的应用(第4版)》
《MATLAB优化算法案例分析与应用》
《MATLAB车辆工程应用实战》
《MATLAB数值计算(2013修订版)》《Numerical Computing with MATLAB(Revised in 2013)》
《机械工程设计分析和MATLAB应用》(第4版)
《MATLAB数学建模经典案例实战》
9. 优化算法笔记(五)粒子群算法(3)
(已合并本篇内容至粒子群算法(1))
上一节中,我们看到小鸟们聚集到一个较小的范围内后,不会再继续集中。这是怎么回事呢?
猜测:
1.与最大速度限制有关,权重w只是方便动态修改maxV。
2.与C1和C2有关,这两个权重限制了鸟儿的搜索行为。
还是上一节的实验, 。现在我们将maxV的值有5修改为50,即maxV=50,其他参数不变。参数如下
此时得到的最优位值的适应度函数值为0.25571,可以看出与maxV=5相比,结果差了很多而且小鸟们聚集的范围更大了。
现在我们设置maxV=1,再次重复上面的实验,实验结果如下:
这次最终的适应度函数值为,比之前的结果都要好0.00273。从图中我们可以看出,小鸟们在向一个点集中,但是他们飞行的速度比之前慢多了,如果问题更复杂,可能无法等到它们聚集到一个点,迭代就结束了。
为什么maxV会影响鸟群的搜索结果呢?
我们依然以maxV=50为例,不过这次为了看的更加清晰,我们的鸟群只有2只鸟,同时将帧数放慢5倍以便观察。
思路一:限制鸟的最大飞行速率,由于惯性系数W的存在,使得控制最大速率和控制惯性系数的效果是等价的,取其一即可。
方案1:使惯性系数随着迭代次数增加而降低,这里使用的是线性下降的方式,即在第1次迭代,惯性系数W=1,最后一次迭代时,惯性系数W=0,当然,也可以根据自己的意愿取其他值。
实验参数如下:
小鸟们的飞行过程如上图,可以看到效果很好,最后甚至都聚集到了一个点。再看看最终的适应度函数值8.61666413451519E-17,这已经是一个相当精确的值了,说明这是一个可行的方案,但是由于其最后种群过于集中,有陷入局部最优的风险。
方案2:给每只鸟一个随机的惯性系数,那么鸟的飞行轨迹也将不再像之前会出现周期性。每只鸟的惯性系数W为(0,2)中的随机数(保持W的期望为1)。
实验参数如下:
可以看到小鸟们并没有像上一个实验一样聚集于一个点,而是仍在一个较大的范围内进行搜索。其最终的适应度函数为0.01176,比最初的0.25571稍有提升,但并不显着。什么原因造成了这种情况呢?我想可能是由于惯性系数成了期望为1的随机数,那么小鸟的飞行轨迹的期望可能仍然是绕着一个四边形循环,只不过这个四边形相比之前的平行四边形更加复杂,所以其结果也稍有提升,当然对于概率算法,得到这样的结果可能仅仅是因为运气不好
我们看到惯性系数W值减小,小鸟们聚拢到一处的速度明显提升,那么,如果我们去掉惯性系数这个参数会怎么样呢。
方案3:取出惯性系数,即取W=0,小鸟们只向着那两个最优位置飞行。
可以看见鸟群们迅速聚集到了一个点,再看看得到的结果,最终的适应度函数值为2.9086886073362966E-30,明显优于之前的所有操作。
那么问题来了,为什么粒子群算法需要一个惯性速度,它的作用是什么呢?其实很明显,当鸟群迅速集中到了一个点之后它们就丧失了全局的搜索能力,所有的鸟会迅速向着全局最优点飞去,如果当前的全局最优解是一个局部最优点,那么鸟群将会陷入局部最优。所以,惯性系数和惯性速度的作用是给鸟群提供跳出局部最优的可能性,获得这个跳出局部最优能力的代价是它们的收敛速度减慢,且局部的搜索能力较弱(与当前的惯性速度有关)。
为了平衡局部搜索能力和跳出局部最优能力,我们可以人为的干预一下惯性系数W的大小,结合方案1和方案2,我们可以使每只鸟的惯性系数以一个随机周期,周期性下降,若小于0,则重置为初始值。
这样结合了方案1和方案2的惯性系数,也能得到不错的效果,大家可以自己一试。
思路二:改变小鸟们向群体最优飞行和向历史最优飞行的权重。
方案4:让小鸟向全局最优飞行的系数C2线性递减。
小鸟们的飞行过程与之前好像没什么变化,我甚至怀疑我做了假实验。看看最终结果,0.7267249621552874,这是到目前为止的最差结果。看来这不是一个好方案,让全局学习因子C2递减,势必会降低算法的收敛效率,而惯性系数还是那么大,小鸟们依然会围绕历史最优位置打转,毕竟这两个最优位置是有一定关联的。所以让C1线性递减的实验也不必做了,其效果应该与方案4相差不大。
看来只要是惯性系数不变怎么修改C1和C2都不会有太过明显的效果。为什么实验都是参数递减,却没有参数递增的实验呢?
1.惯性系数W必须递减,因为它会影响鸟群的搜索范围。
2.如果C1和C2递增,那么小鸟的惯性速度V势必会跟着递增,这与W递增会产生相同的效果。
上面我们通过一些实验及理论分析了粒子群算法的特点及其参数的作用。粒子群作为优化算法中模型最简单的算法,通过修改这几个简单的参数也能够改变算法的优化性能可以说是一个非常优秀的算法。
上述实验中,我们仅分析了单个参数对算法的影响,实际使用时(创新、发明、写论文时)也会同时动态改变多个参数,甚至是参数之间产生关联。
实验中,为了展现实验效果,maxV取值较大,一般取值为搜索空间范围的10%-20%,按上面(-100,100)的范围maxV应该取值为20-40,在此基础上,方案1、方案2效果应该会更好。
粒子群算法是一种概率算法,所以并不能使用一次实验结果来判断算法的性能,我们需要进行多次实验,然后看看这些实验的效果最终来判断,结果必须使用多次实验的统计数据来说明,一般我们都会重复实验30-50次,为了发论文去做实验的小伙伴们不要偷懒哦。
粒子群算法的学习目前告一段落,如果有什么新的发现,后面继续更新哦!
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(四)粒子群算法(2)
下一篇 优化算法笔记(六)遗传算法
10. 优化算法笔记(三十)海洋捕食者算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
海洋捕食者算法(Marine Predators Algorithm)见名知意,就是根据海洋中掠食者捕获猎物的行为提出的优化算法。该算法发表于2020年,也算法是一个新算法了。
该算法根据迭代次数分均三个阶段,每个阶段使用不同的随机策略计算步长并移动猎物位置。如果猎物的位置好于捕食者的位置,那么捕食者就移动到该猎物的位置。
海洋捕食者算法就像一个缝合怪,缝合了布朗运动,levy飞行等随机生成策略,在不同的阶段使用不同的策略。虽然是缝合怪,但是也有着不错的寻优能力,我们也可以学习学习其策略。
(因为是缝合怪,甚至找不到对标的动物,可能作者也没找到,这次就算是鲨鱼吧。)
海洋捕食者算法中有两个概念,捕食者和猎物,在每个阶段,只有猎物会进行随机移动,而捕食者则是在猎物完成移动后,移动到优于自己的猎物处。
在蚁狮算法中也是这样的模型,不过这里更简单,我们可以将海洋捕食者算法中的捕食者对标粒子群算法中的粒子。捕食者的位置就是粒子的历史最优位置,猎物的位置就是粒子的当前位置。猎物(粒子)不断的移动改变位置,如果找到优于捕食者(粒子的历史最优)的位置,那么捕食者移动到该猎物处(粒子更新历史最优位置)。
初始时海洋捕食者数量为N。捕食者的位置表示为 ,猎物的位置为 ,最大迭代次数为 。
迭代次数在 内。
根据如下公式计算猎物的新位置:
公式(1)用于计算步长,其中Rb为标准正态分布随机数,公式(2)用于计算新位置,其中R为[0,1]内均匀随机数,公式(3)是我将公式(1)代入公式(2)的到的,由于后面太多随机数相乘,其结果可以近似为0,即该阶段在当前猎物周围小范围搜索。
迭代次数在 内。
该阶段,种群被均分为二组,第一组的猎物的位置更新公式如下:
迭代次数在 内。
该阶段猎物的位置更新公式如下:
:
捕食者对比自己的猎物,如果猎物的位置更好,则更新自己的位置到猎物的位置。
根据鱼类的聚集效应(Fish Aggregating Devices (FADs) effects),再次更新猎物的位置,其具体更新公式如下:
其中FADs取值为0.2,R,r为[0,1]内均匀分布的随机数,U为{0,1}内随机数,r1,r2为群体中的随机个体编号。
从公式中可以看出,该步骤第一个公式对猎物位置的部分维度进行了“重置“,不过这样有较大可能会超出边界,第二个公式类似于差分进化的变异公式,让猎物随机移动。
适应度函数 。
实验一 :
从图中可以看出海洋捕食者算法的初期收敛速度并不是很快,而后期则是会迅速收敛,。通过前面对公式的分析,该算法在局部搜索方面有着较强的性能,从图中也可以得到相似的结论。
从结果来看,算法效果还是很不错的,虽然是个缝合怪,但该有的步骤和性能都不差。
实验二 :分别对阶段1、2、3,进行测试,即整个算法中只有阶段1、阶段2或者阶段3中的一个。
阶段1图像如下:
阶段二图像如下:
阶段三图像如下:
图像看上去好了不少,在最后群体能够收敛到一起,集中在正解附近,结果应该不差
结果相对于原算法好了一丢丢。不过这个测试函数十分的简单,这个修改只能说是在该函数上较好,总体的性能还需要更全面的测试函数来测试。总的来说海洋捕食者算法的性能不错,但能够改进的地方也不少。
海洋捕食者算法是根据海洋中的捕食者搜捕猎物的行为而提出的优化算法。该算法分为三个阶段,第一阶段,进行全局搜索,第二阶段,融合全局搜索和局部搜索,第三阶段,进行局部搜索和levy飞行跳出局部最优。该算法就算一个缝合怪,可以从中看出不少算法的特点。
参考文献
Faramarzi A , Heidarinejad M , Mirjalili S , et al. Marine Predators Algorithm: A Nature-inspired Metaheuristic[J]. Expert Systems with Applications, 2020, 152:113377.
提取码:7wfn
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(二十九)秃鹰算法
下一篇 优化算法笔记(三十一)阿基米德算法