public void select_parents_and_crossover(Random Rand, Individ.Alg_crossover Alg_cross, double param) { the_childs.Clear(); for (int i = 0; i < size_child; i++) { int choose_one = Rand.Next(size_populate); int choose_two = Rand.Next(size_populate); the_childs.Add(the_popualate[choose_one].crossover(the_popualate[choose_two], Alg_cross, Rand, param)); } }
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); }