public void Mutate_RemoveConnections() { foreach (var neuronGene in InputNeuronGenes.Concat(HiddenNeuronGenes)) { if (neuronGene.Connections.Count != 0 && ConnectionRemoveChance.Value > Pseudo.Random.NextDouble()) { neuronGene.Connections.RemoveAt(Pseudo.Random.Next(neuronGene.Connections.Count)); } } }
public void Mutate_AddConnections() { int count = 0; bool isInputNeuron = true; foreach (var neuronGene in InputNeuronGenes.Concat(HiddenNeuronGenes)) { if (count == Inputs.Count) { isInputNeuron = false; } if (ConnectionAddChance.Value > Pseudo.Random.NextDouble()) { neuronGene.Connections.Add(GetRandomConnection(neuronGene, isInputNeuron)); } } }