public virtual double approxLearnSamples(KnowlegeBaseSARules Solution) //attention only for multicore processor optimized { Requires(Solution != null); double sum = LearnSamplesSet.DataRows.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism).Select(x => Math.Pow(x.DoubleOutput - approx_base(x.InputAttributeValue, Solution), 2)).Sum(); return((double)Math.Sqrt(sum) / (double)LearnSamplesSet.CountSamples); }
public virtual double approxTestSamples(KnowlegeBaseSARules forTest) { Requires(forTest != null); double sum = TestSamplesSet.DataRows.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism).Select(x => Math.Pow(x.DoubleOutput - approx_base(x.InputAttributeValue, forTest), 2)).Sum(); return((double)Math.Sqrt(sum) / (double)TestSamplesSet.CountSamples); }
public virtual double approx_base(double[] object_c, KnowlegeBaseSARules Solution) { Requires(object_c != null); Requires(Solution != null); double sum = 0; double sum2 = 0; foreach (var rule in Solution.RulesDatabase) { double mul = rule.ListTermsInRule.Where(x => AcceptedFeatures[x.NumVar]).Select(x => x.LevelOfMembership(object_c)).Aggregate(1.0, (g, h) => g * h); sum2 += mul; sum += mul * rule.IndependentConstantConsequent; } if (sum2 != 0) { return(sum / (double)sum2); } return(double.MaxValue); }
public KnowlegeBaseSARules(KnowlegeBaseSARules source, List <bool> used_rules = null) { for (int i = 0; i < source.TermsSet.Count; i++) { Term temp_term = new Term(source.TermsSet[i]); TermsSet.Add(temp_term); } for (int j = 0; j < source.RulesDatabase.Count; j++) { if ((used_rules == null) || (used_rules[j])) { int[] order = new int[source.RulesDatabase[j].ListTermsInRule.Count]; for (int k = 0; k < source.RulesDatabase[j].ListTermsInRule.Count; k++) { Term temp_term = source.RulesDatabase[j].ListTermsInRule[k]; order[k] = source.TermsSet.FindIndex(x => x == temp_term); } double temp_DoubleOutputs = source.RulesDatabase[j].IndependentConstantConsequent; SARule temp_rule = new SARule(TermsSet, order, temp_DoubleOutputs); RulesDatabase.Add(temp_rule); } } }
public override double ErrorLearnSamples(KnowlegeBaseRules Source) { KnowlegeBaseSARules temp = Source as KnowlegeBaseSARules; return(approxLearnSamples(temp)); }