public override ILearnAlgorithmConf getConf(int CountFeatures) { ILearnAlgorithmConf result = new ACOSearchConf(); result.Init(CountFeatures); return(result); }
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); } ); }
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); } }
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; }
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; }
/// <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]); }
/// <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); }
/// <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); }