pub trait SolverPhaseFactory<S: PlanningSolution>: Send + Sync {
// Required method
fn create_phase(&self) -> Box<dyn Phase<S>>;
}Expand description
Factory trait for creating phases.
Phase factories allow creating fresh phase instances for each solve, ensuring clean state between solves. This is essential because phases often maintain internal state (like step counters or tabu lists) that must be reset for each new solve.
§Implementing SolverPhaseFactory
There are two common ways to implement this trait:
- Use
CloneablePhaseFactoryfor phases that implementClone - Use
ClosurePhaseFactorywith a closure that creates phases
§Example
use solverforge_solver::manager::SolverPhaseFactory;
use solverforge_solver::phase::Phase;
use solverforge_core::domain::PlanningSolution;
use solverforge_core::score::SimpleScore;
struct MyPhaseFactory;
impl SolverPhaseFactory<MySolution> for MyPhaseFactory {
fn create_phase(&self) -> Box<dyn Phase<MySolution>> {
// Create and return a new phase instance
todo!("Create phase here")
}
}Required Methods§
Sourcefn create_phase(&self) -> Box<dyn Phase<S>>
fn create_phase(&self) -> Box<dyn Phase<S>>
Creates a new phase instance.
This method is called once per solve to create a fresh phase with clean state.