Considerations for programming a genetic algorithm on parallel computers: I decided to make it very object oriented, breaking it into class Problem, class Solution, etc. with the hope that if I was solving a much different problem with a genetic algorithm, I could reuse a lot of code. How to divide the program amongst several computers? I have a different population on each computer. Killing and breeding a given percent of populations and mutating a given percent of populations is done separately on each computer as if the others werent there. Then, once a generation mix the populations of all the different computers with each other. At first I wanted the GAProb object to manage the fitness and keep it completely out of the Population object, but then I changed it and put the Problem within the Population object as well. I don't want to have a problem defined for each solution because that would be a lot of wasted memory.