TT-Open-WBO-Inc: The SAT Engine of Modern Anytime MaxSAT
Alexander Nadel
Technion & NVIDIA, Israel
Dagstuhl Seminar on 'Interactions in Constraint Optimization' (25371)
Schloss Dagstuhl, Germany
September 9, 2025
1
MaxSAT: Definition
Extension of SAT to Linear Optimization
2
MaxSAT: Definition
Extension of SAT to Linear Optimization
3
MaxSAT
Usage and Categories
4
TT-Open-WBO-Inc: The SAT Engine of Modern Anytime MaxSAT
Anytime/Incomplete MSE Winners (2019-2024)
Year | Timeout | Unweighted Winner | Weighted Winner |
2024 | 60s | SPB-MaxSAT-c-Band | SPB-MaxSAT-c-FPS |
| 300s | SPB-MaxSAT-c-Band | SPB-MaxSAT-c-FPS |
2023 | 60s | NuWLS-c 2023 | NuWLS-c 2023 |
| 300s | NuWLS-c 2023 | NuWLS-c 2023 |
2022 | 60s | NuWLS-c | NuWLS-c |
| 300s | NuWLS-c | NuWLS-c |
2021 | 60s | SATLike-c (with TT-Open-WBO-Inc) | SATLike-ck |
| 300s | SATLike-c (with TT-Open-WBO-Inc) | Loandra (2020) |
2020 | 60s | SATLike-c (with Loandra) | TT-Open-WBO-Inc |
| 300s | SATLike-c (with Loandra) | TT-Open-WBO-Inc |
2019 | 60s | Loandra | TT-Open-WBO-Inc |
| 300s | Loandra | TT-Open-WBO-Inc |
Highlighted: �TT-Open-WBO-Inc inside
Category | Timeout | 1st | 2nd | 3d |
Unweighted | 60s | SPB-MaxSAT-c-Band | NuWLS-c-IBR | TT-Open-WBO-Inc-Glucose |
Weighted | 60s | SPB-MaxSAT-c-FPS | TT-Open-WBO-Inc-Glucose | NuWLS-c-IBR |
Unweighted | 300s | SPB-MaxSAT-c-Band | NuWLS-c-IBR | TT-Open-WBO-Inc-Glucose |
Weighted | 300s | SPB-MaxSAT-c-FPS | TT-Open-WBO-Inc-Glucose | NuWLS-c-IBR |
MSE 2024: Best Solvers in Anytime Categories
5
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
6
Linear Search SAT-UNSAT (LSU)1
7
9/8/2025
7
Cardinality and Pseudo-Boolean (PB) Constraints
8
LSU
Properties and Usage
9
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
10
Approximating Weighted MaxSAT by BMO1
BMO: Boolean Multilevel Optimization2
11
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
12
SAT Polarity Selection for Anytime MaxSAT
13
SAT Variable Decision Heuristic Adjustment for Anytime MaxSAT
Target-Score-Bump (TSB) Heuristic1,2
14
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
15
TT-Open-WBO-Inc-2020: the Algorithmics
M := SAT(H)
M := LocalSearch(M)
Incremental SAT-based Flow
TORC polarity selection
Weighted: TSB variable boost
Fallback to LSU?
No
SAT
LSU(M)
TORC polarity selection
Weighted: TSB variable boost
Yes
Polosat became too slow?
Approximation: BMO -- weighted; Mrs. Beaver (OBV) -- unweighted
SAT
Polosat: SAT-based Local Search
SAT
Yes
No
16
Optimization modulo Bitvectors (OBV)
by Reduction to MaxSAT
The Problem | Semantics | Weights |
Unweighted MaxSAT | Minimize the number of satisfied target bits | ∀i: w(ti)=1 |
OBV (Optimization modulo Bit-Vectors) | Minimize T’s value, interpreted as an unsigned number | ∀i: w(ti)=2i |
OBV vs. MaxSAT solving: The order makes OBV easier than MaxSAT
17
OBV-BS Algorithm for OBV Solving1,2
Iteratively try fixing target bits to 0, in order from MSB to LSB
OBV-BS
Input: Hard Constraints (Clauses) H
Optimization target: T = [tn-1 tn-2 … t0]
Output: A model M to H which minimizes T’s value
FixBlockTo0(i, M) // i is provided by reference
While (i ≥ 0 and M(ti) = 0) {H := H ∧ ¬ti; i := i – 1}
18
Mrs. Beaver1,2
Approximate MaxSAT by OBV-BS
19
TT-Open-WBO-Inc-2020: the Algorithmics
M := SAT(H)
M := LocalSearch(M)
Incremental SAT-based Flow
TORC polarity selection
Weighted: TSB variable boost
Fallback to LSU?
No
SAT
LSU(M)
TORC polarity selection
Weighted: TSB variable boost
Yes
Polosat became too slow?
Approximation: BMO -- weighted; Mrs. Beaver (OBV) -- unweighted
SAT
Polosat: SAT-based Local Search
SAT
Yes
No
20
Polosat1: Optimizing a Black-Box Function in SAT
SAT-based local search (local search with SAT as an oracle)
Implementation details, crucial for efficiency:
21
Polosat1: Optimizing a Black-Box Function in SAT
Properties & Observations
22
TT-Open-WBO-Inc-2020: the Algorithmics
M := SAT(H)
M := LocalSearch(M)
Incremental SAT-based Flow
TORC polarity selection
Weighted: TSB variable boost
Fallback to LSU?
No
SAT
LSU(M)
TORC polarity selection
Weighted: TSB variable boost
Yes
Polosat became too slow?
Approximation: BMO -- weighted; Mrs. Beaver (OBV) -- unweighted
SAT
Polosat: SAT-based Local Search
SAT
Yes
No
23
TT-Open-WBO-Inc-2020: the Algorithmics
M := SAT(H)
M := LocalSearch(M)
Incremental SAT-based Flow
TORC polarity selection
Weighted: TSB variable boost
Fallback to LSU?
No
SAT
LSU(M)
TORC polarity selection
Weighted: TSB variable boost
Yes
Polosat became too slow?
Approximation: BMO -- weighted; Mrs. Beaver (OBV) -- unweighted
SAT
Polosat: SAT-based Local Search
SAT
Yes
No
24
MaxSAT: Definition in Terms of Clauses
SAT with Soft Clauses
25
Local Search in TT-Open-WBO-Inc
Shared Fundamentals
Not the original weight of soft clauses!
More precisely: apply BMS -- picks a random var. out of best t with replacement
Lurking here: weights handling that sets the algorithms apart:
26
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
27
SatLike Local Search Algorithm1
28
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
29
NuWLS Local Search Algorithm1
Improving SatLike
1000 for unweighted
3000 for weighted
30
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
31
NuWLS-2023 Local Search Algorithm1
Research Questions in 1
32
NuWLS-2023 Local Search Algorithm1
The Algorithm
33
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
34
SPB-MaxSAT Local Search Algorithm1
SPB(α) := total original-weight of falsified soft clauses in α
35
SPB-MaxSAT Local Search Algorithm1
SPB(α) := total original-weight of falsified soft clauses in α
36
SPB-MaxSAT-c-Band and SPB-MaxSAT-c-FPS
Combining SPB2 with Band3 and FPS4 to MSE’241
Unweighted, 60s
Unweighted, 300s
Weighted, 60s
Weighted, 300s
37
TT-Open-WBO-Inc-2020: the Algorithmics
M := SAT(H)
M := LocalSearch(M)
Incremental SAT-based Flow
TORC polarity selection
Weighted: TSB variable boost
Fallback to LSU?
No
SAT
LSU(M)
TORC polarity selection
Weighted: TSB variable boost
Yes
Polosat became too slow?
Approximation: BMO -- weighted; Mrs. Beaver (OBV) -- unweighted
SAT
Polosat: SAT-based Local Search
SAT
Yes
No
38
TT-Open-WBO-Inc Genealogy
Open-WBO-LSU1
Open-WBO-Inc-BMO2
Weighted MaxSAT by BMO approximation2
TT-Open-WBO-Inc-20193
Anytime-MaxSAT-dedicated SAT heuristics4
TT-Open-WBO-Inc-20206
MSE’17
MSE’19
MSE’20
MSE’21
MSE’22
MSE’24
MSE’21-24
SAT&LS solvers integration & Polosat Tuning
MSE’18
Efficient SAT encodings + Linear SAT-UNSAT (LSU) algorithm
MSE’23
SatLike-c5
NuWLS-c9
NuWLS-c-202310
Novelty in local search
SPB-MaxSAT-c*11
39
TT-Open-WBO-Inc
Current Version
40
Thanks for your attention!�
41
Linear Search SAT-UNSAT (LSU)1
42
9/8/2025
The optimal model
All the models
100
90
83
60
54
52
49
42
���
43
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
43
��
44
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
44
��
45
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
45
��
46
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
46
��
47
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
47
��
48
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
48
��
49
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
49
��
50
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
50
��
51
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
51
��
52
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
52
��
53
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
53
��
54
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
54
��
55
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
55
��
56
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
56
��
57
9/8/2025
90
83
60
54
52
49
100
Linear Search SAT-UNSAT (LSU)1
57
Local Search in MaxSAT
The Shared Algorithmic Framework
58
NuWLS Local Search Algorithm1
Update Weights at Local Optima
59
Optimization modulo Bitvectors (OBV)
by Reduction to MaxSAT
The Problem | Semantics | Weights | The Optimal Model |
Unweighted MaxSAT | Minimize the number of satisfied target bits | ∀i: w(ti)=1 | M2: only 1 target bit is satisfied; �2 bits satisfied for M1 and M3 |
OBV (Optimization Modulo Bit-Vectors) | Minimize T’s value, interpreted as an unsigned number | ∀i: w(ti)=2i | M1: C(M1)=3 < C(M2)=4 < C(M3)=6 |
Example: H = (a + b) (a + c) (¬a + ¬c); T = {a,b,c}
H has 3 models: M1={a=0, b=1, c=1}; M2={a=1, b=0, c=0}; M3={a=1, b=1, c=0}
OBV vs. MaxSAT solving: The order makes OBV easier than MaxSAT
60