public void Clustering(int ClusterCount, double epsilon) //КЛАСТЕРИЗАЦИЯ { int iteration = 0; //this.ClusterCount = ClusterCount; InitMembershipMatrix(); if (Centroids == null) { InitCentroids(); } while (true) { FillDistanceMatrix(); FillClusters(); ReCalculateCentroids(); if (EqualPrevAndNewCentroids(epsilon)) { break; } UpdateCentroids(); ++iteration; } ExelReader.ProcessedDataFromFile(Clusters); }
public void GausFunction(int countColumnData, FuzzyKnowledgeBase FKB) { double SummDenominator = 0; double SummNumeral = 0; double sigm = 0; ValueGausFPForEachTerm = new double[ClusterCount, countColumnData - 1]; // [ClusterCount, countColumnData]; for (int i = 0; i < ClusterCount; i++) { for (int j = 0; j < countColumnData; j++) // countColumnData { double a = Clusters.ElementAt(i).Centroid.ElementAt(j); for (int k = 0; k < Elements.Count; ++k) { SummDenominator += Math.Pow(MembershipMatrixTemp[k, i], 2); SummNumeral += Math.Pow(MembershipMatrixTemp[k, i], 2) * Math.Pow(ElementsMatrix[k, j] - Clusters.ElementAt(i).Centroid.ElementAt(j), 2); } sigm = Math.Sqrt(SummNumeral / SummDenominator); ExelReader.SimpsonsMethodFindingIntegrall(a, sigm, i, j, countColumnData, FKB); } } //sigm = FuzzyLogicBase.ListOfRule.Count; }
public ActionResult Upload(HttpPostedFileBase upload) { string FileFormat = ""; if (upload != null) { // получаем имя файла string fileName = System.IO.Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте FuzzyKnowledgeBase FKB = new FuzzyKnowledgeBase(); FKB.ListOfRule.Clear(); FKB.ListVar.Clear(); upload.SaveAs(Server.MapPath("~/Files/" + fileName)); HttpContext.Response.Cookies["FileName"].Value = fileName; FileFormat = FileHelper.CheckFileFormat(fileName); if (FileFormat == "txt") { return(RedirectToAction("ReadyForms", "Сonclusion", new { FileName = fileName })); } else if (FileFormat == "xls") { ExelReader.ReadFromXLS(upload.FileName); K_means k = new K_means(ExelReader.ElementsMulti, null, ExelReader.ClusterCount, ExelReader.ElementsMatrix); double epsilon = 0.05; k.Clustering(ExelReader.ClusterCount, epsilon); k.FindRulesModelTypeMamdani(ExelReader.NameOfLinguisticVariables, ExelReader.ValueIntervalTerm, ExelReader.NameOfTerms, ExelReader.countColumnData, ExelReader.NumbersOfZonesOneLP, ExelReader.counterFoRowDataFromFile, "Трикутна", ExelReader.WeightOfTerms, FKB); k.GausFunction(ExelReader.countColumnData, FKB); FKBHelper.WithRullToVar(FKB); FKBHelper.Save_BNZ(FKB, Server.MapPath("~/Files/BNZauto.txt")); return(RedirectToAction("ReadyForms", "Сonclusion", new { FileName = "BNZauto.txt" })); } } return(RedirectToAction("Index")); }