diff --git a/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs b/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs index daf6e3cc..4562d66d 100644 --- a/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs +++ b/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs @@ -576,6 +576,11 @@ where let b_changed = self .b_source .assert_localizes(descriptor_index, &self.constraint_ref.name); + + if !a_changed && !b_changed { + return Sc::zero(); + } + let entities_a = self.extractor_a.extract(solution); let entities_b = self.extractor_b.extract(solution); let mut total = Sc::zero(); @@ -595,6 +600,11 @@ where let b_changed = self .b_source .assert_localizes(descriptor_index, &self.constraint_ref.name); + + if !a_changed && !b_changed { + return Sc::zero(); + } + let mut total = Sc::zero(); if a_changed { total = total + self.retract_a(entity_index);