Hyper-evolved keyboard layout via genetic algorithms
I ended up with a scheme in which a pool of 4096 keyboard layouts compete with each other. The layouts in the initial pool are entirely random. In each generation, they all race to "type" a word list, and their per-word times are multiplied by the word frequencies in the input sample. After the race, the fastest half are kept. The pool is then repopulated by generating a single mutation for each survivor. The mutations are made by permuting keys in the layout, with a 50% chance of swapping two keys, a 25% chance of swapping three, a 12.5% chance of four, and so on.Link Discuss (via /.)The evolutionary framework itself had to evolve. It was challenging to find a scheme with sufficient mutation possibilities that would allow a medium-quality layout enough time to improve itself with multiple mutations before getting eliminated. I also learned that it was important to track only distinct layouts, for otherwise a single good one would rapidly fill the pool with identical copies of itself.
When no new best layout has risen to the top of the pool in some number of generations, the round stops. The best layouts are stored away and the pool repopulated with random keyboards. This allows a fresh start after one layout has populated the pool with itself and its mutations...
k , u y p w l m f c
o a e i d r n t h s
q . ' ; z x v g b j


the latest
latest episodes