コード例 #1
0
    void Update()
    {
        for (int i = 0; i < this.cars.Count; i++)
        {
            currCarController = cars[i].GetComponent <newCarController>();

            if (currCarController.fitness > maxFitness)                                        //Updateing Max Fitness
            {
                maxFitness = currCarController.fitness;
                fitBrain   = currCarController.myBrin;
                fitBrain.save(maxFitness);
            }
            if (currCarController.fitness > this.firstFitness)                                 //Setting New First Fit Parents
            {
                this.firstFitness  = currCarController.fitness;
                this.firstFitBrain = currCarController.myBrin;
                bestCar            = cars[i];
            }
            if (currCarController.fitness < this.firstFitness && currCarController.fitness > secondFitness)                                 //Setting New Second Fit Parents
            {
                this.secondFitness  = currCarController.fitness;
                this.secondFitBrain = currCarController.myBrin;
            }

            if (!currCarController.alive)
            {
                cars[i].SetActive(false);
                Destroy(cars[i]);                                                           //Remove Dead Offsprings
                cars.Remove(cars[i]);
            }
        }
        if (this.cars.Count == 0)
        {
            makeNewGenration();                                                            //Makeing New Genration
            for (int i = 0; i < this.population; i++)                                      //Mutating And Inheriting New Genration
            {
                currCarController             = cars[i].GetComponent <newCarController>();
                currCarController.incrementer = genration;
                NeuralNetwork brain = new NeuralNetwork();
                currCarController.myBrin = brain;
                currCarController.myBrin.inherit(firstFitBrain, secondFitBrain);            //Inherite From Best Two Of Previous Gemration
                if (this.fitBrain != null && (Random.Range(1, 100) < 20))
                {
                    currCarController.myBrin.inherit(currCarController.myBrin, this.fitBrain); //Inherite The best Brain From Past
                }
                currCarController.myBrin.mutate();
            }
        }
    }
コード例 #2
0
 void Start()
 {
     Instantiate(car);
     currCarController = car.GetComponent <newCarController>();
 }