def execute(self, agent, x, y, env):
        newEnv = Environment()
        prereqs = [("holding", agent, x)]
        deletions = prereqs
        additions = [("empty", agent), ("on", x, y), ("clear", x)]

        if not y == "ground":
            prereqs.append(("clear", y))

        for prereq in prereqs:
            if not prereq in env.relations:
                return None

        newRelations = env.relations[:]

        for deletion in deletions:
            newRelations.remove(deletion)

        for addition in additions:
            newRelations.append(addition)

        newEnv.relations = newRelations;
        newEnv.steps = env.steps[:]

        newEnv.steps.append(("putDown", agent, x, y))
        return newEnv
Пример #2
0
def findNextEnv(prereqs, additions, deletions, relations):
        for prereq in prereqs:
            if not prereq in relations:
                return None

        newRelations = relations[:]
        for deletion in deletions:
            newRelations.remove(deletion)

        for addition in additions:
            newRelations.append(addition)
        newEnv = Environment()
        newEnv.relations = newRelations
        return newEnv