array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 智能优化算法:绯鲵鲣优化算法-附代码 - 爱码网

智能优化算法:绯鲵鲣优化算法-附代码


摘要:绯鲵鲣优化算法[1](Yellow Saddle Goatfish Algorithm ,YSGA)是由 Erik Cuevas等于2018年提出的一种新型的仿生智能优化算法.该算法模拟绯鲵鲣群协作狩猎行为以实现对搜索空间的探索和开采,同时通过选定追逐者与拦截者的代理搜索学习机制以改善种群的个体多样性和算法的迭代寻优能力;鉴于该算法待调节参数少、迭代寻优效率高且易于实现等优点,将具有较好的可拓展改进空间和应用前景。

1.算法原理

YSGA 算法是锁定狩猎区域后,通过 K-means方法将绯鲵鲣种群划分为 k 个相互独立的簇以实现空间邻域内的并行搜索,并使绯鲵鲣在探索空间内扮演两种搜索代理角色,即追击鱼和拦截鱼以执行不同的搜索路径操作。在狩猎过程中,因鱼群随机游走可发生角色互换机制,若狩猎区域被过度开采,绯鲵鲣鱼群将执行区域更新策略以寻找新的捕食区域继续狩猎。根据绯鲵鲣群体协作狩猎行为的特点,YSGA 算法通过初始化、追击鱼、拦截鱼、角色互换与更改区域 5 种不同行为模式的数学化描述以实现问题的优化求解。

1.1初始化阶段

种 群 P={p1,p2,...,pn}P=\{p_1,p_2,...,p_n\}nn 维 搜 索 空 间[bhigh,blow][b^{high},b^{low}]内随机生成且均匀分布,并按式(1)进行初始化。
pij=rand.(bjhighbjlow)+bjlow,i=1,2,...,m;j=1,2,...,n(1) p_i^j=rand.(b_j^{high}-b_j^{low})+b_j^{low},i=1,2,...,m;j=1,2,...,n\tag{1}
其中,mm为种群规模的大小,pip_{i}为决策变量向量pi=pi1,pi2,...,pinp_i={p_i^1,p_i^2,...,p_i^n},randrand是[0,1]中的随机数。

YSGA 模型运用 K-means 算法进行聚类分析,将种群pp划分为kk个相互独立的簇{c1,c2,...,ck}\{c_1,c_2,...,c_k\} ,通过计算kk个簇中的每个决策变量与该簇中心的欧氏距离之和来定义该算法的适应度值,以表示捕获猎物的成功率,具体记为:
E(C)=i=1ke(cl)(2) E(C)=\sum_{i=1}^{k}e(c_l)\tag{2}

e(cl)=pgϵclpgul(3) e(c_l)=\sum_{p_g\epsilon c_l} ||p_g - u_l||\tag{3}

其中e(cl)e(c_l)表示每个簇clc_l 的均值ulu_l与簇中每个决策变量之间的欧氏距离,g=1,2,...,h;l=1,2,...,kg=1,2,...,h;l=1,2,...,k

1.2追击鱼路径

每个簇中适应度值较高的绯鲵鲣被暂定为该区域的追击鱼以引领捕猎,在搜索区域内利用列维飞行模型产生随机移动以寻找猎物的藏身之处,其位置更新表达式为
Φlt+1=Φlt+S(4) \Phi_l^{t+1} = \Phi_l^{t}+S \tag{4}

S=αLevy(β)α(uv1/β)(ΦltΦbestt)(5) S=\alpha⊕Levy(\beta)\sim\alpha(\frac{u}{|v|^{1/\beta}})(\Phi_l^{t}-\Phi_{best}^{t})\tag{5}

其中,Φlt\Phi_l^{t}表示追击鱼当前的位置,SS为列维飞行模型通过列维分布生成的随机步距;参数α\alpha 为步长控制因子且α=1\alpha=1 ,参数β\beta 称为 Lévy 指数且 0<β20<\beta\leq2 ,参数 uuvv 服从正态分布;Φbestt\Phi_{best}^{t}是当前所有集群中最佳追击鱼,其位置更新表达式为:
Φlt+1=Φlt+S(6) \Phi_l^{t+1} = \Phi_l^{t}+S' \tag{6}

S=α(uv1/β)(7) S'=\alpha(\frac{u}{|v|^{1/\beta}})\tag{7}

