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