Beispiel #1
0
        /// <summary>
        ///     Create a neural network for XOR.
        /// </summary>
        public static void ProcessXor()
        {
            Console.WriteLine("Boolean XOR");
            var inputs = new List <InputNeuron>();

            inputs.Add(new InputNeuron());
            inputs.Add(new InputNeuron());

            var hidden1 = new List <RegularNeuron>();

            hidden1.Add(new RegularNeuron(-0.5));
            hidden1.Add(new RegularNeuron(-1.5));
            hidden1[0].Parents.Add(new Connection(1, inputs[0]));
            hidden1[0].Parents.Add(new Connection(1, inputs[1]));
            hidden1[1].Parents.Add(new Connection(1, inputs[0]));
            hidden1[1].Parents.Add(new Connection(1, inputs[1]));

            var hidden2 = new RegularNeuron(0.5);

            hidden2.Parents.Add(new Connection(-1, hidden1[1]));
            var output = new RegularNeuron(-1.5);

            output.Parents.Add(new Connection(1, hidden1[0]));
            output.Parents.Add(new Connection(1, hidden2));
            TruthTable(inputs, output);
        }
Beispiel #2
0
        /// <summary>
        /// Create a neural network for NOT.
        /// </summary>
        public static void ProcessNot()
        {
            Console.WriteLine("Boolean NOT");
            List<InputNeuron> inputs = new List<InputNeuron>();
            inputs.Add(new InputNeuron());

            RegularNeuron output = new RegularNeuron(0.5);
            output.Parents.Add(new Connection(-1, inputs[0]));
            TruthTable(inputs, output);
        }
Beispiel #3
0
        /// <summary>
        ///     Create a neural network for NOT.
        /// </summary>
        public static void ProcessNot()
        {
            Console.WriteLine("Boolean NOT");
            var inputs = new List <InputNeuron>();

            inputs.Add(new InputNeuron());

            var output = new RegularNeuron(0.5);

            output.Parents.Add(new Connection(-1, inputs[0]));
            TruthTable(inputs, output);
        }
Beispiel #4
0
        /// <summary>
        /// Create a neural network for OR.
        /// </summary>
        public static void ProcessOr()
        {
            Console.WriteLine("Boolean OR");
            List <InputNeuron> inputs = new List <InputNeuron>();

            inputs.Add(new InputNeuron());
            inputs.Add(new InputNeuron());

            RegularNeuron output = new RegularNeuron(-0.5);

            output.Parents.Add(new Connection(1, inputs[0]));
            output.Parents.Add(new Connection(1, inputs[1]));
            TruthTable(inputs, output);
        }
Beispiel #5
0
        /// <summary>
        ///     Display a truth table and query the neural network.
        /// </summary>
        /// <param name="inputs">The inputs.</param>
        /// <param name="output">The output.</param>
        public static void TruthTable(IList <InputNeuron> inputs, RegularNeuron output)
        {
            var v    = new double[inputs.Count];
            var done = false;

            while (!done)
            {
                for (var i = 0; i < inputs.Count; i++)
                {
                    inputs[i].Value = v[i];
                }

                var o = output.Compute();
                Console.WriteLine(v + " : " + o);

                // Roll forward to next row

                var i2 = 0;
                while (i2 < v.Length)
                {
                    v[i2] += 1;
                    if (v[i2] > 1)
                    {
                        v[i2] = 0;
                        i2   += 1;
                    }
                    else
                    {
                        break;
                    }
                }

                if (i2 == v.Length)
                {
                    done = true;
                }
            }
        }
Beispiel #6
0
        /// <summary>
        ///     Display a truth table and query the neural network.
        /// </summary>
        /// <param name="inputs">The inputs.</param>
        /// <param name="output">The output.</param>
        public static void TruthTable(IList<InputNeuron> inputs, RegularNeuron output)
        {
            var v = new double[inputs.Count];
            var done = false;

            while (!done)
            {
                for (var i = 0; i < inputs.Count; i++)
                {
                    inputs[i].Value = v[i];
                }

                var o = output.Compute();
                Console.WriteLine(v + " : " + o);

                // Roll forward to next row

                var i2 = 0;
                while (i2 < v.Length)
                {
                    v[i2] += 1;
                    if (v[i2] > 1)
                    {
                        v[i2] = 0;
                        i2 += 1;
                    }
                    else
                    {
                        break;
                    }
                }

                if (i2 == v.Length)
                {
                    done = true;
                }
            }
        }
Beispiel #7
0
        /// <summary>
        ///     Create a neural network for AND.
        /// </summary>
        public static void ProcessAnd()
        {
            Console.WriteLine("Boolean AND");
            var inputs = new List<InputNeuron>();
            inputs.Add(new InputNeuron());
            inputs.Add(new InputNeuron());


            var output = new RegularNeuron(-1.5);
            output.Parents.Add(new Connection(1, inputs[0]));
            output.Parents.Add(new Connection(1, inputs[1]));
            TruthTable(inputs, output);
        }
Beispiel #8
0
        /// <summary>
        ///     Create a neural network for XOR.
        /// </summary>
        public static void ProcessXor()
        {
            Console.WriteLine("Boolean XOR");
            var inputs = new List<InputNeuron>();
            inputs.Add(new InputNeuron());
            inputs.Add(new InputNeuron());

            var hidden1 = new List<RegularNeuron>();
            hidden1.Add(new RegularNeuron(-0.5));
            hidden1.Add(new RegularNeuron(-1.5));
            hidden1[0].Parents.Add(new Connection(1, inputs[0]));
            hidden1[0].Parents.Add(new Connection(1, inputs[1]));
            hidden1[1].Parents.Add(new Connection(1, inputs[0]));
            hidden1[1].Parents.Add(new Connection(1, inputs[1]));

            var hidden2 = new RegularNeuron(0.5);
            hidden2.Parents.Add(new Connection(-1, hidden1[1]));
            var output = new RegularNeuron(-1.5);
            output.Parents.Add(new Connection(1, hidden1[0]));
            output.Parents.Add(new Connection(1, hidden2));
            TruthTable(inputs, output);
        }