From e9d8b8dbded7ac9585fb5295a80212f7ca270c92 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: this much as bee can't be lying --- artificial_bee_colony/src/food.rs | 2 +- artificial_bee_colony/src/main.rs | 31 ++++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/artificial_bee_colony/src/food.rs b/artificial_bee_colony/src/food.rs index 418907b..e9d9cba 100644 --- a/artificial_bee_colony/src/food.rs +++ b/artificial_bee_colony/src/food.rs @@ -14,7 +14,7 @@ impl FoodSource { pub fn new(coordinates: Vec) -> Self { let mut food_source = FoodSource { fitness_calculation: 0.0, - function_calculation: 0.0, + function_calculation: 1.0, coordinates, try_counter: 0, }; diff --git a/artificial_bee_colony/src/main.rs b/artificial_bee_colony/src/main.rs index 84407b7..06c2a01 100644 --- a/artificial_bee_colony/src/main.rs +++ b/artificial_bee_colony/src/main.rs @@ -17,10 +17,7 @@ fn main() { let mut best_food_source = FoodSource::new(vec![]); for food_source in &food_sources { if best_food_source.fitness_calculation < food_source.fitness_calculation { - best_food_source - .coordinates - .clone_from(&food_source.coordinates); - best_food_source.fitness_calculation = food_source.fitness_calculation; + best_food_source = food_source.clone(); } } for _ in 0..input.iteration { @@ -50,15 +47,23 @@ fn main() { most_tried_index = i; } } - best_food_source = food_sources[most_tried_index].clone(); - Bee::scout_bee( - &mut food_sources, - most_tried_index, - input.food_source_try_limit, - input.lower_bound, - input.upper_bound, - input.decision_variable_count, - ); + + for food_source in &food_sources { + if best_food_source.fitness_calculation < food_source.fitness_calculation { + best_food_source = food_source.clone(); + } + } + + if food_sources[most_tried_index].try_counter > input.food_source_try_limit { + Bee::scout_bee( + &mut food_sources, + most_tried_index, + input.food_source_try_limit, + input.lower_bound, + input.upper_bound, + input.decision_variable_count, + ); + } } } function_results.push(best_food_source.function_calculation);