//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); }
// 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); }