智能优化算法:蛾群优化算法

摘要:蛾群算法 (Moth Swarm Algorithm, MSA)是 Al-Attar AliMohamed 于2016年提出的新兴元启发式智能优化算法,它模拟自然界蛾群在夜间朝月光飞行的行为。蛾群算法具有结构简单,参数较少,求解精度高以及鲁棒性强等优点。

1.算法原理

蛾群算法(Moth Swarm Algorithm , MSA)是 2016 年由 Al-Attar Ali Mohamed 提出,受到飞蛾趋光性以及飞行方式的启发而设计的一种元启发式算法。与大多数群智能算法不同的是,在蛾群算法模型中,将整个蛾群划分为不同作用类型的飞蛾,更真实地体现了群体的合作行为,在一定程度上平衡了算法探测和开采能力。

在蛾群算法中,光源位置代表优化问题的可能解,光源的发光强度代表问题解的适应度值。MSA 算法中蛾群由三部分组成,分别为探路蛾,勘探蛾以及观察蛾。
探路蛾:这部分蛾以一定的方式在优化空间中来发现新的区域。这部分蛾的主要任务是找到最好的位置作为光源来引导飞蛾主体的移动。
勘探蛾:这部分蛾在围绕着被探路蛾标记出的最好光源附近以对数螺旋线的方式来移动。
观察蛾:这部分蛾直接移动到被勘探蛾标记出的最亮光源处。

1.1 初始化蛾群

在蛾群初始化阶段,假设在智能优化算法:蛾群优化算法-附代码_优化算法维搜索空间中,种群数目为智能优化算法:蛾群优化算法-附代码_python_02,随机生成的(智能优化算法:蛾群优化算法-附代码_算法_03) 只蛾(初始候选解)将遵循以下的数学公式:
智能优化算法:蛾群优化算法-附代码_python_04
其中智能优化算法:蛾群优化算法-附代码_算法_05智能优化算法:蛾群优化算法-附代码_模拟退火算法_06分别代表算法的上界和下界。

1.2 探路蛾阶段

在探路蛾阶段,蛾群以轮盘赌的方式选择若干只蛾作为下一阶段的指导蛾,位置更新公式如下:

探路蛾阶段:提出的多样性交叉点,交叉操作的策略可以扩大种群的多样性。首先,对第智能优化算法:蛾群优化算法-附代码_优化算法_07代的个体在智能优化算法:蛾群优化算法-附代码_优化算法_08维中服从以下分布:
智能优化算法:蛾群优化算法-附代码_算法_09
式中,智能优化算法:蛾群优化算法-附代码_算法_10,领头蛾的数目为智能优化算法:蛾群优化算法-附代码_初始化_11,变量因子智能优化算法:蛾群优化算法-附代码_算法_12为度量领头蛾是否进行变异机制,服从以下的分布:
智能优化算法:蛾群优化算法-附代码_模拟退火算法_13
当组成探路蛾群的蛾分散的时候将纳入智能优化算法:蛾群优化算法-附代码_模拟退火算法_14种群进行变异操作,服从以下的公式:
智能优化算法:蛾群优化算法-附代码_模拟退火算法_15
蛾群的交叉率随着迭代的进行在动态的变化。对智能优化算法:蛾群优化算法-附代码_python_16的交叉机制中,本算法提出的子矢智能优化算法:蛾群优化算法-附代码_优化算法_17是用扰乱所选择的主矢量智能优化算法:蛾群优化算法-附代码_模拟退火算法_18生成的,公式如下:
智能优化算法:蛾群优化算法-附代码_初始化_19
其中智能优化算法:蛾群优化算法-附代码_初始化_20
智能优化算法:蛾群优化算法-附代码_优化算法_21
为了获得较好的飞行路径,每只探路蛾通过和变异过后的子矢量进行交互操作来更新自身的位置。完整的飞行路径智能优化算法:蛾群优化算法-附代码_python_22可以定义如下:
智能优化算法:蛾群优化算法-附代码_模拟退火算法_23
轮盘赌选择机制
在以上迭代之后,每一代的适应度值将会重新计算并与探路蛾的适应度值进行比较。适应度值较好的蛾将继续保留到下一次迭代的过程中,用于求解极小值的过程表示如下:
智能优化算法:蛾群优化算法-附代码_优化算法_24
智能优化算法:蛾群优化算法-附代码_模拟退火算法_25则用于评价光的强度智能优化算法:蛾群优化算法-附代码_模拟退火算法_26 ,两者的关系表达如下:
智能优化算法:蛾群优化算法-附代码_算法_27
目标函数的适应度值智能优化算法:蛾群优化算法-附代码_python_28则表示光的强度,用于求解极小值的问题中,表述如下:
智能优化算法:蛾群优化算法-附代码_python_29

