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 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.
pub fn is_value_tabu(&self, value_hash: u64) -> bool
Trait Implementations§
Source§impl<S: PlanningSolution> Acceptor<S> for ValueTabuAcceptor
impl<S: PlanningSolution> Acceptor<S> for ValueTabuAcceptor
fn is_accepted( &mut self, last_step_score: &S::Score, move_score: &S::Score, ) -> bool
fn phase_started(&mut self, _initial_score: &S::Score)
fn phase_ended(&mut self)
fn step_started(&mut self)
fn step_ended(&mut self, _step_score: &S::Score)
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 UnsafeUnpin 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