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)); }
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)); }
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)); }
/// <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; }