基于个体‑种群的智能优化算法在Spark上的通用并行化方法技术

技术编号:17407909 阅读:27 留言:0更新日期:2018-03-07 05:27
本发明专利技术公开了基于个体‑种群的智能优化算法在Spark上的通用并行化方法,包括封装个体的抽象基类、种群的抽象基类和中间数据格式类;设定个体的实现类和种群的实现类;初始化种群、个体和全局最优个体;初始化环境上下文,生成常量信息的广播量并广播;并行化生成种群分布式数据集;每个种群经过独自进化、种群适应度评估后返回适应度最优个体;找出当代最优个体和更新全局最优个体;并行化生成中间交换数据分布式数据集;进行种群之间的个体交换等步骤。本发明专利技术的有益效果在于,针对基于个体‑种群的智能优化算法,在Spark平台上提出了一种通用型的并行化方法,使原本运行在单机上的算法分布到不同的计算机上同时运行,以减少运行时间,提升效率。

Based on the individual population intelligent optimization algorithm on Spark universal parallel method

【技术实现步骤摘要】
基于个体-种群的智能优化算法在Spark上的通用并行化方法
本专利技术涉及分布式计算
,特别是一种基于个体-种群的智能优化算法在Spark上的通用并行化方法。
技术介绍
有一类智能优化算法是通过模仿自然界的生物行为或模拟物理现象而来,该类算法能在可接收的开销下(包括时间和空间)给出待解决问题的一个较好质量的可行解。该类智能优化算法也称为元启发式算法,比较常用的有遗传算法、粒子群算法、蚁群算法、人工蜂群算法等。相比于传统的优化算法,该类算法理论上不是很完善,不能确保找到问题的最优解,但该类算法适应性广,寻解开销能控制在可接受的范围内,大量应用在实际的工程领域中。该类智能优化算法有一个显著且共通的特点,均有个体和种群的概念。种群是个体的集合,而个体代表了问题的一个解,通过个体的一些行为或是个体之间的相互协作,促使整个种群往更好的方向发展、演化,从而寻找到问题的更优解。随着问题的复杂度增大、规模增长,在单机环境下利用该类智能优化算法求解问题的运行耗时也会随之增长。为了提高该类算法的执行效率,减少运行时间,满足实际的应用需要,可以对算法本身进行改造以提高性能,但不同的算法其改造方式不同,即使是同一算法针对不同的问题也有各种各样的变种,难度较大。另一种方法就是对算法进行并行化处理,使原本运行在单机上的算法分布到不同的计算机上同时运行,减少运行时间,提升效率。随着云计算、大数据的蓬勃发展,各种各样的分布式计算框架被提出,Spark平台就是其中之一,为并行化奠定了底层基础。
技术实现思路
本专利技术的目的是提供一种基于个体-种群的智能优化算法在Spark上的通用并行化方法。实现本专利技术目的的技术方案如下:基于个体-种群的智能优化算法在Spark上的通用并行化方法,包括步骤:(1)封装个体的抽象基类BaseIndividual,封装种群的抽象基类BasePopulation,封装种群之间用于个体交换的中间数据格式类ExchangeData;(2)设定所述智能优化算法的个体的实现类SomeIndividual,设定所述智能优化算法的种群的实现类SomePopulation;所述SomeIndividual继承自BaseIndividual,SomePopulation继承自BasePopulation;(3)初始化M个种群,M≥2;初始化每个种群中N个个体,N≥100;初始化全局最优个体gbest,初始化最大迭代次数MAX_T,设当前迭代次数t=1;(4)初始化环境上下文SparkContext,调用SparkContext.broadcast()接口生成常量信息的广播量,广播到Spark平台上的所有计算节点内;(5)调用SparkContext.parallelize()接口将M个种群对象并行化,生成对应的种群分布式数据集PopulationRDD;(6)调用PopulationRDD.map()接口执行并行计算;所述PopulationRDD.map()接口中,每个种群依次经过独自进化、种群适应度评估后返回该种群中适应度最优的前K个个体,其中K≥2;(7)调用PopulationRDD.collect()接口,收集每个种群返回的K个个体,从中找出当代最优个体cbest;若cbest的适应度优于gbest,则用cbest更新gbest;(8)对每个种群返回的K个个体进行封装,生成M个用于个体交换的中间数据,再对M个中间数据进行打乱混排,然后调用SparkContext.parallelize()接口对其进行并行化,生成对应的个体中间交换数据分布式数据集ExchangeRDD;(9)调用PopulationRDD.zipPartitions()接口并传入ExchangeRDD,进行种群之间的个体交换;(10)t=t+1,若t<MAX_T,转到步骤(6),否则退出循环,输出gbest。本专利技术的有益效果在于,针对基于个体-种群的智能优化算法,在Spark平台上提出了一种通用型的并行化方法,使原本运行在单机上的算法分布到不同的计算机上同时运行,以减少运行时间,提升效率。附图说明图1是本专利技术的流程图;图2是本专利技术具体实施例中的BaseIndividual类图;图3是本专利技术具体实施例中的BasePopulation类图;图4是本专利技术具体实施例中的ExchangeData类图;图5是本专利技术具体实施例中的GAIndividual类图;图6是本专利技术具体实施例中的GAPopulation类图。具体实施方式下面结合附图对本专利技术作进一步说明。如图1所示,基于个体-种群的智能优化算法在Spark上的通用并行化方法,包括步骤:(1)封装个体的抽象基类BaseIndividual,封装种群的抽象基类BasePopulation,封装种群之间用于个体交换的中间数据格式类ExchangeData;(2)设定所述智能优化算法的个体的实现类SomeIndividual,设定所述智能优化算法的种群的实现类SomePopulation;所述SomeIndividual继承自BaseIndividual,SomePopulation继承自BasePopulation;(3)初始化M个种群,M≥2;初始化每个种群中N个个体,N≥100;初始化全局最优个体gbest,初始化最大迭代次数MAX_T,设当前迭代次数t=1;(4)初始化环境上下文SparkContext,调用SparkContext.broadcast()接口生成常量信息的广播量,广播到Spark平台上的所有计算节点内;(5)调用SparkContext.parallelize()接口将M个种群对象并行化,生成对应的种群分布式数据集PopulationRDD;(6)调用PopulationRDD.map()接口执行并行计算;所述PopulationRDD.map()接口中,每个种群依次经过独自进化、种群适应度评估后返回该种群中适应度最优的前K个个体,其中K≥2;(7)调用PopulationRDD.collect()接口,收集每个种群返回的K个个体,从中找出当代最优个体cbest;若cbest的适应度优于gbest,则用cbest更新gbest;(8)对每个种群返回的K个个体进行封装,生成M个用于个体交换的中间数据,再对M个中间数据进行打乱混排,然后调用SparkContext.parallelize()接口对其进行并行化,生成对应的个体中间交换数据分布式数据集ExchangeRDD;(9)调用PopulationRDD.zipPartitions()接口并传入ExchangeRDD,进行种群之间的个体交换;(10)t=t+1,若t<MAX_T,转到步骤(6),否则退出循环,输出gbest。上述步骤中,步骤(1)中,类BaseIndividual有4个属性,分别是:适应度最大值MAX_FITNESS=999999.0,适应度最小值MIN_FITNESS=-999999.0,该个体的当前适应度值fitness,问题类型标记isMinProblem。若isMinProblem=true,表示求解的是最小化问题,否则求解的是最大化问题。个体初始化时,若isMinProblem本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201711072393.html" title="基于个体‑种群的智能优化算法在Spark上的通用并行化方法原文来自X技术">基于个体‑种群的智能优化算法在Spark上的通用并行化方法</a>

