private void initNewGame()
 {
     for (int i = 0; i < GameProperties.POPULATION_SIZE; ++i)
     {
         newDNAs.Add(RagdollDNA.Generate());
     }
 }
Пример #2
0
    public RagdollDNA CrossOver(RagdollDNA dna)
    {
        List <float> newChrom = new List <float>();
        List <int>   indexes  = new List <int>();

        int i = 0;

        foreach (float val in Chromosome)
        {
            newChrom.Add(val);
            indexes.Add(i++);
        }

        for (int n = 0; n < GameProperties.CROSS_COUNT; ++n)
        {
            int rand = Random.Range(0, indexes.Count - 1);
            newChrom[indexes[rand]] = dna.Chromosome[indexes[rand]];
            indexes.RemoveAt(rand);
        }

        if (Random.Range(1, 100) <= GameProperties.MUTATION_RATE)
        {
            int rand = Random.Range(0, indexes.Count - 1);
            newChrom[indexes[rand]] = Random.Range(-50, 50);
            indexes.RemoveAt(rand);
        }

        return(new RagdollDNA(newChrom));
    }
    private void generateNewDNAs()
    {
        int numToCreate = GameProperties.POPULATION_SIZE - newDNAs.Count;

        for (int i = 0; i < numToCreate; ++i)
        {
            newDNAs.Add(RagdollDNA.Generate());
        }
    }
Пример #4
0
    public void InitWithDNA(RagdollDNA dna)
    {
        DNA = dna;
        Vector3        main = new Vector3(DNA.Chromosome[0], DNA.Chromosome[1], DNA.Chromosome[2]);
        Vector4        param;
        List <Vector4> paramList = new List <Vector4>();

        for (int i = 3; i < DNA.Chromosome.Count;)
        {
            param.x = DNA.Chromosome[i++];
            param.y = DNA.Chromosome[i++];
            param.z = DNA.Chromosome[i++];
            param.w = DNA.Chromosome[i++];
            paramList.Add(param);
        }

        character.Initialize(main, paramList.ToArray());
    }