URGENT UPDATE!!!!!! I have fixed a bug that was messing up the same hand count, and it is now easier to use and debug. Here's the new scoring system:
Up and out on 1 hand (QR, SP, EL, I; , XA, CT, ,N, .O and their reverse, Colemak positions): +5 (this goes against the hand's natural curve, making it difficult)
Changing rows on 1 hand: +(number of rows changed)^4. That means moving up or down 1 costs 1, and skipping over the home row costs 16.
Using the same finger twice: +25
Reversing direction on 1 hand: +4x, where x is the number of times in a row it's reversed direction
Assigned cost for each position:
15 11 10 12 20 20 11 10 11 15
3 1 0 0 10 10 0 0 1 3
21 18 17 16 24 16 12 16 16 20
Notice that the left side has slightly higher costs in some places than the right side. This is because of the asymmetry of the keyboard, and would be removed for testing for an ergonomic keyboard.
I got some strange results.
qwerty score: "score"=>13.16, "jumphomecount"=>2972.0, "rowskipcount"=>304, "handcount"=>595, "effort"=>29480, "chars"=>31040, "fingercount"=>1130
capewell score: "score"=>7.54, "jumphomecount"=>479.0625, "rowskipcount"=>1168, "handcount"=>660, "effort"=>15421, "chars"=>30247, "fingercount"=>348
arensito score: "score"=>7.45, "jumphomecount"=>711.0, "rowskipcount"=>727, "handcount"=>444, "effort"=>16059, "chars"=>31040, "fingercount"=>342
colemak score: "score"=>7.08, "jumphomecount"=>513.25, "rowskipcount"=>591, "handcount"=>390, "effort"=>15943, "chars"=>31040, "fingercount"=>305
nisa score: "score"=>7.08894, "jumphomecount"=>592.625, "rowskipcount"=>653, "handcount"=>692, "effort"=>15378, "chars"=>31040, "fingercount"=>219
ddvorak score: "score"=>6.74, "jumphomecount"=>388.25, "rowskipcount"=>322, "handcount"=>34, "effort"=>16036, "chars"=>31040, "fingercount"=>489
klausler score: "score"=>6.62, "jumphomecount"=>406.9375, "rowskipcount"=>601, "handcount"=>101, "effort"=>15993, "chars"=>31040, "fingercount"=>202
Jumphomecount is the number of times it jumps over the home row, where a single row jump counts as 1/16 of a jumphomecount.
Rowskipcount, despite the name, is when it moves up and out along 1 hand.
Handcount and fingercount are obvious.
Effort is the price of each position on the keyboard, divided by 11.3 because 11.3 is the average of all the positions, and I wanted to reduce the number so that it could be compared to the other values. For instance, "jumphomecount" is not the number of points that were added due to jumping home, it was the number of times it happened. I wanted effort to be similar.
Nisa is a layout that I designed this morning (with logic, not my genetic algorithm), and it's loosely based on Colemak. I got a few ideas from Colemak, such as the P G thing.* Its score on http://www.siteuri.ro/dvorak/ is 1.5% worse than Colemak, and using my criteria it is almost exactly tied with Colemak, about 0.01% worse. Here's what it looks like.
Q W U P G B L Y C ,
O R E T D H N I S A
Z X ' V J K M . F ;
It was designed with no restrictions in mind except try to keep shortcuts in place, but that was low priority. I still managed to keep all the shortcuts except C in place. It has very low same finger count, and is the lowest on effort, but pays the price by having too much row jumping and some potentially annoying same hand stuff, such as CASF (case, face, sack).
I was surprised to see that Peter Klausler's layout actually did the best, and DDvorak did second best. They still did just as well when I cut down on the same hand.
*In a previous thread someone asked why P and G weren't switched even though G was more common. Shai mentioned some stuff like PT/TP is more common than GT/TG (which I found to be true, though neither are very common) and to type P you have to bend your index finger back a little. I was about to disagree when I looked at my statistics and saw that G was only 20% more common than P. That's practically nothing, so I went with P G instead of G P.