5.3 Tabu Search and Related Algorithms Tabu搜索和相关算法

禁忌搜索(TS)[35,36]背后的关键思想是使用内存来防止搜索过程停滞在局部最小值,或者更一般地说,是给定搜索空间中有吸引力的非解决区域。 在简单禁忌搜索中,迭代改进策略通过短期记忆得到增强,允许它从局部最小值中逃脱。 该存储器用于防止搜索返回最近访问的搜索位置以进行固定数量的搜索步骤。 简单的TS可以通过明确记住先前访问过的候选解决方案并排除任何可能导致这些解决方案的步骤来实现。更常见的情况是,禁止重新引入刚刚从当前候选解决方案中删除的解决方案组件(例如分配单个CSP变量),从而阻止了逆转最近的搜索步骤。名为tabu tenure的参数确定适用这些限制的搜索步骤数。 注意,禁止使用禁忌机制的可能步骤具有与将当前候选解s的邻域N(s)动态地限制为可允许邻居的子集N' \subseteq N(s)相同的效果。

作为一种不受欢迎的副作用,这种禁忌机制有时会排除导致搜索空间中有趣的、未访问的区域的搜索步骤。因此,许多禁忌搜索算法都使用了所谓的“期望标准”,该标准指定了覆盖候选解或解决方案组件的禁忌状态的条件。最常用的期望标准之一是,它覆盖了导致现有候选解决方案改进的步骤的禁忌状态。,搜索过程中看到的最佳候选解决方案。

Min Conflicts Heuristic with Tabu Search (TMCH) 

通过一个简单的禁忌搜索机制扩展MCH,可以得到TMCH算法[101,98]。TMCH的工作原理与MCH完全相同,只是在每个搜索步骤之后不同,即,在变量xi的值从v变为v'之后,变量/值对(xi,v)被声明为下一个tt步骤的禁忌,其中tt是禁忌任期参数。 虽然(xi,v)是禁忌,但是从xi的值的选择中排除了值v,除非将v分配给xi导致对现任赋值(愿望标准)的改进。

根据经验证据,TMCH通常比WMCH表现更好。 有趣的是,发现tt = 2的禁忌设置一致导致不同类型和大小的CSP实例的良好性能[101]。

The Tabu Search Algorithm by Galinier and Hao (TS-GH) 

尽管在概念上与TMCH非常相似,但Galinier和Hao [29]的禁忌搜索算法(TS-GH)通常表现出更好的性能。TS-GH基于与MCH相同的邻域和评估功能,但使用不同的启发式方法来选择每个搜索步骤中涉及的变量/值对:在变量x出现在当前违反的约束中并且v'是来自x域的任何值的所有对(x,v')中,TS-GH选择导致违反约束数量最大减少的值。 如果存在多个这样的对,则随机均匀地选择其中一个。与在MCH中一样,然后通过将v'赋值给x来执行实际搜索步骤。 这个最佳改进策略使用TMCH中使用的相同禁忌机制进行扩充:在将x的赋值从v更改为v'之后,变量值对(x,v)被声明为tt搜索步骤的禁忌。 此外,相同的愿望标准用于使算法能够执行搜索步骤,该搜索步骤导致对现任赋值的改进,而不管相应变量/值对的禁忌状态如何。

与目前讨论的MCH变体不同,TS-GH的有效实现关键取决于评估函数值的增量更新机制,类似于GSAT中使用的评估函数值。 基本思想是在大小为n×k的二维表中保持任何潜在搜索步骤对评估函数(即,任何搜索步骤产生的冲突数)的影响,其中n是变量的数量, k是给定CSP实例中最大域的大小。

此外,禁忌机制可以有效地如下实现。 对于每个变量/值对(x,v),存储当x最后设置为v时的搜索步骤编号t_{x,v}。初始化搜索时,所有t_{x,v}都设置为 -tt; 随后,每次将变量x设置为值v时,将t_{x,v}设置为当前搜索步骤数 t,其中在搜索过程的初始化时从0开始计算搜索步骤。当且仅当 t - t_{x,v} ≤ tt 时,变量/值对(x,v)是禁忌。 通过结合先前描述的增量更新机制使用该技术,TS-GH的搜索步骤可以与MCH的搜索步骤一样有效地执行。

