public override PCFuzzySystem Generate(PCFuzzySystem Classifier, IGeneratorConf config)
        {
            PCFuzzySystem result = Classifier;

            if (result.RulesDatabaseSet.Count == 0)
            {
                AbstractNotSafeGenerator tempGen = new GeneratorRulesEveryoneWithEveryone();
                result = tempGen.Generate(result, config);
                GC.Collect();
            }

            count_shrink = ((TermShrinkAndRotateConf)config).TSARCShrinkVars;
            size_shrink  = ((TermShrinkAndRotateConf)config).TSARCShrinkTerm;
            type_func    = ((TermShrinkAndRotateConf)config).IEWEFuncType;
            count_slices = ((TermShrinkAndRotateConf)config).IEWECountSlice;



            List <int> Varians_of_run_system = new List <int>();

            for (int i = 0; i < Classifier.CountFeatures; i++)
            {
                int count_terms_for_var = Classifier.RulesDatabaseSet[0].TermsSet.FindAll(x => x.NumVar == i).Count;
                if (i < count_shrink)
                {
                    Varians_of_run_system.Add(count_terms_for_var - size_shrink);
                }
                else
                {
                    Varians_of_run_system.Add(count_terms_for_var);
                }
            }

            Varians_of_run_system.Sort();
            TypeTermFuncEnum type_of_term = Classifier.RulesDatabaseSet[0].TermsSet[0].TermFuncType;

            Generate_all_variant_in_pool(Varians_of_run_system);

            for (int i = 0; i < Pull_of_systems.Count; i++)
            {
                Classifier.RulesDatabaseSet.Clear();

                GeneratorRulesEveryoneWithEveryone.InitRulesEveryoneWithEveryone(Classifier, type_of_term, Pull_of_systems[i].ToArray());
                Systems_ready_to_test.Add(Classifier.RulesDatabaseSet[0]);
                errors_of_systems.Add(result.ErrorLearnSamples(result.RulesDatabaseSet[0]));
            }

            int best_index = errors_of_systems.IndexOf(errors_of_systems.Min());

            result.RulesDatabaseSet.Clear();
            result.RulesDatabaseSet.Add(Systems_ready_to_test[best_index]);
            Console.WriteLine(Pull_of_systems.Count());



            GC.Collect();
//            result.UnlaidProtectionFix();
            result.RulesDatabaseSet[0].TermsSet.Trim();
            return(result);
        }
Exemplo n.º 2
0
        public override TSAFuzzySystem Generate(TSAFuzzySystem Approximate, IGeneratorConf config)
        {
            start_add_rules = Approximate.RulesDatabaseSet.Count;
            TSAFuzzySystem result = Approximate;

            if (result.RulesDatabaseSet.Count == 0)
            {
                AbstractNotSafeGenerator tempGen = new GeneratorRulesEveryoneWithEveryone();
                result = tempGen.Generate(result, config);

                GC.Collect();
            }



            Request_count_rules = ((RullesShrinkConf)config).RSCCountRules;
            max_count_rules     = ((RullesShrinkConf)config).RSCMaxRules;
            count_slices        = ((RullesShrinkConf)config).IEWECountSlice;
            min_count_rules     = ((RullesShrinkConf)config).RSCMinRules;
            type_term           = ((RullesShrinkConf)config).IEWEFuncType;

            int         count_of_swith_off    = ((RullesShrinkConf)config).RSCMaxRules - Request_count_rules;
            List <byte> Varians_of_run_system = new List <byte>();

            for (int i = 0; i < Approximate.RulesDatabaseSet[0].RulesDatabase.Count; i++)
            {
                Varians_of_run_system.Add(1);
            }
            for (int i = 0; i < count_of_swith_off; i++)
            {
                Varians_of_run_system[i] = 0;
            }
            Generate_all_variant_in_pool(Varians_of_run_system);
            for (int i = 0; i < Pull_of_systems.Count; i++)
            {
                KnowlegeBaseTSARules temp_rules = new  KnowlegeBaseTSARules(result.RulesDatabaseSet[0], Pull_of_systems[i]);
                temp_rules.TrimTerms();

                result.RulesDatabaseSet.Add(temp_rules);
                result.UnlaidProtectionFix(result.RulesDatabaseSet[start_add_rules + i]);
                errors_of_systems.Add(result.approxLearnSamples(result.RulesDatabaseSet [start_add_rules + i]));
            }

            int best_index            = errors_of_systems.IndexOf(errors_of_systems.Min());
            KnowlegeBaseTSARules best = result.RulesDatabaseSet[start_add_rules + best_index];

            result.RulesDatabaseSet.Clear();
            result.RulesDatabaseSet.Add(best);
            Console.WriteLine(Pull_of_systems.Count());



            GC.Collect();
//            result.UnlaidProtectionFix();
            result.RulesDatabaseSet[0].TermsSet.Trim();
            return(result);
        }
