导航:首页 > 源码编译 > 迭代局部搜索算法

迭代局部搜索算法

发布时间:2023-05-21 11:39:49

㈠ 优化算法笔记(三十)海洋捕食者算法

(以下描述,均不是学术用语,仅供大家快乐的阅读)
海洋捕食者算法(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,仅供参考

目录
上一篇 优化算法笔记(二十九)秃鹰算法
下一篇 优化算法笔记(三十一)阿基米德算法

㈡ 启发式算法

什么是算法?从枚举到贪心再到启发式(上)
目标 :要优化的东西
决策 :根据目标做出的决策
约束 :进行决策时必须遵循的条件
算例 :问题参数的具体化

枚举法 :将问题所有的解一一枚举出来,挨个去评价,选出最好的那个
1.枚举法能够找到问题的最优解
2.枚举法求解时间随问题规模增长而呈爆炸式增长

贪心法 :利用“构造”的方式生成解,速度相对而言会非常快,同时不会随着问题规模的增长而大幅度增加,是平缓的线性增长
什么是算法?从枚举到贪心再到启发式(下)
启发式算法 :在一个合理的求解资源范围内(合理的时间,合理的内存开销等)求得一个较为满意的解。目前主要包括邻域搜索和群体仿生两大类。
解空间 :所有该问题的解的集合,包括可行解和不可行解
局部搜索 :不完全遍历解空间,只选择一部分进行遍历,进而大大降低搜索需要的资源。为了提高局部搜索的质量,大部分局部搜索算法都会在搜索的时候不断地抓取多个区域进行搜索,直到满足算法终止条件。
邻域 :在邻域结构定义下的解的集合,它是一个相对的概念,即邻域肯定是基于某个解产生的
邻居解 :邻域内某个解的称呼
邻域结构 :定义了一个解的邻域
邻域结构的设计在启发式算法中非常重要,它直接决定了搜索的范围,对最终的搜索结构有着重要的影响,直接决定了最终结果质量的好坏
搜索过程

不断重复步骤2-步骤5,直到满足终止条件,最后输出全局最优解

所有的启发式找到的都是满意解,不能说是最优解(即便真的是),因为它遍历的是解空间的局部。
一般情况下,启发式算法的时间是随着问题规模增长而呈线性增长的
干货 | 想学习优化算法,不知从何学起?
邻域搜索类
迭代局部搜索算法
模拟退火算法
变邻域搜索算法
禁忌搜索
自适应大邻域搜索
群体仿生类
遗传算法
蚁群算法
粒子群算法
人工鱼群算法
算法应用
禁忌搜索算法求解带时间窗的车辆路径问题
基于树表示法的变邻域搜索算法求解考虑后进先出的取派货旅行商问题
变邻域搜索算法求解Max-Mean dispersion problem
遗传算法求解混合流水车间调度问题

㈢ 蝴蝶算法口诀图解

蝴蝶算法口诀图解,如下:

蝴蝶算法(Butterfly Algorithm)是根据蝴蝶受香味吸引飞行的行为而提出的优化算法。算法于2015年提出,效果中规中矩,不过相关的论文数量也不少了。算法的流程和结构非常简单,不过论文对算法的细节描述不够清晰,有些参数意义不明。让罩

其中,x:表示第i个蝴蝶在第t次迭代中的解向量,这里a*表示目前为止的最优解。第2只 蝴 蝶的 香 味用 f;来表示,r为0到1的随机坦御闹数。局部搜索可表示为x+1 =对 + (r2 *x -x) * f

其中r为0到1的随机数,x和x:表示从解空间中随机选择的第k只和第 j只蝴蝶。在蝴蝶的觅食过程中,全局和局部搜索都会发生,为此,设定一个开关概率p来转换普通的全局搜索和容集的局部搜索。每次迭代用式(4)随机产生一个数r,与开关概率p进行比较来决定进行全局搜索还是局部搜索。

㈣ 为什么说模拟退火算法优于局部搜索算法

该算法是一种新的随机滑尺搜索方法,它是近年来提出的一信物高种适合于解决大规模组合蚂州优化问题的通用而有效的近似算法。与以往的近似算法相比,模拟退火算法具有描述简单、使用灵活、运用广泛、运行效率高和较少受到初始条件约束等优点

㈤ 局部搜索到底是什么

简单地说,就是根据已有的条件减小搜索范围的搜索思想,不再全局搜索了。。。比如你想知道你班里有多少有钱人,但由于你班上人太多了不可能一一调查,所以你可以根据“物以类聚”的假设减小搜索范围,有钱人和有钱人走得更近些,就从某个有钱人的圈子进行排查。。。

㈥ 优化算法笔记(十八)灰狼算法

(以下描述,均不是学术用语,仅供大家快乐的阅读)
灰狼算法(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实现

㈦ 什么是智能优化算法

群体智能优化算法是一类基于概率的随机搜索进化算法,各个算法之间存在结构、研究内容、计算方法等具有较大的相似性。因此,群体智能优化算法可以建立一个基本的理论框架模式:

Step1:设置参数,初始化种群;

Step2:生成一组解,计算其适应值;

Step3:由个体最有适应着,通过比较得到群体最优适应值;

Step4:判断终止条件示否满足?如果满足,结束迭代;否则,转向Step2;

各个群体智能算法之间最大不同在于算法更新规则上,有基于模拟群居生物运动步长更新的(如PSO,AFSA与SFLA),也有根据某种算法机理设置更新规则(如ACO)。

(7)迭代局部搜索算法扩展阅读

优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。

优化思想里面经常提到邻域函数,它的作用是指出如何由当前解得到一个(组)新解。其具体实现方式要根据具体问题分析来定。

㈧ 局部搜索与经典搜索有什么不同

局部搜索与经典搜索的不同分别是:

1、局部搜索:局部搜索不关心路径代价,但是关注解状态。比如八皇后问题,不关心是怎么到目的状态的,只关心最终布局对不对,许多重要应用都有这样的性质,如作业空间调度,自动程序设计等。

局部搜索有两个关键优点:1、通常只用常数级的内存;2、通常能在系逗缓首统化算法不适用的很大或无限的(连续的)状态山数空间中找到合理的解。

此外,局部搜索算法对于解决纯粹的最优化问题十分有用,其目标是根据目标函数找到最佳状态。

2、经典搜索:通过形式化的定义搜索问题,则搜索问题的解描述为一组让初始状态转变为目标状态的行动序列,而搜索问题的最优解描述为使得路径代价最小的一组让初始状态转变为目标状态的行动序列。

经典搜索的种类主要是:

1、树搜索:例如在罗马尼亚问题中,从父结点In(Arad)出发得到三个子节点:In(Sibiu),In(Timisoara)和In(Zerind),接下来需要继续从这三种子结点中选择其一继续考虑,假设我们选择In(Sibiu),则检查它是否是目标状态。

如果不是目标状态,则继续扩展它得到四个状态:In(Arad),In(Fagaras),In(Oradea),In(Rimnicu Vikea)。继续按此方式拓展In(Timisoara)和In(Zerind)。如果未找到目标状态,则继续对叶子结点作同样的操作。

2、图搜索算法:在图搜索算法中,在扩展的时候如果遇到已经在 explored 集合中的结点或已经在 frontier 集合中的结点,则不将该结点哪局拓展进 frontier 集合,这也是其与树搜索算法的主要区别。

㈨ 优化算法笔记(二十七)蜉蝣算法

(以下描述,均不是学术用语,仅供大家快乐的阅读)
蜉蝣算法(mayfly optimization algorithm)是根据蜉蝣的飞行和繁衍行为提出的优化算法。该算法提出与2020年(论文接收在2019年),算是一个新算法。算法的流程和结构其实与蜉蝣的关系不大,可以看作是对粒子群的一个修改。
蜉蝣算法中群体分为雄性和雌性,雄性的行为与粒子群相似,通过全局最优和自身历史最优移动,而雌性则是向优于自己的配偶移动,若配偶弱于自己则自行局部搜索。然后这对雌性和雄磨搭孝性会产生两个后代,并保留群体中的较优个体。
算法的流程结构都有些许复杂,不过有粒子群基础的小伙伴应该能很好的理解。

这次我们的主角就是蜉蝣了(虽然关系不太大)。
蜉蝣算法中有两种角色,雄性蜉蝣和雌性蜉蝣,其数量均为N/2,N为群体总数, 其位置为 ,速度 为了方便描述,下面使用XM表示雄性蜉蝣的位置,XF表示雌性蜉蝣的位置。

整个算法的每次迭代流程大致可以分为四步:
1. 将蜉蝣群体均分为雄性组和雌性组,每组内按优劣顺序排列。
2. 雄性个瞎稿体移动
3. 雌性个体移动
4. 雄性雌性交配产生两个后代
5. 在这2N个个体中选出N个作为下一代
可以看出每次迭代算法产生了2N个新个体,所以说蜉蝣算法的计算速度会比其他算法更慢,因为蜉蝣算法多计算了N个个体的适应度值。(其他大多数算法每次迭代只计算N个值)。
由于1.分组和5.选择比较简单,不需要再详细描述,下面只介绍2,3,4这三个步骤。

雄性蜉蝣的移动方式与粒子群中的粒子相似枝携,新位置当前位置和速度决定:

其中 表示第n代群体中的第i个个体的第j维的位置。
其速度则有以下公式决定:

其中如果该个体使群体中的最优个体则使用公式(3)进行移动,其他个体则使用公式(2)进行移动。 表示第n代群体中的第i个个体的第j维的速度,pbest为该个体所到过的最好位置,gbest为全局最好位置,a1,a2,beta为常数,一般取值为2,rp为当前位置与pbest的欧式距离,rg为当前位置与gbest的欧式距离,e为自然常数,d为常数,一般取值为0.1,r为[-1,1]内的随机数。
公式2是不是和粒子群的速度更新公式很像?下面是粒子群的速度更新公式

与粒子群相比雄性蜉蝣的速度更新公式将两个随机数r1与r2替换成了与距离相关的值,个人认为这不是一个好的修改,不过后面可以看出,该改动为算法提供了强大的局部搜索能力。
下面做一个试验:现在将蜉蝣算法中所有个体全部划分为雄性,即没有雌性的搜索行为和交配产生后代的行为。也可以认为是在粒子群算法中将公式(3)替换为公式(2),我们看看效果。(唯一不同的是蜉蝣算法中雄性中的全局最优个体使用公式(3)进行移动)。

可以看出,只有最优个体在缓慢的移动,并且在略过最优解附近后仍在移动。问题出在哪呢?

有两个原因:
1 .如下公式的值

我们上述的实验中取值范围(-100,100),初始化时两个个体之间的欧式距离r的取值范围在10以下的都比较少,此时自身的历史最优就是自己本身,也不会产生速度。
当r=10时,其分母为e^200,其值约等于0,此时公式(2)如下

即速度不会发生任何变化。
下面,我们把解空间缩小100倍看看效果。

可以看出仅仅是修改了取值范围,雄性蜉蝣们的行为就发生了巨大的改变。因为距离参数会受到解空间范围的影响,当距离足够小时,公式(2)中的距离参数所算出的速度不在是0,所以雄性蜉蝣们便活跃了起来。
当然这是一个不好的现象,算子不应该受解空间范围改变有如此大的影响。

2 .初始速度
每个蜉蝣都有初始速度呀,就像粒子群一样,所以一开始应该也会移动。
蜉蝣确实有初始速度,不过速度的每一维都是0。为什么呢?不能是一个不是0的值吗?可以但又不完全可以,因为蜉蝣算法没有给出速度的上下限范围,没有范围就无法初始化到该范围内的值。作者将速度的上下限作为了一个改进点放到了文章的后部!
结合上述1,2两点,雄性个体中除最优个体外,其他个体的速度几乎都是0,可以说是以肉眼不可见的方式在缓慢移动。或者也可以理解为该步骤的主要作用是局部搜索,当个体之间距离较远时则不会移动,将雄性单独拿出来实验是没有意义的。如果必须单独拿出来用则需要设置速度上下限,并在初始化中为个体设置随机速度。
其实论文中的速度上下限,以及惯性系数递减等粒子群中已有的步骤,完全可以直接沿用到原始的蜉蝣算法中,而不应作为改进单独拎出来说明。此处也可以直接沿用粒子群算的速度更新公式。

每只雌性个体会有自己对应的雄性个体作为配偶,雌雄两组顺序配对,即最优的雌性配对最优的雄性,次优的雌性配对次优的雄性。
雌性的移动方式为向由于自己的配偶移动,若配偶弱于自己则自行搜索。
其位置的计算公式与雄性相同均为公式(1),速度的更新公式如下:

其中xm为该雌性个体配对的雄性个体的位置,xf为该雌性个体的位置,rmf为这两只蜉蝣之间的位置,fl为常量一般取值为0.1,r为[-1,1]内的随机数。
当该雌性个体差于雄性个体时,使用公式(7)中的上式,当雌性个体优于该雄性个体时,使用公式(7)中的下式。
与雄性的速度更新公式相似的问题,因为距离参数rmf的值可能非常大,会导致公式(7)中的上式做小范围的局部搜索,速度更新幅度较小。可以试着用随机数去代替距离参数:

其中r2为[0,1]内的随机数。

交配行为中一对雌性和雄性会产生两个后代,其产生公式如下:

其中L为随机数,取值范围应该是(0,1),xm为雄性蜉蝣,xf为雌性蜉蝣,可以看出产生的两个个体关于这对雌性的中心对称。该步骤为蜉蝣算法提供了全局搜索能力,并结合选择操作加快了算法的收敛速度。

整个蜉蝣算法的流程如下:

其流程看上去还是挺简单的,不过由于分了雌性和雄性两种,导致所需操作的步骤细节很多,同时由于父辈母辈更新自身位置后还产生了后代,其实每次迭代计算了2N个个体的适应度值,导致其速度慢。

适应度函数 。
实验一 : 原算法

从图像可以看出,蜉蝣算法的收敛速度非常的快,在解附近聚集后群体仍然能够移动并向着正解运动,并最终收敛在正解附近。和之前的全是雄性蜉蝣的实验大相径庭,应该是因为交配产生的后代优于了父辈母辈,父辈母辈被替代了,所以看上去移动了。当距离变小后,雌性雄性蜉蝣的速度更新公式则开始生效了。

不过,结果并不太好,但是在预期内,可以看出,其精度是非常高的,但是算法不太稳定,会出现非常差的结果。
因为距离较远时全靠着交配产生的后代更新位置,此时会快速收敛到当前的最优个体附近。当距离变小后,雌性和雄性的速度更新公式开始生效,此时的群体较为集中,其运动轨迹就像贪吃蛇一样。
综上,可以看出算法的前期收敛很快,算法的局部搜索精度很高,同时全局搜索能力较弱,依靠局部搜索花上跟多时间也能找到最优解。由于全局搜索能力不强,且收敛过快,算法应该比较容易陷入局部最优。
实验二 : 去除距离操作,还原成类似粒子群的速度更新方式,使用公式(4)(8)

实验二的图像中蜉蝣的收敛速度比实验一中慢了一点,而且也没有那么集中,最终也聚集在了正解附近,这个图像其实和粒子群也有了几分相似。不过由于选择操作的作用,蜉蝣算法的总是会收敛的更快,即使设置了速度上限依然如此,因为即使该个体迭代数次可以飞到最优解,但后代可是可以直接降生与最优解附近的,如此一来该个体会被取代,剩下的个体则集中在了最优解附近。

从结果上看,实验二损失了不上精度有点不能接受,但是也稳定了不少,局部搜索能力也有所削弱。蜉蝣算法的收敛行为主要由交配繁衍后代和选择下一代来提供,如果要调整其搜索速度需要修改交配操作。原论文中也写出了相关的改进,如,父代母代产生一雌一雄两个子代,子代雄性优于父代则保留,子代雌性优于母代则保留。此处不再赘述,可以阅读原文。

蜉蝣算法受雌雄蜉蝣的运动和交配产生后代的行为启发而提出的优化算法,个人感觉该算法与蜉蝣关系不大,而是更像是对粒子群的一种改进。算法的流程较为复杂,不过有粒子群作为基础也很好理解。算法的性能比我想象的要好,其中雌性和雄性的移动为算法提供了局部搜索能力,而交配繁衍后代进行选择提供了全局搜索能力。算法的局部搜索能力很强但是稳定性较差,容易陷入局部最优。由于每次迭代产生了更多的新个体数,为了保证公平,它的迭代次数应为其他算法的1/2。
其实原文中还有许多的优化和改进步骤,这里也不一一实验了,还是推荐去看看原论文。
看到蜉蝣算法,想起了之前一个写着玩的算法,也是将种群分为了雌雄两类。不过没有蜉蝣算法这么复杂的操作,只是通过雌雄交配产生后代进行更新迭代,通过母辈生育有几率死亡以及近亲繁殖的后代有几率死亡来控制跳出局部最优,效果中规中矩,不提了。

参考文献
Zervoudakis, K., Tsafarakis, S., A mayfly optimization algorithm, Computers &
Instrial Engineering (2020) 提取码:ogl4
以下指标纯属个人yy,仅供参考

目录
上一篇 优化算法笔记(二十六)和声搜索算法
下一篇 优化算法笔记(二十八)蝗虫算法

㈩ 什么是局部搜索算法

局部搜索算法是从爬山法改进而来的。
简单来说,局部搜索算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。
在计算机科学中,局部搜索是解决最优化问题的一种元启发式算法。局部搜索从一个初始解出发,然后搜索解的邻域,如有更优的解则移动至该解并继续执行搜索,否则返回当前解。
1、局部搜索算法的基本思想:
在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索。
2、局部搜索的优点:
简单、灵活及易于实现,缺点是容易陷入局部最优且解的质量与初始解和邻域的结构密切相关。常见的改进方法有模拟退火、禁忌搜索等。
3、局部搜索广泛应用:
计算机科学(主要是人工智能)、数学、运筹学、工程学、生物信息学中各种很难找到全局最优解的计算问题。

阅读全文

与迭代局部搜索算法相关的资料

热点内容
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:340
有什么学习高中语文的app 浏览:282
安卓手机的表格里怎么打勾 浏览:411
阿里云服务器有网络安全服务吗 浏览:970
超解压兔子视频 浏览:24
单片机怎么测负脉冲 浏览:174