示例#1
0
def test_unifies():
    assert not agentspeak.unifies(True, 1)

    assert agentspeak.unifies(3, 3.0)
    assert agentspeak.unifies(True, True)
    assert agentspeak.unifies(5, agentspeak.Wildcard())
    assert agentspeak.unifies((1, 2), (1, agentspeak.Wildcard()))
    assert agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var()))

    assert agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep"))
    assert agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var())

    X = agentspeak.Var()
    assert agentspeak.unifies(agentspeak.Literal("foo", (X, X)), agentspeak.Literal("foo", (1, 1)))
    assert not agentspeak.unifies(agentspeak.Literal("bar", (X, X)), agentspeak.Literal("bar", (1, 2)))
示例#2
0
    def test_unifies(self):
        self.assertFalse(agentspeak.unifies(True, 1))

        self.assertTrue(agentspeak.unifies(3, 3.0))
        self.assertTrue(agentspeak.unifies(True, True))
        self.assertTrue(agentspeak.unifies(5, agentspeak.Wildcard()))
        self.assertTrue(agentspeak.unifies((1, 2), (1, agentspeak.Wildcard())))
        self.assertTrue(
            agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var())))

        self.assertTrue(
            agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep")))
        self.assertTrue(
            agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var()))

        X = agentspeak.Var()
        self.assertTrue(
            agentspeak.unifies(agentspeak.Literal("foo", (X, X)),
                               agentspeak.Literal("foo", (1, 1))))
        self.assertFalse(
            agentspeak.unifies(agentspeak.Literal("bar", (X, X)),
                               agentspeak.Literal("bar", (1, 2))))
示例#3
0
    def _set_belief(self, name, *args):
        term = agentspeak.Literal(name, tuple(args), PERCEPT_TAG)

        found = False

        for belief in list(self.beliefs[term.literal_group()]):
            if agentspeak.unifies(term, belief):
                found = True
            else:
                self.call(agentspeak.Trigger.removal,
                          agentspeak.GoalType.belief, belief,
                          agentspeak.runtime.Intention())

        if not found:
            self.call(agentspeak.Trigger.addition, agentspeak.GoalType.belief,
                      term, agentspeak.runtime.Intention())
示例#4
0
 def set_belief(self, name: str, *args):
     """Set an agent's belief. If it already exists, updates it."""
     new_args = ()
     for x in args:
         if type(x) == str:
             new_args += (asp.Literal(x),)
         else:
             new_args += (x,)
     term = asp.Literal(name, tuple(new_args), PERCEPT_TAG)
     found = False
     for belief in list(self.agent.bdi_agent.beliefs[term.literal_group()]):
         if asp.unifies(term, belief):
             found = True
         else:
             self.agent.bdi_intention_buffer.append((asp.Trigger.removal, asp.GoalType.belief, belief,
                                                     asp.runtime.Intention()))
     if not found:
         self.agent.bdi_intention_buffer.append((asp.Trigger.addition, asp.GoalType.belief, term,
                                                 asp.runtime.Intention()))