Skip to main content

IncrementalConstraint

Trait IncrementalConstraint 

Source
pub trait IncrementalConstraint<S, Sc>: Send + Sync
where Sc: Score,
{ // Required methods fn evaluate(&self, solution: &S) -> Sc; fn match_count(&self, solution: &S) -> usize; fn initialize(&mut self, solution: &S) -> Sc; fn on_insert( &mut self, solution: &S, entity_index: usize, descriptor_index: usize, ) -> Sc; fn on_retract( &mut self, solution: &S, entity_index: usize, descriptor_index: usize, ) -> Sc; fn reset(&mut self); fn name(&self) -> &str; // Provided methods fn is_hard(&self) -> bool { ... } fn constraint_ref(&self) -> ConstraintRef { ... } fn get_matches(&self, _solution: &S) -> Vec<DetailedConstraintMatch<Sc>> { ... } fn weight(&self) -> Sc { ... } }

Required Methods§

Source

fn evaluate(&self, solution: &S) -> Sc

Source

fn match_count(&self, solution: &S) -> usize

Source

fn initialize(&mut self, solution: &S) -> Sc

Source

fn on_insert( &mut self, solution: &S, entity_index: usize, descriptor_index: usize, ) -> Sc

Source

fn on_retract( &mut self, solution: &S, entity_index: usize, descriptor_index: usize, ) -> Sc

Source

fn reset(&mut self)

Source

fn name(&self) -> &str

Provided Methods§

Source

fn is_hard(&self) -> bool

Source

fn constraint_ref(&self) -> ConstraintRef

Source

fn get_matches(&self, _solution: &S) -> Vec<DetailedConstraintMatch<Sc>>

Source

fn weight(&self) -> Sc

Implementors§

Source§

impl<S, A, B, C, K, CK, EA, EB, KA, KB, Flatten, CKeyFn, ALookup, F, W, Sc> IncrementalConstraint<S, Sc> for FlattenedBiConstraint<S, A, B, C, K, CK, EA, EB, KA, KB, Flatten, CKeyFn, ALookup, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Send + Sync + 'static, B: Clone + Send + Sync + 'static, C: Clone + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, CK: Eq + Hash + Clone + Send + Sync, EA: Fn(&S) -> &[A] + Send + Sync, EB: Fn(&S) -> &[B] + Send + Sync, KA: Fn(&A) -> K + Send + Sync, KB: Fn(&B) -> K + Send + Sync, Flatten: Fn(&B) -> &[C] + Send + Sync, CKeyFn: Fn(&C) -> CK + Send + Sync, ALookup: Fn(&A) -> CK + Send + Sync, F: Fn(&S, &A, &C) -> bool + Send + Sync, W: Fn(&A, &C) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, B, K, EA, EB, KA, KB, C, D, W, Sc> IncrementalConstraint<S, Sc> for ComplementedGroupConstraint<S, A, B, K, EA, EB, KA, KB, C, D, W, Sc>
where S: Send + Sync + 'static, A: Clone + Send + Sync + 'static, B: Clone + Send + Sync + 'static, K: Clone + Eq + Hash + Send + Sync, EA: Fn(&S) -> &[A] + Send + Sync, EB: Fn(&S) -> &[B] + Send + Sync, KA: Fn(&A) -> Option<K> + Send + Sync, KB: Fn(&B) -> K + Send + Sync, C: UniCollector<A> + Send + Sync, <C as UniCollector<A>>::Accumulator: Send + Sync, <C as UniCollector<A>>::Result: Clone + Send + Sync, <C as UniCollector<A>>::Value: Send + Sync, D: Fn(&B) -> <C as UniCollector<A>>::Result + Send + Sync, W: Fn(&<C as UniCollector<A>>::Result) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, B, K, EA, EB, KA, KB, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalCrossBiConstraint<S, A, B, K, EA, EB, KA, KB, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, B: Clone + Debug + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, EA: Fn(&S) -> &[A] + Send + Sync, EB: Fn(&S) -> &[B] + Send + Sync, KA: Fn(&A) -> K + Send + Sync, KB: Fn(&B) -> K + Send + Sync, F: Fn(&S, &A, &B) -> bool + Send + Sync, W: Fn(&S, usize, usize) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, B, K, EA, EB, KA, KB, FA, W, Sc> IncrementalConstraint<S, Sc> for IfExistsUniConstraint<S, A, B, K, EA, EB, KA, KB, FA, W, Sc>
where S: Send + Sync + 'static, A: Clone + Send + Sync + 'static, B: Clone + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, EA: Fn(&S) -> &[A] + Send + Sync, EB: Fn(&S) -> Vec<B> + Send + Sync, KA: Fn(&A) -> K + Send + Sync, KB: Fn(&B) -> K + Send + Sync, FA: Fn(&S, &A) -> bool + Send + Sync, W: Fn(&A) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, E, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalUniConstraint<S, A, E, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, E: Fn(&S) -> &[A] + Send + Sync, F: Fn(&S, &A) -> bool + Send + Sync, W: Fn(&A) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, K, E, F, KF, Sc> IncrementalConstraint<S, Sc> for BalanceConstraint<S, A, K, E, F, KF, Sc>
where S: Send + Sync + 'static, A: Clone + Send + Sync + 'static, K: Clone + Eq + Hash + Send + Sync + 'static, E: Fn(&S) -> &[A] + Send + Sync, F: UniFilter<S, A>, KF: Fn(&A) -> Option<K> + Send + Sync, Sc: Score + 'static,

Source§

impl<S, A, K, E, KE, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalPentaConstraint<S, A, K, E, KE, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, E: Fn(&S) -> &[A] + Send + Sync, KE: Fn(&S, &A, usize) -> K + Send + Sync, F: Fn(&S, &A, &A, &A, &A, &A) -> bool + Send + Sync, W: Fn(&S, usize, usize, usize, usize, usize) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, K, E, KE, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalQuadConstraint<S, A, K, E, KE, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, E: Fn(&S) -> &[A] + Send + Sync, KE: Fn(&S, &A, usize) -> K + Send + Sync, F: Fn(&S, &A, &A, &A, &A) -> bool + Send + Sync, W: Fn(&S, usize, usize, usize, usize) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, K, E, KE, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalTriConstraint<S, A, K, E, KE, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, E: Fn(&S) -> &[A] + Send + Sync, KE: Fn(&S, &A, usize) -> K + Send + Sync, F: Fn(&S, &A, &A, &A) -> bool + Send + Sync, W: Fn(&S, usize, usize, usize) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, K, E, KE, F, W, Sc> IncrementalConstraint<S, Sc> for IncrementalBiConstraint<S, A, K, E, KE, F, W, Sc>
where S: Send + Sync + 'static, A: Clone + Debug + Send + Sync + 'static, K: Eq + Hash + Clone + Send + Sync, E: Fn(&S) -> &[A] + Send + Sync, KE: Fn(&S, &A, usize) -> K + Send + Sync, F: Fn(&S, &A, &A, usize, usize) -> bool + Send + Sync, W: Fn(&S, usize, usize) -> Sc + Send + Sync, Sc: Score,

Source§

impl<S, A, K, E, KF, C, W, Sc> IncrementalConstraint<S, Sc> for GroupedUniConstraint<S, A, K, E, KF, C, W, Sc>
where S: Send + Sync + 'static, A: Clone + Send + Sync + 'static, K: Clone + Eq + Hash + Send + Sync + 'static, E: Fn(&S) -> &[A] + Send + Sync, KF: Fn(&A) -> K + Send + Sync, C: UniCollector<A> + Send + Sync + 'static, <C as UniCollector<A>>::Accumulator: Send + Sync, <C as UniCollector<A>>::Result: Send + Sync, <C as UniCollector<A>>::Value: Send + Sync, W: Fn(&<C as UniCollector<A>>::Result) -> Sc + Send + Sync, Sc: Score + 'static,