Hi all,
I would like to introduce sabori_csp, a hobby FlatZinc/CP solver I wrote in C++,
which was entered in the free category of the MiniZinc Challenge 2026.
The design bet is deliberately narrow. It has the usual skeleton — propagation,
backtracking, restarts, activity-based variable selection, NoGood learning — but no LCG,
no implication-graph analysis and no per-propagator explanations.
Its learning is only the conjunction of decision literals, and the conflict information
is fed mostly back into the variable-selection heuristic rather than used for deductive
pruning. I have been describing this as stopping wasted search with tendency rather
than logic. The question I actually wanted answered was how far that carries you.
The Challenge gave a third-party answer. Aggregating the per-instance CSV over the free
category, sabori_csp comes out 9th of 26, immediately below pumpkin. (This is my own
reckoning over all entries, not the official medal count, which excludes organiser
entries.) The comparison with pumpkin is the interesting part:
Incomplete (solution quality only): 1334.0 vs 1333.3 — a tie
Complete (proofs count): 1312.8 vs 1366.2 — 53 behind
Instances with a solution: 82/100 vs 76/100
Optimality proofs: 28 vs 34
So it reaches further and closes less, which is roughly what the design predicted.
It also came first overall on nside, and scored zero on multiple-constant-multiplication
and orthorio — where only the SAT/LCG and commercial solvers got all five instances,
i.e. the class where tendency alone clearly does not reach.
Write-ups, negative results included (several components I expected to help turned out
to be measurably useless):
Short intro to the search algorithm:
https://github.com/tofjw/sabori_csp/blob/main/articles/mznc2026/search-algorithm-en-short.md Full write-up, all 8 components with tables:
https://github.com/tofjw/sabori_csp/blob/main/articles/mznc2026/search-algorithm-explained-en.md Per-problem Challenge 2026 analysis:
https://github.com/tofjw/sabori_csp/blob/main/articles/mznc2026/challenge-2026-results-en.md Code:
https://github.com/tofjw/sabori_cspNone of the individual mechanisms are new, and I have tried to cite the prior work
(Last Conflict, bandit-based variable selection, and so on).
If I have missed a relevant reference, or if you have a model where it behaves badly,
I would be glad to hear about it.