// Update is called once per frame void Update() { if (phase == GenetixPhase.EvaluateFitness) { bool phaseOver = true; for (int i = 0; i < population.Length; i++) { if (population[i].Evaluating) { phaseOver = false; } } if (phaseOver) { phase = GenetixPhase.SCM; } } if (phase == GenetixPhase.SCM) { Selection(); Crossover(); Mutation(); Evaluate(); } }
void InitializePopulation() { phase = GenetixPhase.InitializePopulation; for (int i = 0; i < population.Length; i++) { population[i] = new Individual(); } }
void Evaluate() { phase = GenetixPhase.EvaluateFitness; for (int i = 0; i < population.Length; i++) { var agent = Instantiate(agentPrefab, spawnPoint.position, agentPrefab.transform.rotation).GetComponent <Agent>(); agent.Individual = population[i]; agent.Individual.Evaluating = true; } }