diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/src/main.rs b/src/main.rs index 462d2fe..905d3c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,6 @@ mod config; mod corpus; mod layout; -use core::cmp::Ordering; use rayon::prelude::*; use rand::prelude::*; @@ -12,7 +11,7 @@ use corpus::*; use layout::*; fn main() { - let corpus = Corpus::load("chained_english_bigrams_1m.txt").unwrap(); + let corpus = Corpus::load("new.txt").unwrap(); println!("{}", corpus); let starting_layout = Layout::from_verbose( @@ -26,9 +25,9 @@ fn main() { let mut rng = Pcg64::from_entropy(); - type Fun = Vec<(Layout, Evaluation, f32)>; + type Fun = Vec<(Layout, u32)>; - let mut best = std::f32::INFINITY; + let mut best = std::u32::MAX; let mut layouts: Fun = (0..10) .into_iter() .map(|i| { @@ -39,18 +38,15 @@ fn main() { layout = starting_layout; } - let evl = corpus.evaluate_layout(&layout); - let fitness = evl.fitness(); - return (layout, evl, fitness); + return (layout, corpus.layout_fitness(&layout)); }) .collect(); - let mut counter: u64 = 0; - while counter < 10000000000000 { + loop { let new_layouts = layouts .iter() .enumerate() - .map(|(i, (kbd, _, _))| { + .map(|(i, (kbd, _))| { if i > 0 { Layout::new_random_from(kbd, &mut rng) } else { @@ -62,30 +58,21 @@ fn main() { new_layouts .par_iter() .map(|layout| { - let evl = corpus.evaluate_layout(layout); - let fitness = evl.fitness(); - return (*layout, evl, fitness); + return (*layout, corpus.layout_fitness(layout)); }) .collect_into_vec(&mut layouts); - layouts.sort_by(|(_, _, lfit), (_, _, rfit)| { - if lfit < rfit { - Ordering::Less - } else { - Ordering::Greater - } - }); + layouts.sort_by(|(_, lfit), (_, rfit)| lfit.cmp(rfit)); - if layouts[0].2 < best { - best = layouts[0].2; + if layouts[0].1 < best { + best = layouts[0].1; + let evl = corpus.evaluate_layout(&layouts[0].0); println!(""); println!("================================================================================\nLayout:\n{}", layouts[0].0 ); - println!("{}\n{}", layouts[0].1, layouts[0].2); + println!("{}\n{}", evl, layouts[0].1); } - - counter += 1; } } |
