From 7525f92b0d9c5462be70e7e74afd090b45864eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20Kaan=20G=C3=9CM=C3=9C=C5=9E?= <96421894+Tahinli@users.noreply.github.com> Date: Wed, 20 Nov 2024 00:20:40 +0300 Subject: [PATCH] fix: :ambulance: first calculate all probabilities then send onlookers --- artificial_bee_colony/src/bee.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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,