Struct darwin_rs::simulation::Simulation [] [src]

pub struct Simulation<T: Individual + Send + Sync> {
    pub type_of_simulation: SimulationType,
    pub num_of_threads: usize,
    pub habitat: Vec<Population<T>>,
    pub total_time_in_ms: f64,
    pub simulation_result: SimulationResult<T>,
    pub share_fittest: bool,
    pub num_of_global_fittest: usize,
    pub output_every: u32,
    pub output_every_counter: u32,
    pub share_every: u32,
    pub share_counter: u32,

The Simulation type. Contains all the information / configuration for the simulation to run. Use the SimulationBuilder in order to create a simulation.


How should the simulation stop ?

The number of threads to use to speed up calculation.

All the populations for the simulation. Contains all individuals for the simulation.

The total run time for the simulation. This will be calculated once the stimulation has finished.

The result of the simulation: improvement_factor, original_fitness and a vector of fittest individuals.

If this feature is enabled, then the most fittest individual of all populations is shared between all the populations.

The total number of global fittest individual to keep, default: 10 After each interation the most fittest individual of all populations is determinded. And this individual is copied into a global "high score list" of the whole simulation, if it is better then the highest entry. This number specifies how many of these global individuals should be kept. (i.e. the size of the "high score list")

Do not output every time a new fittest individual is found, only every nth times. n == output_every

Counter that will be incremented every iteration. If output_every_counter > output_every then the new fittest individual will be written to the log.

Only share the most fittest individual between the populations if the counter reaches this value: share_counter >= share_every.

Counter that will be incremented every iteration. If share_counter >= share_every then the most fittest individual is shared between all the populations.


impl<T: Individual + Send + Sync + Clone> Simulation<T>

This implements the the functions run, print_fitness and update_results (private) for the struct Simulation.

This actually runs the simulation. Depending on the type of simulation (EndIteration, EndFactor or EndFitness) the iteration loop will check for the stop condition accordingly.

This is a helper function that the user can call after the simulation stops in order to see all the fitness values for all the individuals that participated to the overall improvement.