Exemplo n.º 3
0
 public void Set_count_add_generator(int count_used_Algorithm)
 {
     Rules_generator_conf = new IGeneratorConf[count_used_Algorithm];
     Rules_generator_type = new int[count_used_Algorithm];
     for (int i = 0; i < count_used_Algorithm; i++)
     {
         Rules_generator_type[i] = -2;
     }
 }
Exemplo n.º 4
0
        private universal_conf_form makeConfForm(IGeneratorConf SourceObject, string name)
        {
            universal_conf_form temp_conf_form = new universal_conf_form();

            temp_conf_form.Text = "Параметры генерации " + name;
            temp_conf_form.conf_algorithm_params_PG.SelectedObject = SourceObject;

            return(temp_conf_form);
        }
        public override SAFuzzySystem Generate(SAFuzzySystem Approximate, IGeneratorConf config)
        {
            SAFuzzySystem            result  = Approximate;
            InitEveryoneWithEveryone config1 = config as InitEveryoneWithEveryone;

            type_func        = config1.IEWEFuncType;
            count_slice_vars = config1.IEWECountSlice;
            InitRulesEveryoneWithEveryone(Approximate, type_func, count_slice_vars);



            return(result);
        }
Exemplo n.º 6
0
        public override TSAFuzzySystem Generate(TSAFuzzySystem Approximate, IGeneratorConf config)
        {
            type_alg            = ((kMeanRulesGeneratorConfig)config).KMRGTypeAlg;
            count_rules         = ((kMeanRulesGeneratorConfig)config).KMRGCountRules;
            type_func           = ((kMeanRulesGeneratorConfig)config).KMRGTypeFunc;
            nebulisation_factor = ((kMeanRulesGeneratorConfig)config).KMRGExponentialWeight;
            Max_iteration       = ((kMeanRulesGeneratorConfig)config).KMRGIteraton;
            need_precision      = ((kMeanRulesGeneratorConfig)config).KMRGAccuracy;


            Approxk_mean_base K_Agl = null;

            switch (type_alg)
            {
            case Type_k_mean_algorithm.GathGeva: K_Agl = new Approxk_mean_Gath_Geva(Approximate.LearnSamplesSet, Max_iteration, need_precision, count_rules, nebulisation_factor); break;

            case Type_k_mean_algorithm.GustafsonKessel: K_Agl = new Approxk_mean_Gustafson_kessel(Approximate.LearnSamplesSet, Max_iteration, need_precision, count_rules, nebulisation_factor); break;

            case Type_k_mean_algorithm.FCM: K_Agl = new Approxk_mean_base(Approximate.LearnSamplesSet, Max_iteration, need_precision, count_rules, nebulisation_factor); break;
            }
            K_Agl.Calc();

            KnowlegeBaseTSARules New_Rules = new KnowlegeBaseTSARules();

            for (int i = 0; i < count_rules; i++)
            {
                int []      order_terms = new int [Approximate.LearnSamplesSet.CountVars];
                List <Term> term_set    = new List <Term>();
                for (int j = 0; j < Approximate.LearnSamplesSet.CountVars; j++)
                {
                    Term temp_term = Term.MakeTerm(K_Agl.Centroid_cordinate_S[i][j], Math.Sqrt(Calc_distance_for_member_ship_function_for_Clust(i, j, K_Agl)) * 3, type_func, j);
                    term_set.Add(temp_term);
                }
                New_Rules.ConstructNewRule(term_set, Approximate);
            }

            TSAFuzzySystem Result = Approximate;

            if (Result.RulesDatabaseSet.Count > 0)
            {
                Result.RulesDatabaseSet[0] = New_Rules;
            }
            else
            {
                Result.RulesDatabaseSet.Add(New_Rules);
            }
            Result.UnlaidProtectionFix(Result.RulesDatabaseSet[0]);
            GC.Collect();
            Result.RulesDatabaseSet[0].TermsSet.Trim();
            return(Result);
        }
Exemplo n.º 7
0
        public IFuzzySystem Universal(IFuzzySystem FS, IGeneratorConf config)

        {
            ShrinkFeatures = ((SimpleShrinkFeatureConf)config).ShrinkFeature;
            string[] shouldShrink = ShrinkFeatures.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < shouldShrink.Length; i++)
            {
                int a;
                int.TryParse(shouldShrink[i], out a);

                FS.AcceptedFeatures[a - 1] = false;
            }
            return(FS);
        }
