Output max, mean, median, and minimum fitness values
This commit is contained in:
parent
179b503634
commit
5d1c1aca27
|
@ -150,10 +150,25 @@ impl Population {
|
||||||
let total = self.worlds.iter().fold(0., |acc, x| acc + x.fitness);
|
let total = self.worlds.iter().fold(0., |acc, x| acc + x.fitness);
|
||||||
self.worlds
|
self.worlds
|
||||||
.sort_by(|a, b| b.fitness.partial_cmp(&a.fitness).unwrap());
|
.sort_by(|a, b| b.fitness.partial_cmp(&a.fitness).unwrap());
|
||||||
for i in &self.worlds {
|
let mut scores: std::collections::VecDeque<_> =
|
||||||
println!("Fitness: {}", i.fitness);
|
self.worlds.iter().map(|w| w.fitness as f32).collect();
|
||||||
|
let mean: f32 = scores.iter().sum::<f32>() / scores.len() as f32;
|
||||||
|
while scores.len() > 2 {
|
||||||
|
scores.pop_front();
|
||||||
|
scores.pop_back();
|
||||||
}
|
}
|
||||||
println!("Gen: {}, Fitness: {}", self.gen, self.worlds[0].fitness);
|
if scores.len() == 2 {
|
||||||
|
scores.pop_front();
|
||||||
|
}
|
||||||
|
let median = scores[0];
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"{} {} {} {}",
|
||||||
|
self.worlds[0].fitness,
|
||||||
|
mean,
|
||||||
|
median,
|
||||||
|
self.worlds[self.worlds.len() - 1].fitness
|
||||||
|
);
|
||||||
let mut new_worlds = (0..std::cmp::max(1, self.size / 20))
|
let mut new_worlds = (0..std::cmp::max(1, self.size / 20))
|
||||||
.map(|i| World::simulate(self.worlds[i].see_brain().to_owned()))
|
.map(|i| World::simulate(self.worlds[i].see_brain().to_owned()))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
Loading…
Reference in New Issue