Module event

Module event 

Source
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§

CountingEventListener
A counting listener that tracks event occurrences.
LoggingEventListener
A logging listener that prints events to stdout.
SolverEventSupport
Central event broadcaster for solver events.

Traits§

PhaseLifecycleListener
Listener for phase lifecycle events.
SolverEventListener
Listener for solver-level events.
StepLifecycleListener
Listener for step-level events within a phase.