Ejemplo n.º 1
0
        private static void MutateSynapseFromLayer(Ann ann)
        {
            if (ann.synapses.Count == 0)
            {
                return;
            }

            Synapse synapse = ann.synapses[Util.rand.Next(ann.synapses.Count)];
            int     layer   = ann.GetAllLayers()[Util.rand.Next(ann.GetAllLayers().Length)];

            if (synapse.ToLayer != layer && !HelperDoesSynapseExist(ann, layer, synapse.FromNeuron, synapse.ToLayer, synapse.ToNeuron))
            {
                synapse.FromLayer = layer;
            }
        }
Ejemplo n.º 2
0
        private static void MutateSynapseToNeuron(Ann ann)
        {
            if (ann.synapses.Count == 0)
            {
                return;
            }

            Synapse synapse = ann.synapses[Util.rand.Next(ann.synapses.Count)];
            int     toLayer = synapse.ToLayer;

            Neuron[] neuronsInLayer    = ann.GetNeuronsForLayer(toLayer);
            Neuron   neuron            = neuronsInLayer.Length != 0 ? neuronsInLayer[Util.rand.Next(neuronsInLayer.Length)] : null;
            int      newNeuronPosition = neuron != null ? neuron.NeuronPosition : 0;

            if (!HelperDoesSynapseExist(ann, synapse.FromLayer, synapse.FromNeuron, synapse.ToLayer, newNeuronPosition))
            {
                synapse.ToNeuron = newNeuronPosition;
            }
        }