【技术保护点】
基于个体‑种群的智能优化算法在Spark上的通用并行化方法,其特征在于,包括步骤:(1)封装个体的抽象基类BaseIndividual,封装种群的抽象基类BasePopulation,封装种群之间用于个体交换的中间数据格式类ExchangeData;(2)设定所述智能优化算法的个体的实现类SomeIndividual,设定所述智能优化算法的种群的实现类SomePopulation;所述SomeIndividual继承自BaseIndividual,SomePopulation继承自BasePopulation;(3)初始化M个种群,M≥2;初始化每个种群中N个个体,N≥100;初始化全局最优个体gbest,初始化最大迭代次数MAX_T,设当前迭代次数t=1;(4)初始化环境上下文SparkContext,调用SparkContext.broadcast()接口生成常量信息的广播量,广播到Spark平台上的所有计算节点内;(5)调用SparkContext.parallelize()接口将M个种群对象并行化,生成对应的种群分布式数据集PopulationRDD;(6)调用PopulationRDD.map()接口执行并行计算;所述PopulationRDD.map()接口中,每个种群依次经过独自进化、种群适应度评估后返回该种群中适应度最优的前K个个体,其中K≥2;(7)调用PopulationRDD.collect()接口,收集每个种群返回的K个个体,从中找出当代最优个体cbest;若cbest的适应度优于gbest,则用cbest更新gbest;(8)对每个种群返回的K个个体进行封装,生成M个用于个体交换的中间数据,再对M个中间数据进行打乱混排,然后调用SparkContext.parallelize()接口对其进行并行化,生成对应的个体中间交换数据分布式数据集ExchangeRDD;(9)调用PopulationRDD.zipPartitions()接口并传入ExchangeRDD,进行种群之间的个体交换;(10)t=t+1,若t<MAX_T,转到步骤(6),否则退出循环,输出gbest。...

【技术特征摘要】
1.基于个体-种群的智能优化算法在Spark上的通用并行化方法,其特征在于,包括步骤:(1)封装个体的抽象基类BaseIndividual,封装种群的抽象基类BasePopulation,封装种群之间用于个体交换的中间数据格式类ExchangeData;(2)设定所述智能优化算法的个体的实现类SomeIndividual,设定所述智能优化算法的种群的实现类SomePopulation;所述SomeIndividual继承自BaseIndividual,SomePopulation继承自BasePopulation;(3)初始化M个种群,M≥2;初始化每个种群中N个个体,N≥100;初始化全局最优个体gbest,初始化最大迭代次数MAX_T,设当前迭代次数t=1;(4)初始化环境上下文SparkContext,调用SparkContext.broadcast()接口生成常量信息的广播量,广播到Spark平台上的所有计算节点内;(5)调用SparkContext.parallelize()接口将M个种群对象并行...

【专利技术属性】
技术研发人员:邢焕来周芯宇杨慧李可叶佳
申请(专利权)人:西南交通大学
类型:发明
国别省市:四川,51

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

1