use crate::aco::Solution;
mod aggregated_probe;
mod csv_probe;
mod json_probe;
mod policy_driven_probe;
mod probing_policy;
mod stdout_probe;
use crate::aco::pheromone::Pheromone;
pub use aggregated_probe::AggregatedProbe;
pub use csv_probe::CsvProbe;
pub use json_probe::JsonProbe;
pub use policy_driven_probe::PolicyDrivenProbe;
pub use probing_policy::{ElapsedTime, GenerationInterval};
pub use stdout_probe::StdoutProbe;
#[allow(unused_variables)]
pub trait Probe<P: Pheromone> {
fn on_pheromone_update(&mut self, old_pheromone: &P, new_pheromone: &P) {}
fn on_current_best(&mut self, best: &Solution) {}
fn on_iteration_start(&mut self) {}
fn on_iteration_end(&mut self) {}
fn on_end(&mut self) {}
}
pub trait ProbingPolicy {
fn on_pheromone_update(&mut self) -> bool;
fn on_current_best(&mut self) -> bool;
fn on_iteration_start(&mut self) -> bool;
fn on_iteration_end(&mut self) -> bool;
fn on_end(&mut self) -> bool;
}