Пример #1
0
	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;
	}
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
    //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");
    }
Пример #5
0
 public void SetDNA(SquareDNA DNA)
 {
     dna = DNA;
 }
Пример #6
0
	public void SetDNA(SquareDNA DNA) {
		dna = DNA;
	}
Пример #7
0
	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);
	}