public static int numberOfBatches = 5;        //Fixed Update - 50 fps - w 5 klatkach wszystkie sieci neuronowe juz obliczyly wartosci - 10 razy na sekunde wszystkie osobniki moga zmienic kierunek chodzenia

    void Start()
    {
        populationSize     = PopulationInputData.populationSize;
        populationPartSize = PopulationInputData.populationPartSize;
        mutationRate       = PopulationInputData.weightsMutationRate;
        animalPrefabName   = PopulationInputData.animalPrefabName;
        startingPosition   = PopulationInputData.startingPosition;
        speed = PopulationInputData.speed;
        physicalMutationRate    = PopulationInputData.physicalMutationRate;
        timeBelowAveragePenalty = PopulationInputData.timeBelowAveragePenalty;
        _newGenerationMove      = true;
        _currentMGenes          = new List <float>();
        __animalsToActivate     = new List <int>();
        bestDistances           = new List <float>();
        bestFitnesses           = new List <float>();
        averageDistances        = new List <float>();
        averageFitnesses        = new List <float>();
        _animalIndexesToMove    = new int[populationPartSize];
        _animalsObjects         = new List <GameObject>();
        _animals    = new List <Animal>();
        modelAnimal = Instantiate(Resources.Load("Prefabs/" + animalPrefabName) as GameObject);
        var movingParts = modelAnimal.GetComponentsInChildren <JointHandler>();

        AnimalBrain.noMovingParts = movingParts.Length;
        // AnimalBrain.outputSize = AnimalBrain.outputPerArm * AnimalBrain.noMovingParts + AnimalBrain.armsToMoveCount;
        AnimalBrain.outputSize   = AnimalBrain.outputPerArm * AnimalBrain.noMovingParts;
        _iterationsToResetMGenes = (int)Mathf.Ceil(Mathf.Log(populationSize, 2));
        modelAnimal.SetActive(false);
        if (PopulationInputData.migrationEnabled)
        {
            LoadMigratedIndividuals();
            _migratedAnimalsLeftToPick = migratedAnimals.Count;
            _chanceToMigrate           = Random.Range(0.0f, 100.0f);
        }
        CreateGeneration();
        _geneticAlgorithm    = new GeneticAlgorithm(_animals);
        _populationUIhandler = transform.Find("infoCanvas").GetComponent <PopulationUI>();
        StartCoroutine("MoveGenerationBatch");
    }
Beispiel #2
0
 public void init()
 {
     ui      = new PopulationUI();
     ui.ctrl = this;
     ui.init();
 }