/// <summary> /// Get a random activation function /// </summary> /// <returns>a Activation function</returns> public static ActivationEnumeration Random() { int count = GetAll <ActivationEnumeration>().Count(); int i = (int)(ThreadSafeRandom.Random() * count); return(GetAll <ActivationEnumeration>().ToList()[i]); }
///<inheritdoc/> public void Mutate() { if (Constants.PROBABILITY_MUTATE_LINK > ThreadSafeRandom.Random()) { MutateLink(); } if (Constants.PROBABILITY_MUTATE_NODE > ThreadSafeRandom.Random()) { MutateNode(); } if (Constants.PROBABILITY_MUTATE_WEIGHT_RANDOM > ThreadSafeRandom.Random()) { MutateWeightRandom(); } if (Constants.PROBABILITY_MUTATE_WEIGHT_SHIFT > ThreadSafeRandom.Random()) { MutateWeightShift(); } if (Constants.PROBABILITY_MUTATE_TOGGLE_LINK > ThreadSafeRandom.Random()) { MutateToggleLink(); } if (Constants.PROBABILITY_MUTATE_ACTIVATION_RANDOM > ThreadSafeRandom.Random()) { MutateActivationRandom(); } }