Пример #1
0
        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);
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        /// <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;
        }