Ian phou

Our RandomSearch class assumes that the problem has a random() method which creates an object of the class with random properties.

GaussianConvolution only works with objects that have multiple parts to it (for example the bit strings in OnesMax).

Our TournamentSelection assumes that the problem has a population (a bunch of different objects that we are going to select candidates from).