一句话:提出基于 SyGuS 的方法,从布尔逻辑规约自动合成高质量 MILP 线性约束。
混合整数线性规划(MILP)求解器广泛用于科学与工程优化,但用户从含非线性布尔逻辑的规约出发,编写正确且高效的 MILP 约束仍很困难。本文提出一种语法引导合成(SyGuS)方法,通过可扩展的领域特定语言(DSL)引入整数决策变量,并迭代地将非线性布尔逻辑操作转换为线性约束。为保证合成效率与正确性,方法采用过近似技术可靠证明候选约束正确,并用欠近似技术安全剪除错误约束。作者在统计、机器学习和数据科学等基准规约上实现并评估了该方法;实验表明其处理高效,合成约束在紧凑性与求解时间上接近或优于人工编写约束。
While mixed integer linear programming (MILP) solvers are routinely used to solve a wide range of important science and engineering problems, it remains a challenging task for end users to write correct and efficient MILP constraints, especially for problems specified using the inherently non-linear Boolean logic operations. To overcome this challenge, we propose a syntax guided synthesis (SyGuS) method capable of generating high-quality MILP constraints from the specifications expressed using arbitrary combinations of Boolean logic operations. At the center of our method is an extensible domain specification language (DSL) whose expressiveness may be improved by adding new integer variables as decision variables, together with an iterative procedure for synthesizing linear constraints from non-linear Boolean logic operations using these integer variables. To make the synthesis method efficient, we also propose an over-approximation technique for soundly proving the correctness of the synthesized linear constraints, and an under-approximation technique for safely pruning away the incorrect constraints. We have implemented and evaluated the method on a wide range of benchmark specifications from statistics, machine learning, and data science applications. The experimental results show that the method is efficient in handling these benchmarks, and the quality of the synthesized MILP constraints is close to, or higher than, that of manually-written constraints in terms of both compactness and solving time.
@article{paperbot1995,
title = {Synthesizing MILP Constraints for Efficient and Robust Optimization},
author = {Jingbo Wang and Aarti Gupta and Chao Wang},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {PLDI},
year = {2023},
doi = {10.1145/3591298}
}