论文Propagation via Lazy Clause Generation(3)

9 Experiments

我们使用MiniSat [25]版本2.0 beta作为起点构建了一个原型延迟子句生成器系统。 我们现在使用延迟子句生成给出了许多不同实验的结果。 我们还比较了一些问题上延迟子句生成的各种建模选择。 我们使用3个字母代码来定义建模选择:第一个字母表示(e)ager或(l)azy建模; 第二个字母表示(f)ull整数表示,(n)非连续表示,(b)边界表示和(n)非连续边界表示; 第三个字母代表(b)边界或(d)域传播器。 请注意,对于具有bounds变量表示的急切方法,边界和域传播器的子句完全相同,因此我们编写eb(bd)来表示ebb和ebd。 我们将使用MiniSat [25]版本2.0 beta作为SAT求解器的方法与急切方法进行比较,并与Gecode 1.3.1 [14]有限域传播系统进行比较。

开放式调度实验在3GHz Intel Pentium D上运行,4Gb内存运行Debian Linux 3.1,其余实验在3.4GHz Intel Pentium D上运行,4Gb内存运行Debian Linux 4。

9.1 Open Shop Scheduling Problems

第一组实验使用[8]中的开店调度问题。 这些问题中的每个约束的形式为x1∨x2,x1 + d \leqslant x2或x0⇔x1+ d \leqslant x2,其中d是常数。 这些问题也适合使用SAT模数差分逻辑来解决。 我们使用的所有传播器都是tight bounds propagators,因此我们只使用[[x \leqslant d]]形式的布尔变量和DOM(x)的第一类子句。 我们对前两种约束x1∨x2,x1 + d \leqslant x2使用eager models,因为它们只需要线性的域大小数量的二元子句来建模。 我们使用 lazy propagators 来确定不等式x0⇔x1+ d \leqslant x2。

我们将惰性子句生成方法与使用[33]生成的最小子句表示的eager modelling approach进行比较。eager modelling approach使用MiniSat 2.0版beta作为SAT求解器运行。对于开店调度问题,我们没有与Gecode进行比较,因为没有非常复杂的编码和搜索策略[21],他们在这些问题上没有竞争力,因为他们缺乏nogoods。 相反,我们将其与Barcelogic DPLL(T)SAT模理论(SMT)求解器1.1版,使用了差分逻辑理论求解器[13],进行比较,因为这些问题属于这个解算器可以非常有效地处理的差分逻辑问题。

这些调度问题是优化问题。我们寻找最小的makespan(所有作业的完成时间)。最小化是在可能的makespans空间上通过二分搜索来实现的,具体见[33]。我们注意到二分优化搜索在某种意义上对eager modelling approach是有利的,因为它生成的子句可以有效地用于解决多个(链接的)满意子问题。

Since these are large suites of benchmarks,我们显示总结结果以及一些个别实例来说明结果的传播。 在每个表格中,我们展示了用户找到并证明最佳解决方案的时间:lazy approach的lbb,the eager approach 的ebb(以及在SAT求解器中为 eager approach 所花费的时间sat),以及 SMT approach 的smt。 我们还给出了每种方法的冲突数量,以及二分法搜索中所有子问题的平均值和最小值,即eager approach的子句比率除以lazy approach创建的子句总数。

表1中显示的开店调度问题gp对于所有方法都很容易。对于这些问题,ebb的大部分时间只是用于生成子句。虽然smt显然需要更多的搜索来找到解决方案,但考虑到smt对问题的微小描述,它非常快速。请注意,其中一些问题在2005年[21]中才得到解决,因此对于没有nogoods的技术而言,这些问题并不容易解决。确实,Gecode不能在5分钟内找到解决gp06-*问题的解决方案。

表2中显示的开店调度问题tai更加困难。随着问题规模的增长,lazy和eager方法的优势比SMT方法更大。lazy方法所探索的搜索空间是eager方法的两倍左右,但它仍然比eager方法快得多。还要注意,示例越大,由惰性方法生成的子句的百分比越小。