TS-GH最初是作为MAX-CSP的算法引入的,MAX-CSP是CSP的优化变体,其目标是找到满足最大约束条件的变量赋值(见5.6节)。 实证研究表明,当应用于传统的CSP时,TS-GH通常比任何其他MCH变体(包括TMCH)实现更好的性能,使其成为目前已知的CSP的最佳SLS算法之一[101]。与TMCH的情况不同,TS-GH中禁忌任期参数的最佳设置倾向于随实例大小而增加; 这使得解决具有峰值效率的新CSP实例变得更加困难[101]

GSAT with Tabu Search 

将简单的禁忌搜索策略集成到基本GSAT底层的最佳改进程序中,可以得到一种名为GSAT的算法,禁忌搜索(GSAT / Tabu)[72,98]。 在GSAT / Tabu中,禁忌状态与给定公式中的命题变量相关联。 在变量x被填充之后,它不能在下一个tt步骤中回退,其中禁忌任期tt是算法的参数。 在每个搜索步骤中,要在基本GSAT中选择要变换的变量,除了选择仅限于当前不是禁忌的变量。在搜索初始化时,清除所有变量的禁忌状态。 否则,GSAT / Tabu与GSAT完全一样; 特别是,它使用相同的重启机制和终止标准。 与TMCH的情况一样,为了有效地实施GSAT / Tabu,使用增量分数更新和禁忌机制至关重要。

与GWSAT不同,固定maxTries参数的GSAT/Tabu是否具有PAC属性并不清楚。直观地说,对于低tt,算法可能无法逃脱广泛的局部极小区域,而对于高tt设置,由于tabu变量太多,可能会切断所有解的路径。然而,在使用特定于实例的优化tabu保留区设置时,GSAT/ tabu通常比具有类似优化参数的GWSAT性能要好得多。对于大型结构化的SAT实例[49]尤其如此;但是,也有一些例外情况,GSAT/Tabu的性能比GWSAT差很多,包括众所周知的SAT编码的物流规划问题。与基本的GSAT类似,GSAT/Tabu可以通过随机游走机制进行扩展;有限的实验表明,通常这种混合算法的性能并不优于GSAT/Tabu[98]

WalkSAT with Tabu Search

像GSAT和MCH一样,WalkSAT/SKC可以通过一个简单的tabu搜索机制进行扩展。WalkSAT/Tabu[73]采用与WalkSAT/SKC相同的两阶段选择机制和评分函数b,并对每个翻转变量强制执行tt步骤的Tabu任期。(为了有效地实现这种禁忌机制,使用与之前描述的TS-GH相同的方法。)如果所选子句c不允许零损坏步骤,那么在c中出现的非禁忌的所有变量中,WalkSAT / Tabu选择得分最高的那个b值; 当有多个变量具有相同的最大分数时,其中一个变量是随机均匀选择的。如果所选子句c中出现的所有变量都是tabu,则变量赋值保持不变(即所谓的null-flip),但是所有变量的当前tabu保留期值与任何其他翻转之后的值一样减少。

maxTries参数固定的WalkSAT/Tabu被证明是不完整的[44,47]。虽然这主要是由null-flip引起的,但是还不清楚用随机游走步骤替换null-flip是否足以获得PAC属性。然而,在实践中,WalkSAT/Tabu通常比WalkSAT/SKC的性能要好得多,特别是在结构化的SAT实例上,例如大型SAT编码块世界规划问题[49]。

Novelty and Variants 新奇与变异

