public void Calculate_SameResultTwice()
        {
            var net = new Core.Network(new int[] { 1, 5, 1 });

            var input = new double[] { 1 };

            var result = net.Calculate(input);
            var result2 = net.Calculate(input);

            Assert.AreEqual<double>(result.First(), result2.First());
        }
        public void Train_ChangesWeight()
        {
            var net = new Core.Network(new int[] { 1, 1, 1 });

            var input = new double[] { 1 };

            var result = net.Calculate(input).ToArray();

            var increased = result.Select(r => r + 1).ToArray();
            net.Train(result, increased);

            var result2 = net.Calculate(input).ToList();

            Assert.AreNotEqual<double>(result.First(), result2.First());
        }
        public void Train_FindApproximateValue()
        {
            var net = new Core.Network(new int[] { 1, 1 });

            var input = new double[] { 1 };

            double expected = 0.72;
            double tolerance = 0.01;
            double delta = 0;
            double watchdog = 1000;
            do
            {
                var result = net.Calculate(input);
                net.Train(result, new double[] { expected });
                delta = Math.Abs(result[0] - expected);

                if (watchdog-- <= 0)
                    Assert.Fail();

            } while (delta >= tolerance);
        }
        public void Train_SimpleProblem()
        {
            var net = new Core.Network(new int[] { 3, 2, 2 });

            double tolerance = 0.001;
            double delta = 0;
            double watchdog = 5000;
            Random rand = new Random();
            do
            {
                double result1 = (double)rand.Next(0, 2);
                double result2 = (double)rand.Next(0, 2);

                double[] input = new double[] { result2, rand.NextDouble(), result1 };
                var data = net.Calculate(input);

                net.Train(input, new double[] { result1, result2 });

                delta = Math.Abs(data[0] - result1) + Math.Abs(data[1] - result2);

                if (watchdog-- <= 0)
                    Assert.Fail();
            } while (delta >= tolerance);
        }
 public void SetUp()
 {
     this.network = new Core.Network(6, 9, 3);
 }