/// <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("Выберите объект удаления", "Ошибка!"); } }
/// <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); }