📄 doc.cs
字号:
#region 注释
//sumedge++;
//MessageBox.Show(sumedge.ToString());
/*XmlNodeList xmlNodes1=root.SelectNodes("/BNetNodes/*");
foreach(XmlNode node in xmlNodes1)
{
xmlNodes1=node.SelectNodes("Parents");
MessageBox.Show(xmlNodes1.Count.ToString());
}
//xmlNodes=node.SelectNodes("Parents");
//foreach(XmlNode node1 in xmlNodes)
*/
//MessageBox.Show(node.Name.ToString());
//this.Show();
#endregion
}
#endregion
}
private void toolStripButton10_Click(object sender, EventArgs e)
{
#region 权值批量输入代码
/*foreach (BNode1 node in myNodeArray)
{
if (node.BackColor == Color.DarkSeaGreen)
{
NodeProperties dlg = new NodeProperties(node.State);
dlg.textBox1.Text = node.Text;
dlg.textBox2.Text = node.Text;
dlg.ShowDialog();
if (dlg.DialogResult == DialogResult.OK)
{
node.Text = dlg.textBox1.Text;
node.Font = dlg.font;
node.BackColor = dlg.color;
tempColor = dlg.color;
}
}
}*/
if (this.Lines.Count == 0)
{
MessageBox.Show("您还没有添加边");
return;
}
else
{
frm_Wij_Bat frm = new frm_Wij_Bat();
frm.lines = this.Lines;
if (frm.ShowDialog() == DialogResult.OK)
{
for (int i = 0; i < frm.lines.Count; i++)
{
this.Lines[i].wij = frm.lines[i].wij;
}
this.arrYb = new ArrayList();
for (int i = 0; i < this.Lines.Count; i++)
{
this.arrYb.Add(this.Lines[i].wij);
}
}
}
#endregion
}
private void toolStripButton11_Click(object sender, EventArgs e)
{
#region 删除边的代码
for (int i = 0; i < Lines.Count; i++)
{
if (Lines[i].PenWidth == 5)
{
Lines.RemoveAt(i);
}
}
this.Invalidate();
#endregion
}
private void toolStripButton8_Click(object sender, EventArgs e)
{
#region 注释
/*Swatch_add sa = new Swatch_add();//这个按钮不在用于添加样本,而是用于添加 学习速率值
int sumofPar = 0;//输入节点数量
int sumofTar = 0;//输出节点数量
foreach (BNode1 node in this.myNodeArray)
{
if (node.indegree == 0)
{
sumofPar++;
}
if (node.outdegree == 0)
{
sumofTar++;
}
}
sa.num_of_TextBox = sumofPar;
sa.num_of_TextBox1 = sumofTar;
if (sa.ShowDialog() == DialogResult.OK)
{
}*/
#endregion
#region 样本学习速率的录入
frm_EtaSet frm = new frm_EtaSet();
frm.numericUpDown1.Value = (decimal)this.Eta;
if (frm.ShowDialog() == DialogResult.OK)
{
this.Eta = (double)frm.numericUpDown1.Value;
}
#endregion
}
private void Doc_MouseDoubleClick(object sender, MouseEventArgs e)
{
#region 添加权值代码
foreach (Line l in Lines)
{
if (((l.EndPoint.X > l.StartPoint.X && l.StartPoint.X < e.X && e.X < l.EndPoint.X) || (l.StartPoint.X > l.EndPoint.X && l.EndPoint.X < e.X && e.X < l.StartPoint.X)) && (l.yPositon(e.X) - e.Y) > -5 && (l.yPositon(e.X) - e.Y) < 5)
{
frm_wij frm = new frm_wij();
if (frm.ShowDialog() == DialogResult.OK)
{
l.wij = frm.maskedTextBox1.Text;
}
}
}
foreach (BNode1 node in myNodeArray)
{
if (node.IsInNode(e.Location)&&(node.indegree!=0))
{
frm_AndOr frm = new frm_AndOr();
if ((node.m_style == "no_style")||(node.m_style==""))
{
frm.index = -1;
}
else if (node.m_style == "Noisy_And")
{
frm.index = 0;
}
else if(node.m_style=="Noisy_Or")
{
frm.index = 1;
}
if (frm.ShowDialog() == DialogResult.OK)
{
if (frm.comboBox1.SelectedIndex == -1)
{
MessageBox.Show("您没有选择节点类型", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
node.m_style = frm.comboBox1.SelectedItem.ToString();
if (node.m_style == "Noisy_And")
{
node.BackColor = Color.DarkKhaki;
}
else
{
node.BackColor=Color.OrangeRed;
}
}
}
}
}
#endregion
}
private void toolStripButton9_Click_1(object sender, EventArgs e)
{
#region 自动生成样本
int sumOfNoWij=0;
int sumOfNoType=0;
foreach (Line l in this.Lines)
{
if (l.wij==null)
{
sumOfNoWij++;
}
}
foreach (BNode1 node in this.myNodeArray)
{
if ((node.indegree != 0) && ((node.m_style == "no_style")||(node.m_style=="")))
{
sumOfNoType++;
}
}
if (this.myNodeArray.Count == 0)
{
MessageBox.Show("不存在贝叶斯网络,\r\n请新建或打开一个文件!");
return;
}
else
{
if (sumOfNoType != 0)
{
MessageBox.Show("请您设置除输入层节点外的所有节点类型!");
}
else if (sumOfNoWij != 0)
{
MessageBox.Show("请您设置所有边的权值!");
}
else
{
frm_Auto_Swatch frm = new frm_Auto_Swatch();
frm.myNodeArray = this.myNodeArray;
frm.Lines = this.Lines;
if (frm.ShowDialog() == DialogResult.OK)
{
this.arrayA = frm.arryA;
this.arrR = frm.sumofR;
this.arrC = frm.sumofC;
}
}
}
#endregion
}
#region 注释
//------------------------------------------------------------------
// This function splits a list of functions(因子函数,在这里一个因子函数对应一个节点的条件概率表) into buckets in accordance
// with the given ordering of n variables in the network.
// Bucket i is a list of type Tlist<Function*> that contains the pointers
// to all functions whose highest ordered argument is the
// variable that appears i-th in the given ordering.
//------------------------------------------------------------------
/* public void highestIndex(int[] ord)
{
ord=this.minDegree();
}
public void createBucket()
{
int Nvars=myNodeArray.Count;
ArrayList buckets=new ArrayList(); // one extra for constatnts (topmost)
//constants=0;
//将因子函数放入到它的序号最大的变量所对应的桶中
}
private class Bucket
{
public Bucket(int i)
{
id = i;
parentNodes = new ArrayList();
childBuckets = new ArrayList();
}
public int id;
public ArrayList parentNodes;
public ArrayList childBuckets;
}
ArrayList m_buckets = new ArrayList();
private void PrepareBuckets()
{
//ArrayList nodes = m_net.Nodes;
for(int i=0; i<myNodeArray.Count; ++i)
m_buckets.Add(new Bucket(i));
// go through all buckets from buttom up
for(int i=myNodeArray.Count-1; i>=0; --i)
{
//BNode theNode = (BNode)nodes[i];
Bucket theBuck = (Bucket)m_buckets[i];
foreach(BNode1 node in myNodeArray)
{
for(int j=0;j<this.Parent(myNodeArray[i].name).Count;j++)
if(node.name==(this.Parent(myNodeArray[i].name))[j].ToString())
theBuck.parentNodes.Add(node.name);
}
foreach(Bucket nxtBuck in theBuck.childBuckets)
{
//foreach(BNode node in nxtBuck.parentNodes)
//if( node.ID!=i && !theBuck.parentNodes.Contains(node) )
//theBuck.parentNodes.Add(node);
foreach(BNode1 node in myNodeArray)
for(int j=0;j<nxtBuck.parentNodes.Count;j++)
if( node.ID!=i && !theBuck.parentNodes.Contains(node.name) )
theBuck.parentNodes.Add(node.name);
}
int max=-1;
for(int j=0;j<theBuck.parentNodes.Count;j++)
foreach(BNode1 node in myNodeArray)
if(node.name==theBuck.parentNodes[j].ToString())
if( node.ID > max )
max = node.ID;
int max_nid=max;
//int max_nid = FindMaxNodeId(theBuck.parentNodes);
if( max_nid >= 0 )
((Bucket)m_buckets[max_nid-1]).childBuckets.Add(theBuck);
}
}
protected double Sum(int nid, int para)
{
//BNode theNode = (BNode)m_net.Nodes[nid];
Bucket theBuck = (Bucket)m_b
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -