solverforge_solver/termination/
mod.rs1mod best_score;
4mod composite;
5mod diminished_returns;
6mod move_count;
7mod score_calculation_count;
8mod step_count;
9mod time;
10mod unimproved;
11
12use std::fmt::Debug;
13
14use solverforge_core::domain::PlanningSolution;
15use solverforge_scoring::ScoreDirector;
16
17use crate::scope::SolverScope;
18
19pub use best_score::{BestScoreFeasibleTermination, BestScoreTermination};
20pub use composite::{AndTermination, OrTermination};
21pub use diminished_returns::DiminishedReturnsTermination;
22pub use move_count::MoveCountTermination;
23pub use score_calculation_count::ScoreCalculationCountTermination;
24pub use step_count::StepCountTermination;
25pub use time::TimeTermination;
26pub use unimproved::{UnimprovedStepCountTermination, UnimprovedTimeTermination};
27
28pub trait Termination<S: PlanningSolution, D: ScoreDirector<S>>: Send + Debug {
34 fn is_terminated(&self, solver_scope: &SolverScope<S, D>) -> bool;
36}
37
38#[cfg(test)]
39mod tests;