pub trait ScoreBounder<S: PlanningSolution>: Send + Debug {
// Required method
fn calculate_optimistic_bound(
&self,
score_director: &dyn ScoreDirector<S>,
) -> Option<S::Score>;
// Provided method
fn calculate_pessimistic_bound(
&self,
score_director: &dyn ScoreDirector<S>,
) -> Option<S::Score> { ... }
}Expand description
Calculates score bounds for exhaustive search pruning.
The bounder estimates the best possible score that can be achieved from a partial solution state. If this optimistic bound is worse than the best complete solution found so far, the branch can be pruned.
Required Methods§
Sourcefn calculate_optimistic_bound(
&self,
score_director: &dyn ScoreDirector<S>,
) -> Option<S::Score>
fn calculate_optimistic_bound( &self, score_director: &dyn ScoreDirector<S>, ) -> Option<S::Score>
Calculates the optimistic bound for the current solution state.
The optimistic bound is an upper bound on the score achievable from this partial solution. It should be:
- Fast to compute
- Greater than or equal to any actual achievable score
Returns None if no bound can be computed.
Provided Methods§
Sourcefn calculate_pessimistic_bound(
&self,
score_director: &dyn ScoreDirector<S>,
) -> Option<S::Score>
fn calculate_pessimistic_bound( &self, score_director: &dyn ScoreDirector<S>, ) -> Option<S::Score>
Calculates the pessimistic bound for the current solution state.
The pessimistic bound is a lower bound on the score achievable from this partial solution. This is less commonly used but can help with certain heuristics.
Returns None if no bound can be computed.