表3中显示的开店调度问题j要难得多。分别考察了最近[33]解决的三个最难的问题j7-per0-0、j8-per0-1和j8-per10-2。除了j7-per10-2之外,lazy方法优于eager方法,并且在更大的问题上优于SMT。为了节省三个最困难问题的实验时间,我们只尝试用最优的makespan(单个子问题)来找到一个解决方案(对于ebb来说,二分法寻找最大问题需要2天以上的时间)。令人惊讶的是,ebb对其中两个问题的lbb进行了改进,这表明从一开始就拥有所有子句信息可能是有利的。主要的额外成本似乎是nogoods的规模

总的来说,除了j7-per0-0、j8-per10-2和j7-per10-2, lbb的解决速度快于ebb。在整个套例中,它的几何平均值要快一个数量级。虽然它比ebb需要更多的搜索,但大量减少子句是有回报的。任何实例中出现的子句比率最低为3.46。总体上,随着示例变得越来越难,lbb通常在smt上得到改进。

9.2 Crypt-Arithmetic Problems密码算术问题

下一组问题是加密算法问题,如著名的:SEND+MORE=MONEY问题,其中每个字母代表不同的数字,等式必须成立。它们包含大型线性方程和一个alldifferent的约束条件。对于这些问题,eager approach([33])都不能在数小时内生成子句。

所有的模型对大型线性方程都使用边界传播器,而第三个编码代表表示alldifferent的传播器种类。延迟子句生成方法使用一种alldifferent传播器,该传播器等价于在一组独立的传播(x1 \neq x2)上使用域传播器或对这些传播器进行边界传播,而Gecode使用其本机的alldifferent传播器。所有的求解器都会寻找所有的解决方案。We compare lfd, lbd and lbb using VSIDS search and first fail search versus Gecode using first fail search. 

我们比较了著名的alpha问题的方法和从[30]中获得的实例。我们展示了来自[30]的实例,这些实例对于某些解决程序和搜索需要超过1000个冲突/失败。问题的完整描述可以在[12]找到。

结果显示在表4和表5中。显然,在边界表示上使用域传播器的灵活性可能是有益的,因为lbd优于lfd,但最好的lazy方法是仅使用边界传播。 很明显,nogoods可以显着减少对这些问题的搜索。 高度工程化的Gecode求解器比我们的朴素传播引擎传播得快得多,而且这里没有足够的搜索能够真正从nogoods中获益。 有趣的是,在这种情况下,通过更常见的CP风格搜索可以改善VSIDS搜索,尽管问题很容易。

   

9.3 Quasigroup Completion Problems 拉丁方阵

n×n拉丁方阵(latin square)是值xij,1 \leqslant i,j \leqslant n的矩阵,其中每个数字[1..n]在每行和每列中恰好出现一次。 它由约束表示

拟群补全问题(QCP)是一个拉丁平方问题,其中给出了一些xij。这些是具有相变特性的具有挑战性的问题。我们使用了来自2006年约束满足求解器竞赛[6]的示例,以及lsencode[22]生成器生成的一些更大的示例。同样,alldifferent约束的传播器等价于在一组独立的传播器(x1 6= x2)上使用域传播器或边界传播器进行传播。我们将使用distinct和first fail search与Gecode进行比较(We compare against Gecode using distinct with first fail search. )。

表6和表7比较了用户搜索各种建模可能性的时间和数量(以找到尺寸为15×15的QCP的第一个解决方案)。 对于eager modelling,包括构建分句表示的时间,它是0.01或0.02秒。基准0-9是可以满足的,而10-14是不能满足的。

        

我们可以看到,在减少搜索方面,nogoods在这些问题中确实是有效的。 虽然Gecode在传播方面的效率要高得多,但对于很难的例子来说,搜索空间的减少是如此之大,以至于Gecode无法与之竞争。 对于这些例子,eager approaches是最好的,而lfd组合是最好的lazy方法。 这很有意思,因为对于lazy方法,边界传播比域传播更差,但对于eager approaches,边界传播会更好。

