当前位置: 首页 > 专利查询>河海大学专利>正文

一种基于Spark的并行化萤火虫算法制造技术

技术编号:17970612 阅读:45 留言:0更新日期:2018-05-16 11:26
本发明专利技术公开了一种基于Spark的并行化萤火虫算法,该方法包括以下步骤:(1)随机生成初始萤火虫种群,初始化萤火虫位置和亮度,设置算法参数;(2)从初始萤火虫种群创建Spark的RDD,并将RDD划分为多个分区分布到Spark集群的多个节点中,每个分区对应一个萤火虫子种群;(3)各个萤火虫子种群在各自的节点上进行目标函数值的计算和萤火虫位置的更新,每个萤火虫子种群通过萤火虫位置的更新,寻找到局部最优解;(4)将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。

【技术实现步骤摘要】
一种基于Spark的并行化萤火虫算法
本专利技术涉及一种并行化萤火虫算法,特别涉及一种基于Spark的并行化萤火虫算法。
技术介绍
萤火虫算法是由一种基于群体搜索的元启发式算法,该算法通过萤火虫个体之间的相互吸引达到寻优的目的。对于任意两只萤火虫,亮度小的萤火虫会被亮度大的萤火虫吸引而向其移动。随着萤火虫之间距离的增加,吸引力和亮度都会逐渐减小。亮度最大的萤火虫随机移动。萤火虫的亮度由待优化的目标函数的值决定。当萤火虫种群规模变大时,传统的萤火虫算法通常需要较长的计算时间才能完成寻优过程。Spark是一种快速、通用的并行计算框架,它的核心是一种称为弹性分布式数据集RDD。Spark通过对RDD进行并行切片,然后分发到集群中的多个节点上完成相应的变换操作,最后由行动操作触发所有的运算。Spark的这种运算方式非常适合并行化萤火虫算法的实现。
技术实现思路
针对大规模种群时传统萤火虫算法中存在的计算性能问题,本专利技术提供一种在Spark集群的多个节点上并行执行的萤火虫算法。本专利技术为解决上述技术问题采用以下技术方案:本专利技术提供一种基于Spark的并行化萤火虫算法,具体步骤如下:步骤1:随机生成初始萤火虫种群,初始化萤火虫位置和亮度,设置算法参数;步骤2:从初始萤火虫种群创建Spark的RDD,并将RDD划分为多个分区分布到Spark集群的多个节点中,每个分区对应一个萤火虫子种群;步骤3:各个萤火虫子种群在各自的节点上进行目标函数值的计算和萤火虫位置的更新,每个萤火虫子种群通过萤火虫位置的更新,寻找到局部最优解;步骤4:将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。作为本专利技术的进一步技术方案,步骤1中初始萤火虫种群包括n只萤火虫其中是一个d维向量,表示萤火虫i在解空间中的位置,萤火虫可以为二进制编码或实数编码。用萤火虫的绝对亮度Ii表示萤火虫所在位置处解的目标函数值,即绝对亮度大的萤火虫所代表的潜在解更好。设置的算法参数包括最大吸引力β0、光吸收系数γ和随机化参数α。作为本专利技术的进一步技术方案,步骤2通过Spark的parallelize函数转换将初始萤火虫种群为种群RDD,并将种群RDD划分为多个分区分布到集群的多个节点中,RDD包含的分区的数量,以及每个分区包含的个体的数量,可以由Spark自动分配。作为本专利技术的进一步技术方案,步骤3通过Spark的mapPartitions函数将种群RDD转换为亮度RDD,并分布到集群中不同的节点上并行计算目标函数值和进行位置更新。作为本专利技术的进一步技术方案,步骤4通过Spark的collect函数触发Spark的运算流程,完成前面一系列的转换,并将完成位置更新的萤火虫收回到主节点上。本专利技术采用以上技术方案与现有技术相比,具有以下技术效果:本专利技术利用Spark的基于内存的计算模型,将萤火虫算法的目标函数值计算和位置更新操作进行并行化,提高了萤火虫算法的性能。附图说明图1为本专利技术实施例的算法流程图;图2为本专利技术实施例的并行化过程流程图。具体实施方式下面结合具体实施例,进一步阐明本专利技术,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读了本专利技术之后,本领域技术人员对本专利技术的各种等价形式的修改均落于本申请所附权利要求所限定的范围。如图1所示,本专利技术一种基于Spark的并行化萤火虫算法,包括如下步骤:步骤1:随机生成初始萤火虫种群,初始化萤火虫位置和亮度,设置算法参数;步骤2:从初始萤火虫种群创建Spark的RDD,并将RDD划分为多个分区分布到Spark集群的多个节点中,每个分区对应一个萤火虫子种群;步骤3:各个萤火虫子种群在各自的节点上进行目标函数值的计算和萤火虫位置的更新,每个萤火虫子种群通过萤火虫位置的更新,寻找到局部最优解;步骤4:将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。步骤1中初始萤火虫种群包括8000只萤火虫目标函数值为设置的算法参数β0=1.0,γ=1.0,α=1.0。步骤2中通过Spark的parallelize函数转换将初始萤火虫种群为种群RDD。初始种群规模为8000个萤火虫,Spark集群有16个计算节点,种群RDD被划分为16个分区,每个分区中有500个萤火虫。步骤3中目标函数计算并行化过程如图2所示,通过Spark的mapPartitions函数将种群RDD转换为亮度RDD,并分布到集群的16个节点上并行计算目标函数值和进行位置更新。步骤4:通过Spark的collect函数触发Spark的运算流程,完成前面一系列的转换,并将完成位置更新的萤火虫收回到主节点上,将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。以上所述,仅为本专利技术中的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉该技术的人在本专利技术所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本专利技术的包含范围之内,因此,本专利技术的保护范围应该以权利要求书的保护范围为准。本文档来自技高网...
一种基于Spark的并行化萤火虫算法

【技术保护点】
一种基于Spark的并行化萤火虫算法,其特征在于,具体步骤如下:步骤1:随机生成初始萤火虫种群,初始化萤火虫位置和亮度,设置算法参数;步骤2:从初始萤火虫种群创建Spark的RDD,并将RDD划分为多个分区分布到Spark集群的多个节点中,每个分区对应一个萤火虫子种群;步骤3:各个萤火虫子种群在各自的节点上进行目标函数值的计算和萤火虫位置的更新,每个萤火虫子种群通过萤火虫位置的更新,寻找到局部最优解;步骤4:将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。

【技术特征摘要】
1.一种基于Spark的并行化萤火虫算法,其特征在于,具体步骤如下:步骤1:随机生成初始萤火虫种群,初始化萤火虫位置和亮度,设置算法参数;步骤2:从初始萤火虫种群创建Spark的RDD,并将RDD划分为多个分区分布到Spark集群的多个节点中,每个分区对应一个萤火虫子种群;步骤3:各个萤火虫子种群在各自的节点上进行目标函数值的计算和萤火虫位置的更新,每个萤火虫子种群通过萤火虫位置的更新,寻找到局部最优解;步骤4:将萤火虫子种群合并为完整的萤火虫种群,找出当前的最优解。2.根据权利要求1所述的一种基于Spark的并行化萤火虫算法,其特征在于,步骤1中初始萤火虫种群包括n只萤火虫其中是一个d维向量,表示萤火虫i在解空间中的位置;用萤火虫的绝对亮度Ii表示萤火虫所在位置处解的目标函数值,设置的算法参数包括最大吸引力β0、...

【专利技术属性】
技术研发人员:戚荣志李水艳安纪存
申请(专利权)人:河海大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1