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"); }
public void init() { ui = new PopulationUI(); ui.ctrl = this; ui.init(); }