NLIP via MaxSAT

把非线性整数规划编码到加权 MaxSAT

问题

非线性整数规划(NLIP) —— 在 bounded integer 变量上,多项式目标与多项式约束下找最优整数解。这个问题统一了 QP、QIP 以及 SMT-LIB QF_NIA 上的 polynomial arithmetic 约束。

这个编码方向的动机是:SMT 求解器(如 Z3)在 QF_NIA 上的策略依赖启发式非线性算术推理,对某类 sparse quadratic 结构缺乏系统性的界收紧机制;而 MaxSAT 求解器通过 clause-level conflict learning 与 PB relaxation 提供了一条不同的求解路径。问题不是”MaxSAT 一定更好”,而是”在哪类结构上 MaxSAT 能系统性地优于 Z3 / CPLEX,原因是什么”。

方法

把 NLIP 编码为加权 MaxSAT(WCNF),借助现代 MaxSAT 求解器。我们系统研究四种整数变量的布尔编码方案:

编码 域表示 强项
OH One-hot —— 每个整数值一个布尔 域线性, propagation 强
UNA Unary / thermometer 顺序结构干净;大域下崩溃
BIN Binary —— 每变量 $\log_2 D$ 个布尔 紧凑但 propagation 弱
DECOMP Binary + Order Decomposition 紧凑且 propagation 改善

封装的求解器:RC2 (PySAT)、MaxHS、WMaxCDCL、OpenWBO、CaDiCaL(暴力枚举 baseline)。 对照基线:Z3(SMT 直接求 QF_NIA)以及 CPLEX(仅在 degree ≤ 2 实例上)。

Benchmark

来源 规模 类型
QPLIB 137 quadratic / 非线性整数规划
SMT-LIB QF_NIA 2591 非线性整数算术
Diverse-SAT 转换 287 转化的 SAT 实例

一个五库过滤管线(NLIP_filters)从 QPLIB / NL / SMT / CSPlib / XCSP 中抽取符合 NLIP 形态的问题;解析器 qplib_parsersmt2_parser 负责导入;main.py 串起 preprocessing + encoding + solver call,每个实例输出一行标准化的 >>> 摘要。goSolver.py 配合 SLURM 调度批量实验,统一 7200s timeout,外置 7500s SIGKILL bound。

当前发现

  • OH 在小域问题上占优;BIN + DECOMP 在大域问题上反超。
  • UNA 有可复现的 scaling 失败:propagation 在域大小 $> 64$ 时崩溃。
  • 在 QPLIB 上,sparse quadratic 子集里 MaxHS + OH 在若干实例上击败了 CPLEX

合作与进展

本项目是与法国皮卡第大学(Université de Picardie Jules Verne)Saïd Cherif 教授的合作研究。经过约一年的基准构建与编码设计,论文草稿已提交 SAT 2026(CCF-B)。

已知的设计细节

最初的 BIN encoding 实现把整数变量按 unsigned 形式处理,但 QPLIB 中存在 $\ell < 0$ 的变量;partial-product 在 two’s complement 下未做 Booth recoding,导致含负变量的 quadratic 项目标值系统性偏大。修正方案与诊断过程见 BIN encoding 中负数变量的处理

References