Hyper-evolved keyboard layout via genetic algorithms

Using a genetic algorith feulled by the adjascent-letter-frequency in the Gutenberg Project texts, a hacker has evolved a highly optimized keyboard layout that minimizes finger-motions for English-language typists. Looks like it kicks Dvorak's ass, which means that Possum, the only Dvorak typist I've ever met, has a new hobby.

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.

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



(via /.)