SInnovation(SNeuronGene neuron, int innovationID, int neuronID) { ID = innovationID; NeuronID = neuronID; Type = InnovationType.NewNeuron; SplitX = neuron.SplitX; SplitY = neuron.SplitY; neuronType = neuron.Type; NeuronIn = -1; NeuronOut = -1; }
CreateNeuronByID(int id) { SNeuronGene clone = new SNeuronGene(NeuronType.Hidden, 0, 0, 0); for (int i = 0; i < m_vecInnovations.Count; i++) { SInnovation innovation = m_vecInnovations[i]; if (innovation.NeuronID == id) { clone.Type = innovation.neuronType; clone.ID = innovation.NeuronID; clone.SplitY = innovation.SplitY; clone.SplitX = innovation.SplitX; return(clone); } } return(clone); }
CInnovation(List <SLinkGene> startGenes, List <SNeuronGene> startNeurons) { m_vecInnovations = new List <SInnovation> (); for (int i = 0; i < startNeurons.Count; i++) { SNeuronGene neuron = startNeurons[i]; m_vecInnovations.Add(new SInnovation(neuron, m_NextInnovationID++, m_NextNeuronID++)); } for (int i = 0; i < startGenes.Count; i++) { SLinkGene gene = startGenes[i]; m_vecInnovations.Add(new SInnovation(gene.FromNeuron, gene.ToNeuron, InnovationType.NewLink, m_NextInnovationID++)); } }