public void init_first(Knowlege_base_ARules base_rule, Random rand, Individ.Type_init prm_init) { bool the_first = true; int count_ready = 0; do { the_popualate.Add(new Individ(base_rule, Data, count_vars, the_first, rand, prm_init)); count_ready++; the_first = false; } while (count_ready < size_populate); }
public override Fuzzy_system.Approx_Singletone.a_Fuzzy_System TuneUpFuzzySystem(Fuzzy_system.Approx_Singletone.a_Fuzzy_System Approximate, Abstract_learn_algorithm_conf conf) { count_populate = ((Es_Config)conf).Особей_в_популяции; count_child = ((Es_Config)conf).Потомки; count_iterate = ((Es_Config)conf).Количество_итераций; coef_t1 = ((Es_Config)conf).Коэффициент_t1; coef_t2 = ((Es_Config)conf).Коэффициент_t2; param_crossover = ((Es_Config)conf).Вероятность_скрещивания; alg_cross = ((Es_Config)conf).Алгоритм_Скрещивания; type_init = ((Es_Config)conf).Алгоритм_Инициализации; count_Multipoint = ((Es_Config)conf).Точек_Скрещивания; type_mutate = ((Es_Config)conf).Алгоритм_Мутации; b_ro = ((Es_Config)conf).Изменение_РО; a_Fuzzy_System result = Approximate; Population main_pop = new Population(count_populate, count_child, result.Count_Vars, result.Learn_Samples_set); main_pop.init_first(result.Rulles_Database_Set[0], rand, type_init); for (int i = 0; i < count_iterate; i++) { double inparam = 0; switch (alg_cross) { case Individ.Alg_crossover.Унифицированный: inparam = param_crossover; break; case Individ.Alg_crossover.Многоточечный: inparam = count_Multipoint; break; } main_pop.select_parents_and_crossover(rand, alg_cross, inparam); main_pop.mutate_all(rand, coef_t1, coef_t2, type_mutate, b_ro); main_pop.union_parent_and_child(); main_pop.Calc_Error(result); main_pop.select_global(); } result.Rulles_Database_Set[0] = main_pop.get_best_database(); GC.Collect(); return(result); }