CN101464965A - 一种基于tbb的多核并行蚁群设计方法 - Google Patents
一种基于tbb的多核并行蚁群设计方法 Download PDFInfo
- Publication number
- CN101464965A CN101464965A CNA2009100771198A CN200910077119A CN101464965A CN 101464965 A CN101464965 A CN 101464965A CN A2009100771198 A CNA2009100771198 A CN A2009100771198A CN 200910077119 A CN200910077119 A CN 200910077119A CN 101464965 A CN101464965 A CN 101464965A
- Authority
- CN
- China
- Prior art keywords
- ant
- parallel
- tbb
- class
- masterplate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于TBB的多核并行蚁群设计方法,利用TBB支持多核处理器并行计算的优势来设计并行蚁群算法,即采用TBB面向对象的并行优化方法,通过编写相关的模版类,优化蚁群算法中最为耗时的循环迭代和循环赋值,将每个蚂蚁的求解过程分配到不同线程,充分利用计算机多核的资源优势。在基本不改变串行蚁群算法的基础上实现了算法的并行化,保持了原有的设计结构,并且采用串行计算和并行计算相结合的方法对蚁群算法中的信息素进行更新。并行优化计算过程简单灵活,易于操作,而且符合计算机技术向着多处理器及多核架构的发展趋势,提高了算法的运行时间效率,为大规模组合优化工程问题的实时解算提供了可能性。
Description
技术领域
本发明涉及一种基于TBB(Thread Building Blocking)的多核并行蚁群设计方法,属于计算机仿真与算法优化领域。
背景技术
离散系统的组合优化问题是实际生产中经常遇到的问题,比如任务分配、作业调度、路径规划、网络路由、数据挖掘、生命科学计算等问题,这些问题随着规模的扩大,往往造成计算规模的迅速增加,被称为NP复杂性难题。
自从Dorigo M提出蚁群算法以来,该算法在解决这类型问题时取得了比较好的效果,但如果问题规模继续扩大,基于单CPU的串行蚁群算法所消耗的时间将迅速增长,也往往不能满足人们的实时计算需求。如何获取一种简单适用的方法来提高蚁群算法的运行时间效率将对实际工程应用有重要意义。
提高蚁群算法运行效率的一种有效方法是并行化设计,现有的并行蚁群算法多数是基于MPI(Message Passing Interface)实现的,但MPI设计并行算法相对繁琐,尤其在处理数据共享和数据交换过程中,因此通常只适用于专业编程人员在计算机集群上设计的并行蚁群算法。
发明内容
本发明提供一种基于TBB的多核并行蚁群设计方法,利用TBB并行计算平台设计了一种简单适用的多核并行蚁群方法。
蚁群算法本身具有极高的并行性,所有蚂蚁独立,并行构建问题的可行解,每个蚂蚁在构建解的过程中只与当前的信息素和启发函数有关,只有在所有蚂蚁均完成了可行解的构造之后,信息素更新时存在蚂蚁间的通信。因此可以将各个蚂蚁构建可行解的过程分配到不同的线程中。而且蚁群算法中消耗时间、限制效率的主要部分在于循环迭代计算和循环赋值,特别是当问题规模扩大时,消耗时间急速增加,这些循环迭代计算和循环赋值相对独立,不存在循环依赖或循环依赖较弱。
本发明利用TBB支持多核处理器并行计算的优势来设计并行蚁群算法,即采用TBB面向对象的并行优化方法,通过相关的模版类,优化蚁群算法中最为耗时的循环迭代和循环赋值,将每个蚂蚁的求解过程分配到不同线程,充分利用计算机多核的资源优势,在基本不改变串行蚁群算法的基础上实现了算法的并行化,保持了原有的设计结构,并且采用串行和并行相结合的方法对蚁群算法中的信息素进行更新。
本发明提供的一种基于TBB的多核并行蚁群设计方法,通过如下步骤来实现:
步骤1:TBB并行计算平台的安装与环境设置。
步骤2:编写并行计算的模版类,将蚁群算法中并行度高的各个部分分离出来,根据需要选择合适的TBB模版,将其利用TBB设计成面向对象的模版类,包括将循环迭代改写为类、参数变量的特殊处理等。
步骤3:TBB任务调度的初始化。
步骤4:调用并行计算的模版类。
步骤5:得到并行计算结果,结束TBB任务调度。
所述步骤2中编写模版类由如下步骤完成:
(a)设置问题规模;
利用TBB中parallel_for并行模版编写节点间距离计算和初始信息素设置的模版类;并行模版中编写计算两个节点间距离的类ComputeDistance。类ComputeDistance中包含节点数据结构、operator接口和一个构造函数。在构造函数中通过对象参数来初始化节点数据结构,在operator接口中计算任意两个节点间的距离,通过优化后的双重循环实现,外循环的循环次数由调用parallel_for时的传入参数确定,在内循环中加入条件判断减少重复计算;
(b)初始化各个蚂蚁。首先设置蚂蚁数目,将蚂蚁随机放置到各个节点;然后并行初始化各个蚂蚁,设置蚂蚁路径的禁忌表。
利用TBB中parallel_for并行模版编写初始化各个蚂蚁的模版类;在并行模版中编写初始化蚂蚁的类InitializeAnts。类InitializeAnts中包含蚂蚁数据结构,operator接口和一个构造函数。在构造函数中通过对象参数来初始化蚂蚁数据结构,在operator接口中通过优化后的双重循环实现蚂蚁的初始化。外循环将蚂蚁随机放置在各个节点,设置蚂蚁路径长度为零,循环次数由调用parallel_for时的传入参数确定,内循环清空蚂蚁路径禁忌表;
(c)各个蚂蚁搜寻遍历路径,编写各个蚂蚁搜寻路径的模版类。蚂蚁根据概率选择添加下一个节点;根据当前节点,修改每个蚂蚁的路径禁忌表,计算当前路径长度。
利用TBB中parallel_reduce并行模版编写各个蚂蚁搜寻路径的模版类;在并行模版中编写各个蚂蚁独立搜寻路径的类SimulateAnt。类SimulateAnt包含蚂蚁数据结构、operator接口、join接口及两个构造函数①,②。构造函数①通过对象参数来初始化蚂蚁数据结构,并设置蚂蚁全部完成遍历的标志为假;构造函数②从整个任务空间中分离并构建子任务,支持join接口中的合并操作。在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_reduce时的传入参数确定,使之能够支持循环体内任务的并行划分、循环体内实现蚂蚁寻找下一个节点、蚂蚁路径禁忌表的修改及蚂蚁路径长度的更新,其中蚂蚁寻找下一节点是通过调用GetNextCity()函数来实现,该函数根据状态转移概率公式计算蚂蚁选择节点的转移概率,得到蚂蚁访问的下一个节点。join接口将多个线程中的各个蚂蚁遍历节点的结果进行合并,返回是否所有蚂蚁都完成了遍历的标志;
上述实现过程中需要注意的是并行优化循环体中的代码要尽量使用局部变量或者类SimulateAnt的成员变量,而不能使用全局变量,否则不仅不能够加快运行速度,反而会造成运算时间的倍增;
(c)判断蚂蚁状态。如果存在未遍历完所有节点的蚂蚁,则跳转到步骤(c),继续重复蚂蚁搜寻路径过程,否则进行下一步即步骤(e);
(d)比较各个蚂蚁的路径长度,选择最优路径;
利用TBB中parallel_for并行模版编写比较各个蚂蚁路径长度的模版类;在并行模版中编写寻找蚁群中最优路径的类ComputeBestPath。类ComputeBestPath包含蚂蚁数据结构、当前最优路径变量、operator接口和一个构造函数。在构造函数中通过对象参数来初始化蚂蚁数据结构和当前最优路径变量,在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_for时的传入参数确定,各个蚂蚁的路径与当前蚁群最优路径比较后,更新当前最优路径。
(e)并行计算节点间路径上的信息素残留量,串行计算蚂蚁产生的信息增量,更新路径上的信息素。
利用TBB中parallel_for并行模板编写更新路径上的信息素的模版类;模版中编写两个节点间信息素更新的类UpdatePheromone。类UpdatePheromone包含operator接口和一个构造函数,构造函数是一个空实现,在operator接口中包含TBB规范的双重循环,计算任意两个节点间残留的信息素。节点间的信息素是残留的信息素与信息素增量的叠加,其中信息素增量的计算需要各个蚂蚁之间的通信,为了避免并行过程中频繁的通信,不使用TBB并行优化,而采用串行计算。
上述实现过程需要注意的是信息素更新既存在循环依赖部分,也存在循环独立部分,其中计算残留信息素部分循环独立,适合利用TBB改写为并行模版类。但计算信息素增量部分存在各个蚂蚁的通信,以便用来交换信息素的修改信息,若改为并行模版会使得通信量过大反而效率降低,因此这一部分采用串行计算方法。
本发明通过并行和串行相结合的方法,对并行设计的残留信息素部分,串行设计的信息素增量部分进行串,并行计算来实现信息素更新。
本发明的优点在于:
(1)提高了算法的运行时间效率,为大规模组合优化工程问题的实时解算提供了可能性;
(2)并行优化计算过程简单灵活,易于操作,而且符合计算机技术向着多处理器及多核架构的发展趋势;
(3)充分利用多核处理优势,提高运行效率,减少资源浪费。
附图说明
图1为本发明基于TBB的多核并行蚁群设计方法流程图;
图2为编写并行计算的模版类的方法流程图;
图3为蚁群算法并行实现的示意图;
图4为蚁群算法的串行实现与本发明提出的TBB并行实现的运行时间曲线;
图5为蚁群算法的串行实现CPU使用记录图;
图6为本发明提出的TBB并行蚁群实现CPU使用记录图。
具体实施方式
本发明利用TBB并行计算平台设计了一种简单适用的多核并行蚁群设计方法。
下面以解决大规模TSP问题为例,对本发明的一种基于TBB的多核并行蚁群设计方法进一步的说明。
TSP问题是指给定n个城市,遍历每个城市且仅遍历一次的最短封闭路径。
如图1所示,应用本发明的方法可以按照如下步骤完成:
步骤一:TBB并行计算平台的安装与环境设置;
步骤二:编写并行计算的模版类。将蚁群算法中并行度高的各个部分分离出来,根据需要选择合适的TBB模版,将其利用TBB设计成面向对象的模版类,包括将循环迭代改写为类、参数变量的特殊处理等;
为了实现本发明的并行方法,本实施例首先编写5个并行计算的模版类,分别为:
1)城市间距离计算和初始信息素设置的模版类;
2)初始化各个蚂蚁的模版类;
3)各个蚂蚁搜寻路径的模版类;
4)比较各个蚂蚁路径长度的模版类;
5)更新路径上的信息素的模版类。
步骤三:初始化TBB中的任务调度。
由于TBB定义了任务的概念,在初始化TBB任务调度时,由任务调度器对象task_scheduler_init实现多任务的分配和并行计算,支持对多线程的划分。
步骤四:调用所编写的并行计算的模版类。
在调用并行计算的模版类时,由模版类参数指定循环处理的数值范围以及任务粒度参数。任务粒度参数决定了任务划分的粒度,如果粒度太大,不能充分提高运行效率;如果粒度太小,过度的并行化任务分配造成的开销反而降低了运行效率。在无法获得合适任务粒度情况下可以使用TBB提供的自动分配函数auto_partitioner()帮助用户设置合适的任务粒度参数。
步骤五:得到并行计算结果;结束TBB任务调度。
所述步骤二中五个模版类具体由如下步骤来完成:
a、设置问题规模,即城市的数目,利用TBB中parallel_for并行模版编写城市间距离计算和初始信息素设置的模版类;并行模版中编写计算两个城市间距离的类ComputeDistance。类ComputeDistance中包含城市数据结构、operator接口和一个构造函数。在构造函数中通过对象参数来初始化城市数据结构,在operator接口中计算任意两个城市间的距离,通过优化后的双重循环实现,外循环的循环次数由调用parallel_for时的传入参数确定,在内循环中加入条件判断减少重复计算。
b、初始化各个蚂蚁。
首先设置蚂蚁数目,将蚂蚁随机放置到各个城市;然后并行初始化各个蚂蚁,设置蚂蚁路径的禁忌表。
利用TBB中parallel_for并行模版编写初始化各个蚂蚁的模版类;在并行模版中编写初始化蚂蚁的类InitializeAnts。类InitializeAnts中包含蚂蚁数据结构,operator接口和一个构造函数。在构造函数中通过对象参数来初始化蚂蚁数据结构,在operator接口中通过优化后的双重循环实现蚂蚁的初始化。外循环将蚂蚁随机放置在各个城市,设置蚂蚁路径长度为零,循环次数由调用parallel_for时的传入参数确定,内循环清空蚂蚁路径禁忌表。
c、各个蚂蚁搜寻遍历路径,编写各个蚂蚁搜寻路径的模版类。蚂蚁根据概率选择下一个城市节点,根据当前城市节点,修改每个蚂蚁的路径禁忌表,计算当前路径长度。这一步是限制蚁群算法运行效率的主要部分,因此采用TBB进行并行设计对提高算法效率至关重要。
利用TBB中parallel_reduce并行模版编写各个蚂蚁搜寻路径的模版类。在并行模版中编写各个蚂蚁独立搜寻路径的类SimulateAnt。类SimulateAnt包含蚂蚁数据结构、operator接口、join接口及两个构造函数①,②。构造函数①通过对象参数来初始化蚂蚁数据结构,并设置蚂蚁全部完成遍历的标志为假;构造函数②从整个任务空间中分离并构建子任务,支持join接口中的合并操作。在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_reduce时的传入参数确定,使之能够支持循环体内任务的并行划分、循环体内实现蚂蚁寻找下一个城市节点、蚂蚁路径禁忌表的修改及蚂蚁路径长度的更新,其中蚂蚁寻找下一城市节点是通过调用GetNextCity()函数来实现,该函数根据状态转移概率公式计算蚂蚁选择城市的转移概率,得到蚂蚁访问的下一个城市节点。join接口将多个线程中的各个蚂蚁遍历城市的结果进行合并,返回是否所有蚂蚁都完成了遍历的标志。
上述实现过程中需要注意的是并行优化循环体中的代码要尽量使用局部变量或者类SimulateAnt的成员变量,而不能使用全局变量,否则不仅不能够加快运行速度,反而会造成运算时间的倍增。
d、判断蚂蚁状态。
如果存在未遍历完所有城市的蚂蚁,则跳转到步骤c,继续重复蚂蚁搜寻路径过程,否则进行下一步即步骤e;
e、比较各个蚂蚁的路径长度,选择最优路径。
利用TBB中parallel_for并行模版编写比较各个蚂蚁路径长度的模版类。在并行模版中编写寻找蚁群中最优路径的类ComputeBestPath。类ComputeBestPath包含蚂蚁数据结构、当前最优路径变量、operator接口和一个构造函数。在构造函数中通过对象参数来初始化蚂蚁数据结构和当前最优路径变量,在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_for时的传入参数确定,各个蚂蚁的路径与当前蚁群最优路径比较后,更新当前最优路径。
f、并行计算城市间路径上的信息素残留量,串行计算蚂蚁产生的信息增量,更新路径上的信息素。
利用TBB中parallel_for并行模板编写更新路径上的信息素的模版类。并行模版中编写两个城市间信息素更新的类UpdatePheromone。类UpdatePheromone包含operator接口和一个构造函数,构造函数是一个空实现,在operator接口中包含TBB规范的双重循环,计算任意两个城市间残留的信息素。城市间的信息素是残留的信息素与信息素增量的叠加,其中信息素增量的计算需要各个蚂蚁之间的通信,为了避免并行过程中频繁的通信,不使用TBB并行优化,而采用串行计算。
上述实现过程需要注意的是信息素更新既存在循环依赖部分,也存在循环独立部分,其中计算残留信息素部分循环独立,适合利用TBB改写为并行模版类。但计算信息素增量部分存在各个蚂蚁的通信,以便用来交换信息素的修改信息,若改为并行模版会使得通信量过大反而效率降低,因此这一部分采用串行计算方法。
步骤f中所述更新路径上的信息素按下式更新:
τij(t+n)=(1-ρ)·τij(t)+Δτij
其中ρ(0<ρ<1)为信息素蒸发系数,1-ρ表示信息素残留因子,Δτij表示本次遍历中路径(i,j)上的信息素增量,表示第k只蚂蚁在本次遍历中留在路径(i,j)上的信息素量。Q表示信息素强度,Lk表示第k只蚂蚁在本次遍历中所走路径的总长度。
通过上述算法的描述可以看出,算法本身具有极高的并行性,如图3所示,图中每一个圆圈标记代表一个蚂蚁,可见,所有蚂蚁独立,并行搜索路径中的各个城市,每个蚂蚁的路径选择只与当前路径中的信息素和启发函数有关,只有在所有蚂蚁均完成了各个城市的遍历之后,对各路径上信息素更新时存在蚂蚁间的通信。因此可以将各个蚂蚁寻找路径过程分配到不同的线程中。
本发明蚁群算法描述:在算法的初始时刻,将m只蚂蚁随机放在n座城市,开始时各路径上的信息素量均相等,设τij(0)=C(C为一较小常数),随后,每只蚂蚁根据路径上残留的信息素量和启发式信息(通常为两城市间的距离)独立地选择下一座城市,在时刻t,蚂蚁k从城市i转移到城市j的概率为:
上式中τij(t)为t时刻连接城市i到城市j上的信息素量;ηij(t)为启发函数,为t时刻蚂蚁从城市i转移到城市j的期望程度,通常选择两城市间距离的倒数;Jk(i)={1,2,…,n}-tabuk,表示蚂蚁k下一步允许选择的城市集合,其中tabuk表示蚂蚁k的禁忌表,记录了蚂蚁k当前走过的城市,当n座城市都加入到tabuk中时,蚂蚁k完成了一次遍历;α为信息素启发式因子,β为期望启发式因子。
上述设计方法在Intel Pentium IV双核3.00GHz处理器上实现,对串行计算的蚁群算法和本发明提出的TBB多核并行设计的蚁群算法进行仿真,通过对运行时间的比较,如图4与表1所示,可以看出:在问题规模比较小时,串行蚁群算法和本发明设计的算法的运行时间相差不大,但随着问题规模的扩大,本方法的运行时间将会缩短到原来的60%左右,明显提高了算法的运行效率。
通过对串行和并行两种方法解算同样规模问题的CPU利用情况的比较,如图5、图6所示,可以看出:串行算法不能充分调度两个处理核心的资源,其中一个CPU的使用率在50%左右,造成了资源的浪费,并没有体现出计算机双核的优势,而TBB设计的并行算法,充分调度了两个处理核心资源,使两个CPU的使用率都能达到90%以上,这也正是运行效率提高的原因。
最终实现结果:
表1 问题规模对两种方法运行时间的影响
城市数目 | 蚂蚁数目 | 串行算法所用时间(ms) | 并行算法所用时间(ms) | 加速比 |
60 | 40 | 534 | 428.4 | 1.25 |
80 | 60 | 1250 | 946.8 | 1.32 |
100 | 80 | 2465.8 | 1859.6 | 1.33 |
200 | 180 | 22339.8 | 14984.8 | 1.49 |
300 | 200 | 59046.8 | 35643.4 | 1.66 |
400 | 300 | 173493.8 | 106131.2 | 1.63 |
500 | 400 | 389148.3 | 225862 | 1.72 |
Claims (8)
1、一种基于TBB的多核并行蚁群设计方法,其特征在于由下列步骤实现:
步骤1:TBB并行计算平台的安装与环境设置;
步骤2:编写并行计算的模版类;
步骤3:TBB任务调度的初始化;
步骤4:调用并行计算的模版类;
步骤5:得到并行计算结果,结束TBB任务调度;
步骤2中所述的编写并行计算的模版类通过下述步骤完成:
(a)设置问题规模;
利用TBB中parallel_for并行模版编写节点间距离计算和初始信息素设置的模版类;并行模版中编写计算两个节点间距离的类ComputeDistance;
(b)初始化各个蚂蚁;首先设置蚂蚁数目,将蚂蚁随机放置到各个节点;然后并行初始化各个蚂蚁,设置蚂蚁路径的禁忌表;利用TBB中parallel_for并行模版编写初始化各个蚂蚁的模版类;在并行模版中编写初始化蚂蚁的类InitializeAnts;
(c)各个蚂蚁搜寻遍历路径,编写各个蚂蚁搜寻路径的模版类;蚂蚁根据概率选择下一个节点;根据当前节点,修改每个蚂蚁的路径禁忌表,计算当前路径长度;
利用TBB中parallel_reduce并行模版编写各个蚂蚁搜寻路径的模版类;在并行模版中编写各个蚂蚁独立搜寻路径的类SimulateAnt;
(d)判断蚂蚁状态;如果存在未遍历完所有节点的蚂蚁,则跳转到步骤(c),继续重复蚂蚁搜寻路径过程,否则进行下一步即步骤(e);
(e)比较各个蚂蚁的路径长度,选择最优路径;
利用TBB中parallel_for并行模版编写比较各个蚂蚁路径长度的模版类;在并行模版中编写寻找蚁群中最优路径的类ComputeBestPath;
(f)并行计算节点间路径上的信息素残留量,串行计算蚂蚁产生的信息增量,更新路径上的信息素;
利用TBB中parallel_for并行模板编写更新路径上的信息素的模版类;模版中编写两个节点间信息素更新的类UpdatePheromone。
2、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:类ComputeDistance中包含节点数据结构、operator接口和一个构造函数;在构造函数中通过对象参数来初始化节点数据结构,在operator接口中计算任意两个节点间的距离,通过优化后的双重循环实现,外循环的循环次数由调用parallel_for时的传入参数确定,在内循环中加入条件判断减少重复计算。
3、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:类InitializeAnts中包含蚂蚁数据结构,operator接口和一个构造函数;在构造函数中通过对象参数来初始化蚂蚁数据结构,在operator接口中通过优化后的双重循环实现蚂蚁的初始化;外循环将蚂蚁随机放置在各个节点,设置蚂蚁路径长度为零,循环次数由调用parallel_for时的传入参数确定,内循环清空蚂蚁路径禁忌表。
4、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:类SimulateAnt包含蚂蚁数据结构、operator接口、join接口及两个构造函数①,②;构造函数①通过对象参数来初始化蚂蚁数据结构,并设置蚂蚁全部完成遍历的标志为假;构造函数②从整个任务空间中分离并构建子任务,支持join接口中的合并操作;在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_reduce时的传入参数确定,使之能够支持循环体内任务的并行划分、循环体内实现蚂蚁寻找下一个节点、蚂蚁路径禁忌表的修改及蚂蚁路径长度的更新,其中蚂蚁寻找下一节点是通过调用GetNextCity()函数来实现,该函数根据状态转移概率公式计算蚂蚁选择节点的转移概率,得到蚂蚁访问的下一个节点;join接口将多个线程中的各个蚂蚁遍历节点的结果进行合并,返回是否所有蚂蚁都完成了遍历的标志。
5、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:类ComputeBestPath包含蚂蚁数据结构、当前最优路径变量、operator接口和一个构造函数;在构造函数中通过对象参数来初始化蚂蚁数据结构和当前最优路径变量,在operator接口中将循环的参数修改成TBB定义的blocked_range模版类,该参数由调用parallel_for时的传入参数确定,各个蚂蚁的路径与当前蚁群最优路径比较后,更新当前最优路径。
6、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:;类UpdatePheromone包含operator接口和一个构造函数,构造函数是一个空实现,在operator接口中包含TBB规范的双重循环,计算任意两个节点间残留的信息素;节点间的信息素是残留的信息素与信息素增量的叠加,其中信息素增量的计算采用串行计算。
7、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:步骤(f)所述的路径上信息素更新既存在循环依赖部分,也存在循环独立部分,其中计算残留信息素部分循环独立,适合利用TBB改写为并行模版类;计算信息素增量部分采用串行计算方法。
8、如权利要求1所述的一种基于TBB的多核并行蚁群设计方法,其特征在于:所述步骤2中编写各个蚂蚁搜寻路径的模版类的实现过程中,并行优化循环体中的代码使用局部变量或者类SimulateAnt的成员变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100771198A CN101464965B (zh) | 2009-01-16 | 2009-01-16 | 一种基于tbb的多核并行蚁群设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100771198A CN101464965B (zh) | 2009-01-16 | 2009-01-16 | 一种基于tbb的多核并行蚁群设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101464965A true CN101464965A (zh) | 2009-06-24 |
CN101464965B CN101464965B (zh) | 2011-08-17 |
Family
ID=40805536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100771198A Expired - Fee Related CN101464965B (zh) | 2009-01-16 | 2009-01-16 | 一种基于tbb的多核并行蚁群设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101464965B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741642B (zh) * | 2009-12-17 | 2012-01-11 | 北京航空航天大学 | 计算机网络攻防演练分布式仿真任务部署系统 |
CN101639788B (zh) * | 2009-09-10 | 2012-07-25 | 北京航空航天大学 | 一种基于tbb线程构建块的连续系统仿真多核并行方法 |
CN102934099A (zh) * | 2011-06-09 | 2013-02-13 | 华为技术有限公司 | 一种多核调度方法、装置与系统 |
CN101964004B (zh) * | 2009-07-24 | 2013-08-21 | 复旦大学 | 用于集成电路设计的多核并行最小代价流方法及装置 |
CN104820636A (zh) * | 2015-04-09 | 2015-08-05 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN104933248A (zh) * | 2015-06-16 | 2015-09-23 | 中国科学技术大学 | 多核平台上的路网近似最短路径计算方法 |
CN105487920A (zh) * | 2015-10-12 | 2016-04-13 | 沈阳工业大学 | 基于蚁群算法的多核系统实时任务调度的优化方法 |
CN106844037A (zh) * | 2017-02-22 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于knl的测试方法及系统 |
CN114115237A (zh) * | 2021-11-03 | 2022-03-01 | 中国人民解放军陆军防化学院 | 一种基于路径优化的多目标辐射侦察方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100547944C (zh) * | 2006-03-09 | 2009-10-07 | 南京邮电大学 | 量子神经网络用于多用户检测的方法 |
CN101122973A (zh) * | 2007-09-13 | 2008-02-13 | 北京航空航天大学 | 一种基于现场可编程门阵列的蚁群算法仿生硬件 |
-
2009
- 2009-01-16 CN CN2009100771198A patent/CN101464965B/zh not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101964004B (zh) * | 2009-07-24 | 2013-08-21 | 复旦大学 | 用于集成电路设计的多核并行最小代价流方法及装置 |
CN101639788B (zh) * | 2009-09-10 | 2012-07-25 | 北京航空航天大学 | 一种基于tbb线程构建块的连续系统仿真多核并行方法 |
CN101741642B (zh) * | 2009-12-17 | 2012-01-11 | 北京航空航天大学 | 计算机网络攻防演练分布式仿真任务部署系统 |
CN102934099A (zh) * | 2011-06-09 | 2013-02-13 | 华为技术有限公司 | 一种多核调度方法、装置与系统 |
CN104820636A (zh) * | 2015-04-09 | 2015-08-05 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN104820636B (zh) * | 2015-04-09 | 2017-11-07 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN104933248A (zh) * | 2015-06-16 | 2015-09-23 | 中国科学技术大学 | 多核平台上的路网近似最短路径计算方法 |
CN104933248B (zh) * | 2015-06-16 | 2018-07-03 | 中国科学技术大学 | 多核平台上的路网近似最短路径计算方法 |
CN105487920A (zh) * | 2015-10-12 | 2016-04-13 | 沈阳工业大学 | 基于蚁群算法的多核系统实时任务调度的优化方法 |
CN106844037A (zh) * | 2017-02-22 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于knl的测试方法及系统 |
CN106844037B (zh) * | 2017-02-22 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种基于knl的测试方法及系统 |
CN114115237A (zh) * | 2021-11-03 | 2022-03-01 | 中国人民解放军陆军防化学院 | 一种基于路径优化的多目标辐射侦察方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101464965B (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101464965B (zh) | 一种基于tbb的多核并行蚁群设计方法 | |
CN102831011B (zh) | 一种基于众核系统的任务调度方法及装置 | |
Talbi | A unified view of parallel multi-objective evolutionary algorithms | |
US20070143759A1 (en) | Scheduling and partitioning tasks via architecture-aware feedback information | |
CN103699446A (zh) | 基于量子粒子群优化算法的多目标工作流动态调度方法 | |
CN110231986B (zh) | 基于多fpga的动态可重配置的多任务调度和放置方法 | |
CN101593132A (zh) | 基于线程构造模块的多核并行模拟退火方法 | |
CN105159762A (zh) | 基于贪心策略的启发式云计算任务调度方法 | |
Peng et al. | Multi-core parallel particle swarm optimization for the operation of inter-basin water transfer-supply systems | |
CN101639788B (zh) | 一种基于tbb线程构建块的连续系统仿真多核并行方法 | |
Palermo et al. | Automatic selection of dynamic data partitioning schemes for distributed-memory multicomputers | |
González et al. | An efficient ant colony optimization framework for HPC environments | |
Llanes et al. | Dynamic load balancing on heterogeneous clusters for parallel ant colony optimization | |
CN105005503A (zh) | 基于元胞自动机的云计算负载均衡任务调度方法 | |
Busch et al. | Dynamic scheduling in distributed transactional memory | |
O’Cearbhaill et al. | Parallel implementation of a transportation network model | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
Davidović et al. | Parallel local search to schedule communicating tasks on identical processors | |
Wang et al. | A study on heuristic task scheduling optimizing task deadline violations in heterogeneous computational environments | |
CN101996105A (zh) | 可重构计算平台上的静态软硬件任务划分与调度方法 | |
CN116795508A (zh) | 一种平铺加速器资源调度方法及系统 | |
CN114860417B (zh) | 多核神经网络处理器及用于该处理器多任务分配调度方法 | |
CN111090613A (zh) | 一种基于图分割的低复杂度软硬件划分与调度方法 | |
Bożejko | A new class of parallel scheduling algorithms | |
Silberstein et al. | An exact algorithm for energy-efficient acceleration of task trees on CPU/GPU architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110817 Termination date: 20130116 |