public SquareDNA Crossover(SquareDNA partner) { SquareDNA child = new SquareDNA(); child.mostAdvancedTrait = Mathf.Max(mostAdvancedTrait, partner.mostAdvancedTrait); for (int i = 0; i < genes.Length; i++) { int coinFlip = Random.Range(0, 2); child.genes[i] = coinFlip == 0 ? genes[i] : partner.genes[i]; } return child; }
public SquareDNA Crossover(SquareDNA partner) { SquareDNA child = new SquareDNA(); child.mostAdvancedTrait = Mathf.Max(mostAdvancedTrait, partner.mostAdvancedTrait); for (int i = 0; i < genes.Length; i++) { int coinFlip = Random.Range(0, 2); child.genes[i] = coinFlip == 0 ? genes[i] : partner.genes[i]; } return(child); }
void SpawnSquare(SquareDNA dna) { Vector3 randomPos = new Vector3(Random.Range(cameraRect.x, cameraRect.xMax), Random.Range(cameraRect.yMax, cameraRect.y), 0.0f); GameObject individual = Instantiate(square, randomPos, Quaternion.identity) as GameObject; SquareController sq = individual.GetComponent <SquareController>(); if (sq == null) { Destroy(individual); return; } sq.cameraRect = cameraRect; population.Add(dna); sq.SetDNA(dna); //Debug.Log(dna); }
//Step 3 reproduce void Reproduce() { List <SquareDNA> newPopulation = new List <SquareDNA>(); for (int i = 0; i < popSize; i++) { int a = Random.Range(0, matingPool.Count()); int b = Random.Range(0, matingPool.Count()); SquareDNA partnerA = matingPool[a]; SquareDNA partnerB = matingPool[b]; //Step 3a: Crossover SquareDNA child = partnerA.Crossover(partnerB); //Step 3b: Mutation child.Mutate(mutationRate); newPopulation.Add(child); } population = newPopulation; StartCoroutine("SpawnGen"); }
public void SetDNA(SquareDNA DNA) { dna = DNA; }
void SpawnSquare(SquareDNA dna) { Vector3 randomPos = new Vector3(Random.Range(cameraRect.x, cameraRect.xMax), Random.Range (cameraRect.yMax, cameraRect.y), 0.0f); GameObject individual = Instantiate(square, randomPos, Quaternion.identity) as GameObject; SquareController sq = individual.GetComponent<SquareController>(); if (sq == null) { Destroy(individual); return; } sq.cameraRect = cameraRect; population.Add(dna); sq.SetDNA(dna); //Debug.Log(dna); }