Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }