Beispiel #1
0
        public frmQuestion(Variable g, ExpertSystem res)
        {
            InitializeComponent();
            this.g   = g;
            this.res = res;
            if (g.Question == null || g.Question.Trim() == "")
            {
                textBox1.Text = g.Name + " = ?";
            }
            else
            {
                textBox1.Text = g.Question;
            }
            int i = 0;

            foreach (string s in g.Domain.ListVal)
            {
                RadioButton rb = new RadioButton();
                rb.AutoSize = true;
                rb.Text     = s;
                rbList.Add(rb);
                rb.Parent = groupBox1;
                rb.Left   = 50;
                rb.Top    = ++i * 25;
            }
            rbList[0].Checked = true;
        }
Beispiel #2
0
        /// <summary>
        /// Создание новой ЭС
        /// </summary>
        private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    tempES   = new ExpertSystem();
                    tempFile = saveFileDialog1.FileName;
                    if (File.Exists(tempFile))
                    {
                        File.Delete(tempFile);
                    }
                    using (FileStream fs = File.Create(tempFile))
                    {
                    }

                    StartES();
                    saved = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                FinishES();
            }
        }
        public Fact Запросить(Variable g, ExpertSystem es)
        {
            frmQuestion fq = new frmQuestion(g, es);

            fq.ShowDialog();
            Fact f = new Fact(g, es.res as string, Rightly.Yes);

            return(f);
        }
Beispiel #4
0
 public frmRules(ExpertSystem es)
 {
     InitializeComponent();
     this.es = es;
     // копия коллекции и вывод
     foreach (string s in es.Rules.Keys)
     {
         rules.Add(s, es.Rules[s]);
         lstRules.Items.Add(s + ": " + es.Rules[s].ToString());
     }
     lstRules.SelectedIndex = -1;
 }
Beispiel #5
0
        public frmExplain(ExpertSystem es)
        {
            InitializeComponent();


            tempES = es;
            foreach (Rule r in es.Rules.Vals)
            {
                if (r.Worked != RuleWork.No)
                {
                    treeView2.Nodes.Add(r.Name, r.Name);
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ЕСЛИ", "ЕСЛИ");
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ТО", "ТО");
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ТК", "ТАК КАК");
                    foreach (Fact f in r.Reasons)
                    {
                        treeView2.Nodes[r.Name].Nodes[r.Name + "ЕСЛИ"].Nodes.Add(f.ToString());
                    }
                    treeView2.Nodes[r.Name].Nodes[r.Name + "ТО"].Nodes.Add(r.Result.ToString());
                    treeView2.Nodes[r.Name].Nodes[r.Name + "ТК"].Nodes.Add(r.Reasoning);
                    treeView2.Nodes[r.Name].ExpandAll();
                }
            }

            foreach (Rule r in es.WorkedRules)
            {
                if (r.Worked == RuleWork.Signifi)
                {
                    treeView1.Nodes.Add(r.Name, r.Name);
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ЕСЛИ", "ЕСЛИ");
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ТО", "ТО");
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ТК", "ТАК КАК");
                    foreach (Fact f in r.Reasons)
                    {
                        treeView1.Nodes[r.Name].Nodes[r.Name + "ЕСЛИ"].Nodes.Add(f.ToString());
                    }
                    treeView1.Nodes[r.Name].Nodes[r.Name + "ТО"].Nodes.Add(r.Result.ToString());
                    treeView1.Nodes[r.Name].Nodes[r.Name + "ТК"].Nodes.Add(r.Reasoning);
                    treeView1.Nodes[r.Name].ExpandAll();
                }
            }

            listBox1.Items.Clear();
            listBox1.Items.Add("------ Установленные факты ------");
            foreach (Fact fact in es.Proved)
            {
                if (fact.Truly == Rightly.Yes && !listBox1.Items.Contains(fact.ToString()))
                {
                    listBox1.Items.Add(fact.ToString());
                }
            }
        }
Beispiel #6
0
 public frmGoal(ExpertSystem es, frmMain mother)
 {
     InitializeComponent();
     foreach (string s in es.Vars.Keys)
     {
         if (es.Vars[s].MyType != VarType.Queried)
         {
             comboBox1.Items.Add(s);
         }
     }
     this.es     = es;
     this.mother = mother;
 }
Beispiel #7
0
        public frmDomains(ExpertSystem es)
        {
            InitializeComponent();

            this.es = es;

            foreach (string s in es.Domains.Keys)
            {
                domains.Add(s, es.Domains[s]);
            }
            foreach (string s in es.Vars.Keys)
            {
                vars.Add(s, es.Vars[s]);
            }

            foreach (string d in domains.Keys)
            {
                listBox1.Items.Add(d);
            }
        }
