基于线程构造模块的多核并行模拟退火方法技术

技术编号:3850973 阅读:250 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于线程构造模块的多核并行模拟退火方法,主要解决模拟退火算法在大规模工程应用中的运行效率问题和对计算机多核资源的利用问题。利用线程构造模块支持多核处理器并行计算和支持扩展的线程嵌套并行的优点,并在原有的串行模拟退火算法基础上引入多种群群体优化机制构造并行算法。首先设置环境变量,然后构造并行模块,接着设定初始参数,再进行各个初始状态独立寻优,然后获取当前最优状态和最优结果,接着执行降温过程,最后获得最优状态和最优结果。本发明专利技术设计过程简单灵活,易于扩展,符合计算机朝着多处理器及多核架构的发展趋势,是一种方便快速、实用性强的并行模拟退火设计方法。

【技术实现步骤摘要】

本专利技术属于计算机仿真与智能优化领域,具体涉及一种基于线程构造禾莫块的多核并行模 拟退火方法。技术背景离散系统的组合优化问题是实际生产中经常遇到的问题,比如任务分配、作业调度、路 径规划、网络路由、数据挖掘、生命科学计算等问题,这些问题随着规模的扩大,往往造成 计算规模的迅速增加,被称为多项式复杂程度的非确定性问题(Non-deterministic Polynomia,简称为NP复杂问题)。早在1953年,Metropolis等人就提出了最初的模拟退火,但是并没有引起反响,直到 1983年,Kirkpatrick等人提出了现代模拟退火,它是基于Mente Carlo迭代求解策略的 一种随机寻优方法。其出发点是基于物理固体物质的退火过程和一般组合优化问题之间的相 似性。模拟退火在一个给定的初始高温下,利用具有概率突跳特性的Metropolis抽样策略在 解空间中进行随机搜索,伴随温度的下降重复抽样过程,最终得到问题的全局最优解。模拟 退火成功地解决了大规模的组合优化问题。由于现代模拟退火具有能够有效地解决NP复杂 问题、能够避免陷入局部最优、能够克服初值依赖性等优点,目前已在工程中得到广泛应用。模拟退火由于其固有的密集计算特性,存在的主要问题是运行时间长和计箅内存大,这 是大型数据库求解的主要瓶颈。随着问题规模不断扩大,基于单核的串行模拟退火所消耗的 时间迅速增长,往往不能满足人们的实时处理数据要求,t莫拟退火的并行实现技术能大幅度 地提高其性能,能从本质上减少处理数据的时间。随着计算机技术向着多处理器及多核架构的发展,使单机上的多核并行处理数据成为可 能,以刚刚推出的线程构造模块(Threading Building Blocks,简称为TBB)开发库为代 表的多核处理器并行处理平台引起工程人员的重视。TBB与其他并行编程模型相比,编程难 度较低、自动调度效率高,有丰富的函数库,还有良好的扩展功能,可以和消息传递接口 (Message Passing Interface,简称MPI)、 OpenMP等结合,是一种简单高效的并行技 术。但是目前TBB技术和智能优化领域的结合仍然很少,TBB并行处理平台和f莫拟退火的 结合更是空白。专利技术 内 容本专利技术的目的是利用现有的并行技术,实现模拟退火的并行处理,使其能在实际的生产 和科研领域中快速有效地执行,提高运行效率,更快更好地解决组合优化和NP复杂问题。在本专利技术中,对模拟退火进行了改进。因为在一定温度下,模拟退火基于Metropolis 准则进行随机搜索,最终达到一种平衡状态。为保证能够达到平衡状态,内循环次数要足够 大。其中Metropolis准则是指用概率来接受新状态,经过大量的概率接受过程,系统将趋于 能量最低的平衡状态。最常见的方法就是将内循环次数设为一个较大的常数,这是模拟退火 最耗时的地方。为此可以考虑增加初始状态个数,并且彼此相互独立寻优,同时相应减小内 循环次数,这种改进的方法可以采用并行处理。该专利技术利用了改进模拟退火可以构造并行结 构的优势,结合线程构造模块TBB并行处理平台设计了一种简单适用的并行模拟退火。线程构造模块TBB是基于运行时的0++线程并行模型,用于支持多核处理器的并行处 理,具有成熟的数据结构,支持可扩展的线程嵌套并行,支持可扩展内存分配以及不需要编 译器支持。使用TBB的具体步骤主要包括TBB并行处理平台的安装和环境设置;根据实 际问题选择可以使用的TBB并行模板,如parallel—for、 parallel_reduce模板,编写并行 处理模板;TBB任务调度的初始化;调用并行处理模板;结束TBB的任务调度。由于TBB定义了任务的概念,在初始化TBB任务调度时,由任务调度器对象 task—scheduler—init实现多任务的分配和并行,支持对多线程的划分。在调用并行模块时, 由模块参数指定循环处理的数值范围以及任务粒度参数。任务粒度参数决定了任务划分的粒 度,如果粒度太大,不能充分提高运行效率;如果粒度太小,过度的并行化任务分配造成的 开销反而降低了运行效率。在无法获得合适任务粒度情况下可以使用TBB提供的自动分配函 数auto_partitioner ()帮助用户设置合适的任务粒度参数。本专利技术利用TBB技术根据需要选择不同的并行处理模板,将可以并行处理的各个循环改 写为符合TBB调用的规范类,并且将每组初始状态分配到不同的线程,这是提髙系统运行效 率的一种简单有效的方法。通过利用TBB设计的并行模拟退火和现有模拟退火相比,具有明显的两个优点(1) 提高了模拟退火的运行效率,减少了运行时间,为大规模组合优化工程问题的实时 处理提供了可能'性;(2) 并行优化过程简单灵活,易于操作,而且符合计算机技术向着多处理器及多核架构5的发展趋势。附图说明图1是本专利技术提出的基于TBB并行模拟退火方法的流程图;图2是本专利技术提出的改进模拟退火解决旅行商问题的方法流程图;图3是本专利技术提出的改进模拟退火解决旅行商问题的示意图;图4是本专利技术方法的基于TBB并行模拟退火解决旅行商问题的方法流程图;图5是现有模拟退火与本专利技术提出的基于TBB并行模拟退火的运行时间对比曲线;图6是现有模拟退火串行实现的计算机中央处理单元CPU使用记录图;图7是本专利技术TBB并行模拟退火实现的计算机中央处理单元CPU使用记录图。具体实施方式下面将结合附图和实例对本专利技术作进一步的详细说明。 图1展示了基于TBB并行模拟退火的具体步骤 步骤一设置环境变量。TBB并行数据处理平台的安装与环境设置,在计算机里置入TBB的文件包,并在Visual C++即VC目录中添加TBB的包含文件.include、库文件.lib及可执行文件.bin。步骤二构造并行模块。首先,确定并行处理1i块,改进的模拟退火中初始温度的确定、各个初始状态寻优和更 新最优结果的过程都是可以并行处理的,再结合实际问题,找到实际问题中有些可以并行处 理的部分;然后,根据TBB并行,莫板规范类构造并行模块。步骤三设定初始参数。设置问题规模,即初始状态个数、内循环长度、温度收敛系数、目标函数。调用计算初 始温度的parallel_for并行模块,并设置初始状态及对应的目标函数值,从初始状态对应的 目标函数值中选出最小值作为最优结果,并得到对应的最优状态。步骤四各个初始状态独立寻优。调用parallel—for设计的各个初始状态搜寻路径l莫块,该模块可以实现各个初始状态在 一次内循环中的并行寻优。具体寻优过程是,每个初始状态随机生成候选状态,根据 Metropolis接受准则,判断是否接受候选状态,接受则作为下次循环的初始状态,并得到初 始目标函数值。否则初始状态不变。其中Metropolis接受准则是指随机生成一个位于0到1之间的随机数ee"(O,l),若exp(-A/7r^s,则接受候选状态,否则不接受,A/表示候选状态的目标值与初始状态的目标值的差值,r表示当前温度,s是一个位于O到l之间的随机数。这一步是限制模拟退火运行效率的主要部分,因此这一步釆用TBB进行并行设计对提高 效率至关重要;步骤五获取当前最优状态和最优结果。调用parallel_reduce并行模块,将最优结果和各个初本文档来自技高网...