表8显示了25×25 QCP问题的结果,以便在尺寸增加时看到建模选择的趋势。 Gecode很难解决这些问题,需要数小时才能完成。 在15个实例中的8个实例中,lfd改进了efd,总体而言,它更快地解决了整个问题。 即使QCP问题很小(eager clause generation的成本小于0.10秒),lazy方法也避免了检查许多无用子句的开销,因此随着问题规模的增长,它开始优于eager approach。有趣的是,对于这些问题,eb(bd)仍然比lazy approach lfd好,尽管lazy bounds表示比lfd差。考察新型组合lbd,它与lfd有相同的搜索,它的搜索速度快得多,但通常搜索空间更大,奇怪的是,它甚至比弱lbb还要大。

      

为了进一步查看随着问题规模增加而出现的趋势,我们使用lsencode [22]问题生成器生成了大小为35×35,600个洞[12]的问题。结果如表9所示,其中所有问题都是可满足的。可以看出,目前lfd是整体上最好的方法,明显优于eager版本efd,略优于eager bounds版本eb(bd)。对于这些较大的问题,lbd现在改进了lbb,实际上在20个实例中的5个中提供了最好的结果。如果能够更好地实现重复检查,那么它可能非常具有竞争力。

这表明,即使对于eager approach非常好的问题,延迟传播也是值得的。 应该记住,传播引擎中的约束非常少,QCP n×n仅需要2n个不同的约束。

9.4 CELAR Radio Link Frequency Assignment Problems CELAR无线电链路频率分配问题

CELAR无线电链路频率分配问题[3]由一组无线电频率和一组无线电链路组成,用于为每个无线电链路分配一个频率。某些对无线电链路必须在频率上保持精确的距离,而另一些链路至少应该保持一定的距离。我们使用前5个问题(其中所有约束都是可相互满足的),同时最小化所使用的最大频率。可能的频率组F是不连续的:

仅使用在777个可能值的范围[16..792]中的44个值。所以这些问题是非连续表示的候选问题。我们对问题进行建模,使用边界传播器为 |x−y|> k (see Example 24)建模,对|x−y|= k建模,使用边界传播器对个体约束 |x−y|\geqslant k, x−y \leqslant k and y−x \leqslant k. 

我们比较全整数表示,非连续表示,边界表示和非连续边界表示。 对于全整数表示,我们将约束¬[[x = d]],d∈[16..792] -F静态地添加到SAT求解器,而对于(连续)边界表示,我们静态地添加约束,其中di和di+1是F中的连续值。我们还与Gecode(使用具体化约束,将表示为)进行比较。

各种建模选择的结果显示为:表10中的用户时间,表11中的失败,以及表12中执行的单位传播。显然非连续表示明显优于连续表示,它们包括大约20×较少的变量。失败的结果表明,它不是更好的搜索的结果,因为可以分支的布尔变量更少,而只是更多的单元传播的开销,以处理更多的变量。

这清楚地显示了传播器实现与变量表示分离的好处。传播器对非连续布尔表示非常有效,无需修改。

有趣的是,对于这些问题,实施例24中解释的析取传播器没有改进边界传播器。

    

9.5 Lazy Clauses as Nogoods

延迟子句生成方法将传播器的子句永久地添加到SAT求解器中,因此永远不会删除它们。 但由于我们不断运行传播引擎,因此没有必要。 如果我们以后删除它们,在需要的时候,它们将被传播引擎重新发现。 似乎值得考虑处理这些添加的子句,如nogood子句,这些子句被添加,然后在它们看起来没用时被删除。

最后的实验验证了将延迟子句作为nogood使用是否能够提高我们的求解器的整体性能,也就是说,让SAT求解器来决定保留哪些延迟子句。我们稍微修改了一下实现,以便提供一个延迟子句,如下所示。我们不会在SAT解决程序的子句存储中添加冲突子句,而只是将其作为冲突的原因给出。带有隐含文字literals的子句被添加为习得子句。

