约束满足与邻域搜索结合的混合算法及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
约束满足与邻域搜索结合的混合算法及应用[摘要] 总结约束满足求解技术和邻域搜索算法,分析约束满足与邻域搜索
单一算法的优劣,以及两者结合的优势,提出约束满足与邻域搜索相结合的混合算法的一般框架,并以Job Shop 调度优化问题为例对该算法框架进行实例说明。
[关键词] 约束满足;邻域搜索;混合算法
ddoi : 10 . 3969 / j . issn . 1673 - 0194 . 2009 . 21 . 017
1引言
约束满足技术集成了运筹学、人工智能、逻辑编程和图论中的方法和思想,是解决组合优化问题的一门新兴技术。约束满足建模能力较强,在约束求解中,能够充分利用问题的结构信息和约束关系,采用约束传播、回溯等技术对求解空间快速缩减,提高问题的求解效率。邻域搜索算法是一种非常有效的解决组合优化问题的方法,在搜索空间内利用局部指导规则探索优良解,搜索效率高,具有可衡量性。约束满足与邻域搜索法均存在自身的优势和局限性,相互结合可以有效利用算法的互补性。
目前对约束满足与邻域搜索相结合的混合算法的研究成果比较少。文献[1]将邻域搜索和向前看(Look Ahead)技术结合,在搜索过程中遇到死点时要么回溯,要么应用邻域搜索继续新的空间搜索。文献[2]中提出的“Decision-Repair”方法集成了禁忌搜索、一致性技术和基于冲突的启发式方法来引导搜索过程。文献[3]在系统搜索过程中,使用变量排序和值排序法,进行不完全搜索,用N皇后问题进行算法测试。文献[4]用约束规划算法产生一个可行解,作为禁忌搜索算法的初始解。文献[5]对NEH算法加以扩展,得到高质量的初始解,提出跳出局部极值方法,改进约束满足修复算法。
本文首先介绍约束满足技术和邻域搜索技术,然后总结两者相结合的混合算法的框架,最后以Job Shop 调度为例,给出混合算法实现步骤。
2约束满足技术和邻域搜索技术
2.1 约束满足技术
约束满足的优势体现在:问题建模和约束求解相对独立,具有开放性,并可通过计算机系统有效实现。在问题建模中,约束满足技术以接近于现实世界的方式描述领域知识,能够表达各种线性、非线性的复杂约束,并能通过递增约束扩展问题,可以应用松弛约束来处理问题的动态特征,具有较强的建模能力;在约束求解中,约束满足技术能够充分利用问题的结构信息、约束关系,采用约束传播、回溯、搜索等技术对求解空间快速缩减,提高问题的求解效率。约束满足技术中的系统搜索和回溯方法是一种完备算法,搜索遍历整个问题空间,保证解的全局性,能够找到问题的解或者证明问题无解,对于优化问题,能够找到最优解,并能证明最优性。缺陷是问题的规模变大时,算法的可衡量性非常差,而且最坏情况下,回溯具有指数复杂度。
约束满足技术[6]主要包括树搜索算法、约束传播技术和启发式修复算法。
(1) 树搜索算法。树搜索算法又称构造算法,以回溯算法为基础,通过不断扩充一致的部分解,最后得到一致的完整解。树搜索算法是一种系统搜索算法,搜索遍历整个问题空间,能够完全确定某约束问题有解还是无解。最坏情况下,树搜索具有指数复杂度。树搜索基本算法是回溯法(Back Tracking, BT),是一种既带有系统性又带有跳跃性的搜索算法。
(2) 约束传播。约束传播是修剪搜索空间的主要技术,当一个变量被赋值或其值域发生变化后,可能对其他变量的取值造成影响,这一影响通过变量之间的约束关系进行传播,进而导致其他变量的取值或值域的上界或下界发生改变。这一过程称为约束传播。约束传播策略主要分为两种:回顾策略(Look Back)[7]和展望策略。体现回顾策略的算法有BT算法、智能回溯算法。常用的展望策略算法是前向检查(Forward Checking, FC)算法。
(3) 启发式修复算法。启发式修复算法从有约束冲突的不可行初始解开始,通过采用约束传播等技术迭代性地进行修复,以减少冲突数目,最后得到无冲突的可行解。启发式修复算法是一种不完备算法,不能保证解的全局性。很多启发式方法能够被引入启发式修复算法,提高搜索效率和克服局部极值。
2.2邻域搜索算法
定义:设t ?缀T是目标函数f的一个可行解,T是所有可行解的集合,tbest ?缀T是f的目前邻域空间的最优解。初始值tbest = t,邻域N(t)是指对一个可行解t 作部分预先规定的变动, t*是搜索邻域后所得到的另外一个可行解。如果f(t*) < f(tbest),则tbest = t*,否则tbest = t,然后继续搜索。总之,邻域搜索方法(Neighborhood Search Method)是一种通过对t的邻域N(t)内的可行目标函数进行再计算(iterative)来获得更好解的方法。若邻域计算结果好于当前最优解,则保留之,否则抛弃。
邻域搜索算法通用易实现,只要设计好邻域函数,就能求解组合或函数优化问题;在搜索空间内利用局部指导规则探索优良解,搜索效率高;对于组合优化问题,
在限定的时间内,能够找到一个高质量的解。缺陷是算法性能对邻域函数和初值具有依赖性,以损失解的完备性为代价来提高求解效率,不能够保证在规定的时间内找到解,也不能够判定问题是不可行的,而且最大的问题是容易陷入局部最优。邻域定义的好坏对算法性能起着举足轻重的作用,如果邻域的范围较小,那么搜索就可能很快陷入局部最优,相反如果邻域的范围很大,则搜索的效率会很低。因此,邻域搜索算法的关键是定义与具体问题相关的邻域,而对于不同问题来说,其邻域的定义也不尽相同。
3约束满足与邻域搜索结合的混合算法的一般框架
约束满足与邻域搜索单一算法均有各自的优势和劣势,两者的结合可以有效利用这两种算法的互补性,提高求解约束满足问题的能力,优化解的质量。目前对约束满足与邻域搜索相结合的混合算法的研究内容主要包括以下几方面:
(1) 改进约束满足修复算法:如何提高初始解的质量;在约束满足修复算法中加入启发式方法,克服局部极值。比如文献[4]列出一种解决动态生产调度问题的混合优化算法:用约束规划算法产生一个可行解,作为禁忌搜索算法的初始解,采用调度规则、变量排序算法变更禁忌表,对关键路径上的一对操作互换,进行邻域变换,但是并没有对这种混合算法进行实验分析。
(2) 约束满足树搜索与邻域搜索的结合,树搜索过程中使用邻域搜索,用约束指导搜索,利用约束传播技术修剪搜索空间;在邻域搜索过程中使用系统搜索,能够遍历当前解的邻域,提高解的全局性;变量排序方法、值排序方法、约束传播策略与搜索方法的结合。
(3) 约束满足与邻域搜索算法相结合的结合策略。针对不同的问题,设计不同的混合算法。但这些混合算法都有一个共同点:一种算法作为主搜索过程,另一种算法则作为改进的启发式算法。
本文参考文献[4]和文献[5],总结约束满足技术与邻域搜索算法结合的混合算法的一般框架,如图1所示。首先针对问题的特征,建立约束满足优化问题(Constraint Satisfaction Optimization Problem, CSOP)模型;可以采用3种方式求解问题。第一种初始变量集为空,使用约束满足树搜索方法获得初始可行解,利用约束满足求解技术变量排序方法、值排序方法选择变量和值构造树节点;约束传播对搜索空间进行修剪;约束一致性检查进行冲突检测,如果有冲突则进行回溯,再对初始可行解进行邻域搜索。第二种初始变量集为非空,但小于变量个数,则从一个部分一致解开始进行树搜索构造方法获得初始可行解。第三种初始变量集为变量个数,则从一个完整的初始解开始,进行邻域搜索。可以松弛约束条件,求得一个不一致的初始完整解;也可以应用线性规划方法或其他启发式方法得到一个高质量的初始解。下面以Job Shop调度优化问题为例。设计混合算法步骤如下: