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