Exemplo n.º 8
0
        public override PCFuzzySystem Generate(PCFuzzySystem Classifier, IGeneratorConf config)
        {
            PCFuzzySystem result = Classifier;

            Systems_ready_to_test = new List <KnowlegeBasePCRules>();
            errors_of_systems     = new List <double>();


            InitEveryoneWithEveryone config1 = config as InitEveryoneWithEveryone;

            type_func        = config1.IEWEFuncType;
            count_slice_vars = config1.IEWECountSlice;


            List <int> Varians_of_run_system = new List <int>();

            for (int i = 0; i < Classifier.CountFeatures; i++)
            {
                int count_terms_for_var = count_slice_vars[i];
                Varians_of_run_system.Add(count_terms_for_var);
            }

            Varians_of_run_system.Sort();
            Generate_all_variant_in_pool(Varians_of_run_system);

            for (int i = 0; i < Pull_of_systems.Count; i++)
            {
                Classifier.RulesDatabaseSet.Clear();

                GeneratorRulesEveryoneWithEveryone.InitRulesEveryoneWithEveryone(result, type_func, Pull_of_systems[i].ToArray());
                Systems_ready_to_test.Add(Classifier.RulesDatabaseSet[0]);
                errors_of_systems.Add(result.ErrorLearnSamples(result.RulesDatabaseSet[0]));
            }

            int best_index = errors_of_systems.IndexOf(errors_of_systems.Min());

            result.RulesDatabaseSet.Clear();
            result.RulesDatabaseSet.Add(Systems_ready_to_test[best_index]);
            for (int i = 0; i < count_slice_vars.Count(); i++)
            {
                count_slice_vars[i] = result.RulesDatabaseSet[0].TermsSet.Count(x => x.NumVar == i);
            }
            Console.WriteLine(Pull_of_systems.Count());

            GC.Collect();
            result.RulesDatabaseSet[0].TermsSet.Trim();
            return(result);
        }
        public override SAFuzzySystem Generate(SAFuzzySystem Approximate, IGeneratorConf config)
        {
            SAFuzzySystem result = Approximate;

            Systems_ready_to_test = new List <KnowlegeBaseSARules>();
            errors_of_systems     = new List <double>();

            InitEveryoneWithOptimal config1 = config as InitEveryoneWithOptimal;

            type_func        = config1.IEWOTypeFunc;
            count_slice_vars = config1.count_terms;


            List <int> Varians_of_run_system = new List <int>();

            for (int i = 0; i < Approximate.CountFeatures; i++)
            {
                int count_terms_for_var = count_slice_vars[i];
                Varians_of_run_system.Add(count_terms_for_var);
            }

            Varians_of_run_system.Sort();
            Generate_all_variant_in_pool(Varians_of_run_system);

            for (int i = 0; i < Pull_of_systems.Count; i++)
            {
                Approximate.RulesDatabaseSet.Clear();

                GeneratorRulesEveryoneWithEveryone.InitRulesEveryoneWithEveryone(Approximate, type_func, Pull_of_systems[i].ToArray());
                Systems_ready_to_test.Add(Approximate.RulesDatabaseSet[0]);
                errors_of_systems.Add(result.approxLearnSamples(result.RulesDatabaseSet[0]));
            }

            int best_index = errors_of_systems.IndexOf(errors_of_systems.Min());

            result.RulesDatabaseSet.Clear();
            result.RulesDatabaseSet.Add(Systems_ready_to_test[best_index]);
            for (int i = 0; i < count_slice_vars.Count(); i++)
            {
                count_slice_vars[i] = result.RulesDatabaseSet[0].TermsSet.Count(x => x.NumVar == i);
            }
            Console.WriteLine(Pull_of_systems.Count());
            result.RulesDatabaseSet[0].TermsSet.Trim();
            GC.Collect();

            return(result);
        }
        public override PCFuzzySystem Generate(PCFuzzySystem Classifier, IGeneratorConf config)
        {
            PCFuzzySystem result = Classifier;

            InitEveryoneWithEveryone config1 = config as InitEveryoneWithEveryone;

            type_func        = config1.IEWEFuncType;
            count_slice_vars = config1.IEWECountSlice;

            InitRulesEveryoneWithEveryone(result, type_func, count_slice_vars);

            InitRulesEveryoneWithEveryone(result, type_func, count_slice_vars);

            result.RulesDatabaseSet[0].TermsSet.Trim();


            return(result);
        }
