pub struct RandomOrder { /* private fields */ }Expand description
A variable selection strategy that picks variables in a random order.
On initialisation, it creates a shuffled list of variable indices.
When pick is called, it iterates through this shuffled list and chooses the
first unassigned variable it encounters. The polarity of the chosen variable
is selected randomly.
The initial shuffling makes the order random but fixed for the lifetime of this instance
Trait Implementations§
Source§impl Clone for RandomOrder
impl Clone for RandomOrder
Source§fn clone(&self) -> RandomOrder
fn clone(&self) -> RandomOrder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RandomOrder
impl Debug for RandomOrder
Source§impl Default for RandomOrder
impl Default for RandomOrder
Source§fn default() -> RandomOrder
fn default() -> RandomOrder
Source§impl<L: Literal> VariableSelection<L> for RandomOrder
VariableSelection trait implementation for the random order variable selection strategy.
impl<L: Literal> VariableSelection<L> for RandomOrder
VariableSelection trait implementation for the random order variable selection strategy.
Source§fn new<C: AsRef<[L]>>(num_vars: usize, _: &[L], _: &[C]) -> Self
fn new<C: AsRef<[L]>>(num_vars: usize, _: &[L], _: &[C]) -> Self
Creates a new RandomOrder strategy.
num_vars is the total number of variables.
It initialises a list of variable indices (e.g. 0 to num_vars - 1 or 1 to num_vars)
and shuffles it using an Rng seeded with 0 for deterministic shuffling.
A separate Rng (newly created) is stored for random polarity selection.
Source§fn pick<A: Assignment>(&mut self, assignment: &A) -> Option<L>
fn pick<A: Assignment>(&mut self, assignment: &A) -> Option<L>
Picks an unassigned variable from the pre-shuffled list.
Iterates through the vars list. The first variable index i encountered
for which assignment[i] is unassigned is chosen.
Polarity is chosen randomly.
Source§fn bumps<T: IntoIterator<Item = L>>(&mut self, _: T)
fn bumps<T: IntoIterator<Item = L>>(&mut self, _: T)
No-op
Auto Trait Implementations§
impl Freeze for RandomOrder
impl RefUnwindSafe for RandomOrder
impl Send for RandomOrder
impl Sync for RandomOrder
impl Unpin for RandomOrder
impl UnwindSafe for RandomOrder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more