diff --git a/artificial_bee_colony/src/bee.rs b/artificial_bee_colony/src/bee.rs index f110a56..3750272 100644 --- a/artificial_bee_colony/src/bee.rs +++ b/artificial_bee_colony/src/bee.rs @@ -22,6 +22,11 @@ impl Bee { .map(|food_source| food_source.fitness_calculation) .sum::(); + let probabilities = food_sources + .iter() + .map(|x| x.fitness_calculation / total_fitness) + .collect::>(); + let onlooker_bee_count = input.food_source_number; let mut where_to_look = 0; for _ in 0..onlooker_bee_count { @@ -30,8 +35,7 @@ impl Bee { where_to_look = 0; } - let fitness_for_index = food_sources[where_to_look].fitness_calculation; - if rand::thread_rng().gen_range(0.0..=1.0) < fitness_for_index / total_fitness { + if rand::thread_rng().gen_range(0.0..=1.0) < probabilities[where_to_look] { Bee::onlooker_bee( food_sources, where_to_look,