约束编程中熵的利用与GPU加速累积约束传播
熵在约束编程中的应用
在约束编程中,为了对信念传播(BP)的贡献进行有意义的观察,对于大多数存在的约束,采用了加权计数算法。实验在配备两颗英特尔E5 - 2683 v4 Broadwell @ 2.1 GHz的服务器上进行,使用的求解器是基于MiniCP实现且能够执行BP的MiniCPBP5。每次运行设置了20分钟的超时时间,并提供最多12GB的内存。
实验结果以性能曲线的形式呈现,图中的每个点表示在失败次数或运行时间小于或等于x轴值的情况下解决的实例比例(y轴)。在深度优先搜索(DFS)过程中,比较了最小熵和最大边际两种策略,以确定熵是否能更好地利用边际信息。在每次分支决策之前,除非另有说明,都会执行五次信念传播迭代(这是MiniCPBP中的当前默认次数)。为避免边际振荡,在BP期间发送消息时应用了阻尼因子λ = 0.5的阻尼。
为改进基本的最小熵策略,考虑了一种动态配置,即在搜索过程中动态决定阻尼的使用和BP迭代次数。当问题熵的变化低于阈值α = 0.1时,BP停止。实验表明,α的最佳值因问题而异,但该参数值在基准问题上总体表现良好。此外,还有另一种停止准则,即当变量中的最小熵低于某个阈值时停止BP迭代。在某些问题上,该准则表现优于基于熵变化的准则,但总体而言,基于熵变化的准则仍是最佳选择。
在每个搜索树节点,首先在无阻尼的情况下执行BP,若检测到问题熵的振荡,则激活阻尼(阻尼因子仍为λ = 0.5)。通过计算熵从减少变为增加的次数来检测振荡,若熵的变化从负变为正三次,则在后续传播中激活阻尼。分支决策后,阻尼再次停用。
作为最先进的参考方法,使用了带重启的dom/wdeg(初始重启:3n次失败
超级会员免费看
订阅专栏 解锁全文
1261

被折叠的 条评论
为什么被折叠?



