feat: now able to run abc multiple times

This commit is contained in:
Ahmet Kaan GÜMÜŞ 2024-11-20 00:20:40 +03:00
parent 5a2100fd30
commit 7d54ed4795
2 changed files with 53 additions and 46 deletions

View file

@ -10,51 +10,54 @@ fn main() {
input.upper_bound,
input.lower_bound,
);
let mut best = FoodSource::get(vec![]);
for food_source in &food_sources {
if best.fitness < food_source.fitness {
best.coordinates = food_source.coordinates.clone();
best.fitness = food_source.fitness;
}
}
for _ in 0..input.iteration {
for index in 0..input.food_source_number as usize {
Bee::worker_bee(
&mut food_sources,
index,
input.decision_variable_count,
input.upper_bound,
input.lower_bound,
);
let mut total_fitness = 0.0;
for food_source in &food_sources {
total_fitness += food_source.fitness;
}
Bee::onlooker_bee(
&mut food_sources,
index,
total_fitness,
input.decision_variable_count,
input.upper_bound,
input.lower_bound,
);
let mut most_tried_index = 0;
for i in 0..food_sources.len() {
if food_sources[most_tried_index].try_counter < food_sources[i].try_counter {
most_tried_index = i;
}
}
best = 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,
);
}
}
println!("{:#?}", best);
for _ in 0..input.run {
let mut best = FoodSource::get(vec![]);
for food_source in &food_sources {
if best.fitness < food_source.fitness {
best.coordinates = food_source.coordinates.clone();
best.fitness = food_source.fitness;
}
}
for _ in 0..input.iteration {
for index in 0..input.food_source_number as usize {
Bee::worker_bee(
&mut food_sources,
index,
input.decision_variable_count,
input.upper_bound,
input.lower_bound,
);
let mut total_fitness = 0.0;
for food_source in &food_sources {
total_fitness += food_source.fitness;
}
Bee::onlooker_bee(
&mut food_sources,
index,
total_fitness,
input.decision_variable_count,
input.upper_bound,
input.lower_bound,
);
let mut most_tried_index = 0;
for i in 0..food_sources.len() {
if food_sources[most_tried_index].try_counter < food_sources[i].try_counter {
most_tried_index = i;
}
}
best = 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,
);
}
}
println!("{:#?}", best);
}
}