use super::{individual::IndividualTrait, GAMetadata};
mod aggregated_probe;
mod csv_probe;
mod empty;
mod json_probe;
mod policy_driven_probe;
mod probing_policy;
mod stdout_probe;
pub use aggregated_probe::AggregatedProbe;
pub use csv_probe::CsvProbe;
pub use empty::EmptyProbe;
pub use json_probe::JsonProbe;
pub use policy_driven_probe::PolicyDrivenProbe;
pub use probing_policy::{ElapsedTime, GenerationInterval};
pub use stdout_probe::StdoutProbe;
pub trait Probe<IndividualT: IndividualTrait> {
fn on_start(&mut self, _metadata: &GAMetadata) {
}
fn on_initial_population_created(&mut self, _population: &[IndividualT]) {
}
fn on_new_best(&mut self, _metadata: &GAMetadata, _individual: &IndividualT) {
}
fn on_new_generation(&mut self, _metadata: &GAMetadata, _generation: &[IndividualT]) {
}
fn on_best_fit_in_generation(&mut self, _metadata: &GAMetadata, _individual: &IndividualT) {
}
fn on_iteration_start(&mut self, _metadata: &GAMetadata) {
}
fn on_iteration_end(&mut self, _metadata: &GAMetadata) {
}
fn on_end(
&mut self,
_metadata: &GAMetadata,
_population: &[IndividualT],
_best_individual: &IndividualT,
) {
}
}
pub trait ProbingPolicy<IndividualT: IndividualTrait> {
fn on_start(&mut self, _metadata: &GAMetadata) -> bool;
fn on_initial_population_created(&mut self, _population: &[IndividualT]) -> bool;
fn on_new_best(&mut self, _metadata: &GAMetadata, _individual: &IndividualT) -> bool;
fn on_new_generation(&mut self, _metadata: &GAMetadata, _generation: &[IndividualT]) -> bool;
fn on_best_fit_in_generation(&mut self, _metadata: &GAMetadata, _individual: &IndividualT) -> bool;
fn on_iteration_start(&mut self, _metadata: &GAMetadata) -> bool;
fn on_iteration_end(&mut self, _metadata: &GAMetadata) -> bool;
fn on_end(
&mut self,
_metadata: &GAMetadata,
_population: &[IndividualT],
_best_individual: &IndividualT,
) -> bool;
}