[ANN] sabori_csp: a hobby FlatZinc solver without LCG, and its MZNC 2026 results

10 views
Skip to first unread message

Toshimitsu Fujiwara

unread,
Jul 28, 2026, 12:34:11 AM (yesterday) Jul 28
to MiniZinc
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_csp

None 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.
Reply all
Reply to author
Forward
0 new messages