5.5 Other Approaches 局部搜索的其他方法

除了前面部分中介绍的算法之外,还在解决CSP的上下文中应用了许多其他本地搜索方法。 在本章的内容中,不可能对CSP的大量且不断增加的局部搜索算法和密切相关的问题进行全面的调查,例如图着色问题和SAT。 因此,选择下面提到的算法来说明一些主要方法。

有大量关于约束满足问题的进化算法的研究。最早的作品包括Tsang和Warwick[108]、Paredis[82]、Hao和Dorne[39]、Warwick和Tsang[120]以及RiffRojas [87];Craenen等人提供了最新进化算法的概述和比较。GENET和GLS在模因算法中被用作约束满足[100]和优化[43]的辅助搜索过程。Galinier和Hao[30]针对图形着色问题(GCP)开发了一种专门的模因算法,该算法使用一种有效的禁忌搜索算法的短期运行作为辅助搜索过程;该算法是目前已知的最有效的GCP算法之一。

Hao和Dorne[39]使用一种专门的遗传算法来搜索部分赋值空间。Lau[64]开发了制导遗传算法(Guided Genetic Algorithm, GGA),该算法将引导局部搜索的原理应用于遗传算法中。其思想是利用惩罚构造一个适应度模板,该模板指导遗传算法中的交叉和变异,从而在选择过程中以更高的概率选择更好的赋值。GGA已成功应用于处理器配置问题[65],调度中的一般分配问题[64],以及无线电链路频率分配问题的一个版本[66]。

约束被用来帮助进化算法有效地搜索。这是通过修改演化计算中的目标函数来实现的。例如,Yu等[125]使用惩罚引导搜索远离搜索空间的“贫困”区域,而Li[70]、Tsang和Li[105]以及Jin[54]则使用激励引导搜索到有希望的区域。

蚁群优化(Ant colony optimisation, ACO)是一种基于种群的随机局部搜索方法,其灵感来自于蚂蚁[22]的寻路行为。蚁群优化(Ant colony optimisation, ACO)在CSP[96]研究中取得了一定的成功,尤其是排列约束满足问题 ,例如汽车排序[95],以及二元CSP [110]。 其他广泛使用的随机局部搜索方法已应用于特定类型的CSP实例。例如,对于图形着色问题(GCP)[55]和SAT,有多种模拟退火算法[97]。同样地,已经为GCP[13,81]和MAX-SAT[123,94]开发了一些迭代的局部搜索算法。Kask和Dechter[56]将GSAT推广到CSP,其中还包括各种额外的SLS机制,包括随机游走和子句惩罚,后来又扩展了基于循环割集[57]的树搜索机制。Walser[117]提出了一种针对伪布尔CSP (CSP的一个著名特例)的WalkSAT算法,该算法包括禁忌机制和有偏随机搜索初始化。

局部搜索不一定要不完整。在系统的局部搜索[40]及相关方法(如Richards等[86])中,当底层的局部搜索算法遇到局部最小值时,通过记录和解析no-goods来实现完整性。当遇到nogood时,尝试解决:例如,如果遇到“P = true且Q = true”且“P = true且Q = false”,则将它们替换为“P = true” (一种常用于真值维护系统的技术;参见,例如,Doyle [23])。 这些nogood帮助系统局部搜索逃离局部最优并实现完整性,这是大多数其他局部搜索方法不喜欢的理想属性:当发现“P=true”和“P=false”对任何P都是无效的时,给定的CSP实例被证明是不可满足的。为了达到完整性,在最坏的情况下,系统的局部搜索可能会记录下一个指数级的nogood数量。然而,经过仔细的内存管理,该算法已被证明对作业车间调度问题是有效的[21]。

受限局部搜索[85]是一种搜索不违反任何约束的部分赋值的方法的示例。基于动态回溯[34],约束局部搜索进行深度优先搜索。每当不能进一步扩展部分赋值时,就从其中删除随机选择的原子赋值,以便在不同的方向上继续搜索。尽管使用深度优先搜索,但受限的局部搜索是不完整的。

大多数针对CSP的局部搜索算法都使用邻域关系,这种邻域关系将搜索步骤限制为一次只修改一个变量的值。然而,使用较大的邻域有时是有利的;例如,交换邻域,其中搜索步骤交换两个变量的值,已经成功地与GENET[19]一起用于排序问题。在SLS算法中,大邻域更常用于约束优化问题(参见下一节)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值