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"));
        }