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

一种人工鱼群算法的并行实现方法技术

技术编号:18810423 阅读:22 留言:0更新日期:2018-09-01 09:32
一种人工鱼群算法的并行实现方法,首先设定一个CUDA线程对应于一个人工鱼,人工鱼的群聚行为和追尾行为分别采用对应的CUDA核函数实现;方法具体包括:设定参数;在GPU端开辟内存空间;并行初始化人工鱼群;迭代开始,计算人工鱼之间的距离,并存储在全局内存;所有线程并行调用人工鱼的群聚核函数;所有线程并行调用人工鱼的追尾核函数;所有线程并行调用评估核函数;公告板更新;判断是否达到迭代终止条件,若是,则将数据从GPU内存传回CPU内存,运行结束,否则进入下一次迭代。本发明专利技术解决了人工鱼群算法在CPU上执行效率不高的问题,在不使最优解变坏的情况下提高寻优速度,提高效率,减少运行时间,获得加速比。

A parallel implementation method of artificial fish swarm algorithm

A parallel implementation method of artificial fish swarm algorithm is presented in this paper.Firstly, a CUDA thread corresponding to an artificial fish is set and the behavior of artificial fish swarm and tail-tracking are implemented by corresponding CUDA kernel functions. Calculate the distances between artificial fish and store them in global memory; all threads invoke the artificial fish's swarm kernel function in parallel; all threads invoke the artificial fish's tail-tracking kernel function in parallel; all threads invoke the evaluation kernel function in parallel; bulletin board updates; determine whether the iteration termination condition is met; if so, the data is removed from GPU memory. Return CPU memory, run to the end, otherwise enter the next iteration. The invention solves the problem of inefficient execution of artificial fish swarm algorithm on CPU, improves the searching speed, improves the efficiency, reduces the running time and obtains the acceleration ratio without deteriorating the optimal solution.

