private void Link( double weight, NEATNeuron from, NEATNeuron to, bool recurrent) { NEATLink l = new NEATLink(weight, from, to, recurrent); from.OutputboundLinks.Add(l); to.InboundLinks.Add(l); }
/// <summary> /// Convert the genes to an actual network. /// </summary> /// public override void Decode() { var pop = (NEATPopulation)Population; IList <NEATNeuron> neurons = new List <NEATNeuron>(); foreach (IGene gene in Neurons.Genes) { var neuronGene = (NEATNeuronGene)gene; var neuron = new NEATNeuron( neuronGene.NeuronType, neuronGene.Id, neuronGene.SplitY, neuronGene.SplitX, neuronGene.ActivationResponse); neurons.Add(neuron); } // now to create the links. foreach (IGene gene_0 in Links.Genes) { var linkGene = (NEATLinkGene)gene_0; if (linkGene.Enabled) { int element = GetElementPos(linkGene.FromNeuronID); NEATNeuron fromNeuron = neurons[element]; element = GetElementPos(linkGene.ToNeuronID); if (element == -1) { Console.Out.WriteLine("test"); } NEATNeuron toNeuron = neurons[element]; var link = new NEATLink(linkGene.Weight, fromNeuron, toNeuron, linkGene.Recurrent); fromNeuron.OutputboundLinks.Add(link); toNeuron.InboundLinks.Add(link); } } var network = new NEATNetwork(inputCount, outputCount, neurons, pop.NeatActivationFunction, pop.OutputActivationFunction, 0); network.Snapshot = pop.Snapshot; Organism = network; }
/// <summary> /// Convert the genes to an actual network. /// </summary> public override void Decode() { NEATPattern pattern = new NEATPattern(); IList <NEATNeuron> neurons = pattern.Neurons; foreach (IGene gene in Neurons.Genes) { NEATNeuronGene neuronGene = (NEATNeuronGene)gene; NEATNeuron neuron = new NEATNeuron( neuronGene.NeuronType, neuronGene.Id, neuronGene .SplitY, neuronGene.SplitX, neuronGene .ActivationResponse); neurons.Add(neuron); } // now to create the links. foreach (IGene gene in Links.Genes) { NEATLinkGene linkGene = (NEATLinkGene)gene; if (linkGene.Enabled) { int element = GetElementPos(linkGene.FromNeuronID); NEATNeuron fromNeuron = neurons[element]; element = GetElementPos(linkGene.ToNeuronID); NEATNeuron toNeuron = neurons[element]; NEATLink link = new NEATLink(linkGene.Weight, fromNeuron, toNeuron, linkGene.IsRecurrent); fromNeuron.OutputboundLinks.Add(link); toNeuron.InboundLinks.Add(link); } } pattern.NEATActivation = (((NEATTraining)GA).NeatActivationFunction); pattern.ActivationFunction = (((NEATTraining)GA).OutputActivationFunction); pattern.InputNeurons = (inputCount); pattern.OutputNeurons = (outputCount); pattern.Snapshot = ((NEATTraining)GA).Snapshot; Organism = pattern.Generate(); }
/// <summary> /// Convert the genes to an actual network. /// </summary> /// public override void Decode() { var pop = (NEATPopulation) Population; IList<NEATNeuron> neurons = new List<NEATNeuron>(); foreach (IGene gene in Neurons.Genes) { var neuronGene = (NEATNeuronGene) gene; var neuron = new NEATNeuron( neuronGene.NeuronType, neuronGene.Id, neuronGene.SplitY, neuronGene.SplitX, neuronGene.ActivationResponse); neurons.Add(neuron); } // now to create the links. foreach (IGene gene_0 in Links.Genes) { var linkGene = (NEATLinkGene) gene_0; if (linkGene.Enabled) { int element = GetElementPos(linkGene.FromNeuronID); NEATNeuron fromNeuron = neurons[element]; element = GetElementPos(linkGene.ToNeuronID); if (element == -1) { Console.Out.WriteLine("test"); } NEATNeuron toNeuron = neurons[element]; var link = new NEATLink(linkGene.Weight, fromNeuron, toNeuron, linkGene.Recurrent); fromNeuron.OutputboundLinks.Add(link); toNeuron.InboundLinks.Add(link); } } var network = new NEATNetwork(inputCount, outputCount, neurons, pop.NeatActivationFunction, pop.OutputActivationFunction, 0); network.Snapshot = pop.Snapshot; Organism = network; }