Esempio n. 1
0
def moveb_m(state,goal):
    """
    This method implements the following block-stacking algorithm:
    If there's a block that can be moved to its final position, then
    do so and call move_blocks recursively. Otherwise, if there's a
    block that needs to be moved and can be moved to the table, then 
    do so and call move_blocks recursively. Otherwise, no blocks need
    to be moved.
    """
    
    for b1 in all_blocks(state):
    	print("___block: " + b1)
    	raw_input('Enter ...')
        s = status(b1,state,goal)
        if s == 'move-to-table':
        	print("___move one")
        	return [('move_one',b1,'table'),('move_blocks',goal)]
        elif s == 'move-to-block':
            return [('move_one',b1,goal_pos_dic[b1]), ('move_blocks',goal)]
        else:
        	print("continue")
        	continue
    #
    # if we get here, no blocks can be moved to their final locations
    b1 = pyhop.find_if(lambda x: status(x,state,goal) == 'waiting', all_blocks(state))
    if b1 != None:
        return [('move_one',b1,'table'), ('move_blocks',goal)]
    #
    # if we get here, there are no blocks that need moving
    return []
Esempio n. 2
0
def moveb_m(state,goal):
    """
    This method implements the following block-stacking algorithm:
    If there's a block that can be moved to its final position, then
    do so and call move_blocks recursively. Otherwise, if there's a
    block that needs to be moved and can be moved to the table, then 
    do so and call move_blocks recursively. Otherwise, no blocks need
    to be moved.
    """


    for b1 in all_blocks(state):
        s = status(b1,state,goal)
        if s == 'move-to-table':
            return [('move_one',b1,'table'),('move_blocks',goal)]
        elif s == 'move-to-block':
            return [('move_one',b1,goal.pos[b1]), ('move_blocks',goal)]
        else:
            continue
    #
    # if we get here, no blocks can be moved to their final locations
    b1 = pyhop.find_if(lambda x: status(x,state,goal) == 'waiting', all_blocks(state))
    if b1 != None:
        return [('move_one',b1,'table'), ('move_blocks',goal)]
    #
    # if we get here, there are no blocks that need moving
    return []
def moveb_m(state, goal):
    """
    This method implements the following block-stacking algorithm:
    If there's a block that can be moved to its final position, then
    do so and call move_blocks recursively. Otherwise, if there's a
    block that needs to be moved and can be moved to the table, then
    do so and call move_blocks recursively. Otherwise, no blocks need
    to be moved.
    """
    blocks = blocks_according_to_goal(state, goal)
    #print(blocks)
    for b1 in blocks:
        s = status(b1, state, goal)
        #	print("status for block" + str(b1) + "is " + str(s))
        if s == 'move-to-table':
            return [('move_one', b1, 'table'), ('move_blocks', goal)]
        elif s == 'move-to-block':
            return [('move_one', b1, goal.pos[b1]), ('move_blocks', goal)]
        elif s == 'move-to-block-with-mortar':
            return [('move_one_mortar', b1, goal.pos[b1]),
                    ('move_blocks', goal)]
        elif s == 'get-from-store':
            return [('move_from_store', b1, goal.pos[b1]),
                    ('move_blocks', goal)]
        else:
            continue
    #
    # if we get here, no blocks can be moved to their final locations
    b1 = pyhop.find_if(lambda x: status(x, state, goal) == 'waiting',
                       all_blocks(state))
    if b1 != None:
        return [('move_one', b1, 'table'), ('move_blocks', goal)]
    #
    # if we get here, there are no blocks that need moving
    return []
Esempio n. 4
0
def moveb_m(state,goal):
	"""
	This method implements the following block-stacking algorithm:
	If there's a block that can be moved to its final position, then
	do so and call move_blocks recursively. Otherwise, if there's a
	block that needs to be moved and can be moved to the table, then 
	do so and call move_blocks recursively. Otherwise, no blocks need
	to be moved.
	"""
	print state
	for b1 in all_blocks(state):
		s = status(b1,state,goal)
		print b1, "stat:", s
		if s == 'move-to-table':
			return [('move_one',b1,'table'),('move_blocks',goal)]
		elif s == 'move-to-block':
			return [('move_one',b1,goal.pos[b1]), ('move_blocks',goal)]
		else:
			continue
	
	b1 = pyhop.find_if(lambda x: status(x,state,goal) == 'waiting', all_blocks(state))
	if b1 != None:
		return [('move_one',b1,'table'), ('move_blocks',goal)]
	#
	# if we get here, there are no blocks that need moving
	return []
Esempio n. 5
0
def moveb_m(state,goal):
    """
    This method implements the following block-stacking algorithm:
    If there's a block that can be moved to its final position, then
    do so and call move_blocks recursively. Otherwise, if there's a
    block that needs to be moved and can be moved to the table, then
    do so and call move_blocks recursively. Otherwise, no blocks need
    to be moved.
    """
    blocks = blocks_according_to_goal(state,goal)
    #print(blocks)
    for b1 in blocks:
	s = status(b1,state,goal)
#	print("status for block" + str(b1) + "is " + str(s))
        if s == 'move-to-table':
            return [('move_one',b1,'table'),('move_blocks',goal)]
        elif s == 'move-to-block':
            return [('move_one',b1,goal.pos[b1]), ('move_blocks',goal)]
        elif s == 'move-to-block-with-mortar':
            return [('move_one_mortar',b1,goal.pos[b1]), ('move_blocks',goal)]
	elif s == 'get-from-store':
            return [('move_from_store',b1,goal.pos[b1]), ('move_blocks',goal)]
        else:
            continue
    #
    # if we get here, no blocks can be moved to their final locations
    b1 = pyhop.find_if(lambda x: status(x,state,goal) == 'waiting', all_blocks(state))
    if b1 != None:
        return [('move_one',b1,'table'), ('move_blocks',goal)]
    #
    # if we get here, there are no blocks that need moving
    return []