aboutsummaryrefslogtreecommitdiff
path: root/srchr/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'srchr/src/main.rs')
-rw-r--r--srchr/src/main.rs29
1 files changed, 17 insertions, 12 deletions
diff --git a/srchr/src/main.rs b/srchr/src/main.rs
index 7c0ede9..667b675 100644
--- a/srchr/src/main.rs
+++ b/srchr/src/main.rs
@@ -18,7 +18,7 @@ use std::time::Instant;
struct Tournament<'a> {
rngs: Vec<Pcg64>,
- top_prelayouts: Vec<(Prelayout, u32)>,
+ top_prelayouts: Vec<(Prelayout, f32)>,
corpus: &'a Corpus,
}
@@ -29,7 +29,7 @@ impl<'a> Tournament<'a> {
rngs.push(Pcg64::from_entropy());
}
- let mut top_prelayouts: Vec<(Prelayout, u32)> = Vec::new();
+ let mut top_prelayouts: Vec<(Prelayout, f32)> = Vec::new();
let score = prelayout_fitness(&corpus, &seed_prelayout);
for _ in 0..NUM_PERSIST {
top_prelayouts.push((seed_prelayout.clone(), score));
@@ -54,11 +54,17 @@ impl<'a> Tournament<'a> {
);
return (layout, prelayout_fitness(&self.corpus, &layout));
})
- .collect::<Vec<(Prelayout, u32)>>();
+ .collect::<Vec<(Prelayout, f32)>>();
let best = self.top_prelayouts[0].1;
tournament.append(&mut self.top_prelayouts);
- tournament.sort_by(|(_, lscore), (_, rscore)| lscore.cmp(rscore));
+ tournament.sort_by(|(_, lscore), (_, rscore)| {
+ if lscore < rscore {
+ std::cmp::Ordering::Less
+ } else {
+ std::cmp::Ordering::Greater
+ }
+ });
let result;
if tournament[0].1 < best {
@@ -79,9 +85,11 @@ fn main() {
let corpus = Corpus::load(CORPUS_FILE_NAME).unwrap();
println!("{}", corpus);
- let seed_prelayout = Layout::from_verbose(STARTING_LAYOUT_STRING)
- .unwrap()
- .as_prelayout();
+ let seed_layout = Layout::from_verbose(STARTING_LAYOUT_STRING).unwrap();
+ let seed_evl = Evaluation::evaluate_layout(&corpus, &seed_layout);
+ println!("Starting with\n {}{}", seed_layout, seed_evl);
+
+ let seed_prelayout = seed_layout.as_prelayout();
let mut tournament = Tournament::new_from_seed_prelayout(&seed_prelayout, &corpus);
@@ -93,12 +101,9 @@ fn main() {
if let Some(prelayout) = improvement {
let layout = Layout::from_prelayout(&prelayout, &corpus);
let evl = Evaluation::evaluate_layout(&corpus, &layout);
- println!("");
- println!("================================================================================\n\n{}",
- layout
+ println!("\n================================================================================\n\n{}{}",
+ layout, evl
);
-
- println!("{}", evl);
}
count += 1;