ecrs 0.1.0-beta.4

Evolutionary computation tools & algorithms
Documentation
#[cfg(feature = "pso")]
use ecrs::pso::{self, builder::PSOAlgorithmBuilder};

#[cfg(feature = "pso")]
fn main() {
    let stdout_probe = Box::new(pso::probe::stdout_probe::StdoutProbe::new());
    let csv_probe = Box::new(pso::probe::csv_probe::CsvProbe::new("pso_example.csv"));
    let json_probe = Box::new(pso::probe::json_probe::JsonProbe::new("pso_example.json"));
    let probes: Vec<Box<dyn pso::probe::Probe>> = vec![stdout_probe, csv_probe, json_probe];
    let aggregated_probe = Box::new(pso::probe::aggregated_probe::AggregatedProbe::from_probes(probes));
    let probing_policy = Box::new(pso::probe::probing_policy::GenerationInterval::new(50));
    let policy_driven_probe = Box::new(pso::probe::policy_driven_probe::PolicyDrivenProbe::new(
        aggregated_probe,
        probing_policy,
    ));

    let mut algorithm = PSOAlgorithmBuilder::new()
        .set_dimensions(3)
        .set_generation_limit(2000)
        .set_probe(policy_driven_probe)
        .build();

    algorithm.run();
}

#[cfg(not(feature = "pso"))]
fn main() {
    panic!("Required feature \"pso\" is not enabled");
}