示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }