Exemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
 public override void AddParents(int numberOfEntries)
 {
     ObservedNumerical = DistributionsNode.AddChildFromOneParent(node.parents[0].distributions.Observed, val).Named(node.name);
 }
Exemplo n.º 3
0
 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);
 }