本文整理汇总了Python中utils.expr函数的典型用法代码示例。如果您正苦于以下问题:Python expr函数的具体用法?Python expr怎么用?Python expr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了expr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: refinements
def refinements(hla, state, library): # TODO - refinements may be (multiple) HLA themselves ...
"""
state is a Problem, containing the current state kb
library is a dictionary containing details for every possible refinement. eg:
{
'HLA': ['Go(Home,SFO)', 'Go(Home,SFO)', 'Drive(Home, SFOLongTermParking)', 'Shuttle(SFOLongTermParking, SFO)', 'Taxi(Home, SFO)'],
'steps': [['Drive(Home, SFOLongTermParking)', 'Shuttle(SFOLongTermParking, SFO)'], ['Taxi(Home, SFO)'], [], [], []],
# empty refinements ie primitive action
'precond': [['At(Home), Have(Car)'], ['At(Home)'], ['At(Home)', 'Have(Car)'], ['At(SFOLongTermParking)'], ['At(Home)']],
'effect': [['At(SFO)'], ['At(SFO)'], ['At(SFOLongTermParking)'], ['At(SFO)'], ['At(SFO)'], ['~At(Home)'], ['~At(Home)'], ['~At(Home)'], ['~At(SFOLongTermParking)'], ['~At(Home)']]
}
"""
e = Expr(hla.name, hla.args)
indices = [i for i, x in enumerate(library['HLA']) if expr(x).op == hla.name]
for i in indices:
# TODO multiple refinements
precond = []
for p in library['precond'][i]:
if p[0] == '~':
precond.append(expr('Not' + p[1:]))
else:
precond.append(expr(p))
effect = []
for e in library['effect'][i]:
if e[0] == '~':
effect.append(expr('Not' + e[1:]))
else:
effect.append(expr(e))
action = HLA(library['steps'][i][0], precond, effect)
if action.check_precond(state.init, action.args):
yield action
示例2: __init__
def __init__(self, goals, initial_clauses=None):
if initial_clauses is None:
initial_clauses = []
initial_clauses = [expr(c) if not isinstance(c, Expr) else c for c in initial_clauses]
self.clause_set = frozenset(initial_clauses)
goals = [expr(g) if not isinstance(g, Expr) else g for g in goals]
self.goal_clauses = frozenset(goals)
示例3: test_extend_example
def test_extend_example():
assert list(test_network.extend_example({x: A, y: B}, expr('Conn(x, z)'))) == [
{x: A, y: B, z: B}, {x: A, y: B, z: D}]
assert list(test_network.extend_example({x: G}, expr('Conn(x, y)'))) == [{x: G, y: I}]
assert list(test_network.extend_example({x: C}, expr('Conn(x, y)'))) == []
assert len(list(test_network.extend_example({}, expr('Conn(x, y)')))) == 10
assert len(list(small_family.extend_example({x: expr('Andrew')}, expr('Father(x, y)')))) == 2
assert len(list(small_family.extend_example({x: expr('Andrew')}, expr('Mother(x, y)')))) == 0
assert len(list(small_family.extend_example({x: expr('Andrew')}, expr('Female(y)')))) == 6
示例4: test_have_cake_and_eat_cake_too
def test_have_cake_and_eat_cake_too():
p = have_cake_and_eat_cake_too()
assert p.goal_test() is False
solution = [expr("Eat(Cake)"),
expr("Bake(Cake)")]
for action in solution:
p.act(action)
assert p.goal_test()
示例5: test_spare_tire
def test_spare_tire():
p = spare_tire()
assert p.goal_test() is False
solution = [expr("Remove(Flat, Axle)"),
expr("Remove(Spare, Trunk)"),
expr("PutOn(Spare, Axle)")]
for action in solution:
p.act(action)
assert p.goal_test()
示例6: test_three_block_tower
def test_three_block_tower():
p = three_block_tower()
assert p.goal_test() is False
solution = [expr("MoveToTable(C, A)"),
expr("Move(B, Table, C)"),
expr("Move(A, Table, B)")]
for action in solution:
p.act(action)
assert p.goal_test()
示例7: to_cnf
def to_cnf(s):
"""Convert a propositional logical sentence to conjunctive normal form.
That is, to the form ((A | ~B | ...) & (B | C | ...) & ...) [p. 253]
>>> to_cnf('~(B | C)')
(~B & ~C)
"""
s = expr(s)
if isinstance(s, str):
s = expr(s)
s = eliminate_implications(s) # Steps 1, 2 from p. 253
s = move_not_inwards(s) # Step 3
return distribute_and_over_or(s) # Step 4
示例8: test_double_tennis
def test_double_tennis():
p = double_tennis_problem()
assert p.goal_test() is False
solution = [expr("Go(A, RightBaseLine, LeftBaseLine)"),
expr("Hit(A, Ball, RightBaseLine)"),
expr("Go(A, LeftNet, RightBaseLine)")]
for action in solution:
p.act(action)
assert p.goal_test()
示例9: test_new_clause
def test_new_clause():
target = expr('Open(x, y)')
examples_pos = [{x: B}, {x: A}, {x: G}]
examples_neg = [{x: C}, {x: F}, {x: I}]
clause = test_network.new_clause([examples_pos, examples_neg], target)[0][1]
assert len(clause) == 1 and clause[0].op == 'Conn' and clause[0].args[0] == x
target = expr('Flow(x, y)')
examples_pos = [{x: B}, {x: D}, {x: E}, {x: G}]
examples_neg = [{x: A}, {x: C}, {x: F}, {x: I}, {x: H}]
clause = test_network.new_clause([examples_pos, examples_neg], target)[0][1]
assert len(clause) == 2 and \
((clause[0].args[0] == x and clause[1].args[1] == x) or \
(clause[0].args[1] == x and clause[1].args[0] == x))
示例10: have_cake_and_eat_cake_too
def have_cake_and_eat_cake_too():
init = [expr('Have(Cake)')]
def goal_test(kb):
required = [expr('Have(Cake)'), expr('Eaten(Cake)')]
for q in required:
if kb.ask(q) is False:
return False
return True
##Actions
# Eat cake
precond_pos = [expr('Have(Cake)')]
precond_neg = []
effect_add = [expr('Eaten(Cake)')]
effect_rem = [expr('Have(Cake)')]
eat_cake = Action(expr('Eat(Cake)'), [precond_pos, precond_neg], [effect_add, effect_rem])
#Bake Cake
precond_pos = []
precond_neg = [expr('Have(Cake)')]
effect_add = [expr('Have(Cake)')]
effect_rem = []
bake_cake = Action(expr('Bake(Cake)'), [precond_pos, precond_neg], [effect_add, effect_rem])
return PDLL(init, [eat_cake, bake_cake], goal_test)
示例11: from_action
def from_action(cls, action):
op = action.name
args = action.args
preconds = []
for p in action.precond:
precond_op = p.op.replace('Not', '~')
precond_args = [repr(a) for a in p.args]
preconds.append(expr(build_expr_string(precond_op, precond_args)))
effects = []
for e in action.effect:
effect_op = e.op.replace('Not', '~')
effect_args = [repr(a) for a in e.args]
effects.append(expr(build_expr_string(effect_op, effect_args)))
return cls(Expr(op, *args), preconds, effects)
示例12: distribute_and_over_or
def distribute_and_over_or(s):
"""Given a sentence s consisting of conjunctions and disjunctions
of literals, return an equivalent sentence in CNF.
>>> distribute_and_over_or((A & B) | C)
((A | C) & (B | C))
"""
s = expr(s)
if s.op == '|':
s = associate('|', s.args)
if s.op != '|':
return distribute_and_over_or(s)
if len(s.args) == 0:
return False
if len(s.args) == 1:
return distribute_and_over_or(s.args[0])
conj = first(arg for arg in s.args if arg.op == '&')
if not conj:
return s
others = [a for a in s.args if a is not conj]
rest = associate('|', others)
return associate('&', [distribute_and_over_or(c | rest)
for c in conj.args])
elif s.op == '&':
return associate('&', list(map(distribute_and_over_or, s.args)))
else:
return s
示例13: tt_true
def tt_true(s):
"""Is a propositional sentence a tautology?
>>> tt_true('P | ~P')
True
"""
s = expr(s)
return tt_entails(True, s)
示例14: test_graph_call
def test_graph_call():
pddl = spare_tire()
negkb = FolKB([expr('At(Flat, Trunk)')])
graph = Graph(pddl, negkb)
levels_size = len(graph.levels)
graph()
assert levels_size == len(graph.levels) - 1
示例15: convert
def convert(self, clauses):
"""Converts strings into exprs"""
if not isinstance(clauses, Expr):
if len(clauses) > 0:
clauses = expr(clauses)
else:
clauses = []
try:
clauses = conjuncts(clauses)
except AttributeError:
clauses = clauses
new_clauses = []
for clause in clauses:
if clause.op == '~':
new_clauses.append(expr('Not' + str(clause.args[0])))
else:
new_clauses.append(clause)
return new_clauses