新颖性算法(The Novelty algorithm )[73]是从WalkSAT框架中派生出来的。像禁忌搜索一样,Novelty使用搜索历史上有限的信息来避免搜索停滞。更具体地说,它的变量选择机制是基于一种直觉,即应该避免重复地前后翻转相同的变量。这个机制是基于可变的年龄(也见Gent和Walsh[33]),即自上次翻转以来发生的翻转次数。不同于WalkSAT/SKC和WalkSAT/Tabu,Novelty及其最新的变体使用了与GSAT相同的变量计分函数,即各自翻转导致的未满足子句数量的差异

在Novelty的每个步骤中,在随机均匀地选择一个不令人满意的子句c(与WalkSAT / SKC中完全相同)之后,如下选择要被翻转的变量。 如果具有最高分数的变量x在c中的变量中没有最小年龄,则始终选择它。 否则,仅以1-p的概率选择x,其中p是称为噪声设置的参数。在其余情况下,选择下一个分数较低的变量。当根据分数对变量进行排序时,根据年龄的减少打破了平局。(如果有几个分数和年龄相同的变量,Kautz和Selman的参考实现总是选择c语言中第一个出现的变量。)Novelty(以及下面描述的高级变体)使用与WalkSAT/SKC相同的初始化过程、重启机制和终止条件

请注意,即使p> 0,Novelty也比WalkSAT / SKC显着更贪婪,因为总是选择一个子句中两个最有改进的变量之一,其中WalkSAT / SKC可以选择任何变量,如果不破坏其他条款就不会有任何改进。正是由于这个原因,对于固定的maxTries设置来说,Novelty本质上是不完整的,并且在一些常用的基准实例上偶尔会出现极端停滞[44,49]。还可以注意到,与WalkSAT / SKC不同,子句内的变量选择的新颖性策略(Novelty strategy)对于p = 0和p = 1都是完全确定的。尽管如此,在大多数情况下,Novelty显示出比WalkSAT / SKC和WalkSAT / Tabu显着改善的性能[73,49]

R-Novelty [73],使用更复杂的变量选择机制的新奇的变体,经常但不总是比Novelty更好(详见McAllester等人[73]或Hoos和St¨utzle的第6章)[52])。 尽管它使用了一种旨在防止搜索停滞的循环策略,但这种算法受到其可证明的基本不完整性的影响[44,47],但它有时会比Novelty [73,49]表现更好。

与GWSAT中使用的机制类似,简单的冲突定向随机游走机制可以很容易地扩展Novelty和R-Novelty;这样就有效地克服了本质上的不完全性以及经验上观察到的停滞行为。Novelty^{+}算法[44,47]根据标准Novelty机制选择要被翻转的变量,概率为1-wp,并在其余情况下从所选子句中进行均匀随机选择。R-Novelty^{+}以相同的方式从R-Novelty获得,但没有利用R-Novelty的循环破坏机制。

对于wp> 0,Novelty^{+}可证明是PAC,并且显示主要噪声参数p的足够高(实例特定)设置的指数RTD。 在实践中,小步行概率wp通常足以防止Novelty偶尔观察到的极端停滞行为并且与Novelty相比实现了显着优越的性能。事实上,该算法的行为似乎有更鲁棒的wp参数,主要噪声设置p,同时一致良好的性能观察到wp = 0.01[47]。值得注意的是,在Novelty不存在停滞行为的情况下,wp = 0.01时的Novelty^{+}表现通常与Novelty几乎相同。类似的观察结果适用于R-Novelty^{+}; 然而,有一些迹象表明R-Novelty^{+}在几类结构化SAT实例上没有达到概念上更简单的Novelty +算法的性能,包括SAT编码的硬图着色和规划问题[49]。

自适应Novelty + [45]是Novelty^{+}的扩展,可在搜索过程中动态调整噪声参数,因此不需要手动调整此参数。 该算法的有效实现赢得了SAT 2004 SAT Solvers竞赛随机类别的第一名。Novelty ++,一种新近出现的Novelty变种,在许多情况下被发现比Novelty +表现更好; 通过将基础变量选择机制与类似于基础GSAT的贪婪迭代改进策略混合,可以进一步提高其性能[69]。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值