pub struct ValueTabuAcceptor { /* private fields */ }Expand description
Value tabu acceptor - maintains a tabu list based on assigned values.
Unlike entity tabu which forbids recently moved entities, value tabu forbids recently used values. This is useful when the problem has expensive values that shouldn’t be over-utilized.
§Example
use solverforge_solver::phase::localsearch::ValueTabuAcceptor;
let acceptor = ValueTabuAcceptor::new(7);
assert!(!acceptor.is_value_tabu(42));Implementations§
Source§impl ValueTabuAcceptor
impl ValueTabuAcceptor
Sourcepub fn new(value_tabu_size: usize) -> Self
pub fn new(value_tabu_size: usize) -> Self
Creates a new value tabu acceptor.
§Arguments
value_tabu_size- Maximum number of values to remember as tabu
Sourcepub fn record_value_assignment(&mut self, value_hash: u64)
pub fn record_value_assignment(&mut self, value_hash: u64)
Records that a value was assigned in the current step.
Call this with the hash of the assigned value before accepting the move.
Sourcepub fn is_value_tabu(&self, value_hash: u64) -> bool
pub fn is_value_tabu(&self, value_hash: u64) -> bool
Returns true if the given value hash is in the tabu list.
Trait Implementations§
Source§impl<S: PlanningSolution> Acceptor<S> for ValueTabuAcceptor
impl<S: PlanningSolution> Acceptor<S> for ValueTabuAcceptor
Source§fn is_accepted(&self, last_step_score: &S::Score, move_score: &S::Score) -> bool
fn is_accepted(&self, last_step_score: &S::Score, move_score: &S::Score) -> bool
Returns true if a move resulting in
move_score should be accepted,
given the previous step’s score.Source§fn phase_started(&mut self, _initial_score: &S::Score)
fn phase_started(&mut self, _initial_score: &S::Score)
Called when a phase starts.
Source§fn phase_ended(&mut self)
fn phase_ended(&mut self)
Called when a phase ends.
Source§fn step_started(&mut self)
fn step_started(&mut self)
Called when a step starts.
Source§fn step_ended(&mut self, _step_score: &S::Score)
fn step_ended(&mut self, _step_score: &S::Score)
Called when a step ends with an accepted move.
Source§impl Clone for ValueTabuAcceptor
impl Clone for ValueTabuAcceptor
Source§impl Debug for ValueTabuAcceptor
impl Debug for ValueTabuAcceptor
Auto Trait Implementations§
impl Freeze for ValueTabuAcceptor
impl RefUnwindSafe for ValueTabuAcceptor
impl Send for ValueTabuAcceptor
impl Sync for ValueTabuAcceptor
impl Unpin for ValueTabuAcceptor
impl UnwindSafe for ValueTabuAcceptor
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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