Learning SAT Encodings for Constraint Satisfaction Problems
Bibliographic record
Abstract
Constraint programming addresses many interesting and challenging problems in \nour world, including recent applications to contexts as diverse as allocating \nrefugee relief funds, short-term mine planning and hardware circuit design. \n \nUsers define their problems in high-level modelling languages which include \ndescriptive global constraints. One of the most effective ways to solve \nconstraint satisfaction problems (CSPs) is by translating them into instances \nof the Boolean Satisfiability Problem (SAT). For some global constraints in \nCSPs there exist many algorithms which encode the constraint into SAT; \nchoosing an appropriate SAT encoding can alter the ultimate solving time \ndramatically. \n \nWe investigate the problem of selecting the best SAT encoding for \npseudo-Boolean and linear integer constraints. Many machine learning \ntechniques are explored, applied and evaluated to aid this selection. The \nresult is a significant improvement in performance compared to the default \nchoice and to the single best choice from a training set. The approach is \nsuccessful even for previously unseen problem classes and it greatly \noutperforms a sophisticated general algorithm selection and configuration \ntool. \n \nThis work provides a thorough empirical study and detailed analysis of each \nstage in the machine learning process as applied to choosing SAT encodings. \nIt does this in three phases: firstly by using generic CSP instance features \nto select an encoding per constraint type for each instance, then by \nintroducing new features which focus on the constraint types in question, and \nfinally by learning to select encodings for individual constraints. \n \nWe find that even generic instance features can produce good predictions, but \nthat the specialised features introduced give more robust performance \nespecially when predicting for unseen problem classes. Training to predict \nper constraint shows potential and leads to better performance for some \nproblem classes, but per-instance selection is still competitive across the \ncorpus of problems as a whole.
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame machine prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.
Distilled classifier scores by category (both heads)
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.002 | 0.018 |
| Meta-epidemiology (narrow) | 0.002 | 0.001 |
| Meta-epidemiology (broad) | 0.001 | 0.002 |
| Bibliometrics | 0.002 | 0.003 |
| Science and technology studies | 0.001 | 0.001 |
| Scholarly communication | 0.003 | 0.004 |
| Open science | 0.002 | 0.002 |
| Research integrity | 0.002 | 0.005 |
| Insufficient payload (model declined to judge) | 0.018 | 0.003 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".