Beispiel #1
0
    // Adaptive GAs
    // In CAGA (clustering-based adaptive genetic algorithm)
    void Start()
    {
        settings       = GetComponent <GASettings>();
        populationSize = settings.PopulationSize;
        nrGenerations  = settings.NumberOfGenerations;
        blocking       = settings.RunAsFastAsPossible;

        environment.Settings       = settings;
        selectionStrategy.Settings = settings;
        matingStrategy.Settings    = settings;
        mutationStrategy.Settings  = settings;

        population      = new Population(populationSize);
        selectionBuffer = new SelectionBuffer(populationSize);

        statistics = GetComponent <Statistics>();
        if (statistics == null)
        {
            statistics = gameObject.AddComponent <Statistics>();
        }

        statistics.Population = population;

        BasePhenome phenomeTemplate = Helper.InstansiateAndGet <BasePhenome>(phenomePrefab);
        BaseGenome  genomeTemplate  = phenomeTemplate.Genome;

        for (int i = 0; i < populationSize; i++)
        {
            BaseGenome genome = genomeTemplate.CreateRandom();             // Should be possible to generate these by hand (seeded)
            population[i] = new PhenomeDescription(genome);
        }
        for (int i = 0; i < populationSize; i++)
        {
            BaseGenome genome = genomeTemplate.CreateRandom();             // Should be possible to generate these by hand (seeded)
            selectionBuffer[i] = genome;
        }

        nextStepDelegate = NextStep;
        currentState     = State.FitnessTest;
    }
Beispiel #2
0
 protected override float CalculateFitness(BasePhenome phenome)
 {
     return((phenome as CarPhenome).TotalDistance);
 }
Beispiel #3
0
 protected abstract float CalculateFitness(BasePhenome phenome);