I've been working on my Layout Evolution program the last few days.
After a few tests for 1-2 hours at a time and some major hacking at the code, I decided to let it run for a day or two. The latest version is very aggressive about breeding new layouts and killing bad layouts.
Instead of mucking around with 10 or 20 layouts I've bumped it up to 100. This takes ages, but is producing good results and lots of high scores. Also previously it only killed about 50%, but the new one kills 75%.
This seems to help a lot, at one stage in an early program the scores after each generation kept getting worse not better! I also tightened up the "breeding" program, now only the top 10% or so can breed. You might ask why keep the 75%-90% gap? Well, I don't want one fluky layout to remove a solid pool base.
After a few generations the solid base should be back on top.
A few things are obvious from the latest run:
- My test data needs some looking at (I think the word "this" might appear a lot)
- My rules need some work. The program is pumping out layouts that are scoring much better than dvorak, but the don't look "right"
Anyway, here's the latest layout it's just created:
' l g m y f d o p v r n t h s i u a e c ; . w b j x k , z q
and for comparison, here's dvorak:
' , . p y f g c r l a o e u i d h t n s ; q j k x b m w v z
They have some interesting similarities, the vowels mirror to the right hand is pretty cool. I still wouldn't want to type on it though.
I'll let it run over night and see how it goes. Each new generation takes about an hour to score, so I'm expecting some interesting results in the morning.