【技术保护点】
一种基于线程构造模块的多核并行模拟退火方法,其特征在于,该方法包括如下步骤: 步骤一:设置环境变量; 线程构造模块TBB并行数据处理平台的安装与环境设置,在计算机里置入线程构造模块TBB的文件包,并在Visual C++即VC目 录中添加线程构造模块TBB的包含文件.include、库文件.lib及可执行文件.bin; 步骤二:构造并行模块; 首先,确定并行处理模块,改进的模拟退火中初始温度的确定、各个初始状态寻优和更新最优结果的过程都是并行处理的,再结 合实际问题,找到实际问题中能够并行处理的部分; 然后,根据线程构造模块TBB并行模板规范类构造并行模块; 步骤三:设定初始参数; 设置问题规模,即初始状态个数、内循环长度、温度收敛系数、目标函数;调用计算初始温度的para llel_for并行模块,并设置初始状态及对应的目标函数值,从初始状态对应的目标函数值中选出最小值作为最优结果,并得到对应的最优状态; 步骤四:各个初始状态独立寻优; 调用parallel_for设计的各个初始状态搜寻路径模块, 该模块能够实现各个初始状态在一次内循环中的并行寻优; 具体寻优过程是:每个初始状态随机生成候选状态,根据Metropolis接受准则,判断是否接受候选状态,接受则作为下次循环的初始状态,并得到初始目标函数值;否则初始状态不变;其中Me tropolis接受准则是指随机生成一个位于0到1之间的随机数ε∈(0,1),若exp(-Δf/T)<ε,则接受候选状态,否则不接受,Δf表示候选状态的目标值与初始状态的目标值的差值,T表示当前温度,ε是一个位于0到1之间的随机数;  步骤五:获取当前最优状态和最优结果; 调用parallel_reduce并行模块,将最优结果和各个初始状态对应的目标函数值比较,如果目标函数值中的最小值小于最优结果,则将该最小值及对应的状态赋给最优结果和最优状态,否则最优结果和最优状 态不变; 步骤六:执行降温过程; 降低温度,判断温度是否到达最低温度,若温度已到达最低温度,则执行步骤七,否则执行步骤四; 步骤七:获得最优状态和最优结果; 结束,最终寻到实际问题中的最优状态及最优结果。...

【技术特征摘要】

【专利技术属性】
技术研发人员:李妮董丽丽龚光红
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11[中国|北京]

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

1