aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs37
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;
}
}