Exemplo n.º 1
0
        public void AddNeuron()
        {
            if (!AllSynapses.Any())
            {
                AddSynapse();
                return;
            }
            //Debug.Log("Poczatek add neuron");
            int     tmp    = RandomGenerator.Next(AllSynapses.Count);
            Synapse oldSyn = AllSynapses.ToList()[tmp].Value;

            AllSynapses.Remove(oldSyn.InnovationNo);
            oldSyn.InputNeuron.OutputSynapses.Remove(oldSyn);
            oldSyn.OutputNeuron.InputSynapses.Remove(oldSyn);
            Neuron neuron = new Neuron(NeuronInnovationNo);


            Synapse newSyn1 = new Synapse(oldSyn.InputNeuron, neuron, SynapseInnovationNo);

            newSyn1.Weight = 1;
            Synapse newSyn2 = new Synapse(neuron, oldSyn.OutputNeuron, SynapseInnovationNo);

            newSyn2.Weight = oldSyn.Weight;

            HiddenLayers.Add(neuron.InnovationNo, neuron);
            AllSynapses.Add(newSyn1.InnovationNo, newSyn1);
            AllSynapses.Add(newSyn2.InnovationNo, newSyn2);
        }
Exemplo n.º 2
0
        private void DelSynapse()
        {
            if (!AllSynapses.Any())
            {
                return;
            }
            int     tmp    = RandomGenerator.Next(AllSynapses.Count);
            Synapse oldSyn = AllSynapses.Values.ToList()[tmp];

            oldSyn.InputNeuron.OutputSynapses.Remove(oldSyn);
            oldSyn.OutputNeuron.InputSynapses.Remove(oldSyn);
            AllSynapses.Remove(oldSyn.InnovationNo);
        }
Exemplo n.º 3
0
        private void DelNeuron()
        {
            if (!HiddenLayers.Any())
            {
                return;
            }
            int    tmp    = RandomGenerator.Next(HiddenLayers.Count);
            Neuron oldNeu = HiddenLayers.Values.ToList()[tmp];

            foreach (var synapse in oldNeu.InputSynapses)
            {
                synapse.InputNeuron.OutputSynapses.Remove(synapse);
                AllSynapses.Remove(synapse.InnovationNo);
            }
            foreach (var synapse in oldNeu.OutputSynapses)
            {
                synapse.OutputNeuron.InputSynapses.Remove(synapse);
                AllSynapses.Remove(synapse.InnovationNo);
            }
            HiddenLayers.Remove(oldNeu.InnovationNo);
        }