灰 狼 优 化 算 法 ( G W O ) 原 理
- 格式:pdf
- 大小:106.70 KB
- 文档页数:6
基于灰狼优化的模糊C—均值聚类算法作者:谢亮亮刘建生朱凡来源:《软件导刊》2017年第04期摘要:针对模糊C-均值聚类算法(FCM)存在易受初始聚类中心影响和容易陷入局部最优的问题,提出了一种将灰狼优化算法(GWO)和模糊C-均值相结合的新聚类算法(GWO-FCM)。
该算法利用GWO算法强大的全局寻优能力对FCM算法的聚类中心进行优化,模拟灰狼优秀的搜寻猎物行为找到一组最佳聚类中心来提高FCM的聚类效果。
通过UCI数据集的仿真结果和算法比较验证了该算法的有效性。
关键词:聚类分析;灰狼优化算法;模糊C-均值聚类;初始聚类中心;全局优化DOI:10.11907/rjdk.171030中图分类号:TP312文献标识码:A文章编号:16727800(2017)0040028030引言聚类是数据挖掘领域中必不可少的技术,是在事先没有分类规则下,根据事物间的特征相似度对事物进行区分和分类。
它的主要任务是按准则把所有数据按不同特性划分成各个不同的簇,即最小化每个簇内部数据间的差异性,并且最大化属于任意不同簇的数据间的差异性[1]。
在模糊集理论提出之后,研究者使用模糊集理论来作聚类分析[2]。
FCM聚类算法由Dunn[3]于1974年第一次提出,随后由Bezdek 进一步完善。
但FCM在聚类分析中存在易受随机产生的初始聚类中心的影响以及容易早熟收敛等缺点,对聚类的结果有很大影响。
针对传统的FCM存在的缺陷,本文提出一种基于灰狼优化的模糊C-均值聚类算法(GWOFCM)。
GWO具有结构简单,需要设置的参数较少,有强大的全局寻优能力,在实验编码中容易实现等优点,对FCM聚类结果有显著提高。
1灰狼优化算法GWO算法由Seyedali Mirjalili[4]于2012年受大自然中灰狼寻找和捕捉猎物行为的启发而提出,是一种新的元启发式算法。
本文从以下几个方面介绍算法步骤。
1.1社会等级灰狼是食物链顶端的群体猎食者,狼群一般由5~12只灰狼组成。
基于GWO-BP-CNN-ec的风电功率短期预测模型*Short-term prediction model of wind power based on GWO-BP-CNN-ec张瀚超1,邢丽萍1,王建辉2(1.国网江苏省电力有限公司徐州供电分公司,江苏 徐州 221000;2.大连理工大学运载工程与力学学部工程力学系工业装备结构分析国家重点实验室,大连 116024 )摘 要:在大型电网和小型微电网中,风电功率短期预测对电力系统的调度运行有着重要意义。
为了提高短期风电功率预测精度,文章提出一种卷积神经网络(CNN)与灰狼优化算法(GWO)结合的短期风电预测模型。
首先,通过数据的离散化,将二维风速转换成三维风速,变为符合CNN模型的输入量,再结合GWO对CNN模型的参数进行优化,最后通过BP对整个网络进行微调后引入预测偏差二次修正,最后建立了基于GWO-BP-CNN-ec的风电功率预测组合模型。
通过实验结果与目前已投入运行的风电预测系统对比,该方法具有更高的预测精度。
关键词:风电功率短期预测;卷积神经网络;灰狼优化;偏差修正0 引言风力发电随着成熟的技术及丰富的资源发展愈发迅速。
因其高利用率及就地可取的便捷性逐渐成为国内主要发电方式之一。
因大规模风电并网影响电力系统稳定性的问题日益凸显,加之风的不确定性、间歇性导致风电机组无法全方位捕捉风能,所以风电功率预测的精准及迅速性对短期功率预测起到极其重要的作用。
短期功率预测技术可以预测短时间内的发电量,预测值间隔可以控制在分钟或小时级时间范围内。
因为风的短期突增或间歇为极大程度上影响发电量,对电网有一定影响,所以短期风电功率预测对于风电并网来说非常重要。
本文提出了一种风电短期功率预测的深层神经网络组合模型的算法。
通过对采集西北某风电场的历史观测数据、数值天气预报(Numerical Weather Prediction,NWP)数据进行建模、分析。
第42卷第5期2023年10月沈㊀阳㊀理㊀工㊀大㊀学㊀学㊀报JournalofShenyangLigongUniversityVol 42No 5Oct 2023收稿日期:2022-12-06基金项目:辽宁省教育厅高等学校基本科研项目(LJKMZ20220603)作者简介:刘松(1996 )ꎬ男ꎬ硕士研究生ꎮ通信作者:陈克(1965 )ꎬ男ꎬ教授ꎬ博士ꎬ研究方向为汽车动力学与控制ꎮ文章编号:1003-1251(2023)05-0088-07基于IGWO ̄BP神经网络的车内声品质预测刘㊀松ꎬ陈㊀克ꎬ王楷焱(沈阳理工大学汽车与交通学院ꎬ沈阳110159)摘㊀要:为准确预测纯电动汽车车内声品质ꎬ以心理声学客观参量为自变量ꎬ以纯电动汽车车内声品质主观评价值为因变量ꎬ搭建基于改进后的灰狼算法(ImprovedGreyWolfOptimizationꎬIGWO)优化的BP神经网络预测模型IGWO ̄BPꎬ采用IGWO对BP神经网络的权值和阈值进行优化ꎬ解决BP神经网络对初值敏感㊁易陷入局部最优的问题ꎮ将其预测结果与BP神经网络预测结果进行对比分析ꎬ结果显示基于IGWO ̄BP神经网络预测模型可大幅度提高车内声品质预测精度ꎬ表明该模型较适用于纯电动汽车车内声品质预测ꎮ关㊀键㊀词:纯电动汽车ꎻ声品质ꎻBP神经网络ꎻ灰狼算法中图分类号:U467.4+93文献标志码:ADOI:10.3969/j.issn.1003-1251.2023.05.014StudyonPredictionforAcousticQualityofVehicleBasedonIGWO ̄BPNeuralNetworkLIUSongꎬCHENKeꎬWANGKaiyan(ShenyangLigongUniversityꎬShenyang110159ꎬChina)Abstract:InordertomoreaccuratelypredicttheacousticqualityofpureelectricvehiclesꎬwithpsychologicalacousticobjectiveparameterastheindependentvariableandpureelectricvehicleacousticqualitysubjectivevalueasthedependentvariableꎬIGWO ̄BPneuralnet ̄workpredictionmodelisbuiltꎬtheimprovedgreywolfalgorithmisusedtooptimizetheweightsandthresholdofBPneuralnetworkꎬtheproblemthattheBPneuralnetworkissen ̄sitivetotheinitialvalueandeasytofallintothelocaloptimumissolved.ComparedwiththepredictionresultsandtheBPneuralnetworkpredictionmodelꎬtheresultsshowthattheIGWO ̄BPneuralnetworkpredictionmodelcangreatlyimprovethesoundpredictionaccu ̄racyꎬindicatingthatthemodelismoresuitableforpredictionforthesoundqualityofpureelectricvehicles.Keywords:pureelectricvehicleꎻsoundqualityꎻBPneuralnetworkꎻgraywolfoptimization㊀㊀由于电动汽车没有传统内燃机噪声的掩蔽效应ꎬ动力总成系统中电机与变速器高频噪声变得较为突出[1]ꎬ其比传统燃油汽车驱动系统的噪声更易引起人体不适ꎬ纯电动汽车车内声压级水平虽低ꎬ但是电机产生的电磁噪声却影响着人们的驾乘感受ꎬ仅凭A声级已经不足以反映驾乘人员对车内噪声的主观感受[2]ꎮ目前常用多元线性回归模型[3]㊁BP神经网络模型[4]对纯电动汽车声品质展开预测ꎬ其中多元线性回归模型是线性的ꎬ但人耳对声音的主观感受过程是非线性的ꎬ因此线性模型预测通常达不到理想精度ꎮ此外BP神经网络预测模型对初值过于敏感㊁易陷入局部最优和收敛速度慢等问题ꎬ模型预测精度偏低ꎮ灰狼优化算法在最优解方面已经被证明相较遗传算法和其他智能启发式算法有更优的收敛速度和求解精度[5]ꎬ本文选取改进后的灰狼算法(ImprovedGrayWolfOptimizationꎬIGWO)对BP神经网络进行优化ꎬ提高模型收敛速度ꎬ协调其全局搜索和局部搜索性能ꎬ建立基于IGWO ̄BP的神经网络车内声品质预测模型ꎮ1㊀车内噪声的采集及主观评价试验1.1㊀车内噪声信号的采集本文试验采集某国产电动汽车驾驶员右耳处和车辆后排座位中心处的噪声信号ꎮ试验参照GB/T18697 2002进行[6]ꎮ试验采集以20km/h㊁30km/h㊁50km/h匀速工况和急加速工况下行驶时的车内噪声信号ꎬ将采集的信号导入测试软件进行回放ꎬ筛选无环境噪声干扰的纯电动汽车车内噪声信号26组ꎮ针对26组噪声信号ꎬ截取53个时长为5s㊁满足实验要求的车内噪声样本ꎬ其涵盖了不同时速㊁不同车况下纯电动汽车车内噪声信号ꎬ充分反映纯电动汽车行驶时车内声品质情况ꎮ1.2㊀主观评价试验声品质主观评价方法常用的有语义细分法和等级评分法等[7]ꎬ本文将语义细分法和等级评分法相结合作为主观评价方法ꎮ由于电动汽车存在 噪声低烦躁度高 的现象[8]ꎬ本文选取愉悦与烦躁两个表达情绪的语义词ꎬ以准确表征驾乘人员在车内的真实感受ꎮ评价时ꎬ噪声样本音频会播送两遍ꎬ播送时长为5sꎬ播送第一遍时评价者要选择相应语义ꎬ间隔5s后ꎬ进行第二遍播送ꎬ此时需对第一次选择语义评价下的等级进行评定ꎮ主观评价试验采用的评分册如图1所示ꎮ图1㊀主观评价试验采用评分册㊀㊀为确保实验数据的科学性以及准确性ꎬ本次主观评价试验人员选定为年满18周岁的12位汽车相关专业的在读研究生ꎮ采用统计分析软件ꎬ对主观评价人员与其对53个噪声样本的主观评价值进行统计学Spearman相关系数计算并取绝对值ꎬ其绝对值越大ꎬ表明两变量的相关性越强ꎮSpearman相关系数θ计算模型为θ=1-6ðBi=1S2iB(B2-1)(1)式中:B为样本容量ꎻSi为两组样本第i个观察值的秩的差ꎮ一般认为相关系数高于0.7时表示数据可信度高ꎬ满足统计学要求ꎮ计算得到Spearmar相关系数如表1所示ꎬ由表1可知第12位评价者的相关系数为0.654ꎬ低于0.7ꎬ在进行主观评价计算时予以排除ꎬ余下评价者主观评价的平均值作为主观评价结果ꎮ表1㊀Spearman相关系数主观评价人员θ主观评价人员θ10.75070.70720.71980.76230.72790.76940.711100.70750.726110.76060.724120.6542㊀心理声学客观参数及相关分析选取心理声学客观参数中的语义清晰度AI㊁粗糙度R㊁响度N㊁尖锐度S表征车内声品质情况ꎬ表2为采集的噪声样本k(k=1ꎬ2ꎬ ꎬ53)中部分样本98第5期㊀㊀㊀刘㊀松等:基于IGWO ̄BP神经网络的车内声品质预测的心理声学客观参数和满足相关系数要求的主观评价人员对车内声品质进行的主观评价结果Qkꎮ表2㊀心理声学客观参数与主观评价结果3㊀主客观评价相关分析选用Pearson系数表示心理声学客观参数和主观评价结果之间的相关系数Pꎬ以明确二者之间是否相关ꎬ其计算公式为P=ðnk=1(Hk- H)(Qk- Q)ðnk=1(Hk- H)2ðnk=1(Qk- Q)2(2)式中: Q为所有主观评价结果的平均值ꎻHk代表客观评价参数的值ꎻ H代表客观评价参数的平均值ꎮP的绝对值置于0与1之间ꎬP的绝对值越大ꎬ两者相关性越高ꎬ否则反之ꎮ表3为根据表2计算出的P值ꎬ从表中可以看到:AI㊁N㊁S与主观评价结果均有很强相关性ꎬ相关系数均在0.6以上ꎻR与主观评价结果有较强相关性ꎬ相关系数为0.502ꎮ表3㊀心理客观参数与主观评价结果的相关系数心理客观参数AIRNSP0.8430.5020.7380.6694㊀车内声品质预测模型搭建4.1㊀确定BP神经网络结构及训练参数BP神经网络是误差反向传播的前向反馈网络ꎬ其包括输入层㊁隐藏层和输出层ꎬ可实现给定的输入输出映射关系[9-11]ꎬ选取语义h1=AI㊁h2=R㊁h3=N㊁h4=S为输入层向量H=(h1ꎬh2ꎬh3ꎬh4)Tꎬ车内声品质预测模型拓扑结构如图2所示ꎮ图2㊀神经网络拓扑图㊀㊀选取隐含层节点数为m=2l+1个ꎬ其中l为输入层节点数[12]ꎬ此时l为4个ꎬ则隐藏层节点数为9个ꎬ隐藏层输入向量为y=(y1ꎬy2ꎬ ꎬyjꎬ ꎬy9)T(3)以第j个隐藏层神经元为例(j=1ꎬ2ꎬ ꎬ9)ꎬ此时其输出为yj=f1(x)=f1(ðli=1wijhi+θj)(4)式中:hi为输入层第i(i=1ꎬ2ꎬ3ꎬ4)个神经元的输入ꎻw为输入层的权值ꎻθ为输入层阈值ꎮ隐藏层转换函数f1(x)取Tansig为传递函数ꎬ其计算公式为f1(x)=21+e-2x-1(5)输入的心理声学客观参数通过隐藏层的数据处理ꎬ最终从输出端输出唯一输出层向量ꎬ即车内声品质主观评价预测值zj(j=1ꎬ2ꎬ ꎬ9)ꎬ其计算公式为zj=f2(x)=f2(ðmj=1vijyj+qj)(6)09沈㊀阳㊀理㊀工㊀大㊀学㊀学㊀报㊀㊀第42卷式中:v为隐藏层的权值ꎻq为隐藏层的阈值ꎻ输出层转换函数f2(x)取线性函数ꎬ令f2(x)=xꎮBP神经网络具有反向传播过程ꎬ通过计算输出层与期望值之间的误差调整网络参数ꎬ从而使误差变小ꎮ其误差函数E计算公式为E=12ðAg=1(Qg-Zg)2(7)模型训练次数越多ꎬ预测模型精度越高ꎬ为保证BP神经网络训练模型精度ꎬ模型训练集比例一般不少于样本总数的70%ꎬ常见训练集和测试集分配比例为7ʒ3与8ʒ2ꎬ为保证本课题预测模型得到充分训练ꎬ预测模型训练样本总数A为40ꎬ大于样本总数的70%ꎬQg为样本g期望的车内声品质主观评价值ꎬzg为在样本g作用下的车内声品质主观评价预测值(g=1ꎬ2ꎬ ꎬ40)ꎮ为解决BP神经网络初值敏感等缺陷ꎬ本文采用灰狼算法对其进行优化ꎬ以提高车内声品质预测模型的精度ꎮ4.2㊀灰狼算法灰狼算法旨在模仿自然界灰狼的捕猎行为以解决复杂优化问题ꎮ灰狼群有着严格的金字塔式等级制度ꎬ其中领导狼被命名为α㊁β㊁δ狼ꎬ分别代表着最优解㊁优解和次优解ꎬω狼为狼群中的底层狼ꎬ追随领导狼对猎物进行搜索工作[13-15]ꎮ狩猎行为公式为D=|CXtp-Xt|(8)C=2r1(9)式中:C为浮动因子ꎻt为当前迭代次数ꎻXtp和Xt分别为经过t次迭代后猎物位置和灰狼的位置ꎻr1为[0ꎬ1]内随机向量ꎮ位置更新公式为Xt+1=Xtp-MD(10)M=2a(r2-I)(11)a=2-2ˑtT(12)式中:M为系数向量ꎻa为从2到0线性递减的收敛因子ꎻT为最大迭代次数ꎬ本文最大迭代次数取100ꎻr2为[0ꎬ1]内随机向量ꎻI为单位矩阵ꎮ寻优具体步骤为Di=|CiXti-Xt|(13)Xt+1i=Xti-MiDi(14)Xt+1p=Xt+1α+Xt+1β+Xt+1δ3(15)式中:Di为狼群个体的位置到α㊁β㊁δ狼所在位置的距离(i=α㊁β㊁δ)ꎬω狼在每轮位置更新的最终位置为Xt+1pꎬ取其最优作为BP神经网络的权值和阈值ꎬ优化BP神经网络ꎬ使模型预测的主观评价值精度更高ꎮ4.3㊀灰狼算法的改进灰狼算法后期容易陷入局部最优ꎬ会影响到模型的预测精度ꎬ其收敛因子a对于协调全局搜索和局部搜索性能是重要的因素ꎮ本课题对收敛因子a进行优化ꎬ其方案依据曹轲等[16]提出的基于正切函数的非线性控制参数策略ꎬ如公式(16)所示ꎮa=amax-(amax-amin)ˑtanπt4T(16)式中:amax=2ꎻamin=0ꎮ改进后收敛因子a不再按相同速率递减ꎬ变为非线性递减ꎬ前期下降速率慢ꎬ灰狼算法前期增加了全局搜索能力ꎻ后期下降速率快ꎬ改善了算法局部寻优问题的收敛速率ꎬ改进前后收敛因子对比如图3所示ꎮ图3㊀收敛因子对比图㊀㊀由图3可知ꎬ收敛因子非线性递减提升了寻求最优解的效率和搜索精度ꎬ可以较好平衡局部和全局搜索能力ꎮ为了区分α㊁β㊁δ狼在狼群中的分工不同ꎬ影响力不一ꎬ选用适应度值和基于步长欧氏距离的动态权重位置更新策略ꎬ计算公式为Wi=|Xt+1i||Xt+1α|+|Xt+1β|+|Xt+1δ|(17)19第5期㊀㊀㊀刘㊀松等:基于IGWO ̄BP神经网络的车内声品质预测ωi=fifα+fβ+fδ(18)Xt+1p=ωα Wα Xα+ωβ Wβ Xβ+ωδ Wδ Xδ3(19)式中:fi为适应度值(i=α㊁β㊁δ)ꎻWi分别为灰狼种群对α㊁β㊁δ的学习率ꎮω狼在每轮位置更新的最终值为Xt+1pꎬ取其最优作为BP神经网络的权值和阈值ꎬ优化BP神经网络ꎬ使得模型预测的主观评价值精度更高ꎮ4.4㊀IGWO ̄BP神经网络车内声品质预测模型建立IGWO ̄BP神经网络车内声品质预测模型ꎬ其流程如图4所示ꎮ图4㊀IGWO ̄BP流程图㊀㊀具体流程如下ꎮ1)对噪声样本数据进行处理ꎮ2)定义BP神经网络拓扑结构ꎮ依据经验ꎬ定义灰狼种群大小为30ꎬ将BP神经网络的各层权值㊁阈值设定为改进灰狼算法的求解对象ꎬ并进行全局寻优ꎮ3)确立适应度值函数ꎬ将灰狼个体中的初始参数作为BP神经网络的初始值ꎬ对神经网络进行训练得到预测输出值Zᶄg和期望输出Qgꎬ本课题采取平均的均分误差(MSE)作为适应度值函数ꎬ其公式为F=1nðns=1(Qg-Zᶄg)2(20)4)根据公式计算第一代狼适应度值ꎬ选取狼群中适应度值最高的3只作为领导狼α㊁β㊁δꎮ5)更新灰狼算法中r1㊁r2㊁aꎬ根据公式更新每只灰狼位置ꎬ作为BP神经网络初始参数ꎬ对网络进行训练ꎬ依据公式求得更新后灰狼个体适应度值ꎬ重新确定α㊁β㊁δꎮ6)确定灰狼算法是否达到最大迭代次数100次ꎬ若未达到返回5)ꎬ否则将获得的权值和阈值赋予BP神经网络最优初始参数ꎮ7)利用最优初始参数构建BP神经网络ꎬ输入样本数据ꎬ对BP神经网络进行训练ꎬ直至满足设定要求ꎬ输出结果ꎮ5㊀预测模型比较5.1㊀收敛性对比选取隐含层节点数为9ꎬ训练次数设计为1000次ꎬ建立基于BP神经网络纯电动汽车车内声品质预测模型ꎮ训练目标最小误差设置为0.001ꎬ其网络训练误差曲线如图5所示ꎮ图5㊀BP预测模型误差曲线㊀㊀由图5可知ꎬ该预测模型进行函数拟合时ꎬ训练误差缓慢下降ꎬ在迭代次数到达550次时(Best线)实现了预期精度目标(Goal线)ꎬ但是在网络训练过程中也出现局部最优的情况ꎬ影响了网络向全局最优的趋势发展ꎮ因此ꎬBP算法的优越性虽然明显ꎬ但仍然有进一步提高的空间ꎮ为解决基于BP神经网络纯电动汽车车内声品质预测模型易陷入局部最优㊁收敛速度慢等问题ꎬ采用改进后的灰狼算法对其进行优化ꎬ建立基于IGWO ̄BP神经网络的纯电动汽车车内声品质预测29沈㊀阳㊀理㊀工㊀大㊀学㊀学㊀报㊀㊀第42卷模型ꎬ对网络模型进行函数拟合ꎬ课题设置最大迭代次数为100次ꎬ其网络训练误差曲线如图6所示ꎮ图6㊀IGWO ̄BP预测模型误差曲线㊀㊀由图6可知ꎬ基于IGWO ̄BP神经网络的纯电动汽车车内声品质预测模型进行函数拟合时ꎬ在迭代5次以内实现了预测的预期精度ꎬ同时不断收敛至最优适应度值ꎬ在迭代10次以内实现了适应度值最优ꎬ表明了IGWO ̄BP算法使用自适应调整的控制参数和动态位置权重等可以较好地扩大寻优空间ꎬ有效避免局部最优解并提高算法收敛速度ꎮ5.2㊀预测模型精度对比利用所建立起来的基于IGWO ̄BP和BP的神经网络纯电动汽车车内声品质预测模型ꎬ对测试样本41至53进行评价ꎬ表4为两种模型预测结果与相对误差的对比分析ꎮ表4㊀两种模型对比分析样本序号实际值BP神经网络模型预测值相对误差/%IGWO ̄BP神经网络模型预测值相对误差/%17.37.2880.1647.2460.74026.16.1801.3116.1370.60734.34.2750.5814.2850.34946.86.8530.7796.8741.08854.74.5742.6814.6620.80967.97.6323.3927.6942.60876.06.0580.9676.0570.95084.54.4970.0674.5310.68995.86.0404.1385.9111.914108.68.1015.8028.1705.000114.84.9142.3754.7870.271126.26.1690.5006.2781.258137.17.2181.6627.1090.127㊀㊀对基于IGWO ̄BP和BP的神经网络纯电动汽车车内声品质预测模型运算10次ꎬ选取MSE㊁均方根误差(RMSE)㊁平均绝对误差(MAE)以及平均绝对百分比误差(MAPE)作为模型的评价指标ꎬ进行比较分析ꎮ由表5给出的两种模型精度数据可以看出ꎬIGWO ̄BP模型对声品质预测结果MSE为1.735%ꎬ比传统BP神经网络模型的MSE少2.663%ꎬMAE为8.555%ꎬ比传统BP神经网络模型的MAE少4.303%ꎬMAPE为1.258%ꎬ比传统BP神经网络模型的MAPE少0.671%ꎬRMSE为13.137%ꎬ比传统BP神经网络模型的RMSE少7.570%ꎬ说明IGWO ̄BP神经网络有效地提高了纯电动汽车车内声品质预测结果的精确度ꎮ表5㊀两种模型精度分析%误差指标BP神经网络模型IGWO ̄BP神经网络模型MSE4.3981.735MAE12.8588.555MAPE1.9291.258RMSE20.70713.1376㊀结论本文针对纯电动汽车车内声品质预测模型精度不高问题ꎬ提出了基于IGWO ̄BP神经网络纯电动汽车车内声品质预测模型ꎮ模型选取非线性减少的收敛因子和基于适应度值以及基于步长欧氏距离的动态权重位置更新策略ꎬ对传统的BP神经39第5期㊀㊀㊀刘㊀松等:基于IGWO ̄BP神经网络的车内声品质预测网络模型进行优化ꎬ有效避免了预测模型易陷入局部最优解和收敛速度慢等问题ꎬ大幅提升了预测模型精度ꎬMSE提升2.663%㊁RMSE提升7.570%㊁MAE提升4.303%ꎬ以及MAPE提升0.671%ꎬ说明该模型较适用于纯电动汽车车内声品质预测ꎮ参考文献:[1]杨远ꎬ刘海ꎬ陈勇ꎬ等.电驱动动力总成噪声识别与优化[J].噪声与振动控制ꎬ2017ꎬ37(6):102-106ꎬ114.[2]朱仝ꎬ郑松林ꎬ袁卫平.基于遗传-支持向量回归的车内稳态噪声声品质预测[J].噪声与振动控制ꎬ2020ꎬ40(3):170-174ꎬ193.[3]陈克ꎬ阳思远ꎬ毛书林.车内声品质主客观评价的相关性分析[J].沈阳理工大学学报ꎬ2017ꎬ36(1):101-105.[4]MACꎬCHENCꎬLIUQꎬetal.Soundqualityevalua ̄tionoftheinteriornoiseofpureElectricvehiclebasedonneuralnetworkmodel[J].TransactionsonIndustri ̄alElectronicsꎬ2017ꎬ64(12):102-106. [5]MIRJALILIS.Howeffectiveisthegreywolfoptimi ̄zerintrainingmulti ̄layerperceptrons[J].AppliedIn ̄telligenceꎬ2015ꎬ43(1):150-161.[6]全国声学标准化技术委员会.声学汽车车内噪声测量方法:GB/T18697 2002[S].北京:中国标准出版社ꎬ2002.[7]张勇ꎬ孟天ꎬ王坤祥ꎬ等.车内声品质主观评价模型及中频噪声优化[J].汽车工程ꎬ2020ꎬ42(5):651-657ꎬ664.[8]王永超ꎬ顾灿松ꎬ陈达亮.纯电动汽车声品质评价及电磁噪声分析[J].汽车实用技术ꎬ2018ꎬ2018(4):3-6.[9]蒋思中ꎬ郭宏涛ꎬ安轲ꎬ等.基于PSO ̄BP神经网络的带式输送机能耗优化研究[J].煤炭技术ꎬ2022ꎬ41(11):234-236.[10]于珍珍ꎬ邹华芬ꎬ于德水ꎬ等.融合田间水热因子的甘蔗产量GA ̄BP预测模型[J].农业机械学报ꎬ2022ꎬ53(10):277-283.[11]孙利文ꎬ刘海ꎬ王海洋ꎬ等.应用GA ̄BP神经网络对加速工况车内声品质研究[J].科学技术与工程ꎬ2017ꎬ17(17):340-345.[12]黄海波ꎬ李人宪ꎬ黄晓蓉ꎬ等.基于Adaboost算法的车内噪声声品质预测[J].汽车工程ꎬ2016ꎬ38(9):1120-1125.[13]杨书杰ꎬ叶霞ꎬ李俊山.基于灰狼算法的BP神经网络图像恢复算法[J].微电子学与计算机ꎬ2018ꎬ35(3):19-22ꎬ27.[14]YANGCMꎬLIUYꎬWANGYT.AnoveladaptivekernelpicturefuzzyC ̄meansclusteringalgorithmBasedongreywolfoptimizeralgorithm[J].Symme ̄tryꎬ2022ꎬ14(7):1442.[15]侯勇严ꎬ杨澳ꎬ郭文强ꎬ等.基于灰狼算法优化的神经网络短期发电量预测[J].陕西科技大学学报ꎬ2022ꎬ40(4):171-177.[16]曹轲ꎬ谭冲ꎬ刘洪ꎬ等.基于改进灰狼算法优化BP神经网络的无线传感器网络数据融合算法[J].中国科学院大学学报ꎬ2022ꎬ39(2):232-239.(责任编辑:和晓军)(上接第87页)[14]马飞ꎬ曹泽阳ꎬ刘晖.基于博弈论的目标分配策略空间构建与搜索[J].系统工程与电子技术ꎬ2010ꎬ32(9):1941-1945.[15]曾松林ꎬ王文恽ꎬ丁大春ꎬ等.基于动态博弈的目标分配方法研究[J].电光与控制ꎬ2011ꎬ18(2):26-29ꎬ72. [16]周兴旺ꎬ从福仲ꎬ庞世春ꎬ等.基于贝叶斯混合博弈的空袭火力资源分配决策模型[J].火力与指挥控制ꎬ2016ꎬ41(7):18-22.[17]赵玉亮ꎬ宋业新ꎬ张建军ꎬ等.基于多策略融合粒子群的无人机对地攻击模糊博弈决策[J].控制理论与应用ꎬ2019ꎬ36(10):1644-1652.[18]LEBOUCHERCꎬSHINHSꎬLEMENECSꎬetal.No ̄velevolutionarygamebasedmulti ̄objectiveoptimisati ̄onfordynamicweapontargetassignment[J].IFACProceedingsVolumesꎬ2014ꎬ47(3):3936-3941. [19]GLOVERFꎬKELLYJPꎬLAGUNAM.Geneticalgo ̄rithmsandtabusearch:hybridsforoptimization[J].ComputersandOperationsResearchꎬ1995ꎬ22(1):111-134.(责任编辑:和晓军)49沈㊀阳㊀理㊀工㊀大㊀学㊀学㊀报㊀㊀第42卷。
收稿日期:2020⁃03⁃19;修回日期:2020⁃06⁃12㊀㊀基金项目:辽宁省 兴辽英才 计划项目(XLYC1807018);沈阳市 双百工程 计划项目(18⁃400⁃6⁃16)作者简介:王勇亮(1997⁃),男,山西忻州人,硕士研究生,主要研究方向为智能计算㊁机器人控制㊁滑模控制;王挺(1978⁃),男(通信作者),黑龙江齐齐哈尔人,副研究员,主要研究方向为特种机器人技术㊁模式识别与智能系统(wangting@sia.cn);姚辰(1964⁃),男,研究员,主要研究方向为机器人学㊁机器人控制㊁特种机器人技术.基于Kent映射和自适应权重的灰狼优化算法∗王勇亮1,2,3,王㊀挺1,2†,姚㊀辰1,2(1.中国科学院沈阳自动化研究所机器人学国家重点实验室,沈阳110016;2.中国科学院机器人与智能制造创新研究院,沈阳110169;3.中国科学院大学,北京100049)摘㊀要:针对灰狼优化算法(GWO)易陷入局部最优㊁后期收敛速度慢等问题,提出一种基于Kent映射和自适应权重的灰狼优化算法㊂首先,该算法在种群初始化时引入Kent混沌映射,增强了初始化群体的多样性,可以对搜索空间进行更全面彻底的搜索;其次,在收敛因子a和种群位置更新公式中引入三角函数和贝塔分布,提高了算法后期的收敛速度;最后,在CEC2017常用的四类测试函数上的仿真实验表明,在相同的实验条件下,改进后的灰狼优化算法在求解精度和收敛速度上都有显著提升,且其性能明显优于其他智能优化算法和其他改进的灰狼优化算法㊂关键词:Kent映射;灰狼优化算法;贝塔分布;全局优化;自适应权重;混沌初始化0㊀引言灰狼优化(greywolfoptimization,GWO)算法是一种基于种群的元启发式算法,由Mirjalili等人[1]在2014年提出,是根据灰狼在围捕和狩猎过程中的行为启发得来㊂函数优化测试对比实验[2]表明,GWO算法与遗传算法(geneticalgorithm,GA)㊁粒子群优化(par⁃ticlewwarmoptimization,PSO)和差分进化(differentialevolution,DE)相比在部分函数上能够取得较好的结果,有一定竞争力㊂目前,GWO算法已成功应用于资源分配调度系统[3,4]㊁流量预测[5]㊁感知器训练[6]㊁位移预测[7,8]㊁石油利用率提高[9]㊁PID控制器优化[10,11]㊁特征选取[12]㊁皮革分割[13]等领域中㊂然而基本GWO算法存在易陷入局部最优㊁搜索后期收敛速度慢等缺点㊂针对GWO存在的不足,学者们提出了很多改进方法,并在相应函数集上进行了测试实验㊂文献[14]受粒子群优化算法的启发,提出一种控制参数随机动态调整策略,然而该改进算法也有一定的局限性,对Rosenbrock函数表现不佳㊂文献[15]提出一种新的位置更新公式,使算法具备跳出局部最优的能力㊂虽然该改进算法在搜索精度㊁稳定性以及收敛速度上均有明显的提升,但在后期收敛速度仍然较慢㊂文献[16]将遗传算法中的三种算子引入GWO中,提出一种遗传 灰狼混合算法,提高了算法的全局收敛性,针对精英个体的变异操作能有效地防止算法陷入局部最优值㊂实验结果显示,该算法对部分函数的求解过程效果显著,但由于变异操作的不确定性,对其他函数起到了相反的效果㊂文献[17]提出了一种基于对抗混沌序列的灰狼优化算法,引入罗切斯特(Logistic)混沌序列搜索方式跳出局部最优,但在判断何时使用混沌搜索的问题上并没有给出明确的说明㊂文献[18]将PSO中个体最优位置信息融入到位置更新公式,并引入帐篷混沌映射(tent)进行种群初始化㊂但在中高维(如100维)上,该算法的优化能力减弱㊂截至目前,改进的GWO算法都很难在提高收敛速度和避免陷入局部最优两方面同时达到最优㊂基本GWO算法中收敛因子线性得从2递减到0,而在实际优化问题中由于搜索过程复杂,线性变化的收敛因子导致算法的搜索能力弱㊂除此之外,位置更新方程中前三等级的狼权重相等,然而在自然界中灰狼狩猎过程中等级越高的狼起到更重要的作用㊂针对上述不足,本文设计出一种收敛因子的非线性变化方式和自适应权重的位置更新方程㊂同时,将贝塔分布引入和位置更新方程中协调算法的搜索能力㊂种群初始化时,为保证算法的收敛速度,引入Kent混沌映射产生初始种群加快算法的全局收敛速度㊂仿真实验表明该算法性能显著提高㊂1㊀基本灰狼优化算法在GWO算法中,设灰狼的种群规模为N,搜索空间为d维,则第i只灰狼在空间中的位置即为全局最优解㊂根据文献[1],灰狼包围猎物的位置更新为D=|CˑXp(t)-X(t)|(1)X(t+1)=Xp(t)-AˑD(2)其中:t为当前迭代次数;Xp=(x1,x2, ,xd)为猎物位置;AˑD为包围步长㊂向量A和C定义为A=2(r1-E)ˑa(3)C=2r2(4)其中:r1和r2为[0,1]的1行d列随机向量;E是每一个元素都是1的1行d列向量;a为收敛因子向量,随着迭代次数增加从2线性递减到0,即a=2(1-t/tmax)ˑET(5)由式(1) (5)可知,其他灰狼个体在捕食过程中由前三等级的狼引导指挥的捕食位置更新为Dα=|C1ˑXα-X|,Dβ=|C2ˑXβ-X|,Dδ=|C3ˑXδ-X|(6)X1=Xα-A1ˑDα,X2=Xβ-A2ˑDβ,X3=Xδ-A3ˑDδ(7)X(t+1)=X1+X2+X33(8)2㊀改进的灰狼优化算法2 1㊀基于Kent映射的种群初始化混沌理论因具有随机性㊁遍历性和非重复性等特点被广泛引入群智能算法中增强初始化群体的多样性以改善其算法的优化性能㊂与随机搜索相比,混沌理论可以对搜索空间进行全面彻底搜索㊂综上所述,为使初始种群个体尽可能地利用解空间的信息,本文将混沌理论中的Kent映射引入改进GWO算法的种群初始化,Kent映射的数学模型[19]为xk+1=xk/μ0<xk<μxk+1=(1-xk)/(1-μ)μɤxk<1{(9)xi,j=xmin,j+xk,jˑ(xmax,j-xmin,j)(10)Kent映射在其参数范围内是一个混沌映射,但当μ=0.5时,系统呈现短周期状态,故本文不取μ=0.5㊂在使用该映射时,初值x0不能与系统参数μ相同,否则系统将演化成周期系统㊂利用Kent混沌映射产生初始群体的具体步骤如算法1所示㊂算法1a)随机初始化种群初值x(i,j),设置种群规模N㊁维数d和最大混沌迭代步数k,随机产生一个数μ(j),μɪ(0,1),μʂ0.5且μʂx(1,j),i=j=k=1;b)以式(9)进行迭代,j㊁k自增1,产生xk,j序列,以式(10)进行迭代,i自增1,产生xi,j序列,此时产生的xi,j序列就是初始化的种群矩阵;c)若迭代达到最大次数,则跳转至d),否则返回b);d)终止运行,保存x序列㊂2 2㊀自适应调整策略GWO算法中的收敛因子a影响着整个算法的迭代和最终求解全局最优解,并且考虑到前三等级的狼在寻找猎物的过程中能力不同,而基本灰狼优化算法中最优解㊁次优解及第三优解视为同等重要,因此在本文中引入贝塔分布[20]和三角函数对收敛因子a及权重参数ω进行扰动㊂上述参数的非线性变化影响着算法的收敛速度及搜索能力㊂贝塔分布是满足二项分布和伯努利分布的密度函数,其分布在[0,1]㊂贝塔函数公式和概率分布函数分别为B(b1,b2)=ʏ10tb1-1(1-t)b2-1dt㊀b1>0,b2>0(11)f(x)=xb1-1(1-x)b2-1B(b1,b2)㊀0<x<1(12)综上所述,本文提出收敛因子a的调整策略:a=2-2tan(1ξˑ(tMiter)ˑπ)+0.2B(b1,b2)fiɤfavgamaxfi>favgìîíïïïï(13)其中:ξ=2-2tanh(t/Miterˑπ)㊂为进一步加快GWO算法的收敛速度,本文提出一种加入贝塔分布扰动的加权位置更新方式,如式(14)所示㊂X(t+1)=ω1X1+ω2X2+ω3X3(14)其中:ω1=ω1min+(ω1max-ω1min)cos(2πtMiter)+σB(b1,b2)(15)ω1min=0.6,ω1max=0.8(16)ω3=ω3min+(ω3max-ω3min)cos(2πtMiter)-σB(b1,b2)(17)ω3min=0.08,ω3max=0.1(18)ω2=1-ω1-ω3(19)σ为惯性权重的调整因子,与贝塔分布融合后控制惯性权重ω1,2,3的偏移程度,使算法的收敛速度和全局搜索能力提高㊂在本文中,取σ=0.1㊂2 3㊀AWGWO算法描述改进算法AWGWO(基于Kent映射的自适应权重的灰狼优化算法)具体实现步骤如算法2所示㊂算法2a)初始化种群规模N,最大混沌迭代步数k,Kent映射的相关系数μ值,求解维度d,最大迭代次数Miter,灰狼种群的初始位置X,初始化惯性权重调整系数σ,惯性权重ω等参数;b)利用算法1初始化产生灰狼种群{xdi,i=1d,2d, ,Nd};c)计算群体中每个个体的适应度值{f(xdi),i=1d,2d, ,Nd},并记录前三个最优个体α㊁β㊁δ,其对应位置分别为xα㊁xβ㊁xδ;d)i㊁j增加1,根据式(13)计算距离控制参数a,根据式(3)(4)计算参数A㊁C的值,根据式(6)(7)(14)更新个体位置;e)根据更新的个体位置重新计算群体中个体的适应度值{f(xi),i=1,2, ,N},更新前三个最优个体对应位置xα㊁xβ㊁xδ,迭代次数增1;f)判断是否满足终止条件,若满足则返回全局最优适应度值,否则返回d)进行循环迭代㊂3㊀实验分析3 1㊀实验测试函数为了验证本文算法的适用性㊁有效性和高效性,选择CEC2017中常用测试函数,与基本GWO[1]㊁PSO㊁EGWO[14]㊁EEGWO[2]㊁IGWO[15]算法进行实验对比㊂其中,EGWO对种群初始化方法㊁收敛因子和位置更新公式全部进行了改变,EEGWO根据PSO的启发对位置更新公式和收敛因子进行了改变,IGWO仅对位置更新公式进行了改变㊂测试函数中,f1㊁f2为单峰函数,f3为多峰函数,f4㊁f5为混合函数;f6为复合函数,所有函数定义域为[-100,100]㊂函数具体定义如表1所示㊂表1㊀CEC2017测试函数编号函数名定义域最优解f1bentcigarfunction[-100,100]100f2sumofdifferentpowerfunction[-100,100]200f3Rosenbrock sfunction[-100,100]400f4hybridfunction1[-100,100]1100f5hybridfunction2[-100,100]1200f6compositionfunction8[-100,100]28003 2㊀参数设置为保证比较结果的公平性,所有算法的各项参数设置如下:种群规模N为90,为增加寻优难度,将维度d设置为30㊁50和100,最大迭代次数Miter设置为5000,根据文献[20]将AWGWO算法中贝塔分布的参数设置为b1=1,b2=2㊂3 3㊀自适应调整策略在基本GWO算法中,种群初始化的值对最终的寻优结果有重要作用,但基本算法中初始化种群采用随机数生成的方法,这种方法并不能对搜索空间进行全面搜索㊂与随机搜索相比,混沌理论可以对搜索空间进行全面彻底搜索㊂因此,本文提出了一种基于Kent映射的混沌初始化种群方法,并对采用Kent映射初始化的GWO_kent算法与随机初始化的GWO算法在30维进行实验对比以验证该部分改进的有效性,加粗的部分表示同一函数上的最优解,如表2所示㊂表2㊀初始化种群实验对比函数GWO_kentGWO函数GWO_kentGWOf11.12E+099.73E+08f41.47E+031.56E+03f21.58E+301.46E+31f54.81E+076.27E+07f35.59E+025.71E+02f63.35E+033.38E+03㊀㊀从表2中可以看出,除了在单峰函数f1的求解上初始化方法和随机方法相近外,在相同测试环境下本文提出的初始化方法的求解精度比随机初始化的求解精度要更高㊂3 4㊀收敛因子在基本GWO算法中收敛因子a影响着整个算法的迭代和最终求解全局最优解㊂因此,本文提出了一种引用三角函数和贝塔分布干扰的收敛因子更新公式,并对采用改进收敛因子的GWO_a算法与基本GWO算法在30维进行实验对比以验证该部分改进的有效性,加粗的部分表示同一函数上的最优解,如表3所示㊂表3㊀收敛因子实验对比函数GWO_aGWO函数GWO_aGWOf17.04E+059.73E+08f41.25E+031.56E+03f21.16E+191.46E+31f55.34E+066.27E+07f34.87E+025.71E+02f63.25E+033.38E+03㊀㊀从表3中可以看出,在相同测试环境下本文提出的收敛因子更新方法比线性更新方法的求解精度要更高㊂3 5㊀惯性权重在基本GWO算法中前三等级狼的惯性权重都是一样的㊂因此,本文提出了一种引用三角函数和贝塔分布干扰的惯性权重,并对改进后的GWO_w算法与基本GWO算法在30维进行实验对比以验证该部分改进的有效性,加粗的部分表示同一函数上的最优解,如表4所示㊂表4㊀惯性权重实验对比函数GWO_wGWO函数GWO_wGWOf17.53E+079.73E+08f41.22E+031.56E+03f21.06E+241.46E+31f59.05E+066.27E+07f35.17E+025.71E+02f63.25E+033.38E+03㊀㊀从表4中可以看出,在相同测试环境下本文提出的权重更新策略的求解精度比固定惯性权重的求解精度要更高㊂3 6㊀实验结果与分析为避免随机性和偶然性对实验结果造成影响,此次实验对两种算法在低高维30㊁50和中高维100上分别独立运行30次,不同维度的选择是为了增加寻优难度,以便于验证AWGWO算法在处理各种复杂问题时的能力,尤其是在100维情况下的求解结果有利于判断算法的稳定性和鲁棒性㊂统计各函数的适应度平均值和方差,实验结果如表5 7和图1 3所示㊂其中,表5 7给出了AWGWO算法与其他基本智能优化算法和改进的灰狼优化算法在维度为30㊁50和100上的函数寻优结果,在表中加粗的部分表示同一函数上的最优解㊂图1 3是各种算法寻优过程的收敛曲线,表示算法在各函数中的收敛情况㊂所有测试均在IntelCorei7⁃4710MQ2.50GHzCPU㊁8GB内存的计算机上进行,编写程序在MATLABR2018b上实现㊂3 6 1㊀求解精度从表5㊁6中的实验数据可以看出,当维度为30㊁50维时,AWGWO算法在单峰函数f1㊁f2上的求解效果相比于其他算法取得了较高的准确度,从实验结果可以看到其准确度至少提高了1000倍㊂从多峰函数f3上的求解效果可知,AWGWO在f3函数上的求解精度优于其他算法,比较接近该函数的全局最小值,同基本GWO算法相比,准确度提高了25%㊂针对混合函数f4㊁f5,改进算法的求解精度明显更高,f4的求解精度较其他五个算法中最好的PSO算法提高了2%㊂方差大小也反映出AWGWO算法的求解稳定性更高;在复合函数f6上,AWGWO算法的求解精度更高㊂从六个常用函数的求解结果可以看出,同其他智能优化算法相比,改进算法AWGWO在求解函数最优解时精度较高,且随着维数的增加,从方差大小可以得出该算法的求解稳定性也相对更好㊂从表7中的实验数据可以看出,当维度为100维时,改进算法的求解精度同30㊁50维的求解结果相比差异较其他算法更小,由此说明随着维数的增加,如增加到中高维100维时,AWGWO算法的求解稳定性更好,且在其他算法受到维数灾难进而最优值精度受到干扰的情况下,AWGWO算法的求解精度依然稳定且鲁棒性更好,凸显出其在求解高维函数上求解准确度稳定性和鲁棒性更好,求解优势更大㊂表5㊀AWGWO算法和其他智能优化算法在30维对六个函数的寻优结果比较函数PSOmeanvarianceGWOmeanvarianceEGWOmeanvarianceEEGWOmeanvarianceIGWOmeanvarianceAWGWOmeanvariancef17.38E+092.87E+199.73E+086.03E+174.25E+083.70E+153.72E+098.19E+193.45E+081.20E+171.62E+052.17E+09f21.05E+351.43E+711.46E+316.42E+635.50E+279.09E+562.14E+333.01E+675.15E+252.03E+713.16E+151.31E+32f31.66E+039.09E+055.71E+021.14E+035.65E+022.65E+023.52E+034.96E+065.29E+028.59E+024.91E+023.19E+02f41.26E+032.04E+031.56E+032.63E+051.30E+036.97E+031.73E+033.39E+051.30E+037.47E+031.24E+031.51E+03f54.76E+082.59E+176.27E+071.28E+155.27E+073.93E+147.44E+071.47E+151.76E+073.36E+142.94E+062.29E+12f63.88E+034.09E+043.38E+033.46E+033.32E+034.32E+023.51E+031.93E+043.31E+031.53E+033.19E+031.73E+03表6㊀AWGWO算法和其他智能优化算法在50维对六个函数的寻优结果比较函数PSOmeanvarianceGWOmeanvarianceEGWOmeanvarianceEEGWOmeanvarianceIGWOmeanvarianceAWGWOmeanvariancef12.77E+109.89E+195.22E+096.93E+183.91E+092.90E+175.08E+102.30E+201.69E+092.57E+188.64E+053.46E+10f21.61E+667.8E+1332.94E+486.18E+971.40E+555.84E+1111.28E+528.5E+1044.27E+463.24E+943.78E+421.44E+86f36.86E+036.97E+068.84E+024.90E+041.25E+033.60E+044.89E+031.38E+076.96E+025.94E+035.47E+023.18E+03f41.67E+031.38E+052.94E+031.23E+064.77E+033.82E+066.35E+036.97E+061.79E+031.40E+051.35E+032.70E+03f59.69E+095.07E+196.02E+087.69E+173.17E+096.14E+181.79E+106.00E+192.76E+082.09E+172.43E+071.44E+14f66.30E+037.41E+053.95E+031.07E+054.29E+031.12E+056.02E+031.37E+063.71E+036.10E+043.33E+031.43E+03表7㊀AWGWO算法和其他智能优化算法在100维对六个函数的寻优结果比较函数PSOmeanvarianceGWOmeanvarianceEGWOmeanvarianceEEGWOmeanvarianceIGWOmeanvarianceAWGWOmeanvariancef11.19E+114.47E+203.12E+103.82E+195.04E+102.50E+201.39E+115.61E+201.31E+103.41E+197.78E+061.72E+12f210E+1503.0E+3035.1E+1237.6E+2487.0E+1391.2E+2812.6E+1501.5E+3029.02E+1152.4E+2336.6E+1101.3E+223f32.56E+048.45E+072.99E+032.65E+058.02E+038.97E+062.08E+045.09E+071.70E+037.06E+047.44E+021.37E+03f44.11E+032.95E+064.24E+041.62E+087.02E+042.14E+085.93E+041.27E+082.50E+044.72E+073.48E+031.73E+05f55.60E+103.33E+204.91E+097.21E+181.38E+101.38E+206.57E+106.86E+202.04E+106.09E+171.45E+081.84E+15f61.86E+046.78E+066.93E+039.99E+059.21E+039.87E+061.46E+042.55E+075.50E+034.93E+053.58E+031.81E+033 6 2㊀收敛过程图1(a) (f)㊁2(a) (f)展示的是六种不同的智能优化算法PSO㊁GWO㊁EGWO㊁EEGWO㊁IGWO㊁AWGWO在30㊁50维情况下对函数求解的收敛过程㊂其中,函数f1㊁f2是单峰函数㊂从迭代收敛图可以看出,AWGWO算法比其他五种算法的收敛性更好,而且在后期搜索性能更优,因而最终寻优结果更好;f3是多峰函数,从图中可以看出其收敛效果较其他类型的智能算法更好,没有陷入局部最优㊁跳出早熟情况;函数f4㊁f5是混合函数,从图中可以看出改进算法在该函数寻优过程中后期收敛速度快,跳出了局部最优且寻优精度更高;函数f6是复合函数,从图中可以看出改进算法在该函数中寻优精度更高,收敛速度更快㊂综合来看,在低高维(30㊁50维)情况下,相比于其他智能优化算法,AWGWO算法在四种不同的函数求解过程中具有较好的收敛情况和更高的求解精度,且基本GWO算法后期收敛速度慢的情况也得到了明显改善㊂图1㊀六种智能优化算法在30维对六个函数的收敛性能比较图2㊀六种智能优化算法在50维对六个函数的收敛性能比较图3(a) (f)展示的是六种不同的智能优化算法在100维情况下对函数求解的收敛过程㊂相比于其他智能优化算法,可以明显地看到AWGWO算法在高维情况下的收敛速度和后期收敛效果更突出,比30维和50维的收敛速度和收敛效果都更优于其他五种算法,由此可得在更高维的函数求解中,AWGWO算法的收敛速度和跳出局部最小的能力更加明显,后期收敛速度慢的情况也得到了明显改善㊂从收敛图中可以观察到,AWGWO算法的收敛效果好,且随着维数的增加其收敛情况和后期收敛速度更有优势㊂4㊀结束语本文针对基本GWO存在的易陷入局部最优㊁易早熟收敛㊁求解精度较低等问题,提出一种基于Kent映射和自适应权重的灰狼优化算法㊂种群初始化阶段,引入混沌学中的Kent映射,与随机搜索相比,Kent映射的引入可以使算法对搜索空间进行全面彻底的搜索㊂通过修改位置更新方程和收敛因子,提高了算法的收敛速度,平衡了算法的搜索和开发能力㊂仿真实验表明,本文改进的AWGWO算法在单峰函数㊁多峰函数㊁复合函数和混合函数这四大类标准函数的寻优结果中具有较高的精度和较快的收敛速度,与其他基本类型的智能优化算法和改进的GWO算法相比有较好的收敛性能和较高的求解精度和稳定性,且该算法在高维函数求解中求解的稳定性和鲁棒性更好,求解能力优于其他算法㊂下一步将进一步对算法性能进行提升,并将其应用于实际优化问题㊂图3㊀六种智能优化算法在100维对六个函数的收敛性能比较参考文献:[1]MirjaliliS,LewisA.Greywolfoptimizer[J].AdvancesinEnginee⁃ringSoftware,2014,69:46⁃61.[2]LongWen,JiaoJianjun,LiangXiming,etal.Anexploration⁃enhancedgreywolfoptimizertosolvehigh⁃dimensionalnumericaloptimization[J].EngineeringApplicationsofArtificialIntelligence,2018,68(2):63⁃80.[3]TikhamarineY,Souag⁃GamaneD,KisiO.Anewintelligentmethodformonthlystreamflowprediction:hybridwaveletsupportvectorregressionbasedongreywolfoptimizer[J].ArabianJournalofGeosciences,2019,12(17):articleNo.540.[4]YangYefeng,YangBo,WangShilong,etal.Animprovedgreywolfoptimizeralgorithmforenergy⁃awareservicecompositionincloudma⁃nufacturing[J].TheInternationalJournalofAdvancedManufac⁃turingTechnology,2019,105(7⁃8):3079⁃3091.[5]AhmadZ,AmirS,MahdiJ.Identificationofinfluentialusersinsocialnetworkusinggraywolfoptimizationalgorithm[J].ExpertSystemswithApplications,2020,142(9):112971.[6]晏福,徐建中,李奉书.混沌灰狼优化算法训练多层感知器[J].电子与信息学报,2019,41(4):115⁃122.[7]LianCheng,ZengZhigang,YaoWei,etal.Displacementpredictionmodeloflandslidebasedonamodifiedensembleempiricalmodede⁃compositionandextremelearningmachine[J].NaturalHazards,2013,66(2):759⁃771.[8]YuZhi,ShiXiuzhi,ZhouJian,etal.Predictionofblast⁃inducedrockmovementduringbenchblasting:useofgraywolfoptimizerandsupportvectorregression[J/OL].NaturalResourcesResearch,2019(9):doi:10.1007/s11053⁃019⁃09593⁃3.[9]ZhaoBin,RenYi,GaoDiankui,etal.Energyutilizationefficiencyeva⁃luationmodelofrefiningunitbasedoncontourletneuralnetworkopti⁃mizedbyimprovedgreyoptimizationalgorithm[J].Energy,2019,185(10):1032⁃1044.[10]杨博,束洪春,朱德娜,等.基于群灰狼优化的光伏逆变器最优无源分数阶PID控制[J].控制与决策,2019,11(15):11⁃12.[11]HattaNM,ZainAM,SallehuddinR,etal.Recentstudiesonoptimisa⁃tionmethodofgreywolfoptimiser(GWO):areview(2014⁃2017)[J].ArtificialIntelligenceReview,2019,52:2651⁃2683.[12]Abdel⁃BassetM,El⁃ShahatD,El⁃HenawyI,etal.Anewfusionofgreywolfoptimizeralgorithmwithatwo⁃phasemutationforfeatureselection[J].ExpertSystemswithApplications,2019,139:112824.[13]SenelFA,GekneF,YyukselAS.AnovelhybridPSO⁃GWOalgorithmforoptimizationproblems[J].EngineeringwithComputers,2018,35(4):1359⁃1373.[14]龙文,蔡绍洪,焦建军.一种改进的灰狼优化算法[J].电子学报,2019,47(1):171⁃177.[15]邢尹,陈闯,刘立龙.求解函数最优解的改进灰狼算法[J].计算机仿真,2018,35(9):264⁃268.[16]顾清华,李学现,卢才武,等.求解高维复杂函数的遗传 灰狼混合算法[J].控制与决策,2019,11(23):1⁃8.[17]GuptaS,DeepK.Anopposition⁃basedchaoticgreywolfoptimizerforglobaloptimisationtasks[J].JournalofExperimental&TheoreticalArtificialIntelligence,2018,31(5):751⁃779.[18]TengZhijun,LyuJinling,GuoLiwen.Animprovedhybridgreywolfopti⁃mizationalgorithm[J].SoftComputing,2018,23(15):6617⁃6631.[19]TavazoeiMS,HaeriM.Comparisonofdifferentone⁃dimensionalmapsaschaoticsearchpatterninchaosoptimizationalgorithms[J].AppliedMathematicsandComputation,2007,187(2):1076⁃1085.[20]YuanXiaohui,ChenChen,JiangMin,etal.PredictionintervalofwindpowerusingparameteroptimizedBetadistributionbasedLSTMmodel[J].AppliedSoftComputing,2019,82(9):105550.(上接第36页)c)动态攻击策略下,考虑局部信息(节点度㊁节点强度)和全局信息(加权介数中心性和加权接近中心性)的节点重要度排序方法,对应的蓄意攻击都会严重影响城市公交网络的行程时间可靠性,导致网络的准时性严重下降㊂因此,在动态观测下,需全面考虑不同角度的关键节点,保证观测的全面性㊂d)动态攻击策略下,城市公交网络的行程时间可靠性在蓄意攻击早期大幅度下降㊂因此,在早期加大对关键节点的防护力度,能大大减少蓄意攻击对网络准时性的影响㊂e)单独攻击策略表明对网络行程时间可靠性影响大的节点往往处于多条公交线路的汇集处,对网络行程时间可靠性影响大的边往往与网络中重要节点具有连接关系㊂因此,运营者需加强对这些节点和边的保护,以此保证城市公交网络运营的准时性㊂参考文献:[1]AngeloudisP,FiskD.Largesubwaysystemsascomplexnetworks[J].PhysicaA:StatisticalMechanicsanditsApplications,2005,367(7):553⁃558.[2]王甲生,吴晓平,陈永强.不同信息条件下加权复杂网络抗毁性仿真研究[J].中南大学学报:自然科学版,2013,44(5):1888⁃1894.[3]种鹏云,帅斌,尹惠.基于复杂网络的危险品运输网络抗毁性仿真[J].复杂系统与复杂性科学,2014,11(4):10⁃18.[4]段东立,吴俊,邓宏钟,等.基于可调负载重分配的复杂网络级联失效模型[J].系统工程理论与实践,2013,33(1):203⁃208.[5]刘朝阳,吕永波,刘步实,等.城市轨道交通运输网络级联失效抗毁性研究[J].交通运输系统工程与信息,2018,18(5):82⁃87.[6]张勇,白玉,杨晓光.城市道路网络的行程时间可靠性[J].系统工程理论与实践,2009,29(8):171⁃176.[7]FerberC,HolovatchT,HolovatchY,etal.Publictransportnetworks:empiricalanalysisandmodeling[J].TheEuropeanPhysicalJour⁃nalB,2009,68(2):261⁃275.[8]王婧,何杰,吴炼.雨天高速公路网行程时间可靠性评价方法[J].交通运输系统工程与信息,2011,11(6):117⁃123.[9]IidaY.Basicconceptsfuturedirectionsofroadnetworkreliabilityana⁃lysis[J].JournalofAdvancedTransportation,1999,33(2):125⁃134.[10]LyuLinyuan,ChenDuanbing,RenXiaolong,etal.Vitalnodesidentifi⁃cationincomplexnetworks[J].PhysicsReports,2016,650(9):1⁃63.[11]李黎,管晓宏,赵千川,等.网络生存适应性的多目标评估[J].西安交通大学学报,2010,44(10):1⁃7.[12]陈峰,胡映月,李小红,等.城市轨道交通有权网络相继故障可靠性研究[J].交通运输系统工程与信息,2016,16(2):139⁃145.[13]HeegaardPE,TrivediKS.Networksurvivabilitymodeling[J].Com⁃puterNetworks,2009,53(8):1215⁃1334.[14]AlbertR,JeongH,BarabasiAL.Errorandattacktoleranceofcomplexnetworks[J].Nature,2000,406(6794):378⁃382.。
GWO(灰狼优化)算法以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。
————————————————tic % 计时器%% 清空环境变量close allformat compact%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)] ;% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178 )];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 利用灰狼算法选择最佳的SVM参数c和gSearchAgents_no=10; % 狼群数量,Number of search agents Max_iteration=10; % 最大迭代次数,Maximum numbef of iterationsdim=2; % 此例需要优化两个参数c和g,number of your variableslb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界% v = 5; % SVM Cross Validation参数,默认为5% initialize alpha, beta, and delta_posAlpha_pos=zeros(1,dim); % 初始化Alpha狼的位置Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problemsBeta_pos=zeros(1,dim); % 初始化Beta狼的位置Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problemsDelta_pos=zeros(1,dim); % 初始化Delta狼的位置Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems%Initialize the positions of search agentsPositions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iteration);l=0; % Loop counter循环计数器% Main loop主循环while lMax_iteration % 对迭代次数循环for i=1:size(Positions,1) % 遍历每个狼% Return back the search agents that go beyond the boundaries of the search space% 若搜索位置超过了搜索空间,需要重新回到搜索空间Flag4ub=Positions(i,:)ub;Flag4lb=Positions(i,:)lb;% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;% 若超出最小值,最回答最小值边界Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*F lag4ub+lb.*Flag4lb; % ~表示取反% 计算适应度函数值cmd = [' -c ',num2str(Positions(i,1)),' -g ',num2str(Positions(i,2))];model=svmtrain(train_wine_labels,train_wine,cmd); % SVM 模型训练[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度fitness=100-fitness(1); % 以错误率最小化为目标% Update Alpha, Beta, and Deltaif fitnessAlpha_score % 如果目标函数值小于Alpha狼的目标函数值Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alphaAlpha_pos=Positions(i,:); % 同时将Alpha狼的位置更新为最优位置if fitnessAlpha_score fitnessBeta_score % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update betaBeta_pos=Positions(i,:); % 同时更新Beta狼的位置if fitnessAlpha_score fitnessBeta_score fitnessDelta_score % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update deltaDelta_pos=Positions(i,:); % 同时更新Delta狼的位置a=2-l*((2)-Max_iteration); % 对每一次迭代,计算相应的a 值,a decreases linearly fron 2 to 0% Update the Position of search agents including omegas for i=1:size(Positions,1) % 遍历每个狼for j=1:size(Positions,2) % 遍历每个维度% 包围猎物,位置更新r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)% Alpha狼位置更新D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % 计算系数A,Equation (3.3)C2=2*r2; % 计算系数C,Equation (3.4)% Beta狼位置更新D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2r1=rand();r2=rand();A3=2*a*r1-a; % 计算系数A,Equation (3.3)C3=2*r2; % 计算系数C,Equation (3.4)% Delta狼位置更新D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation(3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3% 位置更新Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Convergence_curve(l)=Alpha_score;bestc=Alpha_pos(1,1);bestg=Alpha_pos(1,2);bestGWOaccuarcy=Alpha_score;%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best Cross Validation Accuracy = %g%%,Best c = %g,Best g = %g',bestGWOaccuarcy*100,bestc,bestg);disp(str)%% 利用最佳的参数进行SVM网络训练cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model_gwosvm);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d-%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);%% 显示程序运行时间% This function initialize the first population of search agentsfunctionPositions=initialization(SearchAgents_no,dim,ub,lb) Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;% If each variable has a different lb and ubif Boundary_no1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;代码修改及说明:安装libsvm下载libsvm将下载的libsvm直接放在matlab安装路径toolbox下点击matlab “主页-设置路径” 选择libsvm包中的windows文件夹将libsvm windows文件夹下的 svmtrain 及svmpredict函数修改为 svmtrain2 和 svmpredict2等形式,目的是防止与matlab下冲突(注:2017及以下版本可以使用svmtrain,高版本不再支持)源码修改将所有svmtrain()及svmpredict() 函数改为 svmtrain2()及svmpredict2() ;将代码[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度改为[~,~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度或者[fitness,~,~]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度(至于为什么还未清楚?目前我还没有看代码,原理也还没有看,仅改了下代码)将代码[output_test_pre,acc]=svmpredict2(output_test',input_test', model_gwo_svr); % SVM模型预测及其精度改为[output_test_pre,acc,~]=svmpredict2(output_test',input_test ',model_gwo_svr); % SVM模型预测及其精度(同上,仅是为了解决维度的问题)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%人们总是能从大自然中得到许多启迪,从生物界的各种自然现象或过程中获得各种灵感,由此提出了许多能够解决复杂函数优化的启发式算法,主要分为演化算法和群体智能算法。
GWO(灰狼优化)算法MATLAB源码逐行中文注解以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。
tic % 计时器%% 清空环境变量close allformat compact%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)] ;% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178 )];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 利用灰狼算法选择最佳的SVM参数c和gSearchAgents_no=10; % 狼群数量,Number of search agents Max_iteration=10; % 最大迭代次数,Maximum numbef of iterationsdim=2; % 此例需要优化两个参数c和g,number of yourvariableslb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界% v = 5; % SVM Cross Validation参数,默认为5% initialize alpha, beta, and delta_posAlpha_pos=zeros(1,dim); % 初始化Alpha狼的位置Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problemsBeta_pos=zeros(1,dim); % 初始化Beta狼的位置Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problemsDelta_pos=zeros(1,dim); % 初始化Delta狼的位置Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems%Initialize the positions of search agentsPositions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iteration);l=0; % Loop counter循环计数器% Main loop主循环while lMax_iteration % 对迭代次数循环for i=1:size(Positions,1) % 遍历每个狼% Return back the search agents that go beyond theboundaries of the search space% 若搜索位置超过了搜索空间,需要重新回到搜索空间Flag4ub=Positions(i,:)ub;Flag4lb=Positions(i,:)lb;% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;% 若超出最小值,最回答最小值边界Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*F lag4ub+lb.*Flag4lb; % ~表示取反% 计算适应度函数值cmd = [' -c ',num2str(Positions(i,1)),' -g ',num2str(Positions(i,2))];model=svmtrain(train_wine_labels,train_wine,cmd); % SVM 模型训练[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度fitness=100-fitness(1); % 以错误率最小化为目标% Update Alpha, Beta, and Deltaif fitnessAlpha_score % 如果目标函数值小于Alpha狼的目标函数值Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alphaAlpha_pos=Positions(i,:); % 同时将Alpha狼的位置更新为最优位置if fitnessAlpha_score fitnessBeta_score % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update betaBeta_pos=Positions(i,:); % 同时更新Beta狼的位置if fitnessAlpha_score fitnessBeta_score fitnessDelta_score % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update deltaDelta_pos=Positions(i,:); % 同时更新Delta狼的位置a=2-l*((2)-Max_iteration); % 对每一次迭代,计算相应的a 值,a decreases linearly fron 2 to 0% Update the Position of search agents including omegas for i=1:size(Positions,1) % 遍历每个狼for j=1:size(Positions,2) % 遍历每个维度% 包围猎物,位置更新r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)% Alpha狼位置更新D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % 计算系数A,Equation (3.3)C2=2*r2; % 计算系数C,Equation (3.4)% Beta狼位置更新D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2r1=rand();r2=rand();A3=2*a*r1-a; % 计算系数A,Equation (3.3)C3=2*r2; % 计算系数C,Equation (3.4)% Delta狼位置更新D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation (3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3% 位置更新Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Convergence_curve(l)=Alpha_score;bestc=Alpha_pos(1,1);bestg=Alpha_pos(1,2);bestGWOaccuarcy=Alpha_score;%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best Cross Validation Accuracy = %g%%,Best c = %g,Best g = %g',bestGWOaccuarcy*100,bestc,bestg);disp(str)%% 利用最佳的参数进行SVM网络训练cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model_gwosvm);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d-%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);%% 显示程序运行时间% This function initialize the first population of search agentsfunctionPositions=initialization(SearchAgents_no,dim,ub,lb) Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;% If each variable has a different lb and ubif Boundary_no1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;群体智能优化算法是一类基于概率的随机搜索进化算法,各个算法之间存在结构、研究内容、计算方法等具有较大的相似性。
基于GWO和PSO协同优化的DV-Hop定位算法作者:朱子行陈辉来源:《现代信息科技》2022年第03期摘要:無线传感器网络具有感知和处理信息的能力,只有当被测网络内节点的位置已知时,节点传递给用户的信息才有意义。
针对DV-Hop定位中传统最小二乘法不可避免的精度低的缺点,引入粒子群算法(PSO)和灰狼优化器(GWO)来估计未知节点位置。
粒子群算法具有个体记忆的特点,采用粒子位置更新代替灰狼个体位置更新,使灰狼算法在优化上具有可记忆性。
仿真数据表明,改进后的算法可以有效降低节点定位误差,实现更高的定位精度。
关键词:无线传感器网络;DV-Hop;灰狼优化器;粒子群算法中图分类号:TN934 文献标识码:A文章编号:2096-4706(2022)03-0088-04DV-Hop Positioning Algorithm Based on GWO and PSO Collaborative OptimizationZHU Zihang, CHEN Hui(Anhui University of Science & Technology, Huainan 232001, China)Abstract: Wireless sensor networks have the ability to sense and process information, and the information passed by the nodes to the user is meaningful only when the location of the nodes within the network under test is known. In view of the inevitable shortcoming of low precision of the traditional least squares method in DV-Hop (distance vector-hop) localization, the Particle Swarm optimization (PSO) and the Gray Wolf Optimizer (GWO) are introduced to estimate unknown node positions. The Particle Swarm optimization has the characteristics of individual memory, and the particle position update is used to replace the gray wolf individual position update, so that the gray wolf algorithm has memory in optimization. The simulation data show that the improved algorithm can effectively reduce the node positioning error and achieve higher positioning accuracy.Keywords: wireless sensor network; DV-Hop; Grey Wolf Optimizer; Particle Swarm optimization0 引言无线传感器网络(Wireless Sensor Network, WSN)作为信息获取的重要技术随着网络信息的快速发展得到了广泛使用[1]。
GWO(灰狼优化)算法MATLAB源码逐行中文注解以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。
tic % 计时器%% 清空环境变量close allformat compact%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)] ;% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178 )];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 利用灰狼算法选择最佳的SVM参数c和gSearchAgents_no=10; % 狼群数量,Number of search agents Max_iteration=10; % 最大迭代次数,Maximum numbef of iterationsdim=2; % 此例需要优化两个参数c和g,number of yourvariableslb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界% v = 5; % SVM Cross Validation参数,默认为5% initialize alpha, beta, and delta_posAlpha_pos=zeros(1,dim); % 初始化Alpha狼的位置Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problemsBeta_pos=zeros(1,dim); % 初始化Beta狼的位置Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problemsDelta_pos=zeros(1,dim); % 初始化Delta狼的位置Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems%Initialize the positions of search agentsPositions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iteration);l=0; % Loop counter循环计数器% Main loop主循环while lMax_iteration % 对迭代次数循环for i=1:size(Positions,1) % 遍历每个狼% Return back the search agents that go beyond theboundaries of the search space% 若搜索位置超过了搜索空间,需要重新回到搜索空间Flag4ub=Positions(i,:)ub;Flag4lb=Positions(i,:)lb;% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;% 若超出最小值,最回答最小值边界Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*F lag4ub+lb.*Flag4lb; % ~表示取反% 计算适应度函数值cmd = [' -c ',num2str(Positions(i,1)),' -g ',num2str(Positions(i,2))];model=svmtrain(train_wine_labels,train_wine,cmd); % SVM 模型训练[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度fitness=100-fitness(1); % 以错误率最小化为目标% Update Alpha, Beta, and Deltaif fitnessAlpha_score % 如果目标函数值小于Alpha狼的目标函数值Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alphaAlpha_pos=Positions(i,:); % 同时将Alpha狼的位置更新为最优位置if fitnessAlpha_score fitnessBeta_score % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update betaBeta_pos=Positions(i,:); % 同时更新Beta狼的位置if fitnessAlpha_score fitnessBeta_score fitnessDelta_score % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update deltaDelta_pos=Positions(i,:); % 同时更新Delta狼的位置a=2-l*((2)-Max_iteration); % 对每一次迭代,计算相应的a 值,a decreases linearly fron 2 to 0% Update the Position of search agents including omegas for i=1:size(Positions,1) % 遍历每个狼for j=1:size(Positions,2) % 遍历每个维度% 包围猎物,位置更新r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)% Alpha狼位置更新D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % 计算系数A,Equation (3.3)C2=2*r2; % 计算系数C,Equation (3.4)% Beta狼位置更新D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2r1=rand();r2=rand();A3=2*a*r1-a; % 计算系数A,Equation (3.3)C3=2*r2; % 计算系数C,Equation (3.4)% Delta狼位置更新D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation (3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3% 位置更新Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Convergence_curve(l)=Alpha_score;bestc=Alpha_pos(1,1);bestg=Alpha_pos(1,2);bestGWOaccuarcy=Alpha_score;%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best Cross Validation Accuracy = %g%%,Best c = %g,Best g = %g',bestGWOaccuarcy*100,bestc,bestg);disp(str)%% 利用最佳的参数进行SVM网络训练cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model_gwosvm);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d-%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);%% 显示程序运行时间% This function initialize the first population of search agentsfunctionPositions=initialization(SearchAgents_no,dim,ub,lb) Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;% If each variable has a different lb and ubif Boundary_no1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;beta_max=para(4); % 缩放因子上界 Upper Bound of Scaling Factor%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%探狼:将解空间中除了头狼之外的最佳的S_num头人工狼,在猎物的活动范围内游动,根据空气中猎物留下的气味进行自主决策,气味越浓表明狼距离猎物越近,探狼始终朝着气味最浓的方向搜寻test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];semilogy(GWO_cg_curve,'Color','r') %y轴以10为底的对数形式与x对应钟一文.?智能优化方法及其应用研究[D].浙江大学,2005.Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Max_iteration=10; % 最大迭代次数,Maximum numbef of iterations(1)归一化:The fuzzy method has been implemented to normalize the objective functions which are not in the same range.v["dW" + str(l+1)] = beta * v["dW" + str(l + 1)] + (1 - beta) * grads["dW" + str(l + 1)]。
混合灰狼优化(HGWO,DE-GWO)算法matlab源码今天学习一个比较新的优化算法,用差分进化(DE)改进原始的灰狼优化(GWO)得到的HGWO(也可以叫DE-GWO)算法。
仍然以优化SVR参数为例,需要的同学可以根据需要自己修改源码。
function[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train,output_ train,input_test,output_test)% 参数向量parameters [n,N_iteration,beta_min,beta_max,pCR]% n为种群规模,N_iteration为迭代次数% beta_min 缩放因子下界 Lower Bound of Scaling Factor% beta_max=0.8; % 缩放因子上界Upper Bound of Scaling Factor% pCR 交叉概率 Crossover Probability% 要求输入数据为列向量(矩阵)%% 数据归一化[input_train,rule1]=mapminmax(input_train');[output_train,rule2]=mapminmax(output_train');input_test=mapminmax('apply',input_test',rule1);output_test=mapminmax('apply',output_test',rule2);input_train=input_train';output_train=output_train';input_test=input_test';output_test=output_test';%% 利用差分进化-灰狼优化混合算法(DE_GWO)选择最佳的SVR 参数nPop=para(1); % 种群规模 Population SizeMaxIt=para(2); % 最大迭代次数Maximum Number of Iterations nVar=2; % 自变量维数,此例需要优化两个参数c和g Number of Decision VariablesVarSize=[1,nVar]; % 决策变量矩阵大小 Decision Variables Matrix Sizebeta_min=para(3); % 缩放因子下界 Lower Bound of Scaling Factorbeta_max=para(4); % 缩放因子上界 Upper Bound of Scaling FactorpCR=para(5); % 交叉概率 Crossover Probabilitylb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界%% 初始化% 父代种群初始化parent_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置parent_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体parent_Val(i)=fobj(parent_Position(i,:),input_train,output_ train,input_test,output_test); % 计算个体目标函数值% 突变种群初始化mutant_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置mutant_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体mutant_Val(i)=fobj(mutant_Position(i,:),input_train,output_ train,input_test,output_test); % 计算个体目标函数值% 子代种群初始化child_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置child_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体child_Val(i)=fobj(child_Position(i,:),input_train,output_tr ain,input_test,output_test); % 计算个体目标函数值%% 确定父代种群中的Alpha,Beta,Delta狼[~,sort_index]=sort(parent_Val); % 父代种群目标函数值排序parent_Alpha_Position=parent_Position(sort_index(1),:); % 确定父代Alpha狼parent_Alpha_Val=parent_Val(sort_index(1)); % 父代Alpha 狼目标函数值parent_Beta_Position=parent_Position(sort_index(2),:); % 确定父代Beta狼parent_Delta_Position=parent_Position(sort_index(3),:); % 确定父代Delta狼%% 迭代开始BestCost=zeros(1,MaxIt);BestCost(1)=parent_Alpha_Val;for it=1:MaxIta=2-it*((2)-MaxIt); % 对每一次迭代,计算相应的a值,a decreases linearly fron 2 to 0% 更新父代个体位置for par=1:nPop % 遍历父代个体for var=1:nVar % 遍历每个维度% Alpha狼Huntingr1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数AC1=2*r2; % 计算系数CD_alpha=abs(C1*parent_Alpha_Position(var)-parent_Position(p ar,var));X1=parent_Alpha_Position(var)-A1*D_alpha;% Beta狼Huntingr1=rand();r2=rand();A2=2*a*r1-a; % 计算系数AC2=2*r2; % 计算系数CD_beta=abs(C2*parent_Beta_Position(var)-parent_Position(par ,var));X2=parent_Beta_Position(var)-A2*D_beta;% Delta狼Huntingr1=rand();r2=rand();A3=2*a*r1-a; % 计算系数AC3=2*r2; % 计算系数CD_delta=abs(C3*parent_Delta_Position(var)-parent_Position(par,var));X3=parent_Delta_Position(var)-A3*D_delta;% 位置更新,防止越界X=(X1+X2+X3)-3;X=max(X,lb(var));X=min(X,ub(var));parent_Position(par,var)=X;parent_Val(par)=fobj(parent_Position(par,:),input_train,out put_train,input_test,output_test); % 计算个体目标函数值 % 产生变异(中间体)种群for mut=1:nPopA=randperm(nPop); % 个体顺序重新随机排列A(A==i)=[]; % 当前个体所排位置腾空(产生变异中间体时当前个体不参与)beta=unifrnd(beta_min,beta_max,VarSize); % 随机产生缩放因子y=parent_Position(a)+beta.*(parent_Position(b)-parent_Posit ion(c)); % 产生中间体% 防止中间体越界y=max(y,lb);y=min(y,ub);mutant_Position(mut,:)=y;% 产生子代种群,交叉操作 Crossoverfor child=1:nPopx=parent_Position(child,:);y=mutant_Position(child,:);z=zeros(size(x)); % 初始化一个新个体j0=randi([1,numel(x)]); % 产生一个伪随机数,即选取待交换维度编号for var=1:numel(x) % 遍历每个维度if var==j0 || rand=pCR % 如果当前维度是待交换维度或者随机概率小于交叉概率z(var)=y(var); % 新个体当前维度值等于中间体对应维度值 z(var)=x(var); % 新个体当前维度值等于当前个体对应维度值 child_Position(child,:)=z; % 交叉操作之后得到新个体child_Val(child)=fobj(z,input_train,output_train,input_test ,output_test); % 新个体目标函数值% 父代种群更新for par=1:nPopif child_Val(par)parent_Val(par) % 如果子代个体优于父代个体parent_Val(par)=child_Val(par); % 更新父代个体% 确定父代种群中的Alpha,Beta,Delta狼[~,sort_index]=sort(parent_Val); % 父代种群目标函数值排序parent_Alpha_Position=parent_Position(sort_index(1),:); % 确定父代Alpha狼parent_Alpha_Val=parent_Val(sort_index(1)); % 父代Alpha 狼目标函数值parent_Beta_Position=parent_Position(sort_index(2),:); % 确定父代Beta狼parent_Delta_Position=parent_Position(sort_index(3),:); % 确定父代Delta狼BestCost(it)=parent_Alpha_Val;bestc=parent_Alpha_Position(1,1);bestg=parent_Alpha_Position(1,2);%% 图示寻优过程plot(BestCost);xlabel('Iteration');ylabel('Best Val');%% 利用回归预测分析最佳的参数进行SVM网络训练cmd_cs_svr=['-s 3 -t 2',' -c ',num2str(bestc),' -g ',num2str(bestg)];model_cs_svr=svmtrain(output_train,input_train,cmd_cs_sv r); % SVM模型训练%% SVM网络回归预测[output_test_pre,~]=svmpredict(output_test,input_test,mo del_cs_svr); % SVM模型预测及其精度test_pre=mapminmax('reverse',output_test_pre',rule2);test_pre = test_pre';function x=init_individual(xlb,xub,dim,sizepop)% 参数初始化函数% lb:参数下界,行向量% ub:参数上界,行向量% dim:参数维度% sizepop 种群规模% x:返回sizepop*size(lb,2)的参数矩阵xRange=repmat((xub-xlb),[sizepop,1]);xLower=repmat(xlb,[sizepop,1]);x=rand(sizepop,dim).*xRange+xLower;%% SVR_fitness -- objective functionfunctionfitness=fobj(cv,input_train,output_train,input_test,output_ test)% cv为长度为2的横向量,即SVR中参数c和v的值cmd = ['-s 3 -t 2',' -c ',num2str(cv(1)),' -g ',num2str(cv(2))];model=svmtrain(output_train,input_train,cmd); % SVM模型训练[~,fitness]=svmpredict(output_test,input_test,model); % SVM模型预测及其精度fitness=fitness(2); % 以平均均方误差MSE作为优化的目标函数值close allload wndspd % 示例数据为风速(时间序列)数据,共144个样本%% HGWO-SVR% 训练-测试数据准备(用前3天预测后一天),用前100天做训练数据input_train(1,:)=wndspd(1:97);input_train(2,:)=wndspd(2:98);input_train(3,:)=wndspd(3:99);output_train=[wndspd(4:100)]';input_test(1,:)=wndspd(101:end-3);input_test(2,:)=wndspd(102:end-2);input_test(3,:)=wndspd(103:end-1);output_test=(wndspd(104:end))';para=[30,500,0.2,0.8,0.2];[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train',out put_train',input_test',output_test');%% 预测结果图err_pre=output_test'-test_pre;figure('Name','测试数据残差图')set(gcf,'unit','centimeters','position',[0.5,5,30,5])plot(err_pre,'*-');figure('Name','原始-预测图')plot(test_pre,'*r-');hold on;plot(output_test,'bo-');legend('预测','原始',0)set(gcf,'unit','centimeters','position',[0.5,13,30,5]) %_______________________________________________________ ____________%随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。
二进制灰狼算法-回复关于二进制灰狼算法的原理、应用和性能等方面的问题。
一、简介二进制灰狼算法(Binary Grey Wolf Optimizer,BGWO)是一种启发式优化算法,受灰狼群行为规律的启发而发展而成。
灰狼作为一种社会性动物,具有合作和竞争两种行为特征,这种行为规律被应用于算法中以模拟生物灰狼的种群演化。
二、原理1. 种群初始化:首先,根据待优化问题的维度和范围,随机生成一定数量的二进制编码表示的个体作为初始种群。
2. 适应度计算:对每个个体计算其适应度值,根据问题的具体情况可以采用不同的评估函数。
3. 灰狼位置更新:通过迭代更新,模拟灰狼群中每只灰狼的位置变化。
基于灰狼在自然界中的行为特点,算法中引入了三种基本的运动方式:追逐运动、个体奔袭运动和群体捕食运动。
这三种运动方式分别对应了灰狼中个体的合作、竞争和搜索行为。
4. 解码与修正:将更新后的二进制编码映射回实际问题的解空间,进行解码与修正。
通常,使用的编码方式是浮点型编码,通过将二进制编码转换为实数值表示解向量。
5. 判断停止:根据设定的终止条件(如最大迭代次数或达到一定优化目标),判断是否终止迭代。
6. 输出最优解:最后,输出经过迭代求解得到的最优解。
三、应用领域二进制灰狼算法广泛应用于解决复杂的优化问题,特别是在以下领域取得了显著的成果:1. 无线传感器网络:二进制灰狼算法可以用于无线传感器网络的能量优化、覆盖问题、路由问题等。
2. 机器学习与数据挖掘:在机器学习和数据挖掘领域,二进制灰狼算法可以用于特征选择、聚类分析、分类问题等。
3. 组合优化问题:如旅行商问题、装箱问题、图着色问题等,二进制灰狼算法可以有效地求解这些NP难问题。
四、性能与优势二进制灰狼算法相比其他优化算法具有以下几个明显的优势:1. 全局搜索能力强:灰狼算法中引入了合作搜索的机制,可以有效避免陷入局部最优解。
2. 收敛速度快:灰狼算法通过模拟灰狼的群体行为,使得种群的多样性得到保持,从而加速了解向量的收敛速度。
收稿日期:2022-08-29基金项目:国家自然科学基金(52175524)引用格式:郭萃,石云波,温晓杰,等.基于GWO BP方法的加速度计动态模型研究[J].测控技术,2023,42(8):50-55.GUOC,SHIYB,WENXJ,etal.DynamicModelofAccelerometerBasedonGWO BPMethod[J].Measurement&ControlTechnology,2023,42(8):50-55.基于GWO BP方法的加速度计动态模型研究郭 萃1,石云波1,温晓杰1,曹慧亮1,张 越2(1.中北大学电子测试技术重点实验室,山西太原 030051;2.山西北方机械制造有限责任公司,山西太原 030000)摘要:针对高g值加速度计动态模型问题,基于Hopkinson杆的校准系统所测的输入输出数据建立系统模型,提出了GWO BP神经网络动态建模方法。
利用灰狼种群算法优化BP神经网络建立的加速度计动态模型,对模拟输入输出信号进行仿真。
最后,利用Hopkinson杆标定系统对加速度计的输入输出进行实测。
结果表明,相比于BP神经网络算法,该算法经过优化改进后,求解精度提高了43.6%,证明了该方法的可行性。
关键词:神经网络;高g值加速度计;动态非线性;Hopkinson杆;系统辨识中图分类号:TP212 文献标志码:A 文章编号:1000-8829(2023)08-0050-06doi:10.19708/j.ckjs.2022.12.330DynamicModelofAccelerometerBasedonGWO BPMethodGUOCui1牞SHIYunbo1 牞WENXiaojie1牞CAOHuiliang1ZHANGYue2牗1.ScienceandTechnologyonElectronicTest&MeasurementLaboratory牞NorthUniversityofChina牞Taiyuan030051牞China牷2.ShanxiNorthMachine BuildingCo.牞Ltd.牞Taiyuan030000牞China牘Abstract牶Inordertosolvetheproblemofdynamicmodelofhigh gaccelerometer牞thesystemmodelforinputandoutputdatameasuredbythecalibrationsystembasedonHopkinsonbarisestablished牞andaGWO BPneuralnetworkdynamicmodelingmethodisproposed.ThegraywolfpopulationalgorithmisusedtooptimizethedynamicmodelofaccelerometerestablishedbyBPneuralnetwork牞andtheanaloginputandoutputsignalsaresimulated.Finally牞theinputandoutputoftheaccelerometeraremeasuredbyusingtheHopkinsonbarcali brationsystem.TheresultsshowthatcomparedwithBPneuralnetworkalgorithm牞afteroptimizationandim provement牞theaccuracyofthesolutionisimprovedby43.6%牞whichimprovesthemodelingeffectandprovesthefeasibilityofthismethod.Keywords牶neuralnetwork牷high gaccelerometer牷dynamicnonlinearity牷Hopkinsonbar牷systemidentification加速度计作为惯性器件中的重要组成部分,被广泛应用于冲击振动仪器中。
灰狼优化算法(GWO)原理GWO(灰狼优化)算法以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。
————————————————tic % 计时器%% 清空环境变量close allformat compact%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)] ;% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178 )];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 利用灰狼算法选择最佳的SVM参数c和gSearchAgents_no=10; % 狼群数量,Number of search agents Max_iteration=10; % 最大迭代次数,Maximum numbef of iterationsdim=2; % 此例需要优化两个参数c和g,number of your variableslb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界% v = 5; % SVM Cross Validation参数,默认为5% initialize alpha, beta, and delta_posAlpha_pos=zeros(1,dim); % 初始化Alpha狼的位置Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problemsBeta_pos=zeros(1,dim); % 初始化Beta狼的位置Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problemsDelta_pos=zeros(1,dim); % 初始化Delta狼的位置Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems%Initialize the positions of search agentsPositions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iteration);l=0; % Loop counter循环计数器% Main loop主循环while lMax_iteration % 对迭代次数循环for i=1:size(Positions,1) % 遍历每个狼% Return back the search agents that go beyond the boundaries of the search space% 若搜索位置超过了搜索空间,需要重新回到搜索空间Flag4ub=Positions(i,:)ub;Flag4lb=Positions(i,:)lb;% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;% 若超出最小值,最回答最小值边界Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*F lag4ub+lb.*Flag4lb; % ~表示取反% 计算适应度函数值cmd = [' -c ',num2str(Positions(i,1)),' -g ',num2str(Positions(i,2))];model=svmtrain(train_wine_labels,train_wine,cmd); % SVM 模型训练[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度fitness=100-fitness(1); % 以错误率最小化为目标% Update Alpha, Beta, and Deltaif fitnessAlpha_score % 如果目标函数值小于Alpha狼的目标函数值Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alphaAlpha_pos=Positions(i,:); % 同时将Alpha狼的位置更新为最优位置if fitnessAlpha_score fitnessBeta_score % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update betaBeta_pos=Positions(i,:); % 同时更新Beta狼的位置if fitnessAlpha_score fitnessBeta_score fitnessDelta_score % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update deltaDelta_pos=Positions(i,:); % 同时更新Delta狼的位置a=2-l*((2)-Max_iteration); % 对每一次迭代,计算相应的a 值,a decreases linearly fron 2 to 0% Update the Position of search agents including omegas for i=1:size(Positions,1) % 遍历每个狼for j=1:size(Positions,2) % 遍历每个维度% 包围猎物,位置更新r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)% Alpha狼位置更新D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1r1=rand();r2=rand();A2=2*a*r1-a; % 计算系数A,Equation (3.3)C2=2*r2; % 计算系数C,Equation (3.4)% Beta狼位置更新D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2r1=rand();r2=rand();A3=2*a*r1-a; % 计算系数A,Equation (3.3)C3=2*r2; % 计算系数C,Equation (3.4)% Delta狼位置更新D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation(3.5)-part 3X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3% 位置更新Positions(i,j)=(X1+X2+X3)-3;% Equation (3.7)Convergence_curve(l)=Alpha_score;bestc=Alpha_pos(1,1);bestg=Alpha_pos(1,2);bestGWOaccuarcy=Alpha_score;%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best Cross Validation Accuracy = %g%%,Best c = %g,Best g = %g',bestGWOaccuarcy*100,bestc,bestg);disp(str)%% 利用最佳的参数进行SVM网络训练cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model_gwosvm);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d-%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);%% 显示程序运行时间% This function initialize the first population of search agents functionPositions=initialization(SearchAgents_no,dim,ub,lb) Boundary_no= size(ub,2); % numnber of boundaries% If the boundaries of all variables are equal and user enter a signle% number for both ub and lbif Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;% If each variable has a different lb and ubif Boundary_no1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;代码修改及说明:安装libsvm下载libsvm将下载的libsvm直接放在matlab安装路径toolbox下点击matlab “主页-设置路径” 选择libsvm包中的windows文件夹将libsvm windows文件夹下的 svmtrain 及svmpredict函数修改为 svmtrain2 和 svmpredict2等形式,目的是防止与matlab下冲突(注:2017及以下版本可以使用svmtrain,高版本不再支持)源码修改将所有svmtrain()及svmpredict() 函数改为svmtrain2()及svmpredict2() ;将代码[~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度改为[~,~,fitness]=svmpredict(test_wine_labels,test_wine,model); % SVM 模型预测及其精度或者[fitness,~,~]=svmpredict(test_wine_labels,test_wine,model); % SVM模型预测及其精度(至于为什么还未清楚?目前我还没有看代码,原理也还没有看,仅改了下代码)将代码[output_test_pre,acc]=svmpredict2(output_test',input_test', model_gwo_svr); % SVM模型预测及其精度改为[output_test_pre,acc,~]=svmpredict2(output_test',input_test ',model_gwo_svr); % SVM模型预测及其精度(同上,仅是为了解决维度的问题)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%人们总是能从大自然中得到许多启迪,从生物界的各种自然现象或过程中获得各种灵感,由此提出了许多能够解决复杂函数优化的启发式算法,主要分为演化算法和群体智能算法。
灰狼优化算法(GWO)原理(2020)混合灰狼优化(HGWO,DE-GWO)算法matlab源码今天学习一个比较新的优化算法,用差分进化(DE)改进原始的灰狼优化(GWO)得到的HGWO(也可以叫DE-GWO)算法。
仍然以优化SVR参数为例,需要的同学可以根据需要自己修改源码。
function[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train,out put_ train,input_test,output_test)% 参数向量parameters [n,N_iteration,beta_min,beta_max,pCR]% n为种群规模,N_iteration为迭代次数% beta_min 缩放因子下界 Lower Bound of Scaling Factor% beta_max=0.8; % 缩放因子上界Upper Bound of Scaling Factor% pCR 交叉概率 Crossover Probability% 要求输入数据为列向量(矩阵)%% 数据归一化[input_train,rule1]=mapminmax(input_train');[output_train,rule2]=mapminmax(output_train');input_test=mapminmax('apply',input_test',rule1);output_test=mapminmax('apply',output_test',rule2);input_train=input_train';output_train=output_train';input_test=input_test';output_test=output_test';%% 利用差分进化-灰狼优化混合算法(DE_GWO)选择最佳的SVR 参数nPop=para(1); % 种群规模 Population SizeMaxIt=para(2); % 最大迭代次数Maximum Number ofIterations nVar=2; % 自变量维数,此例需要优化两个参数c和g Number of Decision VariablesVarSize=[1,nVar]; % 决策变量矩阵大小Decision Variables Matrix Sizebeta_min=para(3); % 缩放因子下界Lower Bound of Scaling Factorbeta_max=para(4); % 缩放因子上界 Upper Bound of Scaling FactorpCR=para(5); % 交叉概率 Crossover Probabilitylb=[0.01,0.01]; % 参数取值下界ub=[100,100]; % 参数取值上界%% 初始化% 父代种群初始化parent_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置parent_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体parent_Val(i)=fobj(parent_Position(i,:),input_train,output_ train,input_test,output_test); % 计算个体目标函数值% 突变种群初始化mutant_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置mutant_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体mutant_Val(i)=fobj(mutant_Position(i,:),input_train,output_ train,input_test,output_test); % 计算个体目标函数值% 子代种群初始化child_Position=init_individual(lb,ub,nVar,nPop); % 随机初始化位置child_Val=zeros(nPop,1); % 目标函数值for i=1:nPop % 遍历每个个体child_Val(i)=fobj(child_Position(i,:),input_train,output_tr ain,input_test,output_test); % 计算个体目标函数值%% 确定父代种群中的Alpha,Beta,Delta狼[~,sort_index]=sort(parent_Val); % 父代种群目标函数值排序parent_Alpha_Position=parent_Position(sort_index(1),:); % 确定父代Alpha狼parent_Alpha_Val=parent_Val(sort_index(1)); % 父代Alpha 狼目标函数值parent_Beta_Position=parent_Position(sort_index(2),:); % 确定父代Beta狼parent_Delta_Position=parent_Position(sort_index(3),:); % 确定父代Delta狼%% 迭代开始BestCost=zeros(1,MaxIt);BestCost(1)=parent_Alpha_Val;for it=1:MaxIta=2-it*((2)-MaxIt); % 对每一次迭代,计算相应的a值,a decreases linearly fron 2 to 0% 更新父代个体位置for par=1:nPop % 遍历父代个体for var=1:nVar % 遍历每个维度% Alpha狼Huntingr1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]A1=2*a*r1-a; % 计算系数AC1=2*r2; % 计算系数CD_alpha=abs(C1*parent_Alpha_Position(var)-parent_Position(p ar,var));X1=parent_Alpha_Position(var)-A1*D_alpha;% Beta狼Huntingr1=rand();r2=rand();A2=2*a*r1-a; % 计算系数AC2=2*r2; % 计算系数CD_beta=abs(C2*parent_Beta_Position(var)-parent_Position(par ,var));X2=parent_Beta_Position(var)-A2*D_beta;% Delta狼Huntingr1=rand();r2=rand();A3=2*a*r1-a; % 计算系数AC3=2*r2; % 计算系数CD_delta=abs(C3*parent_Delta_Position(var)-parent_Position(par,var));X3=parent_Delta_Position(var)-A3*D_delta;% 位置更新,防止越界X=(X1+X2+X3)-3;X=max(X,lb(var));X=min(X,ub(var));parent_Position(par,var)=X;parent_Val(par)=fobj(parent_Position(par,:),input_train,out put_train,input_test,output_test); % 计算个体目标函数值 % 产生变异(中间体)种群for mut=1:nPopA=randperm(nPop); % 个体顺序重新随机排列A(A==i)=[]; % 当前个体所排位置腾空(产生变异中间体时当前个体不参与)beta=unifrnd(beta_min,beta_max,VarSize); % 随机产生缩放因子y=parent_Position(a)+beta.*(parent_Position(b)-parent_Posit ion(c)); % 产生中间体% 防止中间体越界y=max(y,lb);y=min(y,ub);mutant_Position(mut,:)=y;% 产生子代种群,交叉操作 Crossoverfor child=1:nPopx=parent_Position(child,:);y=mutant_Position(child,:);z=zeros(size(x)); % 初始化一个新个体j0=randi([1,numel(x)]); % 产生一个伪随机数,即选取待交换维度编号for var=1:numel(x) % 遍历每个维度if var==j0 || rand=pCR % 如果当前维度是待交换维度或者随机概率小于交叉概率z(var)=y(var); % 新个体当前维度值等于中间体对应维度值z(var)=x(var); % 新个体当前维度值等于当前个体对应维度值child_Position(child,:)=z; % 交叉操作之后得到新个体child_Val(child)=fobj(z,input_train,output_train,input_test ,o utput_test); % 新个体目标函数值% 父代种群更新for par=1:nPopif child_Val(par)parent_Val(par) % 如果子代个体优于父代个体parent_Val(par)=child_Val(par); % 更新父代个体% 确定父代种群中的Alpha,Beta,Delta狼[~,sort_index]=sort(parent_Val); % 父代种群目标函数值排序parent_Alpha_Position=parent_Position(sort_index(1),:); % 确定父代Alpha狼parent_Alpha_Val=parent_Val(sort_index(1)); % 父代Alpha 狼目标函数值parent_Beta_Position=parent_Position(sort_index(2),:); % 确定父代Beta狼parent_Delta_Position=parent_Position(sort_index(3),:); % 确定父代Delta狼BestCost(it)=parent_Alpha_Val;bestc=parent_Alpha_Position(1,1);bestg=parent_Alpha_Position(1,2);%% 图示寻优过程plot(BestCost);xlabel('Iteration');ylabel('Best Val');%% 利用回归预测分析最佳的参数进行SVM网络训练cmd_cs_svr=['-s 3 -t 2',' -c ',num2str(bestc),' -g ',num2str(bestg)];model_cs_svr=svmtrain(output_train,input_train,cmd_cs_sv r); % SVM模型训练%% SVM网络回归预测[output_test_pre,~]=svmpredict(output_test,input_test,mo del_cs_svr); % SVM模型预测及其精度test_pre=mapminmax('reverse',output_test_pre',rule2);test_pre = test_pre';function x=init_individual(xlb,xub,dim,sizepop)% 参数初始化函数% lb:参数下界,行向量% ub:参数上界,行向量% dim:参数维度% sizepop 种群规模% x:返回sizepop*size(lb,2)的参数矩阵xRange=repmat((xub-xlb),[sizepop,1]);xLower=repmat(xlb,[sizepop,1]);x=rand(sizepop,dim).*xRange+xLower;%% SVR_fitness -- objective functionfunctionfitness=fobj(cv,input_train,output_train,input_test,output_ test)% cv为长度为2的横向量,即SVR中参数c和v的值cmd = ['-s 3 -t 2',' -c ',num2str(cv(1)),' -g ',num2str(cv(2))];model=svmtrain(output_train,input_train,cmd); % SVM模型训练[~,fitness]=svmpredict(output_test,input_test,model); % SVM模型预测及其精度fitness=fitness(2); % 以平均均方误差MSE作为优化的目标函数值close allload wndspd % 示例数据为风速(时间序列)数据,共144个样本%% HGWO-SVR% 训练-测试数据准备(用前3天预测后一天),用前100天做训练数据input_train(1,:)=wndspd(1:97);input_train(2,:)=wndspd(2:98);input_train(3,:)=wndspd(3:99);output_train=[wndspd(4:100)]';input_test(1,:)=wndspd(101:end-3);input_test(2,:)=wndspd(102:end-2);input_test(3,:)=wndspd(103:end-1);output_test=(wndspd(104:end))';para=[30,500,0.2,0.8,0.2];[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train',out put_train',input_test',output_test');%% 预测结果图err_pre=output_test'-test_pre;figure('Name','测试数据残差图')set(gcf,'unit','centimeters','position',[0.5,5,30,5])plot(err_pre,'*-');figure('Name','原始-预测图')plot(test_pre,'*r-');hold on;plot(output_test,'bo-');legend('预测','原始',0)set(gcf,'unit','centimeters','position',[0.5,13,30,5]) %__________ _____________________________________________ ____________% 随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。
改进收敛因子和比例权重的灰狼优化算法王秋萍; 王梦娜; 王晓峰【期刊名称】《《计算机工程与应用》》【年(卷),期】2019(055)021【总页数】6页(P59-64)【关键词】灰狼优化算法; 收敛因子; Richards模型; 参数估计【作者】王秋萍; 王梦娜; 王晓峰【作者单位】西安理工大学理学院西安 710054【正文语种】中文【中图分类】TP301.61 引言Richards模型[1]是一个包含四个参数的非线性回归方程,通过时间变量的变化来准确地描述生物的生长过程。
该模型以其参数具备的合理实际意义和对多样性增长过程的描述能力很强而受到广泛应用[2]。
但该模型带有四个未知参数,参数估计较为复杂。
近年来群智能优化算法得到了快速发展,成为国际上优化领域的研究热点之一,并且在非线性模型的参数估计中得到了很好的应用。
2014年,澳大利亚学者Mirjalili等[3]提出了一种新型智能优化算法,称为灰狼优化算法(Grey Wolf Optimizer,GWO),并对该算法在寻找最优解方面的优良性能进行了验证。
算法的优点主要是结构简单、需要设置的参数少和在实验编码中容易实现等。
目前,GWO算法在许多领域得到了广泛的应用,如属性简约[4]、特征选择[5]、经济负荷分配问题[6]和表面波分析[7]。
然而,灰狼优化算法存在求解精度不高和收敛速度较慢等不足,对此,研究学者提出了诸多改进方法,常见的有两类:第一类是改进收敛因子,例如,文献[8]提出采用正弦曲线、对数曲线、正切曲线、余弦曲线和二次曲线的非线性策略调整收敛因子来避免算法陷入局部最优,但是寻优精度并不是特别理想。
文献[9]提出一种非线性递减收敛因子更新公式以平衡算法的全局搜索能力和局部搜索能力,取得了较好的结果。
第二类是改进位置更新公式,文献[10]提出利用位置矢量差来跳出局部最优,但由于算法迭代后期灰狼之间的位置矢量差很小,对灰狼位置的扰动能力一般。
基于Cell-DEVS的森林灭火资源调度狼群优化算法李斌;陈爱斌;周国雄;周涛【摘要】针对森林消防调度兵力组织难、精细化程度不高的问题,提出了一种基于Cell-DEVS的森林灭火资源调度狼群优化算法.首先,利用Rothermel林火蔓延模型,对林火蔓延速度进行等级划分;其次,根据森林消防“控制要害”的原则,对森林灭火资源调度进行耦合驱动模块化建模,建立了基于Cell-DEVS模型的狼群强者生存更新机制(WSSUM);最后,针对森林灭火资源在单位时间步长局部调度搜索中不够精细的问题,提出了一种改进局部搜索策略狼群优化算法(WOA),对资源在局部游走阶段实现调度交互.与WSSUM算法相比,WOA在减少任务执行时间的同时,改善了局部搜索性能,实验结果表明:收敛速度较改进前提高了10.1%.该研究适应于配备了定位设备的单兵消防作战指挥系统,实现差异化精细调兵.%In view of the difficulty of forest fire-fighting dispatching force organization and low degree of refinement,a wolves optimization algorithm based on Cell-DEVS (Discrete Event System Specification) for forest fire-fighting resource scheduling was proposed.Firstly,Rothermel forest fire spread model was used to classify forest fire spread rate.Secondly,according to the principle of control the key in forest fire control,the forest fire-fighting resource scheduling model was built by a way of coupling drive modular designing,and a Wolves Strong Survival Update Mechanism (WSSUM) based on the Cell-DEVS model was proposed.Finally,aiming at the problem that the scheduling of forest fire-fighting resources was not fine enough in the local search of unit time step,an modified Wolves Optimization Algorithm (WOA) based on improved local search strategy was adopted to schedule the forest firefighting resources in the local walk interactively.In the comparison experiments with WSSUM algorithm,the WOA improved the local search performance while reducing the task execution time.The experimental results show that the convergence speed is improved by 10.1% compared with that before improvement.The study adapts to the individual fire-fighting command system equipped with locating equipment to realize differentiated fine force dispatching.【期刊名称】《计算机应用》【年(卷),期】2018(038)005【总页数】6页(P1494-1499)【关键词】Cell-DEVS;耦合模型;资源调度;局部搜索;狼群优化算法【作者】李斌;陈爱斌;周国雄;周涛【作者单位】中南林业科技大学计算机与信息工程学院,长沙410004;中南林业科技大学计算机与信息工程学院,长沙410004;中南林业科技大学计算机与信息工程学院,长沙410004;湖南省林业厅森林消防航空护林站,长沙410007【正文语种】中文【中图分类】TP391.90 引言当发生森林火灾时,制定合理的灭火应急调度方案是管理森林火灾、减少经济损失的重要内容。
灰狼优化算法--简单易懂附python代码
ps:本博文为个人理解,如有错误请不吝赐教
本博文部分引用了
1、算法原理:简单的讲,狼群中有 Alpha、Beta、Delta三只灰狼做头狼,Alpha是狼王,Beta、Delta分别排第二第三,Beta要听老大Alpha 的,Delta要听Alpha、Beta的。
这三头狼指导着狼群里其他的狼寻找猎物。
狼群寻找猎物的过程就是我们寻找最优解的过程。
2、公式方面大家可以看另一博主的博文。
3、代码如下:
import random
import numpy
def GWO(objf, lb, ub, dim, SearchAgents_no, Max_iter):
# 初始化 alpha, beta, and delta_pos
Alpha_pos = numpy.zeros(dim) # 位置.形成30的列表
Alpha_score = float("inf") # 这个是表示“正负无穷”,所有数都比 +inf 小;正无穷:float("inf"); 负无穷:float("-inf") Beta_pos = numpy.zeros(dim)
Beta_score = float("inf")
Delta_pos = numpy.zeros(dim)
Delta_score = float("inf") # float() 函数用于将整数和字符串转换成浮点数。
# list列表类型
if not isinstance(lb, list): # 作用:来判断一个对象是否是一个已知的类型。
其第一个参数(object)为对象,第二个参数(type)为类型名,若对象的类型与参数二的类型相同则返回True
lb = [lb] * dim # 生成[100,100,.100]30个
if not isinstance(ub, list):
ub = [ub] * dim
# Initialize the positions of search agents初始化所有狼的位置
Positions = numpy.zeros((SearchAgents_no, dim))
for i in range(dim): # 形成5*30个数[-100,100)以内
Positions[:, i] = numpy.random.uniform(0, 1, SearchAgents_no) * (ub[i] - lb[i]) + lb[
i] # 形成[5个0-1的数]*100-(-100)-100
Convergence_curve = numpy.zeros(Max_iter)
#迭代寻优
for l in range(0, Max_iter): # 迭代1000
for i in range(0, SearchAgents_no): # 5
# 返回超出搜索空间边界的搜索代理
for j in range(dim): # 30
Positions[i, j] = numpy.clip(Positions[i, j], lb[j], ub[
j]) # clip这个函数将将数组中的元素限制在a_min(-100),
a_max(100)之间,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min。
# 计算每个搜索代理的目标函数
fitness = objf(Positions[i, :]) # 把某行数据带入函数计算
# print("经过计算得到:",fitness)
# Update Alpha, Beta, and Delta
if fitness Alpha_score:
Alpha_score = fitness # Update alpha
Alpha_pos = Positions[i, :].copy()
if (fitness Alpha_score and fitness Beta_score):
Beta_score = fitness # Update beta
Beta_pos = Positions[i, :].copy()
if (fitness Alpha_score and fitness Beta_score and fitness Delta_score):
Delta_score = fitness # Update delta
Delta_pos = Positions[i, :].copy()
# 以上的循环里,Alpha、Beta、Delta
a = 2 - l * ((2) - Max_iter); # a从2线性减少到0
for i in range(0, SearchAgents_no):
for j in range(0, dim):
r1 = random.random() # r1 is a random number in [0,1]主要生成一个0-1的随机浮点数。
r2 = random.random() # r2 is a random number in [0,1]
A1 = 2 * a * r1 - a; # Equation (3.3)
C1 = 2 * r2; # Equation (3.4)
# D_alpha表示候选狼与Alpha狼的距离
D_alpha = abs(C1 * Alpha_pos[j] - Positions[
i, j]); # abs() 函数返回数字的绝对值。
Alpha_pos[j]表示Alpha 位置,Positions[i,j])候选灰狼所在位置
X1 = Alpha_pos[j] - A1 * D_alpha; # X1表示根据alpha得出的下一代灰狼位置向量
r1 = random.random()
r2 = random.random()
A2 = 2 * a * r1 - a; #
C2 = 2 * r2;
D_beta = abs(C2 * Beta_pos[j] - Positions[i, j]);
X2 = Beta_pos[j] - A2 * D_beta;
r1 = random.random()
r2 = random.random()
A3 = 2 * a * r1 - a;
C3 = 2 * r2;
D_delta = abs(C3 * Delta_pos[j] - Positions[i, j]);
X3 = Delta_pos[j] - A3 * D_delta;
Positions[i, j] = (X1 + X2 + X3) - 3 # 候选狼的位置更新为根
据Alpha、Beta、Delta得出的下一代灰狼地址。
Convergence_curve[l] = Alpha_score;
if (l % 1 == 0):
print(['迭代次数为' + str(l) + ' 的迭代结果' + str(Alpha_score)]); # 每一次的迭代结果
def F1(x):
s=numpy.sum(x**2);
func_details = ['F1', -100, 100, 30]
function_name = func_details[0]
Max_iter = 1000#迭代次数
lb = -100#下界
ub = 100#上届
dim = 30#狼的寻值范围
SearchAgents_no = 5#寻值的狼的数量
x = GWO(F1, lb, ub, dim, SearchAgents_no, Max_iter)
% Grey Wold Optimizer (GWO) source codes version 1.0 %
4.RMSprop(root mean square prop)
1. Representation of Solution.
model_cs_svr=svmtrain(output_train,input_train,cmd_cs_svr); % SVM模型训练
cmd_gwosvm = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
for i in range(0, SearchAgents_no): # 5
% z=20+exp(1)-20*exp(-0.2*sqrt(temp1-2))-exp(temp2-2);
步骤4:按式(4)对参与围攻行为的人工狼的位置进行更新.执行围攻行为,
Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problems
统一框架下的群体智能优化算法,可以根据优化对象的特性只能地选择适合的更新规则,进行运算得到理想的优化结果。