Exemplo n.º 11
0
        public override TSAFuzzySystem Generate(TSAFuzzySystem Approximate, IGeneratorConf config)
        {
            ResultSystem = Approximate;
            type_func    = TypeTermFuncEnum.Гауссоида;



            var kliConf = config as KLI_conf;

            if (kliConf != null)
            {
                {
                    ResultSystem = Approximate;
                    double meanValue = ResultSystem.LearnSamplesSet.DataRows.Select(x => x.DoubleOutput).Average();

                    var mayError = kliConf.MaxValue * meanValue;
                    kliGenerate(ResultSystem, type_func, mayError);
                    //             File.AppendAllLines("./out.txt", new List<string>() { mayError + " " + Result.RulesDatabaseSet[0].ValueComplexity + " " + Result.RMSEtoMSEforLearn(Result.ErrorLearnSamples()) / 2 + " " + Result.RMSEtoMSEforTest(Result.ErrorTestSamples()) / 2 });
                }
            }
            return(ResultSystem);
        }
Exemplo n.º 12
0
        public override PCFuzzySystem Generate(PCFuzzySystem Classifier, IGeneratorConf config)
        {
            PCFuzzySystem result = Classifier;

            //Filtre(result);

            InitBySamplesConfig config1 = config as InitBySamplesConfig;

            type_func = config1.IBSTypeFunc;
            calc_min_max_for_class(result.LearnSamplesSet);

            InitRulesBySamples(Classifier, type_func);

            result.RulesDatabaseSet[0].TermsSet.Trim();

            //Chiu(result);

            //Console.WriteLine("Обуч: " + Math.Round(result.ClassifyLearnSamples(result.RulesDatabaseSet[0]), 2));
            //Console.WriteLine("Тест: " + Math.Round(result.ClassifyTestSamples(result.RulesDatabaseSet[0]), 2));
            //Console.WriteLine();

            return(result);
        }
