public EvolutionaryLearning(ActivationNetwork activationNetwork, int populationSize)
{
// Check of assumptions during debugging only
Debug.Assert(activationNetwork != null);
Debug.Assert(populationSize > 0);
// networks's parameters
this.network = activationNetwork;
this.numberOfNetworksWeights = CalculateNetworkSize(activationNetwork);
// population parameters
this.populationSize = populationSize;
this.chromosomeGenerator = new UniformContinuousDistribution(new Range(-1, 1));
this.mutationMultiplierGenerator = new ExponentialDistribution(1);
this.mutationAdditionGenerator = new UniformContinuousDistribution(new Range(-0.5f, 0.5f));
this.selectionMethod = new EliteSelection();
this.crossOverRate = 0.75;
this.mutationRate = 0.25;
this.randomSelectionRate = 0.2;
}