一种基于gpu加速的蚁群算法优化方法

文档序号:6543644阅读:535来源:国知局
一种基于gpu加速的蚁群算法优化方法
【专利摘要】本发明公开了一种基于GPU加速的蚁群算法优化方法,包括以下步骤:1:初始化TSP问题定义数据,初始化蚁群参数;2:定义两个GPU内核,为路径创建内核和信息素更新内核,并初始化内核;3:路径创建内核将m只蚂蚁分别对应到GPU的m个工作组,一个工作组内设置了n个工作项,每个工作组内的n个工作项并行读取计算参数到工作组本地内存,m只蚂蚁并行进行路径创建,每只蚂蚁的路径创建又由工作组的n个工作项并行计算;4:信息素更新内核首先并行对信息素数组进行挥发操作,然后并行更新所有蚂蚁走过路径上的信息素值;5:GPU输出计算结果;本发明可以大幅缩短TSP问题求解时间、减少功耗、节约硬件成本。
【专利说明】一种基于GPU加速的蚁群算法优化方法
【技术领域】
[0001]本发明属于计算机处理【技术领域】,涉及一种基于图形处理单元(GPU, GraphicsProcessing Unit)加速的蚁群算法优化方法。
【背景技术】
[0002]蚁群算法是一种基于种群的启发式搜索算法,常用于求解优化问题的近似解。此类优化问题一般都可以转换为旅行商问题(TSP, Travel Salesman Problem)。目前TSP问题已经被证明是NP难的问题,它在运筹学和计算机科学理论中是一个非常重要的问题。蚁群算法最早应用于解决TSP问题。TSP问题的目标是在一个有向带权完全图中寻找最小权值的汉密尔顿回路,目前蚁群优化算法已应用于许多组合优化问题,包括蛋白质折叠或路由车辆的二次分配问题,很多派生的方法已经应用于实变量动力学问题,随机问题,多目标并行的实现。
[0003]GPU是一种专用的图形渲染设备。最初GPU是专用于图形处理的硬件,然而自从2006年以来,越来越多的研究人员研究了利用GPU进行通用计算的GPGPU领域,各大厂商也推出了专用的GPGPU语言,比如CUDA、OPENCL等。

【发明内容】

[0004]本发明的目的是优化原有基于CPU的计算方法,使之支持并行计算,设计出一套算法利用图像处理器(GPU)加速执行,使得蚁群算法在单个主机上求解TSP问题的计算时间最多缩短为原有方法的1/23。
[0005]本发明所采用的技术方案是:一种基于GPU加速的蚁群算法优化方法,其特征在于,包括以下步骤:
[0006]步骤1:初始化TSP问题定义数据,初始化蚁群参数;
[0007]步骤2:定义两个GPU内核,所述的两个GPU内核为路径创建内核和信息素更新内核,并初始化所述的两个GPU内核;
[0008]步骤3:路径创建内核将m只蚂蚁分别对应到GPU的m个工作组,一个工作组内设置了 η个工作项,每个工作组内的η个工作项并行读取计算参数到工作组本地内存,m只蚂蚁并行进行路径创建,每只蚂蚁的路径创建又由工作组的η个工作项并行计算;
[0009]步骤4:信息素更新内核第一次执行设置为η*η个工作项,并行对信息素数组进行挥发操作,第二次执行设置为与路径创建内核相同的工作组和工作项参数,通过原子操作方法并行更新所有蚂蚁走过路径的信息素;
[0010]步骤5:重复执行步骤3和4直到达到设定的结束条件,GPU输出计算结果。
[0011]作为优选,步骤3的具体实现包括以下子步骤:
[0012]步骤3.1:每个工作项由一个二维的编号(bid,tid)表示,其中bid为工作组编号,tid为工作组内的工作项编号;
[0013]步骤3.2:每个工作组内工作项并行读取其对应蚂蚁的η条数据,其中禁忌表、城市是否可访问数组读入到工作组本地内存,城市距离和信息素数组读入GPU全局内存;
[0014]步骤3.3:每个工作项按照式一并行计算转移概率,计算结果保存到该工作组的本地内存数组 P [n] = (P1, ρ2,.., ρη},
[0015]
【权利要求】
1.一种基于GPU加速的蚁群算法优化方法,其特征在于,包括以下步骤: 步骤1:初始化TSP问题定义数据,初始化蚁群参数; 步骤2:定义两个GPU内核,所述的两个GPU内核为路径创建内核和信息素更新内核,并初始化所述的两个GPU内核; 步骤3:路径创建内核将m只蚂蚁分别对应到GPU的m个工作组,一个工作组内设置了η个工作项,每个工作组内的η个工作项并行读取计算参数到工作组本地内存,m只蚂蚁并行进行路径创建,每只蚂蚁的路径创建又由工作组的η个工作项并行计算; 步骤4:信息素更新内核第一次执行设置为η*η个工作项,并行对信息素数组进行挥发操作,第二次执行设置为与路径创建内核相同的工作组和工作项参数,通过原子操作方法并行更新所有蚂蚁走过路径的信息素; 步骤5:重复执行步骤3和4直到达到设定的结束条件,GPU输出计算结果。
2.根据权利要求1所述的基于GPU加速的蚁群算法优化方法,其特征在于:步骤3的具体实现包括以下子步骤: 步骤3.1:每个工作项由一个二维的编号(bid,tid)表示,其中bid为工作组编号,tid为工作组内的工作项编号; 步骤3.2:每个工作组内工作项并行读取其对应蚂蚁的η条数据,其中禁忌表、城市是否可访问数组读入到工作组本地内存,城市距离和信息素数组读入GPU全局内存; 步骤3.3:每个工作项按照式一并行计算转移概率,计算结果保存到该工作组的本地内存数组 P [η] = {ρ!,ρ2,.., ρη},
3.根据权利要求2所述的基于GPU加速的蚁群算法优化方法,其特征在于:步骤3.4中所述的并行轮盘赌算法,其具体实现包括以下子步骤: 步骤3.4.1:并行计算转移概率的前缀和; 步骤3.4.2:并行计算随机值与转移概率之差的绝对值; 步骤3.4.3:采用并行归约的方法寻找绝对值最小的城市。
4.根据权利要求2所述的基于GPU加速的蚁群算法优化方法,其特征在于:步骤4的具体实现包括以下子步骤: 步骤4.1:如果传递的功能参数编号为O,则按照下述式二并行计算信息素挥发后的值
— (1- P^iJ, V(i,/) e L (式二 )其中P为小于I的正数,代表信息素挥发率,L为路径的集合; 步骤4.2:如果传递的功能参数编号为1,更新蚂蚁走过路径上的信息素,其计算公式如下:
【文档编号】G06N3/00GK103955443SQ201410147893
【公开日】2014年7月30日 申请日期:2014年4月14日 优先权日:2014年4月14日
【发明者】何发智, 周毅, 侯能 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1