public void CreateNetwork() { List <ModelNode> completed = new List <ModelNode>(); NumberOfExamples = Variable.New <int>().Named("NofE"); Range N = new Range(NumberOfExamples).Named("N"); foreach (ModelNode node in nodes.Values) { DistributionsNode.CreateDistributionsNode(node, N); } foreach (ModelNode node in independentNodes.Values) { node.distributions.AddParents(); completed.Add(node); } while (completed.Count != nodes.Count) { foreach (ModelNode node in nodes.Values) { if (!completed.Contains(node)) { bool allParentsDone = true; foreach (ModelNode parent in node.parents) { if (!completed.Contains(parent)) { allParentsDone = false; break; } } if (allParentsDone) { node.distributions.AddParents(); completed.Add(node); } } } } }
public override void AddParents(int numberOfEntries) { ObservedNumerical = DistributionsNode.AddChildFromOneParent(node.parents[0].distributions.Observed, val).Named(node.name); }
public override void AddParents() { Observed = DistributionsNode.AddChildFromFourParents(node.parents[0].distributions.Observed, node.parents[1].distributions.Observed, node.parents[2].distributions.Observed, node.parents[3].distributions.Observed, CPT).Named(node.name); }