Expand description
Event system for solver monitoring and extensibility.
The event system provides hooks for monitoring solver progress and extending solver behavior. Event listeners can be registered to receive notifications about solver lifecycle events.
§Event Types
- Solver Events: Best solution changed, solving started/ended
- Phase Events: Phase started, phase ended
- Step Events: Step started, step ended
§Usage
use std::sync::Arc;
use solverforge_solver::event::{SolverEventSupport, SolverEventListener};
use solverforge_core::domain::PlanningSolution;
use solverforge_core::score::SimpleScore;
#[derive(Clone, Debug)]
struct MySolution { score: Option<SimpleScore> }
impl PlanningSolution for MySolution {
type Score = SimpleScore;
fn score(&self) -> Option<Self::Score> { self.score.clone() }
fn set_score(&mut self, score: Option<Self::Score>) { self.score = score; }
}
#[derive(Debug)]
struct MyListener;
impl SolverEventListener<MySolution> for MyListener {
fn on_best_solution_changed(&self, _solution: &MySolution, score: &SimpleScore) {
println!("New best: {:?}", score);
}
}
let mut support = SolverEventSupport::<MySolution>::new();
support.add_solver_listener(Arc::new(MyListener));Structs§
- Counting
Event Listener - A counting listener that tracks event occurrences.
- Logging
Event Listener - A logging listener that prints events to stdout.
- Solver
Event Support - Central event broadcaster for solver events.
Traits§
- Phase
Lifecycle Listener - Listener for phase lifecycle events.
- Solver
Event Listener - Listener for solver-level events.
- Step
Lifecycle Listener - Listener for step-level events within a phase.