Esempio n. 1
0
 public WeightSynapse(INeuron presynapticneuron, double weight)
 {
     this.id = Guid.NewGuid();
     this.presynapticneuron = presynapticneuron;
     this.weight = weight;
     type = SynapseType.WeightSynapse;
 }
Esempio n. 2
0
 /// <summary>
 /// Add a layer to the neural network. If there are no layers added this
 /// layer will become the input layer. This function automatically updates
 /// both the input and output layer references.
 /// </summary>
 /// <param name="layer">The layer to be added to the network.</param>
 /// <param name="type">What sort of synapse should connect this layer to the last.</param>
 public void AddLayer(ILayer layer, SynapseType type)
 {
     // is this the first layer? If so, mark as the input layer.
     if (this.layerTags.Count == 0)
     {
         this.TagLayer(BasicNetwork.TAG_INPUT, layer);
         this.TagLayer(BasicNetwork.TAG_OUTPUT, layer);
     }
     else
     {
         // add the layer to any previous layers
         ILayer outputLayer = this.GetLayer(BasicNetwork.TAG_OUTPUT);
         outputLayer.AddNext(layer, type);
         this.TagLayer(BasicNetwork.TAG_OUTPUT, layer);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Add a "next" layer.
        /// </summary>
        /// <param name="next">The next layer to add.</param>
        /// <param name="type">The synapse type to use for this layer.</param>
        public void AddNext(ILayer next, SynapseType type)
        {
            ISynapse synapse = null;

            switch (type)
            {
            case SynapseType.OneToOne:
                synapse = new OneToOneSynapse(this, next);
                break;

            case SynapseType.Weighted:
                synapse = new WeightedSynapse(this, next);
                break;

            case SynapseType.Weightless:
                synapse = new WeightlessSynapse(this, next);
                break;

            case SynapseType.Direct:
                synapse = new DirectSynapse(this, next);
                break;

            case SynapseType.NEAT:
                synapse = new NEATSynapse(this, next);
                break;

            default:
                throw new NeuralNetworkError("Unknown synapse type");
            }

            if (synapse == null)
            {
                String str = "Unknown synapse type.";
#if logging
                if (BasicLayer.logger.IsErrorEnabled)
                {
                    BasicLayer.logger.Error(str);
                }
#endif
                throw new NeuralNetworkError(str);
            }
            else
            {
                this.next.Add(synapse);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Add a layer to the neural network. If there are no layers added this
        /// layer will become the input layer. This function automatically updates
        /// both the input and output layer references.
        /// </summary>
        /// <param name="layer">The layer to be added to the network.</param>
        /// <param name="type">What sort of synapse should connect this layer to the last.</param>
        public void AddLayer(ILayer layer, SynapseType type)
        {
            // is this the first layer? If so, mark as the input layer.
            if (this.layerTags.Count == 0)
            {
                this.TagLayer(BasicNetwork.TAG_INPUT, layer);
                this.TagLayer(BasicNetwork.TAG_OUTPUT, layer);
            }
            else
            {
                // add the layer to any previous layers
                ILayer outputLayer = this.GetLayer(BasicNetwork.TAG_OUTPUT);
                outputLayer.AddNext(layer, type);
                this.TagLayer(BasicNetwork.TAG_OUTPUT, layer);
            }

        }
Esempio n. 5
0
        /// <summary>
        /// Add a "next" layer.
        /// </summary>
        /// <param name="next">The next layer to add.</param>
        /// <param name="type">The synapse type to use for this layer.</param>
        public void AddNext(ILayer next, SynapseType type)
        {
            ISynapse synapse = null;

            switch (type)
            {
                case SynapseType.OneToOne:
                    synapse = new OneToOneSynapse(this, next);
                    break;
                case SynapseType.Weighted:
                    synapse = new WeightedSynapse(this, next);
                    break;
                case SynapseType.Weightless:
                    synapse = new WeightlessSynapse(this, next);
                    break;
                case SynapseType.Direct:
                    synapse = new DirectSynapse(this, next);
                    break;
                case SynapseType.NEAT:
                    synapse = new NEATSynapse(this, next);
                    break;
                default:
                    throw new NeuralNetworkError("Unknown synapse type");
            }

            if (synapse == null)
            {
                String str = "Unknown synapse type.";
#if logging
                if (BasicLayer.logger.IsErrorEnabled)
                {
                    BasicLayer.logger.Error(str);
                }
#endif
                throw new NeuralNetworkError(str);
            }
            else
            {
                this.next.Add(synapse);
            }
        }