NuPBO 阅读笔记
Towards More Efficient Local Search for Pseudo-Boolean Optimization#
Abstract
Pseudo-Boolean (PB) constraints are highly expressive, and many combinatorial optimization problems can be modeled using pseudo-Boolean optimization (PBO). It is recognized that stochastic local search (SLS) is a powerful paradigm for solving combinatorial optimization problems, but the development of SLS for solving PBO is still in its infancy. In this paper, we develop an effective SLS algorithm for solving PBO, dubbed NuPBO, which introduces a novel scoring function for PB constraints and a new weighting scheme. We conduct experiments on a broad range of six public benchmarks, including three real-world benchmarks, a benchmark from PB competition, an integer linear programming optimization benchmark, and a crafted combinatorial benchmark, to compare NuPBO against five state-of-the-art competitors, including a recently-proposed SLS PBO solver LS-PBO, two complete PB solvers PBO-IHS and RoundingSat, and two mixed integer programming (MIP) solvers Gurobi and SCIP. NuPBO has been exhibited to perform best on these three real-world benchmarks. On the other three benchmarks, NuPBO shows competitive performance compared to state-of-the-art competitors, and it significantly outperforms LS-PBO, indicating that NuPBO greatly advances the state of the art in SLS for solving PBO.
伪布尔约束具有很强的表达能力,许多组合优化问题都可以用伪布尔优化 (PBO) 来建模。随机局部搜索 (Stochastic Local Search,SLS) 被公认为是求解组合优化问题的有力范式,但用于求解 PBO 的 SLS 的发展仍处于起步阶段。在本文中,我们提出了一种有效的求解 PBO 的 SLS 算法,称为 NuPBO1,它引入了一种新的打分函数和加权方案。我们在广泛的 6 个 Benchmark 上进行了实验,包括 3 个真实的基准、一个来自 PB 竞争的基准、一个整数线性规划优化基准和一个精心设计的组合基准,以比较 NuPBO 与 5 个最先进的求解器
PBO 问题定义与记号#
给定一个变量集合
\begin{aligned}
\min_{\{x_1, \dots, x_n\}} \, &\sum^n_{i=1}c_i \cdot l_i, \quad c_i \in \mathbb{Z} \\
s.t. \quad &\bigwedge^m_{j=1}\sum^n_{i=1}a_{ji}\cdot l_i \geq b_j, \quad a_{ji}, b_{j} \in \mathbb{N^+_0}
\end{aligned}
这里,对于任意一个给定的赋值
进一步的,我们还引入了一个新概念:PB 约束
由于 PB 约束必须满足,于是我们将其规定为硬约束,给定一个赋值
采用约束加权策略的 SLS 算法通常保持每个约束的权重。我们用
算法主体思路#
由于 SLS 算法的搜索方向是由打分函数引导的,通过使用加权方案可以提高评分函数的有效性,于是,我们首先提出了一个新的打分函数,然后设计了一个新的加权方案与之配合。
打分函数#
我们假定,当前的 PBO 实例中有
A Review of Score Function in LS-PBO#
我们再次考虑 LS-PBO 中的打分函数:
- 对于硬约束
,我们考虑其惩罚值为 ,此时, 定义为翻转 所带来的惩罚值的减小量 - 对于目标函数,其惩罚值定义为
,此时, 定义为翻转 所带来的目标函数惩罚值的减少量
我们将其综合考虑:
仔细考虑
于是,我们针对这种情况(显然这种情况是很常见的),通过加入平滑项,引入了新的打分函数:
- 对于硬约束
,其惩罚值定义为 ,此时, 定义为翻转 所带来的惩罚值的减小量 - 对于目标函数,其惩罚值定义为:
,此时, 定义为翻转 所带来的目标函数惩罚值的减少量
最终,我们的打分函数为:
平滑项#
我们使用约束的平均系数来作为平滑项:
我们再次考虑先前的例子,我们有:
当初始赋值为
随后,
加权方案#
加权方案本质上会指导搜索的方向,即更倾向于于可行解还是最优解,当对软约束赋予过大的权重可能使其难以满足所有的硬约束,此时就会导致我们甚至无法找到可行解,算法的求解能力会受到极大的限制。
于是,在 LS-PBO 中,为软约束(也就是目标函数)设置了 上界,用于控制何时更新目标函数的权重,我们的加权方案如下所示:
- 在搜索开始的最开始,每个硬约束的权重被初始化为
,目标函数的权重被初始化为 - 随着搜索的进行,当进入到局部最优时,对每个不满足的硬约束
,我们更新为 ,而如果不存在不满足的硬约束(也就是现在是一个可行解),我们更新
在开始时,目标函数的权重被初始化为 0,这样算法将首先专注于寻找可行解。如果搜索陷入局部最优,则只在当前赋值
相应地,如果算法能够频繁的找到可行解,那么说明目标函数有更大的概率得到更好的解
算法框架#
算法的框架如下图所示:
在最开始,我们初始化
在这里,我们为局部搜索引入了一个参数
实验结果#
Benchmark 选择为:
对比的算法为:
- LS-PBO
- PBO-IHS6
- RoundingSAT7
- Gurobi8
- SCIP9
#win 表示通过求解器
#feas 表示求解器
实验结果如下所示:
下面这张图通过以下规则进行考虑:
给定一个求解器集合
可以发现,缺少了 NuPBO 后,求解能力下降了很多



讨论
想法、补充,或只是打个招呼。