private void fuzzyDataGridViewRules_Loader(FuzzyRuleSet _frsFuzzyRuleSet)
        {
            int irows = _frsFuzzyRuleSet.Rules.GetLength(0);
            int icolumns = _frsFuzzyRuleSet.Rules.GetLength(1);

            for (int i = 0; i < irows; i++)
            {
                DataGridViewRow dgvrow = new DataGridViewRow();
                DataGridViewTextBoxCell celltextbox = new DataGridViewTextBoxCell();
                celltextbox.Value = i + 1;
                dgvrow.Cells.Add(celltextbox);
                for (int j=0; j < icolumns-2; j++)
                {
                    DataGridViewCheckBoxCell cellcheckbox = new DataGridViewCheckBoxCell();
                    DataGridViewComboBoxCell cellcombobox = new DataGridViewComboBoxCell();
                    if (_frsFuzzyRuleSet.Rules[i, j] < 0) cellcheckbox.Value = 1;
                    int index = Math.Abs(Convert.ToInt32(_frsFuzzyRuleSet.Rules[i, j]));
                    if (j < _frsFuzzyRuleSet.Inputs.Count)
                    {
                        cellcombobox.Items.Add("<none>");
                        foreach (FuzzyMF mf in _frsFuzzyRuleSet.Inputs[j].MFs)
                        {
                            cellcombobox.Items.Add(mf.Name.ToString());
                        }
                        if (index != 0) cellcombobox.Value = _frsFuzzyRuleSet.Inputs[j].MFs[index - 1].Name.ToString();
                        else cellcombobox.Value = "<none>";
                    }
                    else
                    {
                        cellcombobox.Items.Add("<none>");
                        foreach (FuzzyMF mf in _frsFuzzyRuleSet.Outputs[j - _frsFuzzyRuleSet.Inputs.Count].MFs)
                        {
                            cellcombobox.Items.Add(mf.Name.ToString());
                        }
                        if(index != 0) cellcombobox.Value = _frsFuzzyRuleSet.Outputs[j - _frsFuzzyRuleSet.Inputs.Count].MFs[index-1].Name.ToString();
                        else cellcombobox.Value = "<none>";
                    }
                    dgvrow.Cells.AddRange(cellcheckbox, cellcombobox);
                }
                DataGridViewComboBoxCell cellcombobox_connection = new DataGridViewComboBoxCell();
                cellcombobox_connection.Items.AddRange("AND", "OR");
                if (_frsFuzzyRuleSet.Rules[i, icolumns - 1] == 1) cellcombobox_connection.Value = "AND";
                else if(_frsFuzzyRuleSet.Rules[i, icolumns - 1] == 2) cellcombobox_connection.Value = "OR";
                DataGridViewComboBoxCell cellcombobox_weight = new DataGridViewComboBoxCell();
                cellcombobox_weight.Items.AddRange(new object[] {"0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1"});
                cellcombobox_weight.Value = Convert.ToString(_frsFuzzyRuleSet.Rules[i, icolumns - 2], System.Globalization.CultureInfo.InvariantCulture);
                dgvrow.Cells.AddRange(cellcombobox_connection, cellcombobox_weight);
                this.fuzzyDataGridView.Rows.Add(dgvrow);
                this.numberOfRulesNumericUpDown.Enabled = true;
            }
        }
        private void fuzzyDataGridView_Loader(FuzzyRuleSet _frsFuzzyRuleSet)
        {
            int icolumn = _frsFuzzyRuleSet.Inputs.Count*2 + _frsFuzzyRuleSet.Outputs.Count*2 + 3;
            DataGridViewColumn[] dgvcA = new DataGridViewColumn[icolumn];

            dgvcA[0] = new DataGridViewTextBoxColumn();
            dgvcA[0].HeaderText = "Rules";
            dgvcA[0].MinimumWidth = 40;
            dgvcA[0].Name = "RulesColumn";
            dgvcA[0].ReadOnly = true;
            int i = 0;
            foreach (FuzzyIO Input in _frsFuzzyRuleSet.Inputs)
            {
                i++;
                dgvcA[i] = new DataGridViewCheckBoxColumn();
                dgvcA[i].HeaderText = "not";
                dgvcA[i].MinimumWidth = 30;
                dgvcA[i].Name = "not" + Input.Name;
                i++;
                dgvcA[i] = new DataGridViewComboBoxColumn();
                dgvcA[i].HeaderText = Input.Name;
                dgvcA[i].Name = Input.Name;
                dgvcA[i].MinimumWidth = 100;
                ((DataGridViewComboBoxColumn)dgvcA[i]).Items.Add("<none>");
                foreach (FuzzyMF mf in Input.MFs)
                {
                    ((DataGridViewComboBoxColumn)dgvcA[i]).Items.Add(mf.Name);
                }
            }
            foreach (FuzzyIO Output in _frsFuzzyRuleSet.Outputs)
            {
                i++;
                dgvcA[i] = new DataGridViewCheckBoxColumn();
                dgvcA[i].HeaderText = "not";
                dgvcA[i].MinimumWidth = 30;
                dgvcA[i].Name = "not" + Output.Name;
                i++;
                dgvcA[i] = new DataGridViewComboBoxColumn();
                dgvcA[i].HeaderText = Output.Name;
                dgvcA[i].Name = Output.Name;
                dgvcA[i].MinimumWidth = 100;
                ((DataGridViewComboBoxColumn)dgvcA[i]).Items.Add("<none>");
                foreach (FuzzyMF mf in Output.MFs)
                {
                    ((DataGridViewComboBoxColumn)dgvcA[i]).Items.Add(mf.Name);
                }
            }
            i++;
            dgvcA[i] = new DataGridViewComboBoxColumn();
            dgvcA[i].HeaderText = "Connection";
            ((DataGridViewComboBoxColumn)dgvcA[i]).Items.AddRange(new object[] {
            "AND",
            "OR"});
            dgvcA[i].MinimumWidth = 100;
            dgvcA[i].Name = "connectionColumn";
            i++;
            dgvcA[i] = new DataGridViewComboBoxColumn();
            dgvcA[i].HeaderText = "Weight";
            ((DataGridViewComboBoxColumn)dgvcA[i]).Items.AddRange(new object[] { "0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1",});
            dgvcA[i].MinimumWidth = 100;
            dgvcA[i].Name = "weightColumn";

            this.fuzzyDataGridView.SuspendLayout();
            this.fuzzyDataGridView.Columns.Clear();
            this.fuzzyDataGridView.Columns.AddRange(dgvcA);
            this.fuzzyDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            this.fuzzyDataGridView.ResumeLayout();
            this.fuzzyDataGridView.PerformLayout();
        }
 private void fisOpenFileDialog_FileOk(object sender, CancelEventArgs e)
 {
     this.FISFuzzyRuleSet = new FuzzyRuleSet();
     fisOpenBackgroundWorker.RunWorkerAsync(this.fisOpenFileDialog.FileName);
 }