/// <summary>
        /// Initializes a new instance of the <see cref="BackpropagationConnection"/> class.
        /// </summary>
        /// <param name="initialWeight">The connection's initial weight.</param>
        /// <param name="sourceNode">The source node.</param>
        /// <param name="targetNode">The target node.</param>
        public BackpropagationConnection(double initialWeight, ISupervisedLearnerNode sourceNode, ISupervisedLearnerNode targetNode)
            : base(initialWeight, sourceNode, targetNode)
        {
            // Initialize the class name that will appear in log files.
            this.name = sourceNode.Name + "->" + targetNode.Name;
            const string MethodName = "ctor";
            Logger.TraceIn(this.name, MethodName);

            // Ensure that the end-point nodes have a reference to this connection object.
            sourceNode.AddOutboundConnection(this);
            targetNode.AddInboundConnection(this);

            Logger.TraceOut(this.name, MethodName);
        }
        /// <summary>
        /// Adds a new output node to the network.
        /// </summary>
        /// <param name="node">The output node.</param>
        public void AddOutputNode(ISupervisedLearnerNode node)
        {
            const string MethodName = "AddOutputNode";
            Logger.TraceIn(this.name, MethodName);

            // Add the node to this class and the base class.
            if (!this.outputNodes.Contains(node))
            {
                this.outputNodes.Add(node);
                base.AddOutputNode(node);
            }

            Logger.TraceOut(this.name, MethodName);
        }