1.3 勘探蛾阶段

勘探蛾感受到光的强度次于探路蛾,智能优化算法:蛾群优化算法-附代码_python_30为探路蛾的数量,其随着迭代次数 智能优化算法:蛾群优化算法-附代码_python_31的增加而减少。其公式为:

在探路蛾搜索完成之后,将光源强度的信息传递给勘探蛾,勘探蛾紧随着更新自身的位置。每只勘探蛾智能优化算法:蛾群优化算法-附代码_初始化_32将绕着人工光源智能优化算法:蛾群优化算法-附代码_优化算法_33(轮盘赌机制选择的探路蛾)做螺旋盘旋。勘探蛾更新位置的公式如下:
智能优化算法:蛾群优化算法-附代码_python_34
上式中, 智能优化算法:蛾群优化算法-附代码_优化算法_35为螺旋形状常数定义飞蛾盘旋的形状,其取值范围为[r,1]之间的随机数,智能优化算法:蛾群优化算法-附代码_初始化_36。在本算法中,每只蛾的分类是随着迭代次数的变化而变化的。因此,每只蛾找到光源强度比较好的位置时,将有可能变换为探路蛾。也就是说,在这个阶段会产生新的光源。

1.4 观察蛾阶段

在算法优化的过程中,随着勘探蛾数量的减少,观察蛾将会增多智能优化算法:蛾群优化算法-附代码_优化算法_37在优化中,该机制可以提高算法的收敛速度。在这个阶段将观察蛾的数量分为两部分,一部分为高斯游走方式更新位置(12),另一部分加入即时记忆的联想学习机制进行位置更新(13)分别如下:
智能优化算法:蛾群优化算法-附代码_优化算法_38

智能优化算法:蛾群优化算法-附代码_模拟退火算法_39

式中,智能优化算法:蛾群优化算法-附代码_算法_40为高斯分布中随机生成的种群数量,智能优化算法:蛾群优化算法-附代码_python_41为本阶段中最好的蛾群的位置(包括探路蛾和勘探蛾),智能优化算法:蛾群优化算法-附代码_算法_42,智能优化算法:蛾群优化算法-附代码_算法_43为[0,1]之间的随机数。
智能优化算法:蛾群优化算法-附代码_优化算法_44
式中智能优化算法:蛾群优化算法-附代码_模拟退火算法_45智能优化算法:蛾群优化算法-附代码_初始化_46为社会因子,智能优化算法:蛾群优化算法-附代码_python_47为认知因子,智能优化算法:蛾群优化算法-附代码_算法_48智能优化算法:蛾群优化算法-附代码_初始化_49为[0,1]之间的随机数,智能优化算法:蛾群优化算法-附代码_优化算法_50是基于一定概率随机选出来的光源的位置。

算法步骤:

Step 1: 初始化基本控制参数:群体规模 n ,最大迭代次数 iterMax ;
Step 2: 初始化蛾群种群:按照公式(1),初始化蛾群个体在搜索空间位置;
Step 3: 根据目标函数计算适应度值,开始算法迭代过程;
Step 4: 根据探路蛾阶段位置更新公式( 2-9 )进行探路蛾的位置更新,目标函数计算探路蛾个体的适应度值,与初始种群适应度值作比较,选择较优的个体作为光源,引导蛾群主体的移动;
Step 5: 在勘探蛾阶段随着迭代次数增加,勘探蛾数目减少。勘探蛾绕探路蛾阶段找到的光源做按公式(11)对数螺旋线飞行,计算目标函数适应度值,如果适应度值优于光源位置的适应度值,勘探蛾将转化为探路蛾;
Step 6: 随着勘探蛾数目的减少,观察蛾的数目增多。观察蛾阶段观察蛾以高斯游走计算公式(12)和学习机制计算公式(13)来更新位置,将更新的位置根据目标函数计算适应度函数值,与勘探蛾阶段计算的适应度值作比较,较优的观察蛾转化为勘探蛾,较差的作为探路蛾;
Step 7: 用满足算法的终止条件(达到最大迭代次数),则转到 Step 7,否则进入 Step3 继续进入下一代搜索;
Step 8: 输出最优的蛾个体以及适应度值。

2.实验结果

智能优化算法:蛾群优化算法-附代码_python_51

3.参考文献

[1]Al-Attar Ali Mohamed,Yahia S. Mohamed,Ahmed A.M. El-Gaafary,Ashraf M. Hemeida. Optimal power flow using moth swarm algorithm[J]. Electric Power Systems Research,2017,142{5}:

[1]杨晓. 蛾群算法及其应用研究[D].广西民族大学,2018.

4.Matlab

个人资料介绍