其中, SS' 为新定义的随机步距。

1.3拦截鱼路径

每个簇中确定追击鱼后,剩余的绯鲵鲣就成为拦截鱼对猎物实行包围策略以阻止其逃跑,并沿着螺旋路径围绕在此时试图捕食猎物的追击鱼周围,其位置更新表达式为 :
φgt+1=Dg.ebρ.cos2πρ+Φl(8) \varphi_g^{t+1}=D_g.e^{b\rho}.cos2\pi\rho+\Phi_l\tag{8}
其中,DgD_g 是干扰距离,即拦截鱼φgt\varphi_g^{t} 和追击鱼Φl\Phi_l 在簇clc_l 中当前位置的距离,ρ\rho是[0,1]中的随机数,bb 是一个常数且 b=1b =1

1.4 角色互换

在追捕猎物过程中,若簇中的拦截鱼比追击鱼距离猎物更近,即具有更高的适应度值,则意味着寻找到了更优的解决方案,在迭代 t+1 中执行角色互换机制以更新最佳追击鱼的位置。

1.5 更改区域

YSGA 模型所选狩猎区域一旦被完全开发,即通过猎杀锁定的狩猎区域内所有猎物,对簇中所有的绯鲵鲣将执行区域更新策略,具体数学描述如下:
pgt+1=Φbest+pgt2(9) p_g^{t+1}=\frac{\Phi_{best}+p_g^{t}}{2}\tag{9}
其中,pgt+1p_g^{t+1} 是绯鲵鲣的新狩猎区域,pgtp_g^{t}是当前簇中绯鲵鲣(追击鱼或拦截鱼)成员的位置, Φbest\Phi_{best}是目前为止所有簇中适应度值最高的最佳追击鱼,即问题的最优解。

2.算法流程

step1.设置YSGA模型参数
step2.初始化绯鲵鲣种群.
step3.计算初始绯鲵鲣群每条鱼的适应度值.将每条绯鲵鲣的适应度值并比较大小,确定最大者为全局最优的绯鲵鲣追逐者,并保存当前最优值所对应的参数.再将种群分为k个集群,计算每个集群中绯鲵鲣的适应度值,确定每个集群的追逐者和拦截者.
step4.对两种不同的搜索个体进行路径操作.对追逐者使用 Lévy飞行机制进行路径操作,将α的递变函数作为Lévy飞行的步长控制因子,对最优追逐者的位置进行更新;对拦截者执行对数螺旋路径,更新拦截者的当前位置.
step5.最优追逐者的更新.鱼群中追逐者和拦截者每进行一次路径操作,便计算一次当前集群的适应度值:若有一条绯鲵鲣拦截者的适应度值大于已保存的最优追逐者,则用当前的拦截者替换最优追逐者,使其成为新的最优个体,并保存该最优追逐者所对应的 参数,否则仍保存原追逐者位置和最优值所对应的参数.
step6.搜索空间更新.根据step5所计算的追逐者的适应度值,若其适应度值没有提高,则增加
该区域的搜索次数,直至达到过度开采参数;当超过过度开采参数时,则变换搜索区域.
step7.判断YSGA算法是否满足终止条件,即判断当前迭 代次数t是否达到 最 大迭代次数:若达到最大,则输出最优的追逐者和最优值所对应的参数,反之迭代次数t加1,并跳转执行step3.

3.算法结果

智能优化算法:绯鲵鲣优化算法-附代码

4.参考文献

[1]Daniel Zaldívar,Bernardo Morales,Alma Rodríguez,Arturo Valdivia-G,Erik Cuevas,Marco Pérez-Cisneros. A novel bio-inspired optimization model based on Yellow Saddle Goatfish behavior[J]. BioSystems,2018,174.

[2]高雷阜,荣雪娇.融合递减策略与Fuch混沌机制的改进YSGA算法[J/OL].计算机科学与探索:1-16[2020-08-05].http://kns.cnki.net/kcms/detail/11.5602.TP.20200720.1328.008.html.

[3]高雷阜,荣雪娇.混合动态步长递变与局部混沌搜索的YSGA改进及其应用[J].辽宁师范大学学报(自然科学版),2019,42(01):16-24.

5.MATLAB代码

https://mianbaoduo.com/o/bread/Z5mUlJY=

相关文章: