一、 苔藓生长优化算法
苔藓生长优化算法(Moss Growth Optimization,MGO)是一种受自然环境中苔藓生长规律启发而提出的元启发式优化算法。MGO算法通过模拟苔藓的生长过程,包括孢子的传播和生长,来解决优化问题。每个解被视为一个苔藓孢子,这些孢子在解空间中随机扩散,其生长和扩散受到适应度的影响。
算法原理
-
风向测定:苔藓的生长受到风的影响,风在孢子的传播中起着至关重要的作用。MGO开发了一种创新的机制,称为“风向测定”,利用大多数个体与最优个体之间的位置关系来决定种群中所有个体的进化方向,帮助避免陷入局部最优。
-
孢子扩散搜索:在有风存在的情况下,孢子的传播以一种高度不可预测的方式发生,导致很大的传播距离。在稳定的风条件下,孢子能够传播更远的距离,而在湍流条件下,它们往往在更短的距离内传播。
-
双繁殖搜索:从苔藓的无性繁殖、有性繁殖和营养繁殖中得到启发,提出了双繁殖搜索策略,用于探索和开发。
-
隐生机制:改变了传统元启发式算法直接修改个体解的方法,避免了算法陷入局部最优。
算法流程
-
初始化:算法开始时,随机分布苔藓孢子,每个孢子代表解空间内的一个潜在解。
-
生长模拟:孢子根据环境因素(如湿度)的生长概率在解空间中“生长”或移动。
-
适应性调整:生长参数动态调整,以增强解空间的探索和开发。
-
优化:基于积累的生长模式和经验,解决方案被迭代细化。
-
终止:当满足停止条件,如收敛或达到最大迭代次数时,过程结束。
-
风向测定:通过风向测定机制确定种群的进化方向。
-
孢子扩散搜索:模拟风驱动的孢子扩散,支持全局探索。
-
双繁殖搜索:通过性繁殖和营养繁殖增强局部开发。
-
隐生机制:允许对个体解进行多次探索,避免局部最优陷阱,提高种群质量。
参考文献
[1]Boli Zheng, Yi Chen, Chaofan Wang, Ali Asghar Heidari, Lei Liu, Huiling Chen, The moss growth optimization (MGO): concepts and performance, Journal of Computational Design and Engineering, Volume 11, Issue 5, October 2024, Pages 184–221, https://doi.org/10.1093/jcde/qwae080
原文链接:https://blog.csdn.net/weixin_46204734/article/details/142895991
二、多目标苔藓生长优化算法
针对单目标优化问题,苔藓生长优化算法已显示出其有效性。然而,在面对多目标优化问题时,需要一种能够同时处理多个冲突目标的算法。因此,本文提出多目标苔藓生长优化算法(Multi-objective Moss Growth Optimization, MOMGO)。MOMGO是苔藓生长优化算法的多目标扩展,它能够有效地解决多目标优化问题。
为了评估MOMGO的性能,我们将其应用于一组标准的基准测试函数,这组函数包括ZDT1、ZDT2、ZDT3、ZDT4和ZDT6。这些函数在测试多目标优化算法的效率方面被广泛采用。此外,为了全面评估算法的收敛性和解的多样性,我们使用了六种不同的性能度量指标:GD、IGD、HV、Spacing、Spread和Coverage。通过这些指标的综合分析,我们可以有效地评估该算法在处理多目标优化问题时的整体性能。
MOMGO算法的执行步骤可以描述如下:
-
初始种群的生成:算法首先随机生成一个初始种群,其中每个个体象征着一个可能的解决方案。
-
个体的评估与筛选:算法对初始种群中的个体进行评估,并根据特定的标准筛选出合适的个体。
-
新个体的产生:通过配对操作,从筛选后的个体中生成新的子代个体。
-
环境选择过程:算法通过环境选择机制对新产生的子代个体进行评估,以确定哪些个体将进入下一代。
-
终止条件的判断:算法会持续进行迭代,直到满足预设的终止条件,这些条件可能包括达到最大迭代次数或解决方案的质量达到既定标准。
-
近似Pareto解集的形成:当满足终止条件后,最后一次环境选择中保留的个体将构成近似的Pareto解集。
在这一过程中,环境选择机制扮演着至关重要的角色。它负责从子代个体中挑选出能够支配其他个体或与其他个体互不支配的精英个体。这些精英个体代表了当前种群中的最优质解。随着算法的不断迭代,每次迭代都能选出新的精英个体,最终能够逼近问题的最优解。
2.1、六种性能评价指标介绍
-
GD(Generational Distance)世代距离:
GD指标用于评价获得的帕累托前沿(PF)和最优帕累托前沿之间的距离。对于每个属于PF的解,找到与其最近的最优帕累托前沿中的解,计算其欧式距离,GD为这些最短欧式距离的平均值。GD值越小,代表收敛性越好,找到的PF与最优帕累托前沿越接近。 -
IGD(Inverted Generational Distance)逆世代距离:
IGD与GD相似,但同时考虑了多样性和收敛性。对于真实的最优帕累托前沿中的每个解,找到与其最近的PF中的解,计算其欧式距离,取平均值而不需开方。如果PF的数量大于最优帕累托前沿的数量,那么IGD就能最完整地表达PF的性能,IGD值越小,代表算法多样性和收敛性越好。 -
HV(Hypervolume)超体积:
HV也称为S metric,用于评价目标空间被一个近似集覆盖的程度,是最为普遍的一种评价指标。需要用到一个参考点,HV值为PF与参考点之间组成的超立方体的体积。HV的比较不需要先验知识,不需要找到真实的帕累托前沿。如果某个近似集A完全支配另一个近似集B,那么A的超容量HV会大于B,因此HV完全可以用于Pareto比较。 -
Spacing:
Spacing是衡量算法生成的非支配解集中各个解之间平均距离的指标。Spacing值越小,表示解集内部的解越密集,多样性越高。 -
Spread:
Spread指标衡量算法生成的非支配解集在Pareto前沿上的分散程度。高的Spread值意味着解集在前沿上分布得更均匀,没有聚集在某个区域。 -
Coverage:
Coverage指标衡量一个算法生成的Pareto前沿覆盖另一个算法生成的Pareto前沿的比例。如果算法A的Coverage指标高于算法B,那么意味着算法A生成的Pareto前沿在某种程度上包含了算法B生成的Pareto前沿。
2.2、部分MATLAB代码
%% 参数说明
%testProblem 测试问题序号
%Name 测试问题名称
%dim 测试问题维度
%numObj测试问题目标函数个数
%lb测试问题下界
%ub测试问题上界
%SearchAgents_no 种群大小
%Max_iter最大迭代次数
%Fbest 算法求得的POF
%Xbest 算法求得的POS
%TurePF 测试问题的真实pareto前沿
%Result 评价指标随迭代次数的变化值
testProblem=2;
[Name,dim,numObj,lb,ub]=GetProblemInfo(testProblem);%获取测试问题的相关信息
SearchAgents_no=200;%种群大小
Max_iter=200;%最大迭代次数
[Fbest,Xbest,TurePF,Result] = MOMGO(Max_iter,SearchAgents_no,Name,dim,numObj,lb,ub);%算法求解
2.3、部分结果
三、完整MATLAB代码
见下方名片