About

Finding a better layout than the typical QWERTY arrangement seemed like a simple need. It has many flaws, such as not placing the vowels toward the center, and is poorly optimized for finger positioning other than home-row.

However, this is not an easy task (it resembles the Quadratic Assignment Problem, a canonically NP-Hard Problem). With at least 26 different keys on the keyboard, testing each of the 26 factorial (or more) individual layouts would be borderline impossible. Therefore, it is clear that for this problem, metaheuristics, such as evolutionary algorithms and simulated annealing, are necessary.

This application uses both of the aforementioned methods. It begins with an evolutionary algorithm, which tend to be one of the fastest methods to obtain a somewhat-optimal solution. Then, after a certain number of stagnant generations, switches to a simplified version of simulated annealing. This technique, although perhaps slower, allows us to break from any local minima, as it tolerates solutions that are slightly worse in order to explore other possibilities and hopefully move toward the global minimum.