private void initNewGame() { for (int i = 0; i < GameProperties.POPULATION_SIZE; ++i) { newDNAs.Add(RagdollDNA.Generate()); } }
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()); } }
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()); }