예제 #1
0
        protected void ConnectInnovNbNetwork()
        {
            if (Neurons == null)
            {
                Neurons = new Dictionary <int, Neuron>();
            }
            else
            {
                Neurons.Clear();
            }

            foreach (var neuron in NeuronLst)
            {
                if (!Neurons.ContainsKey(neuron.innovNb))
                {
                    Neurons.Add(neuron.innovNb, neuron);
                }
                else if (Neurons[neuron.innovNb] != neuron)
                {
                    throw new Exception("AAAAaAAAaaaaa: " + neuron.innovNb);
                }
            }
        }
예제 #2
0
        public Synapse AddConnection(
            InnovationNumber startNeuron,
            InnovationNumber endNeuron,
            WeightInitializer weightInitializer = null)
        {
            if (!Neurons.ContainsKey(startNeuron) || !Neurons.ContainsKey(endNeuron))
            {
                throw new Exception("The given neurons are not yer registered.");
            }

            var innov  = synapseInnovNbTracker.GetHystoricalMark(startNeuron, endNeuron);
            var result = new Synapse(innov, 0, startNeuron, endNeuron)
            {
                weightConstraints = this.WeightConstraints
            };

            if (weightInitializer == null)
            {
                weightInitializer = defaultWeightInitializer;
            }
            Synapses.Add(result, weightInitializer);

            return(result);
        }