/// <summary> /// Generate a random genome. /// </summary> /// <param name="rnd">Random number generator.</param> /// <param name="eval">The evaluator.</param> /// <returns>The random genome.</returns> private TreeGenome RandomGenome(IGenerateRandom rnd, EvaluateExpression eval) { var result = new TreeGenome(eval); result.Root = eval.Grow(rnd, 5); return(result); }
/// <summary> /// Create an initial random population. /// </summary> /// <param name="rnd">A random number generator.</param> /// <param name="eval">The expression evaluator.</param> /// <returns>The new population.</returns> private IPopulation InitPopulation(IGenerateRandom rnd, EvaluateExpression eval) { IPopulation result = new BasicPopulation(PopulationSize, null); var defaultSpecies = new BasicSpecies(); defaultSpecies.Population = result; for (int i = 0; i < PopulationSize; i++) { TreeGenome genome = RandomGenome(rnd, eval); defaultSpecies.Add(genome); } result.GenomeFactory = new TreeGenomeFactory(eval); result.Species.Add(defaultSpecies); return(result); }