Exemplo n.º 13
0
        public override SAFuzzySystem Generate(FuzzySystem.SingletoneApproximate.SAFuzzySystem Approximate, IGeneratorConf config)
        {
            Random        rand   = new Random();
            SAFuzzySystem result = Approximate;

            if (result.RulesDatabaseSet.Count == 0)
            {
                KnowlegeBaseSARules temp_rules = new KnowlegeBaseSARules();
                result.RulesDatabaseSet.Add(temp_rules);
            }

            type_term    = ((GeneratorRullesSimpleRandomConfig)config).RSRTypeFunc;
            stable_terms = (int)((GeneratorRullesSimpleRandomConfig)config).RSRConstant;
            count_rules  = ((GeneratorRullesSimpleRandomConfig)config).RSRCountRules;


            for (int j = 0; j < count_rules; j++)
            {
                int[]            order = new int[result.CountFeatures];
                TypeTermFuncEnum temp_type_term;
                if (stable_terms == 0)
                {
                    temp_type_term = type_term;
                }
                else
                {
                    temp_type_term = Generator_type_term();
                }

                List <Term> temp_term_list = new List <Term>();
                for (int k = 0; k < result.CountFeatures; k++)
                {
                    double[] parametrs = new double[Term.CountParamsinSelectedTermType(temp_type_term)];

                    switch (temp_type_term)
                    {
                    case TypeTermFuncEnum.Треугольник:
                        parametrs[0] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[1] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[2] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        Array.Sort(parametrs);
                        break;

                    case TypeTermFuncEnum.Гауссоида: parametrs[0] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[1] = (rand.NextDouble() + 0.01) * 0.5 *
                                       (result.LearnSamplesSet.InputAttributes[k].Max -
                                        result.LearnSamplesSet.InputAttributes[k].Min);
                        break;

                    case TypeTermFuncEnum.Парабола: parametrs[0] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[1] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        Array.Sort(parametrs);
                        break;

                    case TypeTermFuncEnum.Трапеция: parametrs[0] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[1] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[2] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);
                        parametrs[3] = result.LearnSamplesSet.InputAttributes[k].Min + rand.NextDouble() * (result.LearnSamplesSet.InputAttributes[k].Max - result.LearnSamplesSet.InputAttributes[k].Min);

                        Array.Sort(parametrs);

                        break;
                    }
                    Term temp_term = new Term(parametrs, temp_type_term, k);
                    result.RulesDatabaseSet[0].TermsSet.Add(temp_term);
                    temp_term_list.Add(temp_term);
                    order[k] = result.RulesDatabaseSet[0].TermsSet.Count - 1;
                }
                double DoubleOutput = KNNConsequent.NearestApprox(result, temp_term_list);
                SARule temp_Rule    = new SARule(result.RulesDatabaseSet[0].TermsSet, order, DoubleOutput);
                result.RulesDatabaseSet[0].RulesDatabase.Add(temp_Rule);
            }
            result.RulesDatabaseSet[0].TermsSet.Trim();


            result.UnlaidProtectionFix(result.RulesDatabaseSet[0]);

            GC.Collect();
            return(result);
        }
        public IFuzzySystem Generate(IFuzzySystem Approximate, IGeneratorConf config)
        {
            SAFuzzySystem toRunFuzzySystem = Approximate as SAFuzzySystem;

            return(Generate(toRunFuzzySystem, config));
        }
        public IFuzzySystem Generate(IFuzzySystem Classifier, IGeneratorConf config)
        {
            PCFuzzySystem toRunFuzzySystem = Classifier as PCFuzzySystem;

            return(Generate(toRunFuzzySystem, config));
        }
        public override TSAFuzzySystem Generate(TSAFuzzySystem Approximate, IGeneratorConf config)
        {
            TSAFuzzySystem result = Approximate;

            Pull_of_systems       = Pull_of_systems = new List <List <int> >();
            Systems_ready_to_test = new List <KnowlegeBaseTSARules>();
            errors_of_systems     = new List <double>();

            DynamicTuneConfGenerator config1 = config as DynamicTuneConfGenerator;

            type_func = config1.IEWOTypeFunc;



            List <int> Varians_of_run_system = new List <int>();


            List <int> allOne = new List <int>();

            for (int i = 0; i < Approximate.CountFeatures; i++)
            {
                allOne.Add(1);
            }
            Pull_of_systems.Add(new List <int>(allOne));

            for (int j = 0; j < Approximate.CountFeatures - 1; j++)
            {
                Varians_of_run_system.Clear();
                allOne[j] = 2;
                Varians_of_run_system.AddRange(new List <int> (allOne));
                Varians_of_run_system.Sort();
                Generate_all_variant_in_pool(Varians_of_run_system);
            }
            allOne[Approximate.CountFeatures - 1] = 2;
            Pull_of_systems.Add(new List <int> (allOne));

            for (int i = 0; i < Pull_of_systems.Count; i++)
            {
                Approximate.RulesDatabaseSet.Clear();

                GeneratorRulesEveryoneWithEveryone.InitRulesEveryoneWithEveryone(Approximate, type_func, Pull_of_systems[i].ToArray());
                Systems_ready_to_test.Add(Approximate.RulesDatabaseSet[0]);
                errors_of_systems.Add(result.approxLearnSamples(result.RulesDatabaseSet[0]));
            }

            DynamicTuneClass dt = new DynamicTuneClass();

            Approximate = dt.TuneUpFuzzySystem(Approximate, config1);
            Systems_ready_to_test.Add(Approximate.RulesDatabaseSet[0]);
            errors_of_systems.Add(result.approxLearnSamples(result.RulesDatabaseSet[0]));


            int best_index = errors_of_systems.IndexOf(errors_of_systems.Min());

            result.RulesDatabaseSet.Clear();
            result.RulesDatabaseSet.Add(Systems_ready_to_test[best_index]);
            count_slice_vars = new int[Approximate.CountFeatures];
            for (int i = 0; i < count_slice_vars.Count(); i++)
            {
                count_slice_vars[i] = result.RulesDatabaseSet[0].TermsSet.Count(x => x.NumVar == i);
            }
            maxError  = config1.MaxError;
            TryCount  = config1.TryCount;
            RuleCount = result.RulesDatabaseSet[0].RulesDatabase.Count;
            Console.WriteLine(Pull_of_systems.Count());
            result.RulesDatabaseSet[0].TermsSet.Trim();
            GC.Collect();

            return(result);
        }
Exemplo n.º 17
0
 public override PCFuzzySystem Generate(PCFuzzySystem Classifier, IGeneratorConf config)
 {
     Classifier = Universal(Classifier, config) as  PCFuzzySystem;
     Classifier.RulesDatabaseSet.AsParallel().ForAll(x => x.ShrinkNotAcceptedFeatures(Classifier.AcceptedFeatures));
     return(Classifier);
 }
Exemplo n.º 18
0
 public override TSAFuzzySystem Generate(TSAFuzzySystem Approximate, IGeneratorConf config)
 {
     Approximate = Universal(Approximate, config) as TSAFuzzySystem;
     Approximate.RulesDatabaseSet.AsParallel().ForAll(x => x.ShrinkNotAcceptedFeatures(Approximate.AcceptedFeatures));
     return(Approximate);
 }