Exemple #1
0
        public void CorrectlyDivideByFuzzyNumber()
        {
            var values = new[]
                {
                    new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)},
                    new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)},
                    new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(4.0)},
                    new[] {new RealNumber(0.0), new RealNumber(1.0), new RealNumber(0.0)},
                };
            var matrix = new Matrix(values);
            var denominator = new RealNumber(-2.0);
            var expected = new[]
                {
                    new[] {new RealNumber(-0.5), new RealNumber(-1.0), new RealNumber(-1.5)},
                    new[] {new RealNumber(-0.5), new RealNumber(-1.0), new RealNumber(-1.5)},
                    new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(-2.0)},
                    new[] {new RealNumber(0.0), new RealNumber(-0.5), new RealNumber(0.0)},
                };

            var result = matrix.Div(denominator);

            for (int i = 0; i < matrix.Rows; i++)
                for (int j = 0; j < matrix.Columns; j++)
                    Assert.That(result[i, j].GetMod().X, Is.EqualTo(expected[i][j].GetMod().X));
        }
Exemple #2
0
        public void CorrectlyMultiplyByFuzzyNumber()
        {
            var values = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0) };
            IVector vector = new Vector(values);
            var multiplier = new RealNumber(3.0);

            vector = vector.Mul(multiplier);

            Assert.That(vector.Length, Is.EqualTo(3));
            Assert.That(vector[0].GetMod().X, Is.EqualTo(new RealNumber(3.0).GetMod().X));
            Assert.That(vector[1].GetMod().X, Is.EqualTo(new RealNumber(6.0).GetMod().X));
            Assert.That(vector[2].GetMod().X, Is.EqualTo(new RealNumber(-3.0).GetMod().X));
        }
Exemple #3
0
        public void CorrectlyMultiplyByFuzzyNumber()
        {
            var values = new[]
                {
                    new[] {new RealNumber(2.0), new RealNumber(2.0), new RealNumber(4.0)},
                    new[] {new RealNumber(4.0), new RealNumber(6.0), new RealNumber(6.0)},
                    new[] {new RealNumber(8.0), new RealNumber(8.0), new RealNumber(10.0)},
                    new[] {new RealNumber(10.0), new RealNumber(12.0), new RealNumber(12.0)},
                };
            var matrix = new Matrix(values);
            var multiplier = new RealNumber(-0.5);
            var results = new[]
                {
                    new[] {new RealNumber(-1.0), new RealNumber(-1.0), new RealNumber(-2.0)},
                    new[] {new RealNumber(-2.0), new RealNumber(-3.0), new RealNumber(-3.0)},
                    new[] {new RealNumber(-4.0), new RealNumber(-4.0), new RealNumber(-5.0)},
                    new[] {new RealNumber(-5.0), new RealNumber(-6.0), new RealNumber(-6.0)},
                };

            var result = matrix.Mul(multiplier);

            for (int i = 0; i < matrix.Rows; i++)
                for (int j = 0; j < matrix.Columns; j++)
                    Assert.That(result[i, j].GetMod().X, Is.EqualTo(results[i][j].GetMod().X));
        }
Exemple #4
0
        /// <summary>
        /// This function is used to generate appropriate weights for net
        /// </summary>
        /// <returns></returns>
        private static IFuzzyNumber GenerateNumbers()
        {
            IFuzzyNumber result;

            switch (_layer)
            {
                    //hidden1
                case 0:
                    //first weight in first neuron
                    result = new RealNumber(1.0);
                    break;
                case 1:
                    //second weight in first neuron
                    result = new RealNumber(-1.5);
                    break;
                case 2:
                    //first weight in second neuron
                    result = new RealNumber(2.0);
                    break;
                case 3:
                    //second weight in second neuron
                    result = new RealNumber(1.0);
                    break;

                case 4:
                    result = new RealNumber(-1.0);
                    break;
                case 5:
                    result = new RealNumber(2.0);
                    break;
                case 6:
                    result = new RealNumber(-1.0);
                    break;
                case 7:
                    result = new RealNumber(-1.0);
                    break;

                    //output layer
                case 8:
                    //first weight in first neuron
                    result = new RealNumber(2.0);
                    break;
                case 9:
                    //first weight in second neuron
                    result = new RealNumber(4.0);
                    break;
                case 10:
                    //second weight in first neuron
                    result = new RealNumber(2.0);
                    break;
                case 11:
                    //second weight in second neuron
                    result = new RealNumber(2.0);
                    break;

                default:
                    result = new RealNumber(0.0);
                    break;
            }
            _layer++;

            return result;
        }