目录一、摘要 (2)二、禁忌搜索简介 (2)三、禁忌搜索的应用 (2)1、现实情况 (2)2、车辆路径问题的描述 (3)3、算法思路 (3)4、具体步骤 (3)5、程序设计简介 (3)6、算例分析 (4)四、禁忌搜索算法的评述和展望 (4)五、参考文献 (5)禁忌搜索及应用一、摘要工程应用中存在大量的优化问题,对优化算法的研究是目前研究的热点之一。
禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。
本文介绍了禁忌搜索算法的特点、应用领域、研究进展,概述了它的算法基本流程,评述了算法设计过程中的关键要点,最后探讨了禁忌搜索算法的研究方向和发展趋势。
二、禁忌搜索简介禁忌搜索(Tabu Search或Taboo Search,简称TS)的思想最早由Glover(1986)提出,它是对局部领域搜索的一种扩展,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。
TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。
相对于模拟退火和遗传算法,TS是又一种搜索特点不同的meta-heuristic算法。
迄今为止,TS算法在组合优化、生产调度、机器学习、电路设计和神经网络等领域取得了很大的成功,近年来又在函数全局优化方面得到较多的研究,并大有发展的趋势。
禁忌搜索是人工智能的一种体现,是局部领域搜索的一种扩展。
禁忌搜索最重要的思想是标记对应已搜索的局部最优解的一些对象,并在进一步的迭代搜索中尽量避开这些对象(而不是绝对禁止循环),从而保证对不同的有效搜索途径的探索。
禁忌搜索涉及到邻域(neighborhood)、禁忌表(tabu list)、禁忌长度(tabu length)、候选解(candidate)、藐视准则(aspiration criterion)等概念。
三、禁忌搜索的应用禁忌搜索应用的领域多种多样,下面我们简单的介绍下基于禁忌搜索算法的车辆路径选择。
1、现实情况物流配送过程的成本构成中,运输成本占到52%之多,如何安排运输车辆的行驶路径,使得配送车辆依照最短行驶路径或最短时间费用,在满足服务时间限制、车辆容量限制、行驶里程限制等约束条件下,依次服务于每个客户后返回起点,实现总运输成本的最小化,车辆路径问题正是基于这一需求而产生的。
求解车辆路径问题(vehicle routing problem简记vrp)的方法分为精确算法与启发式算法,精确算法随问题规模的增大,时间复杂度与空间复杂度呈指数增长,且vrp问题属于np-hard问题,求解比较困难,因此启发式算法成为求解vrp问题的主要方法。
禁忌搜索算法是启发式算法的一种,为求解vrp提供了新的工具。
本文通过一种客户直接排列的解的表示方法,设计了一种求解车辆路径问题的新的禁忌搜索算法。
因此研究车辆路径问题,就是要研究如何安排运输车辆的行驶路线,使运输车辆依照最短的行驶路径或最短的时间费用,依次服务于每个客户后返回起点,总的运输成本实现最小。
2、车辆路径问题的描述车辆路径问题的研究目标是对一系列送货点或取货点,确定适当的配送车辆行驶路线,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量、发送量交发货时间、车辆容量限制、行驶里程限制、时间限制等)下,达到一定的目标(如路程最短、费用最小、时间尽量少、使用车辆尽量少等)。
参见下图2.1所示:其中0表示配送中心,1~8表示客户编号。
在本文中为使得问题易于理解,将该问题描述为:有一定数量的客户,各自有不同数量的货物需求,且每个客户的位置和需求量一定,一个物流中心提供这些货物,并有一个车队负责分送货物,每台配送车辆的载重量一定,这里假设车辆的型号一致,即最大载重量和最远行驶里程数相同,要求合理安排车辆配送路线,使配送总路程最短,同时得满足一定的约束条件,即每条路线总需求量之和不得超过配送车辆的载重量、每条路线行驶的里程数不得超过配送车辆的最远里程数、每一客户需求必须满足且仅由一台车辆配送。
3、算法思路本文先用插入式启发算法得到车辆路径问题的初始可行解,再利用禁忌搜索算法对初始解进行改造。
4、具体步骤(1)构造初始解时,先用客户直接排列的解的表示方法,随机生成某一不重复的客户排列序列,然后按照车辆路径问题的约束条件,依次将解的元素(客户)划入各条配送路径中,由此产生车辆路径问题的初始解,计算出当前解的目标函数值,这里的目标函数值为各车辆配送路径的里程数总和。
(2)通过随机交换两客户位置来生成当前解的邻域解,则有c2n=n*(n-1)/2个客户直接排列序列,然后按照车辆路径问题的约束条件,依次将解的元素(客户)划入各条配送路径中,由此计算出各邻域解的目标函数值。
(3)根据藐视准则来评价当前解的邻域解,更新当前解与禁忌表。
若候选解的目标值优于当前的最优目标值,不管其禁忌属性如何,更新为当前最优解并更新禁忌表,否则判别该方案的两个客户交换是否被禁忌:若被禁忌,选取次优解后继续该步骤;若未被禁忌,更新该解为当前解并更新禁忌表。
(4)若所有的候选对象均被禁忌,则根据队列fifo原则,对禁忌表中队头元素取消其禁忌属性;禁忌表的更新为将其中所有的禁忌对象的禁忌长度减1,禁忌长度为0的对象取消其禁忌属性。
(5)重复迭代指定步长的(2)~(4),输出车辆配送方案的最终结果。
5、程序设计简介算法中,无论是初始解的构造还是邻域内寻优,都涉及到对大量配送点进行的操作,如构造初始解时,针对车辆路径问题的约束条件将客户划分到不同的路径中;更新禁忌表时的将禁忌对象放入表中以及满足藐视准则时的禁忌对象的解禁。
程序中针对该问题,采用了队列的形式,通过改进的队列基本操作来实现路径的分配与禁忌表的更新问题。
下面给出定义的几个结构体:(1)客户位置的无重复随机生成以及客户需求量的随机生成实际配送系统中的客户的地理位置相对独立,且彼此之间服从独立均匀分布,为简易起见,程序中对客户的地理位置分布与客户的需求量只简单地使用c语言中的rand()函数进行随机分配,其中物流中心的地理位置默认为(0,0),为了保证生成的客户位置没有重复,用c_location[j].x==c_location[i].x && c_location[j].y==c_location[i].y语句来判定,其中c_location数组采用cpoint结构体,用于存储客户的位置,demand数组用于存储客户需求量,这两个数组均被定义为全局变量。
(2)客户随机序列的生成算法中采用客户直接排列的解的表示方式,随机生成初始解,即无重复的客户随机排列序列数组a。
(3)初始解的车辆路径分配将客户随机序列数组a中的各个值赋值到i_now数组中,i_now数组用于记录当前的最优解,定义车辆的最大负载量vehicle_max,这里假设物流中心车辆的型号一致并且不考虑车辆的最大行驶距离。
(4)当前解的邻域结构通过依次交换两客户位置来生成当前解的邻域解,则有c2n=n*(n-1)/2个客户直接排列序列。
i_now的邻域解,用数组exchange_solution记录。
用与初始分配方案相似的算法,可以求出exchange_solution数组中每一个车辆分配路线的车辆数以及车辆所行驶的总里程数,分别记录到数组n_num和s中。
(5)寻找当前解邻域结构的评价值最优方案先从数组s中寻找到车辆行驶里程数最短的方案,记其下标为ibest,判断该方案是由当前解的哪两个客户交换得到的,记作i_x和i_y。
根据禁忌准则对该局部最优解进行处理,可以替换为当前最优解的条件有二:(1)这两个元素的交换是可行的、未被禁忌的;(2)其解优于当前解,不管其是否禁忌均替换当前最优解,更新禁忌表,将禁忌表中各禁忌对象的禁忌步长减1,当禁忌步长为0时,取消禁忌对象的禁忌属性,而当替换方案中的所有对象均被禁忌后,根据fifo原则,取消队头元素的禁忌属性。
6、算例分析这里用microsoft visual c++对车辆路径问题的禁忌搜索算法进行编程,通过对相对独立的随机分布在(0,100]平方公里范围内的指定客户数、且客户的需求为的(0,指定的客户数]范围内的随机数的vrp实例进行求解,进行了实验计算。
设在某物流中心有10台配送车辆,车辆的最大载重量均为10单位,在不考虑车辆一次配送的最大行驶距离的情况下,需要向10个客户运送货物,作者利用计算机随机产生了范围在0~100内的10个客户的位置坐标(坐标无重复情况)以及客户的货物需求量,其中物流中心的坐标默认为(0,0),各个客户的坐标位置与需求量如下图2.3所示,要求合理安排配送车辆的行车路径,使配送的总里程数最短。
为简便起见,本文设各客户相互之间及物流中心与客户之间的距离均采用直线距离,该距离可根据客户和物流中心的坐标计算得到。
本文基于车辆路径问题的简单描述,采用客户直接排列的解的表示方法,相比较现有研究成果将车辆路径问题描述为网络图问题的有向边排列方法,表示更加直观、算法策略更加简单并易于理解,而且算法在迭代过程中产生的解均为可行解,算法的收敛速度得到明显改善。
实验的计算结果表明,用禁忌搜索算法求解车辆路径问题能够跳出局部最优解,实现全局最优化,所得到的最终解决方案相比较初始方案质量更优,寻优性能良好。
四、禁忌搜索算法的评述和展望禁忌搜索算法作为一种新兴的智能搜索算法具有模拟人类智能的记忆机制,已被广泛应用于各类优化领域并取得了理想的效果。
本文简述了禁忌搜索算法的发展、特点及应用,给出了基本禁忌搜索算法实现的流程,对禁忌搜索设计过程中的关键步骤进行了分析和总结,为推广禁忌搜索算法在优化领域的应用有一定意义。
今后关于禁忌搜索算法的研究热点主要有以下几个方面。
(1)与其他优化算法结合,如与传统启发式算法、遗传算法、模拟退火算法、粒子群算法、神经网络算法、蚁群算法、混沌算法等结合,构成更新型的混合优化算法。
(2)为推广禁忌搜索算法在超大规模优化领域中的应用,突破禁忌搜索的串行性限制,研究并行禁忌搜索算法。
包括基于问题空间分解的并行策略和基于多禁忌搜索任务的并行策略。
五、参考文献[1] 王凌. 智能优化算法及其应用[M]. 北京:清华大学出版社,2001.[2] 李新振,腾欢.自适应遗传——禁忌搜索混合算法在PMU最优配置中的应用[J].四川电力技术,2009,32(3):56-60.[3] 刘嘉敏,董宗然,马广焜.基于禁忌搜索算法求解集装箱装载问题[J].沈阳工业大学学报,2009,31(2):212-216.[4] 王竹芳,潘德惠.用遗传:禁忌搜索混合算法求解组合投资问题[J].东北大学学报(自然科学版),2006,27(1):111-114.[5] 肖丽,刘光远,贺一等.基于禁忌搜索的模糊神经网络结构优化[J].计算机科学,2006,33(7):217-219.[6] 宋晓宇,孟秋宏,曹阳.求解Job Shop调度问题的改进禁忌搜索算法[J].信息工程与电子技术,2008,30(1):94-96.[7] 黄志,黄文奇.一种基于禁忌搜索的作业车间调度算法[J].计算机工程与应用,2006,42(3):12-14.[8] 段凤华,符卓.有软时窗约束带取送作业的车辆路径问题及其禁忌搜索算法研究[J].计算机工程与科学,2009,31(3):68-70.[9] 汪翼,孙林岩,李刚,等.集装箱车辆调度问题的变邻域禁忌搜索算法[J].工业工程与管理,2008,13(5):6-10.[10] 孙艳丰,郑加齐,王德兴,等.基于遗传算法的约束优化方法评述[J].北方交通大学学报,2000,24(6):14-19.[11] 陈年生,李腊元,董武世,等.基于禁忌搜索的QoS路由算法[J].计算机工程与应用,2005,41(8):134-136.[12] 张玉芳,薛青松,熊忠阳.基于禁忌搜索的动态粒子群算法[J].计算机工程与应用,2008,44(24):56-58.[13] 康雁,黄文奇.基于禁忌搜索的启发式算法求解圆形packing问题[J].计算机研究与发展,2004,41(9):1554-1558.[14] 吴良杰,魏东,刘刚.基于禁忌搜索和蚁群算法的广义分配问题研究[J].计算机工程与设计,2009,30(15):3591-3593.[15] 王伟,余利华.基于贪心法和禁忌搜索的实用高校排课系统[J].计算机应用,2007,27(11):2874-2876.。