private void MethodButton_Click(object sender, EventArgs e) { //проводим проверку, что путь к файлу введён правильно if (!System.IO.File.Exists(filePath)) { MessageBox.Show("Неправильно введений шлях до файлу!"); return; } /// /// получаем из EXCEL матрицу T в виде DataTable /// DataTable ExcelTable = new DataTable(); ExcelTable = ConvertExcel.FromExcel(filePath, maxcolumns);//2ой параметр - число колонок. В нашем случае - 7 //конвертируем таблицу из формата DataTable в string int T_width = ExcelTable.Columns.Count; int T_height = ExcelTable.Rows.Count; string[,] T_string = Fuzzification.ConvertFromDataTableToTable(ExcelTable); //Проводим фаззификацию - замену нечисловых лингв.переменных на числовые T = Fuzzification.FuzzyTable(T_string); C_means.C_meansMethod(T, out F, out V); FindYButton.Enabled = true; rules_ready = true; }
static public int finding_rule(double[] X, double[,] T, double[,] F, double[,] V) { int rule_numb = 0; double min_difference = 0; for (int i = 0; i < 6; i++) { min_difference += Math.Pow(1 - C_means.gauss_func(0, i, X, T, F, V), 2); } min_difference = Math.Sqrt(min_difference); for (int j = 0; j < C_means.c; j++) { double difference = 0; for (int i = 0; i < 6; i++) { difference += Math.Pow(1 - C_means.gauss_func(j, i, X, T, F, V), 2); } difference = Math.Sqrt(difference); if (difference < min_difference) { rule_numb = j; min_difference = difference; } } return(rule_numb); }