一种并行变邻域搜索方法技术

技术编号:8161621 阅读:243 留言:0更新日期:2013-01-07 19:35
一种变邻域搜索方法和装置,方法包括,配置多个实例及多个实例共享的数据集合;针对每一个实例,从邻域结构集合中为该实例选取一个邻域结构,该实例的当前解基于当前邻域结构进行迭代搜索,得到局部最优解;判断该局部最优解是否优于该实例的当前最优解,若是,则将该实例的当前解和当前最优解更新为该局部最优解,如果该实例的当前最优解优于所述数据集合中存储的最差的历史最优解,则用该实例的当前最优解代替该最差的历史最优解;否则判断该实例在其当前最优解未更新前已迭代次数达到迭代次数阈值后,从数据集合中随机选取历史最优解作为该实例的当前解;所有实例的迭代搜索次数都达到总迭代次数后,选取数据集合中最优的解作为全局最优解。

【技术实现步骤摘要】

本专利技术涉及启发式算法领域,具体涉及ー种并行变邻域捜索方法。
技术介绍
变邻域搜索算法(Variable Neighborhood Search, VNS),是一种轨迹式元启发式算法,由Hansen和Mladenovic于1997年首次提出。变邻域搜索算法包含了动态变化的邻域结构,算法较通用,自由度大,可针对特殊问题设计多种变型,主要用于求解组合优化问题和全局优化问题。组合优化问题的求解方法可以分为两类ー类是精确算法,这类算法对解空间进行完整搜索,可以保证找到小規模问题的最优解;另ー类是启发式算法,这类算法放弃了对解空间搜索的完整性,因此不能保证最终解的全局最优性。由于组合优化问题中大量存在 着NP-Hard问题,因此精确捜索算法在问题规模较大时往往难以实现,而启发式算法尽管不能证明解的最优性,但在很多情况下却能够以合理的计算代价找出较好的近似最优解,因此变邻域捜索算法是解决组合优化问题的主要算法。变邻域捜索算法的基本思想是在搜索过程中,基于已找到的局部最优解,系统地改变其邻域结构,以此来拓展搜索范围,进而找到另ー个局部最优解。变邻域捜索算法包括了局部搜索(Local Search)、扰动(Shaking)和邻域变换三个过程,利用局部搜索寻■找局部最优解,提高搜索精度,采用扰动过程跳出局部最优解的范围,寻找新的局部最优解,使得局部最优解向全局最优解靠拢,邻域变换提供了一种迭代方式和停止准则。变邻域捜索算法的基本步骤步骤一、选定ー个初始解为Xtl,设定初始參数——邻域结构个数和算法总迭代次数,其中邻域结构个数为K_,算法总迭代次数为Tmax,设定邻域结构集合为Nk(k = 1,...,Kmax);设置当前最优解Xbest为Xbest = X0,当前解Xcm为Xcm = X0,选定的邻域结构编号k =I,迭代搜索次数t = O。步骤ニ、进行迭代运算,当t > Tfflax吋,输出计算结果,停止运算;否则,在Xcm的k邻域Nk中随机选取解Xshake,并对解Xshake进行局部捜索,得到局部最优解Xltrcal ;若f (Xlocal)<f (Xbest),则 X best -^-Iocal -^cur -^-Iocal ^1,即更新局部最优解;否则,设置k = k modK_+l,t = t+1,重复所述进行迭代运算的步骤。其中,函数f为实际应用中的评估函数。
技术实现思路
本专利技术要解决的技术问题是提供ー种并行变邻域搜索方法,该方法与目前的变邻域捜索算法相比,能够有效扩展求解空间,増大逃离局部最优的可能性,进而获得更好的全局最优解。为了解决上述问题,本专利技术实施例提供了一种变邻域捜索方法,其特征在于,该变邻域搜索方法是并行变邻域搜索方法,包括如下步骤步骤101、配置多个实例及供多个所述实例共享的ー个数据集合,该数据集合中存储有多个历史局部最优解;步骤102、为多个所述实例设置相同的邻域结构个数、总迭代次数、邻域结构集合和迭代次数阈值;步骤103、针对每ー个实例,从所述邻域结构集合中为该实例选取ー个邻域结构作为当前邻域结构,该实例的当前解基于该当前邻域结构进行迭代搜索,得到局部最优解;判断该局部最优解是否优于该实例的当前最优解,若是,则将该实例的当前解和当前最优解均更新为该局部最优解,如果该实例的当前最优解优于所述数据集合中存储的最差的历史最优解,则用该实例的当前最优解代替该最差的历史最优解;若该局部最优解不优于该实例的当前最优解,判断该实例在其当前最优解未更新前已迭代次数达到所述迭代次数阈值后,从所述数据集合中随机选取一个历史最优解作为该实例的当前解,将该实例的迭代搜索次数加1,基于该当前邻域结构重新进行迭代捜索,直到迭代搜索次数达到所述总迭代次数;步骤104、所有实例的迭代搜索次数都达到所述总迭代次数后,选取所述数据集合中最优的解作为全局最优解。可选地,所述步骤101还包括对所述数据集合中的历史最优解按照大小进行排序。可选地,所述步骤103还包括为该实例设置ー个初始解、设置该实例的当前最优解和当前解均等于该初始解,并设置该实例的迭代搜索次数和该实例的当前最优解未更新前已迭代次数。可选地,所述步骤103还包括用该实例的当前最优解代替该最差的历史最优解之后,基于该当前邻域结构重新进行迭代捜索,将该实例的迭代搜索次数加1,直到迭代搜索次数达到所述总迭代次数。可选地,所述步骤103中还包括若该局部最优解不优于该实例的当前最优解,判断该实例在其当前最优解未更新前已迭代次数没有达到所述迭代次数阈值时,将该实例的当前最优解未更新前已迭代次数加1,迭代搜索次数加I后,从所述邻域结构集合中选取新的邻域结构继续进行迭代捜索,直到迭代搜索次数达到所述总迭代次数。可选地,所述步骤103还包括当多个实例需要同时对所述数据集合中存储的最差的历史最优解进行更新吋,则从该多个实例的当前最优解中选择最优的ー个来代替该最差的历史最优解。可选地,多个所述实例中,至少有ー个实例是基于所述数据集合中存储的最优的历史最优解进行迭代搜索。本专利技术实施例还提供了一种变邻域捜索装置,包括配置模块、迭代捜索模块、判断模块、更新模块和全局最优解确定模块,其中所述配置模块设置成配置多个实例及供多个所述实例共享的ー个数据集合,该数据集合中存储有多个历史最优解;还为多个所述实例设置相同的邻域结构个数、总迭代次数、邻域结构集合和迭代次数阈值;所述迭代捜索模块设置成针对每ー个实例,从所述邻域结构集合中为该实例选取ー个邻域结构作为当前邻域结构,将该实例的当前解基于该当前邻域结构进行迭代搜索,得到局部最优解;还从所述数据集合中随机选取一个历史最优解作为该实例的当前解,将该实例的迭代搜索次数加1,基于该当前邻域结构重新进行迭代捜索;所述判断模块设置成针对每ー个实例,所述迭代捜索模块得到该实例的局部最优解后,判断该实例迭代搜索得到的局部最优解是否优于该实例的当前最优解,若是,则通知所述更新模块用该实例的局部最优解代替该当前最优解;还判断该实例的当前最优解是否优于所述数据集合中存储的最差的历史最优解,若是,则通知所述更新模块用该实例的当前最优解代替该最差的历史最优解;还判断该局部最优解不优于该实例的当前最优解后,判断该实例在其当前最优解未更新前已迭代次数达到所述迭代次数阈值后,通知所述迭代捜索模块从所述数据集合中随机选取一个历史最优解作为该实例的当前解,将该实例的迭代搜索次数加1,基于该当前邻域 结构重新进行迭代捜索;判断某ー实例的迭代搜索次数达到所述总迭代次数后,通知所述迭代捜索模块针对该实例停止捜索;判断所有实例的迭代搜索次数都达到所述总迭代次数后,通知所述全局最优解确定模块确定全局最优解;所述更新模块设置成用实例迭代捜索得到的局部最优解代替该实例的当前最优解;用该实例的当前最优解代替所述数据集合中存储的最差的历史最优解;所述全局最优解确定模块设置成选取所述数据集合中最优的解作为全局最优解。 可选地,所述配置模块还设置成为每个实例均设置ー个初始解、设置该实例的当前最优解和当前解均等于该初始解,并设置该实例的迭代搜索次数和该实例的当前最优解未更新前已迭代次数。可选地,所述配置模块为每个实例设置的初始解均不同。可选地,所述迭代搜索模块还设置成在所述本文档来自技高网
...

