コード例 #1
0
        public override ILearnAlgorithmConf getConf(int CountFeatures)
        {
            ILearnAlgorithmConf result = new ACOSearchConf();

            result.Init(CountFeatures);
            return(result);
        }
コード例 #2
0
        public virtual void Init(ILearnAlgorithmConf Config)
        {
            ACOSearchConf config = Config as ACOSearchConf;

            if (preCheck(result) == false)
            {
                throw new ArgumentNullException("Не правильно инициализированная нечеткая система");
            }

            // Шаг 1. Задать начальные параметры.
            init(result, config);

            // Шаг 2. Сгенерировать популяцию муравьев в колониях
            colonyGenerate();


            Parallel.ForEach(colonyList, colony =>
            {
                // Шаг 3. Сгенерировать k случайных решений, для всех архивов решений с последующим  оцениванием и ранжированием.
                randomDecisionsGenerate(result, colony);

                //Шаг 4. Найти значения вектора весов.
                calc_decisions_Weight(colony);
            }
                             );
        }
コード例 #3
0
ファイル: Base_ACO.cs プロジェクト: CDMMKY/fuzzy_core
        public override TSAFuzzySystem TuneUpFuzzySystem(TSAFuzzySystem Approx, ILearnAlgorithmConf conf)
        {
            try
            {
                ACOSearchConf config = conf as ACOSearchConf;

                if (preCheck(Approx) == false)
                {
                    throw new ArgumentNullException("Не правильно инициализированная нечеткая система");
                }

                // Шаг 1. Задать начальные параметры.
                init(Approx, config);

                // Шаг 2. Сгенерировать популяцию муравьев в колониях
                colonyGenerate();


                Parallel.ForEach(colonyList, colony =>
                {
                    // Шаг 3. Сгенерировать k случайных решений, для всех архивов решений с последующим  оцениванием и ранжированием.
                    randomDecisionsGenerate(colony);

                    //Шаг 4. Найти значения вектора весов.
                    calc_decisions_Weight(colony);
                }
                                 );



                for (int iterNum = 0; iterNum < ACO_iterationCount; iterNum++)
                {
                    foreach (Colony colony in colonyList)      //Шаг 9. Если имеется следующая колония, то сделать текущим первого муравья в этой колонии и перейти на шаг 5, иначе перейти на шаг 10.
                    {
                        for (int i = 0; i < ACO_antCount; i++) //Шаг 8. Если в текущей колонии имеется следующий муравей, то сделать его текущим и перейти к шагу 5, иначе перейти на шаг 9.
                        {
                            // Шаг 5. Для текущего муравья текущей колонии вычислить номер l, используемой функции Гаусса по формуле 2.14. Определить  l i для i = 1, ..., N по формуле 2.15. Сгенерировать N случайных величин {θl*1, θl*2,…, θl*N} на основе полученных функций gl i(x).
                            colony.runAnt(i, rand, ACO_xi);

                            //Шаг 6.  Найти ошибку вывода нечеткой системы при параметрах {θ1,…, θN }, если ошибка меньше текущей, то сохранить новые параметры.
                            baseError = colony.checkAntDecision(i, baseError);

                            // Шаг 7. Добавить в архив новое решение, ранжировать архив, удалить из архива худшее решение.
                            colony.updateDecisionArchive(i);
                        }
                    }
                }



                prepareFinalFuzzySystem();
                result.RulesDatabaseSet[0].TermsSet.Trim();
                return(result);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
コード例 #4
0
ファイル: Modified_ACO.cs プロジェクト: CDMMKY/fuzzy_core
        protected override void init(SAFuzzySystem Approx, ACOSearchConf config)
        {
            base.init(Approx, config);
            MACOSearchConf configNew = config as MACOSearchConf;

            MACOCountBorderRepeat  = configNew.MACOCountExtremum;
            MACOCountRepeatError   = 0;
            MACOCurrentError       = getError();
            MACOCountEliteDecision = configNew.MACOCountElite;
        }
コード例 #5
0
ファイル: Modified_ACO.cs プロジェクト: CDMMKY/fuzzy_core
        protected override void init(PCFuzzySystem Classifier, ACOSearchConf config)
        {
            base.init(Classifier, config);
            MACOSearchConf configNew = config as MACOSearchConf;

            MACOCountBorderRepeat  = configNew.MACOCountExtremum;
            MACOCountRepeatError   = 0;
            MACOCurrentError       = getPrecission();
            MACOCountEliteDecision = configNew.MACOCountElite;
        }
コード例 #6
0
        /// <summary>
        /// Step 1
        /// </summary>
        /// <param name="Classifier"></param>
        /// <param name="config"></param>

        protected virtual void init(PCFuzzySystem Classifier, ACOSearchConf config)
        {
            ACO_iterationCount       = config.ACOCountIteration;
            ACO_antCount             = config.ACOCountAnt;
            ACO_decisionArchiveCount = 2;
            ACO_q          = config.ACOQ;
            ACO_xi         = config.ACOXi;
            result         = Classifier;
            colonyCount    = result.CountFeatures;
            colonyList     = new List <Colony>();
            basePrecission = result.ClassifyLearnSamples(result.RulesDatabaseSet[0]);
        }
コード例 #7
0
ファイル: Base_ACO.cs プロジェクト: CDMMKY/fuzzy_core
        /// <summary>
        /// Step 1
        /// </summary>
        /// <param name="Classifier"></param>
        /// <param name="config"></param>

        protected virtual void init(PCFuzzySystem Classifier, ACOSearchConf config)
        {
            ACO_iterationCount       = config.ACOCountIteration;
            ACO_antCount             = config.ACOCountAnt;
            ACO_decisionArchiveCount = config.ACODescisionArchiveSize;
            ACO_q       = config.ACOQ;
            ACO_xi      = config.ACOXi;
            result      = Classifier;
            colonyCount = result.RulesDatabaseSet[0].TermsSet.Count;
            colonyList  = new List <Colony>();
            newSolution = new KnowlegeBasePCRules(result.RulesDatabaseSet[0]);

            basePrecission = result.ClassifyLearnSamples(newSolution);
        }
コード例 #8
0
ファイル: Base_ACO.cs プロジェクト: CDMMKY/fuzzy_core
        /// <summary>
        /// Step 1
        /// </summary>
        /// <param name="Classifier"></param>
        /// <param name="config"></param>

        protected virtual void init(TSAFuzzySystem Approx, ACOSearchConf config)
        {
            ACO_iterationCount       = config.ACOCountIteration;
            ACO_antCount             = config.ACOCountAnt;
            ACO_decisionArchiveCount = config.ACODescisionArchiveSize;
            ACO_q       = config.ACOQ;
            ACO_xi      = config.ACOXi;
            result      = Approx;
            colonyCount = result.RulesDatabaseSet[0].TermsSet.Count;
            colonyList  = new List <Colony>();
            newSolution = new KnowlegeBaseTSARules(result.RulesDatabaseSet[0]);

            //    current_database = result.RulesDatabaseSet.Count -1;

            baseError = result.approxLearnSamples(newSolution);
        }