示例#1
0
        public void init_first(KnowlegeBasePCRules base_rule, Random rand, FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.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);
        }
示例#2
0
 public virtual void Init(ILearnAlgorithmConf Conf)
 {
     Config           = Conf as ESConfig;
     count_populate   = Config.ESCPopulationSize;
     count_child      = Config.ESCCountChild;
     count_iterate    = Config.ESCCountIteration;
     coef_t1          = Config.ESCT1;
     coef_t2          = Config.ESCT2;
     param_crossover  = Config.ESCCrossoverPropability;
     alg_cross        = Config.ESCCrossoverType;
     type_init        = Config.ESCInitType;
     count_Multipoint = Config.ESCCountCrossoverPoint;
     type_mutate      = Config.ESCMutateAlg;
     b_ro             = Config.ESCAngleRotateB;
     main_pop         = new Population(count_populate, count_child, result.CountFeatures, result.LearnSamplesSet);
     main_pop.init_first(result.RulesDatabaseSet[0], rand, type_init);
 }
示例#3
0
        public Individ(KnowlegeBasePCRules Source, SampleSet data, int count_vars, bool the_first, Random rand, FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init par_type_init)
        {
            hrom_vector       = new Hromosom(new KnowlegeBasePCRules(Source));
            step_sko          = new List <double>(count_vars);
            step_rotate       = new List <double>(count_vars);
            count_step_sko    = count_vars;
            count_step_rotate = count_vars;
            Data = data;
            for (int i = 0; i < count_vars; i++)
            {
                step_sko.Add(0 + rand.NextDouble() * (data.InputAttributes[i].Scatter * 0.05));
                step_rotate.Add(-1 * Math.PI + rand.NextDouble() * 2 * Math.PI);
            }
            if (!the_first)
            {
                switch (par_type_init)
                {
                case FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init.Случайная: hrom_vector.init_random(rand, data); break;

                case FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init.Ограниченная: hrom_vector.init_constrain(rand, data); break;
                }
            }
        }
示例#4
0
        protected override void fill_params(string[] args)
        {
            file_in = (args.Where(x => x.Contains("in"))).ToArray()[0];
            Console.WriteLine("Before cut {0}", file_in);
            file_in = file_in.Remove(0, 3);
            Console.WriteLine("After cut {0}", file_in);
            file_out = (args.Where(x => x.Contains("out"))).ToArray()[0];
            file_out = file_out.Remove(0, 4);


            string temp = (args.Where(x => x.Contains("init_alg"))).ToArray()[0];

            temp = temp.Split(':')[1];

            switch (temp)
            {
            case "Random": type_init = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init.Случайная; break;

            case "Constrain": type_init = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init.Ограниченная; break;

            default: type_init = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_init.Ограниченная; break;
            }



            temp = (args.Where(x => x.Contains("type_mutate"))).ToArray()[0];
            temp = temp.Split(':')[1];

            switch (temp)
            {
            case "Adaptive": type_mutate = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_Mutate.СКО; break;

            case "CovarianceMatrix": type_mutate = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_Mutate.СКО_РО; break;

            default: type_mutate = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Type_Mutate.СКО_РО; break;
            }

            temp = (args.Where(x => x.Contains("type_cross"))).ToArray()[0];
            temp = temp.Split(':')[1];

            switch (temp)
            {
            case "Unified": type_cross = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Alg_crossover.Унифицированный; break;

            case "Multipoint": type_cross = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Alg_crossover.Многоточечный; break;

            default: type_cross = FuzzySystem.FuzzyAbstract.learn_algorithm.conf.ESConfig.Alg_crossover.Унифицированный; break;
            }


            temp = (args.Where(x => x.Contains("pcross"))).ToArray()[0];
            temp = temp.Split(':')[1];
            string comma = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;

            temp = temp.Replace(".", comma);
            double.TryParse(temp, out pcross);

            temp = (args.Where(x => x.Contains("cpcross"))).ToArray()[0];
            temp = temp.Split(':')[1];

            temp = temp.Replace(".", comma);
            double.TryParse(temp, out cpcross);

            temp = (args.Where(x => x.Contains("angleR"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out angleR);

            temp = (args.Where(x => x.Contains("iterate"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out iterate);

            temp = (args.Where(x => x.Contains("cindiv"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out cindiv);

            temp = (args.Where(x => x.Contains("cchild"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out cchild);


            temp = (args.Where(x => x.Contains("coeft1"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out coeft1);

            temp = (args.Where(x => x.Contains("coeft2"))).ToArray()[0];
            temp = temp.Split(':')[1];
            temp = temp.Replace(".", comma);
            double.TryParse(temp, out coeft2);
        }