The order in which scheduled constraints are propagated can have a big impact on the performance.
Constraints with strong inference and/or fast propagate methods should be propagated first.
The schedule! method should enqueue constraints according to a priority value:
function schedule!(solver::Solver, constraint::Constraint)
if constraint ∉ keys(solver.schedule)
enqueue!(solver.schedule, constraint, 99) #TODO: replace `99` with `get_priority(c)`
end
end
The order in which scheduled constraints are propagated can have a big impact on the performance. Constraints with strong inference and/or fast propagate methods should be propagated first.
The
schedule!
method should enqueue constraints according to a priority value: