Example #1
0
    //Wird in einem bestimmten Interval aufgerufen
    public void FixedUpdate()
    {
        if (running)
        {
            int counter = 1;
            foreach (Individual individual in population.individuals)
            {
                NeuralNetwork  nn        = individual.nn;
                CharController cc        = individual.GetGameObject().GetComponent <CharController>();
                List <double>  distances = cc.CalculateDistances();

                //Bewege die Individuen falls sich noch nicht gecrashed sind
                if (!cc.IsCrashed())
                {
                    cc.Move((float)nn.ComputeOutput(distances));

                    //Falls die Individuen fertig sind bekommen sie einen Fitness skalierer
                    if (cc.HasFinished())
                    {
                        individual.fitness += ComputeFitness(cc.CalculateDistances()) * successMultiplier;
                    }

                    else
                    {
                        individual.fitness += ComputeFitness(cc.CalculateDistances());
                    }
                }

                counter += 1;
            }
        }
    }