// This is just a function used when instantiating a new Car_Class public Car_Class(GameObject carParent, GameObject body, Vector3 size, List <Wheel> wheels, Engine engine, Driver driver) { // Assign all variables CarParent = carParent; Body = body; Size = size; Wheels = wheels; Engine = engine; Driver = driver; // Create the DNA DNA.Add(carParent); DNA.Add(body); DNA.Add(size); DNA.Add(wheels); DNA.Add(engine); DNA.Add(driver); main = GameObject.FindGameObjectWithTag("Main").GetComponent <Main>(); /*DNA.Add("CarParent", carParent); * DNA.Add("Body", body); * DNA.Add("Size", size); * DNA.Add("Wheels", wheels); * DNA.Add("Engine", engine); * DNA.Add("Driver", driver);*/ }
public static DNA Generate() { Init(); var dna = new DNA(); foreach (var gene in DNALib) { dna.Add(gene.NextRandom()); } return(dna); }
public void EncodeDNA() { DNA.Add(Numbery.Normalise(NumHiddenLayers, NumHiddenLayersRange.Lower, NumHiddenLayersRange.Upper, 0, 1)); foreach (var num in NumInHidden) { DNA.Add(Numbery.Normalise(num, NumInHiddenRange.Lower, NumInHiddenRange.Upper, 0, 1)); } DNA.Add(Numbery.Normalise(RangeSize, RangeSizeRange.Lower, RangeSizeRange.Upper, 0, 1)); DNA.Add(Numbery.Normalise(Epochs, EpochsRange.Lower, EpochsRange.Upper, 0, 1)); foreach (var datapoint in Facade) { DNA.Add(Numbery.Normalise(datapoint ? 1 : 0, FacadeRange.Lower, FacadeRange.Upper, 0, 1)); } }
/// <summary> /// Mutation Predicate. /// Modifies a DNA string by changing one of its bases to be a random new value /// </summary> /// <param name="mut_index"> /// The point in which mutation is applied. /// </param> /// <param name="randomGene"> /// The function used to supply random Genes /// </param> public static Mutant mutate(int mut_index, DNA original, getRandomGeneFunct randomGene) { Mutant m; DNA g_dna; DNAPartial g_partial; DNAPartial rest; Gene g; g=randomGene(); while (original.Contains(g)) g = randomGene(); g_dna = new DNA(); g_dna.Add(g); var sp_mut = split(mut_index-1, original); g_partial = split(0, g_dna).back; // remove the base at the location that mutation is to occur DNA back = join(new DNAPartial(), sp_mut.back); back.RemoveAt(0); // add mutated item back = join(g_partial, split(0,back).back); DNA front = join(new DNAPartial(), sp_mut.front); // join front, mutation, and rest, lists together rest = split(0, join(split(0,front).back, split(0, back).back)).back; m = new Mutant(join(new DNAPartial(), rest)); return m; }