def find_path(start, goal): maze_ops = make_maze_ops() gps2.use(maze_ops) start_state = ('at '+str(start),) goal_state = ('at '+str(goal),) path = gps2.gps2(start_state, goal_state, maze_ops) print_path(path, start)
('at-middle-room', 'on-floor')), gps2.operator('push-chair-from-door-to-middle-room', ('chair-at-door', 'at-door'), ('chair-at-middle-room', 'at-middle-room'), ('chair-at-door', 'at-door')), gps2.operator('walk-from-door-to-middle-room', ('at-door', 'on-floor'), ('at-middle-room',), ('at-door',)), gps2.operator('grasp-bananas', ('at-bananas', 'empty-handed'), ('has-bananas',), ('empty-handed',)), gps2.operator('drop-ball', ('has-ball',), ('empty-handed',), ('has-ball',)), gps2.operator('eat-bananas', ('has-bananas',), ('empty-handed', 'not-hungry'), ('has-bananas', 'hungry')) ] gps2.use(banana_ops) print gps2.gps2( ('at-door', 'on-floor', 'has-ball', 'hungry', 'chair-at-door'), ('not-hungry',), banana_ops)
for item in l: r.append(on(item, 'table')) return r def all_top_is_space(l): r = [] for item in l: r.append(on('space', item)) return r # The simplest possible problem print "----- 1 -----" blocks = ['a','b'] ops = make_block_ops(blocks) gps2.use(ops) start1 = tuple(all_object_on_table(blocks) + all_top_is_space(blocks) + [on('space', 'table'),]) print start1 goal1 = [on('a', 'b'), on('b', 'table')] print gps2.gps2(start1, goal1, ops) print "" # 3 blocks print "----- 2 -----" blocks = ['a','b','c'] ops = make_block_ops(blocks) gps2.use(ops) start2 = tuple([on('a', 'b'), on('b', 'c'), on('c', 'table'), on('space', 'a'), on('space', 'table')]) print start2 goal2 = [on('a', 'table'), on('b', 'a')]