Exemplo n.º 1
0
        public void CloneTest1()
        {
            MainOrganization.Models.Beliefs.On = true;
            _knowledge = new Knowledge(Network, MainOrganization.Models, "1", 1);
            var clone = (Knowledge)_knowledge.Clone();

            Assert.AreEqual(_knowledge.Length, clone.Length);
            Assert.AreEqual(_knowledge.AssociatedBelief, clone.AssociatedBelief);
        }
Exemplo n.º 2
0
    private void Visit(FlowNode node, Knowledge knowledge)
    {
        // Memoize the results so we don't do more work than necessary. This is
        // also required to handle loops without hanging.
        Result result = new Result(node, knowledge);
        if (results.Contains(result)) {
            return;
        }
        results.Add(result);

        // Add to the knowledge flowing through this path, but stop if flow stops
        knowledge = knowledge.Clone();
        if (!node.Update(knowledge)) {
            return;
        }

        // Merge that knowledge into the total knowledge for this node
        if (node.knowledge != null) {
            node.knowledge.UnionWith(knowledge);
        } else {
            node.knowledge = knowledge.Clone();
        }

        // Propagate flow to next links
        foreach (FlowNode next in node.next) {
            Visit(next, knowledge);
        }
    }
Exemplo n.º 3
0
        public override Predicate Clone()
        {
            KnowPredicate kp = new KnowPredicate(Knowledge.Clone());

            return(kp);
        }