Exemplo n.º 1
0
        public KnowlegeBaseTSARules(KnowlegeBaseTSARules 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;
                    double[] temp_approx_RegressionConstantConsequent = source.RulesDatabase[j].RegressionConstantConsequent.Clone() as double [];
                    TSARule  temp_rule = new TSARule(TermsSet, order, temp_DoubleOutputs, temp_approx_RegressionConstantConsequent);
                    RulesDatabase.Add(temp_rule);
                }
            }
        }
Exemplo n.º 2
0
        public void constuct__and_add_the_Rule(List <Term> terms, SAFuzzySystem FS)
        {
            SARule Result;

            int[] order_of_terms = new int[terms.Count()];
            for (int i = 0; i < terms.Count(); i++)
            {
                order_of_terms[i] = TermsSet.Count;
                TermsSet.Add(terms[i]);
            }
            double kons_Value = KNNConsequent.NearestApprox(FS, TermsSet);

            Result = new SARule(TermsSet, order_of_terms, kons_Value);
            RulesDatabase.Add(Result);
        }
Exemplo n.º 3
0
        public void ConstructNewRule(List <Term> terms, PCFuzzySystem FS)
        {
            PCRule Result;

            int[] order_of_terms = new int[terms.Count()];
            for (int i = 0; i < terms.Count(); i++)
            {
                order_of_terms[i] = TermsSet.Count;
                TermsSet.Add(terms[i]);
            }
            string kons_Value = KNNClassName.NearestClass(FS, TermsSet);

            Result = new PCRule(TermsSet, order_of_terms, kons_Value, 1.0);
            RulesDatabase.Add(Result);
        }
Exemplo n.º 4
0
        public void ConstructNewRule(List <Term> terms, TSAFuzzySystem FS)
        {
            TSARule Result;

            int[] order_of_terms = new int[terms.Count()];
            for (int i = 0; i < terms.Count(); i++)
            {
                order_of_terms[i] = TermsSet.Count;
                TermsSet.Add(terms[i]);
            }
            double [] temp_regressionCoefficent;
            double    kons_Value = LSMWeghtReqursiveSimple.EvaluteConsiquent(FS, TermsSet, out temp_regressionCoefficent);

            Result = new TSARule(TermsSet, order_of_terms, kons_Value, temp_regressionCoefficent);
            RulesDatabase.Add(Result);
        }
Exemplo n.º 5
0
 public override void TrimTerms()
 {
     {
         bool need_to_cut_this_term;
         for (int j = TermsSet.Count - 1; j >= 0; j--)
         {
             need_to_cut_this_term = true;
             for (int i = 0; i < RulesDatabase.Count; i++)
             {
                 if (RulesDatabase[i].ListTermsInRule.Contains(TermsSet[j]))
                 {
                     need_to_cut_this_term = false; break;
                 }
             }
             if (need_to_cut_this_term)
             {
                 TermsSet.RemoveAt(j);
             }
         }
     }
 }
Exemplo n.º 6
0
 public KnowlegeBasePCRules(KnowlegeBasePCRules 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);
             }
             string temp_class_label = source.RulesDatabase[j].LabelOfClass;
             double temp_cf          = source.RulesDatabase[j].CF;
             PCRule temp_rule        = new PCRule(TermsSet, order, temp_class_label, temp_cf);
             RulesDatabase.Add(temp_rule);
         }
     }
 }