public override a_Fuzzy_System Generate(Fuzzy_system.Approx_Singletone.a_Fuzzy_System Approximate, Abstract_generator_conf config) { a_Fuzzy_System result = Approximate; if (result.Count_Rulles_Databases == 0) { result.Init_Rules_everyone_with_everyone(config); } count_shrink = ((Term_shrink_and_rotate_conf)config).Число_параметров_для_уменьшения_термов; size_shrink = ((Term_shrink_and_rotate_conf)config).Значение_уменьшения_термов; type_func = ((Term_shrink_and_rotate_conf)config).Функция_принадлежности; count_slices = ((Term_shrink_and_rotate_conf)config).Количество_термов_для_каждого_признака; List <int> Varians_of_run_system = new List <int>(); for (int i = 0; i < Approximate.Count_Vars; i++) { int count_terms_for_var = Approximate.Rulles_Database_Set[0].Terms_Set.FindAll(x => x.Number_of_Input_Var == 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(); Type_Term_Func_Enum type_of_term = Approximate.Rulles_Database_Set[0].Terms_Set[0].Term_Func_Type; Generate_all_variant_in_pool(Varians_of_run_system); for (int i = 0; i < Pull_of_systems.Count; i++) { Approximate.Rulles_Database_Set.Clear(); Approximate.Init_Rules_everyone_with_everyone(type_of_term, Pull_of_systems[i].ToArray()); Systems_ready_to_test.Add(Approximate.Rulles_Database_Set[0]); errors_of_systems.Add(result.approx_Learn_Samples(0)); } int best_index = errors_of_systems.IndexOf(errors_of_systems.Min()); result.Rulles_Database_Set.Clear(); result.Rulles_Database_Set.Add(Systems_ready_to_test[best_index]); Console.WriteLine(Pull_of_systems.Count()); GC.Collect(); // result.unlaid_protection_fix(); return(result); }
public override a_Fuzzy_System TuneUpFuzzySystem(Fuzzy_system.Approx_Singletone.a_Fuzzy_System Approximate, Abstract_learn_algorithm_conf config) { a_Fuzzy_System result = Approximate; if (result.Count_Rulles_Databases == 0) { throw new System.FormatException("Что то не то с входными данными"); } Optimize_Term_shrink_and_rotate_conf Config = config as Optimize_Term_shrink_and_rotate_conf; count_shrink = Config.Число_параметров_для_уменьшения_термов; size_shrink = Config.Значение_уменьшения_термов; List <int> Varians_of_run_system = new List <int>(); for (int i = 0; i < Approximate.Count_Vars; i++) { int count_terms_for_var = Approximate.Rulles_Database_Set[0].Terms_Set.FindAll(x => x.Number_of_Input_Var == 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(); Type_Term_Func_Enum type_of_term = Approximate.Rulles_Database_Set[0].Terms_Set[0].Term_Func_Type; Generate_all_variant_in_pool(Varians_of_run_system); for (int i = 0; i < Pull_of_systems.Count; i++) { Approximate.Rulles_Database_Set.Clear(); Approximate.Init_Rules_everyone_with_everyone(type_of_term, Pull_of_systems[i].ToArray()); Systems_ready_to_test.Add(Approximate.Rulles_Database_Set[0]); errors_of_systems.Add(result.approx_Learn_Samples(0)); } int best_index = errors_of_systems.IndexOf(errors_of_systems.Min()); result.Rulles_Database_Set.Clear(); result.Rulles_Database_Set.Add(Systems_ready_to_test[best_index]); Console.WriteLine(Pull_of_systems.Count()); // result.unlaid_protection_fix(); return(result); }