另一种扩展迭代改进策略的方法是,当搜索过程即将停滞在一个局部极小值时,修改该评估函数[71]。这种方法也称为动态本地搜索(Dynamic Local Search, DLS)[52]。
基于惩罚的算法通过惩罚权重来修改评估函数,惩罚权重与解决方案组件或候选解决方案的其他特征相关联;在CSP的情况下,惩罚权重通常与给定CSP实例和SAT的约束关系相关联,类似地,与给定CNF公式的子句相关(在后一种情况下,惩罚权重通常被称为子句权重)。 在搜索过程中修改这些惩罚权重。 各种基于惩罚的算法的底层局部搜索策略和用于惩罚修改的机制不同。 特别是后者可能对算法的性能产生重大影响。
基于惩罚的算法有时会受到以下直觉的激励:通过修改评估函数,可以消除局部最小值,或者在CSP的情况下,搜索过程可以学习区分“重要”与不太关键的约束,从而使其更容易找到解决方案(即全局最优)。然而,越来越多的证据表明,当前基于惩罚的算法的优异性能的主要原因在于由惩罚修改引起的有效搜索多样化[111,103]。 在特定情况下根据需要将搜索工作多样化到搜索空间的不同部分的想法在运营研究中具有悠久的历史 - 例如,参见Koopman [61]和Stone [99]。
GENET [119,107,20,17]是约束满足中最早的基于惩罚的算法之一。 它基于神经网络设计,其中节点表示原子变量赋值和连接冲突原子赋值的链接。 更准确地说,二进制CSP实例由网络表示,其中对于每个变量,存在一组标签节点,其对应于变量可以采用的值。 与违反任何约束的变量赋值相对应的任何一对标签节点通过链接连接。 惩罚权重与网络中的每个链接相关联; 在搜索过程的开始阶段,这些权重被设置为一个并且随机地标记在一起。
在搜索的任何阶段,每个集群恰好有一个节点被打开,也就是说,每个变量都有一个唯一的赋值给它,网络的状态对应于一个完整的变量赋值。每个标签节点从打开的相邻节点接收到一个信号。信号的强度等于连接的重量。对于每个集群,接收到最少抑制信号的节点被打开。注意,当所有惩罚权重为1时,GENET类似于Min-Conflicts启发式[76,77]。
由神经网络的硬件实现驱动,在给定的搜索步骤中对其集群进行更新的变量是异步选择的。在顺序机器上实现的集群在每次迭代中按随机顺序顺序更新。当网络处于稳定状态时,即当任何簇内的活动节点不发生变化,使得活动节点之间的总权值降低时,活动节点之间的所有边的权值均增加1。因此,网络可能再次变得不稳定。
网络状态的“能量”(由评估函数返回)是在该状态[18]中打开的所有节点接收的输入总量。网络的稳定状态对应于该评价函数的局部最小值,GENET通过迭代改进步骤达到这些状态。如果能量是0,那么CSP的解就找到了。
将GENET扩展到非二元约束满足问题,利用超边缘作为网络中的链接[119,20,67,68]。Stuckey和Tam[100]在进化算法中使用了这样一种GENET的扩展来突变染色体。结果表明,模因算法在求解硬CSP实例时是有效的。GENET的变种也被用于解决具有挑战性的汽车排序问题[19]的实例。
Breakout Method[78]是另一种基于惩罚的早期CSP算法。 与GENET不同,它将单个惩罚权重与给定CSP实例的每个约束相关联,并使用评估函数将每个变量赋值a映射到a下违反的约束的总加权。 否则,这两种算法基本相同。特别是,与GENET一样,Breakout Method将所有惩罚权重初始化为1并使用迭代改进直到达到其评估函数的局部最小值,此时所有不满足约束的权重在搜索继续之前递增1。
不同于专门为约束满足问题设计的GENET或Breakout方法,Guided Local Search (GLS)[111]是一种更通用的基于惩罚的方法,已用于组合决策和优化问题(如SAT和TSP)[113]。
作为一种基于惩罚的方法,GLS将惩罚与给定CSP实例的约束相关联。GLS使用表单的增广计算函数
其中a是一个完整的变量赋值,g(a)是a的评价函数值(这里:a下未满足约束的个数),pi是约束i的惩罚,Ii(a)是a下违反约束i的指标函数,值为1,反之为0。
在搜索开始时,所有处罚都被初始化为0,并且只要搜索过程达到f的局部最小值,就会应用惩罚变化。 选择在给定的局部最小值中增加的罚分,使得它们最大化效用函数
式5.1中定义a、Ii(a)、g(a)、pi, c(i)为约束i未满足的代价。对于标准CSP中的所有约束,该成本设置为1,但是通过使用不同的成本值,GLS可以很容易地扩展到带有加权约束的CSP变体的优化。这种选择机制确保只增加当前违反约束的惩罚。其次,约束越受到惩罚,再次惩罚的动机就越弱;这有助于搜索的多样化。每次选择的惩罚增加一个。最后,当使用非均匀约束代价时,该策略使搜索集中于满足较高的代价约束。这种精心设计的惩罚更新机制已被证明在各种应用中是有用的,包括英国电信的调度问题[106]和无线电链路频率分配问题[112]的一个版本,一个源自CALMA项目[8]的抽象军事通信问题。
GLS的一个吸引人的特性是它只有一个主要参数,即λ,用于调谐。 一个好的启发式是将λ的值设置为GLS遇到的第一局部最小值的成本的分数(在0和1之间)。 这允许根据给定问题实例的特征选择λ。 在发布时,GLS在广泛研究的11个基准问题上显示出与其他高性能算法相比具有竞争力。
最近,GLS已经扩展到包含随机移动和抽吸[74]。 得到的算法,扩展GLS,显示至少与GLS一样有效,但对于它所测试的问题(包括SAT,加权MAX-SAT和二次分配问题)显着不太敏感λ参数的值。
这种早期基于惩罚的SAT算法的动机是观察到,在某些结构化的SAT实例上执行多次基本GSAT运行时,某些子句往往在每次运行结束时都不满足。带有子句权重的GSAT[90]背后的想法是,通过将权重与这些子句关联起来,使搜索过程偏向于满足这些“问题子句”。更准确地说,权重与每个子句相关。它们最初被设置为1;但在每次重启之前,所有目前不满意条款的重量增加了δ= 1。基础局部搜索程序是基本GSAT的变体,其使用修改的评估函数g‘ (F, a) 来测量给定公式F中在赋值a下不满足的所有子句的总权重。 搜索初始化,重启和终止与基本GSAT相同。 (一种称为'Averaging In'的变体使用修改的搜索初始化,它引入了对先前局部搜索阶段达到的最佳候选解决方案的偏见[90]。)
研究发现,具有子句权重的GSAT在各种结构化SAT实例(包括SAT编码的图形着色问题)上的性能显著优于基本GSAT;此外,有迹象表明,通过对GWSAT使用相同的子句权重机制,可以实现进一步的性能改进[90]。到目前为止,这两种算法的性能都优于WalkSAT算法(如)和最先进的基于惩罚的算法(如SAPS(本节后面将介绍)和PAWS[102])。研究发现,具有子句权重的GSAT在各种结构化SAT实例(包括SAT编码的图形着色问题)上的性能显著优于基本GSAT;此外,有迹象表明,通过对GWSAT使用相同的子句权重机制,可以实现进一步的性能改进[90]。到目前为止,这两种算法的性能都优于WalkSAT算法(如新奇+)和最先进的基于惩罚的算法(如SAPS(本节后面将介绍)和PAWS[102])。
Frank[26,27]提出并研究了具有子句权重的GSAT的几个变体,这些变体在每个局部搜索步骤之后执行权重更新。这是基于GSAT应该受益于发现相对于最近的赋值,哪些子句最难满足。这些变体中最基本的一种称为WGSAT,它使用与具有子句权重的GSAT相同的权重初始化和更新过程,但是在更新子句权重之前只执行一个GSAT步骤。这种算法的一种改进,称为UGSAT,将每个搜索步骤中考虑的邻域限制为出现在当前未满足子句[26]中的一组变量。(这与GWSAT的随机漫步步骤中使用的邻域相同。)虽然这对于底层本地搜索过程的简单实现带来了相当大的加速,但是对于有效实现的差异可能不足以使UGSAT与其他GSAT变体(如GWSAT)具有竞争力。
Frank还研究了WGSAT的一种变体,其中子句权重随着时间的推移服从于均匀衰减[27]。其基本思想是,相对重要性的条款w.r.t.,他们的满意度状态可以在搜索过程中改变,因此需要一个机制,集中加权搜索最近不满意的条款。虽然使用这种衰减机制可以稍微提高WGSAT在变量翻转方面的性能,但是这种增益不足以摊销频繁的权重更新步骤所增加的时间复杂性。然而,将搜索重点放在最近不满足的子句上的类似机制在本节后面讨论的最先进的基于惩罚的SAT算法中起着至关重要的作用。
动态局部搜索中惩罚的使用在概念上与拉格朗日乘数法求解连续约束优化问题密切相关[93,115]。对于一个约束优化问题,即函数在等式约束的条件下最小化,我们可以定义拉格朗日函数
其中λi被称为拉格朗日乘数的连续变量。注意,这些与前面讨论的基于惩罚的算法中通常使用的增强评估函数中的惩罚权重具有相同的作用。可以证明,通过找到L的鞍点,即点,可以获得满足所有等式约束的局部最小值
对于所有和足够接近。基于该结果,可以将发现约束优化问题的局部最小值的问题简化为找到无约束优化问题的鞍点的问题。 后一任务可以通过使用变量结合使用拉格朗日乘数在L上的迭代上升来对L进行迭代改进(例如,以梯度下降的形式)来实现。在不满足所有约束的f的局部最小值中,增加拉格朗日乘数具有更严重地惩罚违反约束的效果。 最终,对于的某个值,不再是局部最小值,使得通过修改进一步最小化变得可能,导致更少的违反约束。
这种用于解决连续约束优化问题的众所周知的方法为Shang和Wah的SAT DLM算法提供了动力[93]。 这种动态局部搜索算法背后的基本思想是对具有子句权重的GSAT中使用的相同增强评估函数执行迭代最佳改进(这对应于在上最小化)。每当达到局部最小值时,所有不满足子句的罚分都会增加(这相当于通过修改对应的上升),直到某些先前恶化的变量翻转变得更好,因此搜索过程不再陷入局部最小值。针对SAT的DLM的基本版本还使用了与GSAT/ tabu中相同的tabu机制,以及定期减少所有子句惩罚,以避免数字溢出。此外,在开始搜索过程之前,通过执行完整的单元传播遍历来简化给定的公式。
一些基本DLM算法的扩展已经被证明可以提高性能[122,121];这些使用各种基于内存的机制更有效地避免和克服搜索停滞(这些方法的概述,请参阅hoo和圣¨utzle [52]。)所有这些算法都有相对较多的参数,需要仔细调整这些参数才能达到最佳性能。DLM也被应用于加权MAX-SAT问题[115],对非二元问题的扩展是一个有趣的研究方向。
需要注意的是,尽管这两种方法之间存在密切的概念关系,但拉格朗日方法用于连续优化的重要数学性质并没有延续到DLM。这主要是由于DLM用于确定搜索步骤的启发式机制,而不是连续拉格朗日方法中严格使用目标函数的导数。
指数化次梯度(Exponentiated Subgradient, ESG)算法[89]的最初动机是次梯度优化(Subgradient optimisation),这是一种著名的拉格朗日函数最小化方法,广泛用于生成分支定界算法的下界。ESG是一种基于惩罚的SAT算法,它将惩罚权与搜索过程中修改的给定CNF公式中的子句相关联。在初始化所有子句权重为1之后,搜索从随机选择的变量赋值开始。SAT ESG下的局部搜索过程是基于一种可以看作是GSAT简单变体的最佳改进搜索方法;在每个局部搜索步骤中,从当前未满足子句中出现的所有变量集合中均匀随机地选择要翻转的变量,这些变量的翻转导致未满足子句总权重的最大降幅。当达到局部最小值(即,在不满足子句中出现任何变量的转移不会导致不满足子句的总权重减少时),以概率η进行搜索,通过移动变量来继续搜索。 从出现在不满足子句中的所有变量的集合中随机统一选择; 否则,局部搜索阶段终止。
在每个局部搜索阶段之后,子句权重分两个阶段更新:首先,所有子句的权重乘以一个因子,该因子取决于各自的满意度状态(缩放阶段):可满足子句的权重乘以,不满足子句的权重乘以。然后,使用公式(平滑阶段)更新所有子句权重,其中w是缩放后所有子句权重的平均值,参数ρ是0到1之间的固定值。当找到F的一个满意的赋值或达到搜索步骤数的给定界限时,该算法终止。
与基础本地搜索步骤相比,权重更新在计算上是昂贵的,因为它涉及所有子句权重的修改。 此外,实验证据表明ESG中的局部搜索阶段通常很短,因此必须相当频繁地执行昂贵的平滑操作[52,53]。 即使使用有助于改善这一问题的特殊实现技术,Southey和Schuurmans针对SAT的ESG高度优化的参考实现并不总能达到高性能WalkSAT算法(如Novelty +)的性能。与DLM-2000-SAT相比,ESG-SAT通常需要更少的步骤来查找给定公式的模型,但就CPU时间而言,两种算法都表现出非常相似的性能[89,53]。 可以注意到,一般的ESG框架最初是针对更一般的布尔线性编程(BLP)问题提出的,并且它也已经非常成功地应用于组合拍卖获胜者确定问题[89]。
Hutter等人[53]的缩放和概率平滑(Scaling and Probabilistic Smoothing,SAPS)算法基于以下认识:ESG中昂贵的权重更新方案可以被更高效的过程所取代,而不会对基础搜索过程产生负面影响。 SAPS可以被视为使用修改权重更新方案的ESG的变体,其中缩放阶段被限制为当前不满足条款的权重,并且平滑仅以特定概率psmooth执行。这些修改中的第一个也用于Southey和Schuurmans的有效ESG实现; 但它是概率性的,因而不那么频繁的平滑,导致相对于ESG的性能大幅提升,并且还提供了对于在ESG中实现良好性能至关重要的特殊实现技巧。 SAPS的表现明显优于ESG,DLM-2000-SAT和高性能WalkSAT变体[53]; 但是,有一些类型的SAT实例(特别是硬和大SAT编码的图着色实例),SAPS没有达到Novelty +的性能。
作为SAPS的反应变体,RSAPS [53]使用与基础Adaptive WalkSAT [45]非常相似的机制,在搜索过程中自动调整平滑概率psmooth。 RSAPS有时可以比SAPS获得更好的性能; 但是,它仍然有其他参数,特别是需要手动优化的比例因子。