Пример #1
0
        /// <summary>
        /// Accept button event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAccept_Click(object sender, EventArgs e)
        {
            newFactName = textBoxNameNode.Text;

            if (newFactName == "")
            {
                //Диалоговое окно - введите имя
                this.DialogResult = DialogResult.Cancel;
            }
            else if (fact_Nodes.FindFact(newFactName) != null)
            {
                //Диалоговое окно - введите другое имя
                this.DialogResult = DialogResult.Cancel;
            }
            else
            {
                foreach (var connectedNodes in checkedListBoxConnectedNodes.CheckedItems)
                {
                    Node newConnectedFact = fact_Nodes.FindFact(connectedNodes.ToString());
                    listChildrenOrParents.Add(newConnectedFact);
                }
                this.DialogResult = DialogResult.OK;
            }

            this.Close();
        }
        /// <summary>
        /// Add button event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            try
            {
                double ImputValue = Convert.ToDouble(textBoxImputValue.Text);
                if (ImputValue <= 0 || ImputValue >= 1)
                {
                    throw (new Exception("Значение должно быть между нулем и единицей"));
                }
                else
                {
                    int  selectedNodeID = listBoxNodes.SelectedIndex;
                    int  selectedProbID = listBoxProbabilities.SelectedIndex;
                    Node currectNode    = listNodes.FindFact(selectedNodeID);

                    currectNode.SetProbability(selectedProbID, ImputValue);

                    fillListBoxProbabilities(currectNode, true);
                    fillListBoxNodes();
                    IsProbabilityEntered();
                }
            }
            catch (Exception excep)
            {
                MessageBox.Show(excep.Message, "Ошибка!");
            }
        }
 /// <summary>
 /// Delete button event
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonDelete_Click(object sender, EventArgs e)
 {
     if (listBoxNodes.SelectedItem != null)
     {
         Node selectedNode = listNodes.FindFact(((Node)(listBoxNodes.SelectedItem)).NameFact);
         listNodes.Delete(selectedNode);
     }
     else if (listBoxEdges.SelectedItem != null)
     {
         if (listNodes.Delete(listNodes.Edges[listBoxEdges.SelectedIndex]))
         {
             MessageBox.Show("Неопознанная ошибка удаления!", "Ошибка!");
         }
     }
     else
     {
         MessageBox.Show("Выберите объект удаления", "Ошибка!");
     }
 }
Пример #4
0
        /// <summary>
        /// Create test Bayesian network
        /// </summary>
        void TestListNodes()
        {
            List <Node> Parents  = new List <Node>();
            List <Node> Children = new List <Node>();

            listNodes.AddFact("Пациент пожилого возраста");

            listNodes.AddFact("Пациент перенес операцию");

            Parents.Add(listNodes.FindFact("Пациент перенес операцию"));
            listNodes.AddFact("Патология аккомодации");
            listNodes.AddFactLeaf("Патология аккомодации", Parents);
            Parents.Clear();

            Parents.Add(listNodes.FindFact("Пациент пожилого возраста"));
            listNodes.AddFactLeaf("Помутнение хрусталика", Parents);
            Parents.Clear();

            Parents.Add(listNodes.FindFact("Патология аккомодации"));
            listNodes.AddFactLeaf("Развитие косоглазия", Parents);
            Parents.Clear();

            Parents.Add(listNodes.FindFact("Патология аккомодации"));
            Parents.Add(listNodes.FindFact("Помутнение хрусталика"));
            listNodes.AddFactLeaf("Синдром ухудшения зрения", Parents);
            Parents.Clear();

            Parents.Add(listNodes.FindFact("Синдром ухудшения зрения"));
            listNodes.AddFactLeaf("Повышенное давление", Parents);
            Parents.Clear();

            Parents.Add(listNodes.FindFact("Помутнение хрусталика"));
            listNodes.AddFactLeaf("Патологический рефлекс сетчатки", Parents);
            Parents.Clear();
            RefreshForm();

            //-------------------------------------Create test network
            listNodes.InitProbs();

            listNodes.Nodes[0].SetProbability(0, 0.01);

            listNodes.Nodes[1].SetProbability(0, 0.2);

            listNodes.Nodes[2].SetProbability(0, 0.16);
            listNodes.Nodes[2].SetProbability(1, 0.05);

            listNodes.Nodes[3].SetProbability(0, 0.1);
            listNodes.Nodes[3].SetProbability(1, 0.001);

            listNodes.Nodes[4].SetProbability(0, 0.2);
            listNodes.Nodes[4].SetProbability(1, 0.025);

            listNodes.Nodes[5].SetProbability(0, 0.95);
            //listNodes.Nodes[5].SetProbability(1, 0.04);
            listNodes.Nodes[5].SetProbability(1, 0.25);
            listNodes.Nodes[5].SetProbability(2, 0.9);
            listNodes.Nodes[5].SetProbability(3, 0.02);

            listNodes.Nodes[6].SetProbability(0, 0.4);
            listNodes.Nodes[6].SetProbability(1, 0.001);

            listNodes.Nodes[7].SetProbability(0, 0.99);
            listNodes.Nodes[7].SetProbability(1, 0.001);
        }