禁忌搜索和应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、摘要 (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),为了保证生成的客户位置没有重复,

相关文档
最新文档