Example #1
0
    // 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);*/
    }
Example #2
0
        public static DNA Generate()
        {
            Init();
            var dna = new DNA();

            foreach (var gene in DNALib)
            {
                dna.Add(gene.NextRandom());
            }
            return(dna);
        }
Example #3
0
        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));
            }
        }
Example #4
0
        /// <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;
        }