Beispiel #1
0
    protected override void EndGeneration()
    {
        Generation currentGeneration = generations.Last.Value;

        foreach (GameObject critter in critters)
        {
            CritterCtrl       ctrl = critter.GetComponent <CritterCtrl>();
            CritterANNControl ann  = critter.GetComponent <CritterANNControl>();
            currentGeneration.AddPhenotype(ann.neuralNetwork.ws, ctrl.LifeSpan() - ctrl.naturalLifeSpan());
        }

        base.EndGeneration();
    }
Beispiel #2
0
    protected override void StartGeneration()
    {
        crittersAlive = 0;

        ResetFood();
        ResetCritters();

        if (generations.Count > 0)
        {
            Generation  prevGeneration = generations.Last.Value;
            float[][][] offspring      = prevGeneration.GenerateOffspring(crittersAmount);

            int i = 0;
            foreach (float[][] genes in offspring)
            {
                GameObject        critter = critters[i];
                CritterANNControl ann     = critter.GetComponent <CritterANNControl>();
                ann.neuralNetwork.SetWeights(genes);
                i++;
            }
        }

        base.StartGeneration();
    }