There are actually several different crossover mechanisms being defined as well, so that will probably need to be made flexibly like selectionMethod.

An issue is then that you might end up with quite a few arguments to this function, which could get tedious, especially if we tend to use the same ones most of the time. You could either provide default argument values for some of these parameters, or you could make things like selectionMethod and crossoverMethod fields with default values, which would allow people to override them when they construct instances of this class.