예제 #1
0
        //ParamsPossibleValues[param][GeneParameters[param].GetRandomValue()];

        public static bool AddParameterType(string name, bool mutable, params byte[] ids)
        {
            if (Frozen || GeneParameterIndices.ContainsKey(name))
            {
                return(false);
            }
            var gene = new GeneParameter(GeneParamIndex, mutable, ids);

            GeneParameters.Add(gene);
            GeneParameterIndices.Add(name, gene.Index);
            ParamsPossibleValues.Add(ids);
            ++GeneParamIndex;
            return(true);
        }
예제 #2
0
        // switches to read-only
        public static byte FreezeGenePool()
        {
            Frozen         = true;
            GeneLength     = (byte)GeneParameters.Sum(gp => gp.Bits);
            MutationChance = 1f / GeneLength;

            GeneParams            = GeneParameters.ToArray();
            GeneParameters        = null;
            ParamsValueGenerators = new ByteGenerator[NUM_PARAMS - NUM_IMMUTABLE];
            for (int p = NUM_IMMUTABLE; p < NUM_PARAMS; ++p)
            {
                ParamsValueGenerators[p] = new ByteGenerator(GeneParams[p].MaxValue);
            }

            return(GeneLength);
        }