【技术实现步骤摘要】
一种人工鱼群算法的并行实现方法
本专利技术涉及一种人工鱼群算法。特别是涉及一种人工鱼群算法的并行实现方法。
技术介绍
1、人工鱼群算法简介人工鱼群算法(ArtificialFishSwarmAlgorithm,AFSA)是由李晓磊等人于2002年提出的一种新型群体智能优化算法。该算法对动物的群体智能行为进行了模拟,在一片水域中,鱼类数目最多的地方就是本水域中营养物质最多的地方,该算法根据这一特点对鱼群的觅食行为进行模拟,从而实现寻优。算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。AFSA的特点是:设计参数少、对初始值要求不高、实现简单、鲁棒性强、全局搜索能力强、含有内在并行性等等。在AFSA中,种群中的每一个个体,被称为人工鱼,代表了解决某个问题的候选方案。人工鱼可以通过聚群行为、追尾行为和觅食行为在其视觉范围内搜索解空间,并在多次迭代后收敛到一个全局最优的解决方案。假设有N条人工鱼,其中一条人工鱼的状态Xi=(x1,x2,…,xn),其中xi(i=1,2,…,n)为寻优变量,Y=f(X)表示适应度函数(水中的食物浓度),di,j=‖Xi-Xj‖表示人工鱼之间的距离,Visual表示人工鱼的感知范围,Step表示人工鱼的步长,δ为人工鱼的拥挤度因子,try_number表示尝试次数,(0,1)范围内的随机数用Rand()表示。则AFSA的基本步骤表示如下:(1)觅食行为在解决极大值问题时,假设当前人工鱼的位置为Xi,适应度函数为Xi,随机选择感知范围内的一个位置Xj,对应的适应度函数为Yj,如果Yi<Yj,则像Xj移动一步;否则尝试try_number一次后仍不满足前进条件则随机移动一步,觅食行为可以表示为:(2)聚群行为当前人工鱼的位置为Xi,适应度函数为Yi,搜索其范围内人工鱼数目nf及中心位置Xc。若Yc/nf>δYi,表明中心位置食物源丰富而且不拥挤,则向中心位置移动一步;反之,立即执行觅食行为。群聚行为可以表示为:(3)追尾行为当前人工鱼搜索其视野范围内食物浓度最大位置的鱼Xmax,若Ymax/nf>δYi,则向这个位置移动一步;否则,立即执行觅食行为。追尾行为可以表示如下:(4)公告板更新把状态最优的人工鱼记录下来,以保证输出为最优解。自AFSA被提出以来,已成功地应用于多个科学和工程领域,如图像压缩、特征选择、背包问题等。然而,该算法还有以下缺点:前期收敛速度快,但后期收敛速度慢;寻优结果精度不高。像其他群体智能算法一样,随着问题维度的提高以及鱼群规模的增大,AFSA的寻优时间会急剧增大,算法效率迅速下降。经典AFSA算法和其他改进的AFSA算法由于是在CPU上串行执行的,所以并没有很好地解决寻优时间过长的问题。2、GPU和CUDA简介图形处理单元(GPU)从最初能够瞬时生成图像输出的专业图形处理器,发展到显示单元,已经成为人们在进行超高速数据处理时优先选择的技术手段。在过去几年中,因其在执行大规模并行计算中所具有的优越性能和超高效率,GPU越来越广泛地被应用到各种并行计算中。GPU并行编程的核心在于线程,一个线程就是程序中的一个单一指令流,一个个线程组合在一起就构成了并行计算网格,成为了并行的程序。统一计算设备架构(ComputeUnifiedDeviceArchitecture,CUDA)是由NVIDIA公司创立的基于他们公司生产的图形处理器(GPU)的一个并行计算平台和编程模型,通过CUDA,GPU的并行计算资源被更加方便和充分地利用起来。随着技术的发展,GPU被越来越多地应用于并行计算领域,通过CUDA编程,对GPU并行资源的开发和利用效率越来越高。
技术实现思路
本专利技术所要解决的技术问题是,提供一种能够解决人工鱼群算法在CPU上执行效率不高和耗时问题的人工鱼群算法的并行实现方法。本专利技术所采用的技术方案是:一种人工鱼群算法的并行实现方法,首先设定一个CUDA线程对应于一个人工鱼,人工鱼的群聚行为和追尾行为分别采用对应的CUDA核函数实现,对于每种行为的核函数,所有线程并行执行;方法包括如下步骤:1)设定相关参数,包括人工鱼群规模,最大迭代次数,人工鱼步长以及觅食尝试次数,线程数和线程块的大小;2)在GPU端开辟内存空间;3)对人工鱼群并行初始化;4)迭代更新开始,计算不同的人工鱼之间的欧式距离,然后存储在全局内存中;5)所有线程并行调用人工鱼的群聚行为核函数,在人工鱼的群聚行为核函数中,人工鱼的觅食行为被当作人工鱼的群聚行为的缺省,如果人工鱼的群聚行为不满足群聚行为的条件则执行人工鱼的觅食行为;6)所有线程并行调用人工鱼的追尾核函数,在人工鱼的追尾行为核函数中,人工鱼的觅食行为被当作人工鱼的追尾行为的缺省,如果人工鱼的追尾行为不满足追尾行为的条件则执行人工鱼的觅食行为;7)所有线程并行调用评估核函数,采用评估核函数分别对每一条人工鱼的群聚行为和追尾行为所产生的结果进行比较,并将每一条人工鱼适应度好的结果作为该人工鱼本次迭代的位置;8)进行公告板更新,即采用并行规约技术找到本次迭代全局最优位置和最差位置的人工鱼,然后把本次迭代的全局最优人工鱼的位置和上次迭代全局最优人工鱼的位置进行比较,把适应度好的位置作为本次迭代的全局最优位置,并记录下来;9)判断是否达到迭代终止条件,若是,则跳转至步骤10);否则,跳转至步骤4);10)将达到迭代终止条件时的全局最优位置从GPU内存传回CPU内存,运行结束。步骤3)所述的初始化是给每一条人工鱼随机分配一个初始位置。步骤5)所述的人工鱼的群聚行为核函数表示如下:其中,当前人工鱼的位置为Xi=(x1,x2,…,xn),其中xi(i=1,2,…,n)为寻优变量,适应度函数为Yi,搜索其范围内人工鱼数目nf及中心位置Xc,适应度函数为Yc,Step表示人工鱼的步长,δ为人工鱼的拥挤度因子,(0,1)范围内的随机数用Rand()表示,Xi/next是指第i条人工鱼执行人工鱼的群聚行为之后的位置,prey(Xi)是指第i条人工鱼执行人工鱼的觅食行为,觅食行为可以表示为:其中,Xj是感知范围内的一个随机位置,对应的适应度函数为Yj。步骤6)所述的人工鱼的追尾核函数表示如下:其中,当前人工鱼的位置为Xi=(x1,x2,…,xn),其中xi(i=1,2,…,n)为寻优变量,适应度函数为Yi,搜索其范围内人工鱼数目nf及其视野范围内在食物浓度最大处的鱼的位置Xmax,适应度函数为Ymax,Step表示人工鱼的步长,δ为人工鱼的拥挤度因子,(0,1)范围内的随机数用Rand()表示,Xi/next是指第i条人工鱼执行人工鱼的追尾行为之后的位置,prey(Xi)是指第i条人工鱼执行人工鱼的觅食行为,觅食行为可以表示为:其中,Xj是感知范围内的一个随机位置,对应的适应度函数为Yj。步骤7)所述的评估核函数,是Weierstrass函数,或是Sphere函数,或是Rosenbrock函数,或是Ackley's函数。本专利技术的一种人工鱼群算法的并行实现方法,解决了人工鱼群算法在CPU上执行效率不高和耗时问题,在本文档来自技高网
...