我们比较了使用lbb和使用lfd的QCP 25×25套件将gp和tai开店调度套件中的传播者保留条款作为永久子句或nogoods。 表13中显示了作为nogoods处理的具有惰性子句的版本的相对性能。该表说明将惰性子句保持为nogoods并不是有益的,并且这样做总是增加搜索和生成的子句的数量。

注意,我们只用nogood的默认策略管理,它可能并不适合lazy clause generation,所以这可能应该更深入地研究,显然,如果lazy clauses的大小对某些问题变得过高,那么使用nogoods存储lazy clause的成本在任何情况下都不会过高。

10 Related Work

论文[33]解释了如何使用命题[[x \leqslant d]] eagerly将线性算术约束编码为CNF(以给出tight clauses)。 他们使用 eager approach 解决了三个非常困难的开店调度问题,但是当线性约束涉及大量变量时,这种方法显然是不切实际的。 我们的惰性方法使得线性算法的编码可以用于大型线性约束,并允许编码任意传播器。

Gent [15]描述了如何使用support encoding[17]在SAT中编码弧一致性。 这相当于编码弧一致性算法的传播规则。 Gent [15]表明支持编码比通常直接编码二进制CSP到SAT更有效。 同样,这种类似于[33]的方法对于大型的约束是完全不切实际的。

与本文最相关的工作是[16]中描述的混合BDD和SAT边界传播集求解器。 在那里集成了基于BDD的集合求解器和SAT求解器,并且BDD集求解器将描述其传播的子句传递给SAT求解器,以便利用SAT求解器的nogood功能。 使用BDD传播器,可以自动构建紧密传播规则。 在这里,我们将方法扩展到set变量之外,以支持整数变量,通过在SAT求解器中嵌入所需的最少量机器来消除传播求解器。

在约束满足中有大量关于look back 方法的工作(参见例如[10],第6章),但直到最近,之前几乎没有证据表明与传播相结合的look back 方法是成功的。 Katsirelos和Bacchus [18]的工作表明,人们可以使用源自SAT的nogood技术,使用FCCBJ在CSP系统中存储和管理nogoods。 在进一步的工作[19]中,他们考虑如何为许多全局约束生成传播的解释(有效条款),以便在CP求解器中支持nogoods。 他们考虑通常的整数{[[x = d]]}的DIMACS编码,因此不考虑边界传播

Roussel [31]给出了域的线性编码(不包括不等式文字),它具有与我们的新编码相同的单位传播强度,但需要更多的变量和文字literals。

延迟传播方法( lazy propagation approach )可以看作是可满足性模理论(Satisfiability Modulo Theories)[27]求解器的一种特殊形式,其中每个传播器被视为一个独立的理论,理论传播用于学习子句。

还有其他的传播求解器,它们允许整数的不同表示,特别是Minion[24]和Gecode[14]。所有表示要么支持所有原子约束,要么在可使用的传播器中受到限制。Gecode[32]的视图方法允许将简单约束定义的变量视为从原子约束到原子约束的映射,这与本文的映射思想有一定的相似性。例如,变量y = x + 3有效地将原子约束,如x > 4,重写为y > 6,反之亦然。在延迟子句生成解决程序中包含视图将非常有用,因为它减少了所需的布尔变量的数量。

11 Conclusion

最后,我们使用惰性子句生成构造了一个混合的SAT有限域传播求解器,它捕获了两种范式的一些优点。该算法无需复杂的搜索策略,可以有效地解决复杂的调度问题。在需要大量搜索的地方,我们希望它比基于传播的解决方案更有效,因为它包含nogood和冲突定向回跳。我们已经检查了来自惰性子句生成混合解决方法的建模选择。我们发现传播器的选择与布尔变量表示的分离导致建模选择的增加。直接表示非连续变量显然是有利的,而且有一些证据表明,使用析取传播器(边界变量的域传播器)可以改进其他建模方法。它有时也会出现,即使热切模型非常小,比如在QCP中,使用延迟传播方法仍然可能是更好的选择。但是我们仅仅触及了lazy方法的可能性的皮毛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值