Skip to main content

DefaultBrancher

Type Alias DefaultBrancher 

Source
pub type DefaultBrancher = AutonomousSearch<IndependentVariableValueBrancher<DomainId, RandomSelector, RandomSplitter>>;
Expand description

A brancher which makes use of VSIDS [1] and solution-based phase saving (both adapted for CP).

If VSIDS does not contain any (unfixed) predicates then it will default to the IndependentVariableValueBrancher using RandomSelector for variable selection (over the variables in the order in which they were defined) and RandomSplitter for value selection.

§Bibliography

[1] M. W. Moskewicz, C. F. Madigan, Y. Zhao, L. Zhang, and S. Malik, ‘Chaff: Engineering an efficient SAT solver’, in Proceedings of the 38th annual Design Automation Conference, 2001.

[2] E. Demirović, G. Chu, and P. J. Stuckey, ‘Solution-based phase saving for CP: A value-selection heuristic to simulate local search behavior in complete solvers’, in the proceedings of the Principles and Practice of Constraint Programming (CP 2018).

Aliased Type§

pub struct DefaultBrancher { /* private fields */ }

Implementations§

Source§

impl DefaultBrancher

Source

pub fn default_over_all_variables(assignments: &Assignments) -> DefaultBrancher

Creates a new instance with default values for the parameters (1.0 for the increment, 1e100 for the max threshold, 0.95 for the decay factor and 0.0 for the initial VSIDS value).

If there are no more predicates left to select, this Brancher switches to RandomSelector with RandomSplitter.

Source

pub fn add_domain(&mut self, domain: DomainId)