Exemplo n.º 1
0
def p_typed_variables_lst(p):
    '''typed_variables_lst : variables_lst HYPHEN type typed_variables_lst
                           | variables_lst HYPHEN type'''
    if len(p) == 4:
        p[0] = [Term.variable(name, p[3]) for name in p[1]]
    elif len(p) == 5:
        p[0] = [Term.variable(name, p[3]) for name in p[1]] + p[4]
Exemplo n.º 2
0
def p_variables_lst(p):
    '''variables_lst : variable variables_lst
                     | variable'''
    if len(p) == 2:
        p[0] = [Term.variable(p[1])]
    elif len(p) == 3:
        p[0] = [Term.variable(p[1])] + p[2]
Exemplo n.º 3
0
def add_to_domain(domain):
    ############################################
    # Let's now create  TYPES AND PREDICATES
    ############################################
    domain.add_type('boxes')
    domain.add_pred('open', [('?x', 'boxes'), ('?z', 'block')])
    domain.del_pred('handempty', 0)

    # print(repr(domain.operators[3]))


    ############################################
    # Let's now create an OPERATOR
    ############################################
    # print(domain.operators[3].precond)
    params = [Term.variable('?x', type='blocks'), Term.variable('?y', type='blocks')]

    precond=[]
    precond.append(Literal(Predicate('=', [Term.variable('?x'), Term.variable('?y')]), False))
    precond.append(Literal(Predicate('on', [Term.variable('?x'), Term.variable('?y')]), True))
    precond.append(Literal(Predicate('clear', [Term.variable('?x')]), True))
    precond.append(Literal(Predicate('handempty', []), True))

    # print(domain.operators[3].effects)
    effect=[]
    effect.append((1.0, Literal(Predicate('holding', [Term.variable('?x')]), True)))
    effect.append((1.0, Literal(Predicate('clear', [Term.variable('?y')]), True)))
    effect.append((1.0, Literal(Predicate('clear', [Term.variable('?x')]), False)))
    effect.append((1.0, Literal(Predicate('handempty', []), False)))
    effect.append((1.0, Literal(Predicate('on', [Term.variable('?x'), Term.variable('?y')]), False)))
    # print(repr(effect))

    domain.add_action('pick-up-b', params, precond, effect)