private void CalculateGradient() { var gradientP = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientQ = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientR = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientA1 = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientA2 = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientB1 = HelperFunctions.ArrayInitializer(NumberOfRules, false); var gradientB2 = HelperFunctions.ArrayInitializer(NumberOfRules, false); foreach (var sample in TrainingData) { var f = CalculateF(sample.X, sample.Y, out var w, out var z); for (int i = 0; i < NumberOfRules; i++) { gradientP[i] += GradientP(i, sample, f, w); gradientQ[i] += GradientQ(i, sample, f, w); gradientR[i] += GradientR(i, sample, f, w); gradientA1[i] += GradientA1(sample, i, f, w, z); gradientA2[i] += GradientA2(sample, i, f, w, z); gradientB1[i] += GradientB1(sample, i, f, w, z); gradientB2[i] += GradientB2(sample, i, f, w, z); } } for (int i = 0; i < NumberOfRules; i++) { Update(i, gradientP[i], gradientQ[i], gradientR[i], gradientA1[i], gradientA2[i], gradientB1[i], gradientB2[i]); } }
private void InitArrays() { A1 = HelperFunctions.ArrayInitializer(NumberOfRules); A2 = HelperFunctions.ArrayInitializer(NumberOfRules); B1 = HelperFunctions.ArrayInitializer(NumberOfRules); B2 = HelperFunctions.ArrayInitializer(NumberOfRules); P = HelperFunctions.ArrayInitializer(NumberOfRules); Q = HelperFunctions.ArrayInitializer(NumberOfRules); R = HelperFunctions.ArrayInitializer(NumberOfRules); }