diff options
| author | tslil clingman <tslil@posteo.de> | 2022-09-25 17:27:50 +0200 |
|---|---|---|
| committer | tslil clingman <tslil@posteo.de> | 2022-09-25 17:27:50 +0200 |
| commit | ac5858eb9f241023224b5415b1f6d516aae514b8 (patch) | |
| tree | 721e4ce98e4065106c3d46786ca3949127ac7553 /src/main.rs | |
| parent | 1cac34b7ea939e0d0d1157de59e90c70b2831812 (diff) | |
Focus on sfb
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; } } |