【技术保护点】
1.一种人工鱼群算法的并行实现方法,其特征在于,首先设定一个CUDA线程对应于一个人工鱼,人工鱼的群聚行为和追尾行为分别采用对应的CUDA核函数实现,对于每种行为的核函数,所有线程并行执行;方法包括如下步骤:1)设定相关参数,包括人工鱼群规模,最大迭代次数,人工鱼步长以及觅食尝试次数,线程数和线程块的大小;2)在GPU端开辟内存空间;3)对人工鱼群并行初始化;4)迭代更新开始,计算不同的人工鱼之间的欧式距离,然后存储在全局内存中;5)所有线程并行调用人工鱼的群聚行为核函数,在人工鱼的群聚行为核函数中,人工鱼的觅食行为被当作人工鱼的群聚行为的缺省,如果人工鱼的群聚行为不满足群聚行为的条件则执行人工鱼的觅食行为;6)所有线程并行调用人工鱼的追尾核函数,在人工鱼的追尾行为核函数中,人工鱼的觅食行为被当作人工鱼的追尾行为的缺省,如果人工鱼的追尾行为不满足追尾行为的条件则执行人工鱼的觅食行为;7)所有线程并行调用评估核函数,采用评估核函数分别对每一条人工鱼的群聚行为和追尾行为所产生的结果进行比较,并将每一条人工鱼适应度好的结果作为该人工鱼本次迭代的位置;8)进行公告板更新,即采用并行规约技术找到本次迭代全局最优位置和最差位置的人工鱼,然后把本次迭代的全局最优人工鱼的位置和上次迭代全局最优人工鱼的位置进行比较,把适应度好的位置作为本次迭代的全局最优位置,并记录下来;9)判断是否达到迭代终止条件,若是,则跳转至步骤10);否则,跳转至步骤4);10)将达到迭代终止条件时的全局最优位置从GPU内存传回CPU内存,运行结束。...

【技术特征摘要】
1.一种人工鱼群算法的并行实现方法,其特征在于,首先设定一个CUDA线程对应于一个人工鱼,人工鱼的群聚行为和追尾行为分别采用对应的CUDA核函数实现,对于每种行为的核函数,所有线程并行执行;方法包括如下步骤:1)设定相关参数,包括人工鱼群规模,最大迭代次数,人工鱼步长以及觅食尝试次数,线程数和线程块的大小;2)在GPU端开辟内存空间;3)对人工鱼群并行初始化;4)迭代更新开始,计算不同的人工鱼之间的欧式距离,然后存储在全局内存中;5)所有线程并行调用人工鱼的群聚行为核函数,在人工鱼的群聚行为核函数中,人工鱼的觅食行为被当作人工鱼的群聚行为的缺省,如果人工鱼的群聚行为不满足群聚行为的条件则执行人工鱼的觅食行为;6)所有线程并行调用人工鱼的追尾核函数,在人工鱼的追尾行为核函数中,人工鱼的觅食行为被当作人工鱼的追尾行为的缺省,如果人工鱼的追尾行为不满足追尾行为的条件则执行人工鱼的觅食行为;7)所有线程并行调用评估核函数,采用评估核函数分别对每一条人工鱼的群聚行为和追尾行为所产生的结果进行比较,并将每一条人工鱼适应度好的结果作为该人工鱼本次迭代的位置;8)进行公告板更新,即采用并行规约技术找到本次迭代全局最优位置和最差位置的人工鱼,然后把本次迭代的全局最优人工鱼的位置和上次迭代全局最优人工鱼的位置进行比较,把适应度好的位置作为本次迭代的全局最优位置,并记录下来;9)判断是否达到迭代终止条件,若是,则跳转至步骤10);否则,跳转至步骤4);10)将达到迭代终止条件时的全局最优位置从GPU内存传回CPU内存,运行结束。2.根据权利要求1所述的一种人工鱼群算法的并行实现方法,其特征在于,步骤3)所述的初始化是给每一条...

【专利技术属性】
技术研发人员:张涛胡孟阳安鑫祺
申请(专利权)人:天津大学
类型:发明
国别省市:天津,12

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

1