Beispiel #8
0
 /// <summary>
 /// Кнопка "Открыть"
 /// </summary>
 private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         if (openFileDialog1.ShowDialog() == DialogResult.OK)
         {
             BinaryFormatter bf = new BinaryFormatter();
             FileStream      fs = File.OpenRead(openFileDialog1.FileName);
             tempES = (ExpertSystem)bf.Deserialize(fs);
             fs.Close();
             tempFile = openFileDialog1.FileName;
             StartES();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
         FinishES();
     }
 }
Beispiel #9
0
        public frmVariables(ExpertSystem es)
        {
            InitializeComponent();
            this.es = es;

            // копируем коллекции
            foreach (string s in es.Vars.Keys)
            {
                vars.Add(s, es.Vars[s]);
            }

            listBox1.Tag = -1;
            // на форму
            foreach (string s in vars.Keys)
            {
                listBox1.Items.Add(s);
            }
            foreach (string s in es.Domains.Keys)
            {
                comboBox1.Items.Add(s);
            }
        }
Beispiel #10
0
        public frmExplain(ExpertSystem es)
        {
            InitializeComponent();

            // Добавление каринок
            Image imgW  = global::ЭС.Properties.Resources.Worked;
            Image imgUW = global::ЭС.Properties.Resources.Unworked;

            //treeView1.ImageList = new ImageList();
            //treeView1.ImageList.Images.Add("Sign", imgW);
            //treeView1.ImageList.Images.Add("Unsign", imgUW);
            //treeView2.ImageList = new ImageList();
            //treeView2.ImageList.Images.Add("Sign", imgW);
            //treeView2.ImageList.Images.Add("Unsign", imgUW);

            tempES = es;
            bool lol = false;

            foreach (Rule r in es.Rules.Vals)
            {
                if (r.Worked != RuleWork.No)
                {
                    treeView2.Nodes.Add(r.Name, r.Name);
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ЕСЛИ", "ЕСЛИ");
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ТО", "ТО");
                    treeView2.Nodes[r.Name].Nodes.Add(r.Name + "ТК", "ТАК КАК");
                    foreach (Fact f in r.Reasons)
                    {
                        treeView2.Nodes[r.Name].Nodes[r.Name + "ЕСЛИ"].Nodes.Add(f.ToString());
                    }
                    treeView2.Nodes[r.Name].Nodes[r.Name + "ТО"].Nodes.Add(r.Result.ToString());
                    treeView2.Nodes[r.Name].Nodes[r.Name + "ТК"].Nodes.Add(r.Reasoning);
                    treeView2.Nodes[r.Name].ExpandAll();
                }
                //if (r.Worked == RuleWork.Signifi)
                //{
                //    treeView2.Nodes[r.Name].ImageIndex = 0;
                //    treeView2.Nodes[r.Name].SelectedImageIndex = 0;
                //}
                //else if (r.Worked == RuleWork.Unsignify)
                //{
                //    treeView2.Nodes[r.Name].ImageIndex = 1;
                //    treeView2.Nodes[r.Name].SelectedImageIndex = 1;
                //}
            }

            foreach (Rule r in es.WorkedRules)
            {
                if (r.Worked == RuleWork.Signifi)
                {
                    treeView1.Nodes.Add(r.Name, r.Name);
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ЕСЛИ", "ЕСЛИ");
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ТО", "ТО");
                    treeView1.Nodes[r.Name].Nodes.Add(r.Name + "ТК", "ТАК КАК");
                    foreach (Fact f in r.Reasons)
                    {
                        treeView1.Nodes[r.Name].Nodes[r.Name + "ЕСЛИ"].Nodes.Add(f.ToString());
                    }
                    treeView1.Nodes[r.Name].Nodes[r.Name + "ТО"].Nodes.Add(r.Result.ToString());
                    treeView1.Nodes[r.Name].Nodes[r.Name + "ТК"].Nodes.Add(r.Reasoning);
                    treeView1.Nodes[r.Name].ExpandAll();
                    //treeView1.Nodes[r.Name].ImageIndex = 0;
                }
            }

            listBox1.Items.Clear();
            listBox1.Items.Add("------ Установленные факты ------");
            foreach (Fact fact in es.Proved)
            {
                if (fact.Truly == Rightly.Yes && !listBox1.Items.Contains(fact.ToString()))
                {
                    listBox1.Items.Add(fact.ToString());
                }
            }
        }
Beispiel #11
0
 private void закрытьToolStripMenuItem_Click(object sender, EventArgs e)
 {
     tempES = null;
     FinishES();
     saved = true;
 }