【技术保护点】
一种变邻域搜索方法,其特征在于,该变邻域搜索方法是并行变邻域搜索方法,包括如下步骤:步骤101、配置多个实例及供多个所述实例共享的一个数据集合,该数据集合中存储有多个历史局部最优解;步骤102、为多个所述实例设置相同的邻域结构个数、总迭代次数、邻域结构集合和迭代次数阈值;步骤103、针对每一个实例,从所述邻域结构集合中为该实例选取一个邻域结构作为当前邻域结构,该实例的当前解基于该当前邻域结构进行迭代搜索,得到局部最优解;判断该局部最优解是否优于该实例的当前最优解,若是,则将该实例的当前解和当前最优解均更新为该局部最优解,如果该实例的当前最优解优于所述数据集合中存储的最差的历史最优解,则用该实例的当前最优解代替该最差的历史最优解;若该局部最优解不优于该实例的当前最优解,判断该实例在其当前最优解未更新前已迭代次数达到所述迭代次数阈值后,从所述数据集合中随机选取一个历史最优解作为该实例的当前解,将该实例的迭代搜索次数加1,基于该当前邻域结构重新进行迭代搜索,直到迭代搜索次数达到所述总迭代次数;步骤104、所有实例的迭代搜索次数都达到所述总迭代次数后,选取所述数据集合中最优的解作为全局最优解。

【技术特征摘要】

【专利技术属性】
技术研发人员:张俊颜秉珩崔赢张现忠
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:

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

1