def start(self, time, observations): """ return first action given the first observations """ def planner(viewer): solve(INIT, GOAL, ACTIONS, viewer=viewer) from strips2_show import demo_planner plan = demo_planner(planner) if plan is not None: print_plan(plan) return 0
def main(): w = create_world(None) def planner(v): global viewer viewer = v # Did someone start us at the goal? already_solved = w.goal_reached() print "Goal already solved? {0}".format(already_solved) if not already_solved: print "Solving..." solution = linear_solver(w) if solution is None: print "No solution found :(" else: print "Solved!" print_plan(solution) from strips2_show import demo_planner demo_planner(planner)
viewer.show_state(state, DEPTH-depth, plan) # try all actions with all parameters # WARNING: this could get big quickly! for (do, undo) in actions: for Disk in DISKS: for Source in set(LITERALS) - set([Disk]): for Dest in set(LITERALS) - set([Disk, Source]): action = (do, Disk, Source, Dest) if do(state, Disk, Source, Dest): new_state = frozenset(state) # yield all of the states and plans encountered below us sln = solve(new_state, goal, actions, depth = depth - 1, plan = plan + [action], viewer=viewer) if sln is not None: return sln else: # undo the action if it didn't work (backtrack) undo(state, Disk, Source, Dest) return None def print_plan(plan): for action in plan: print "%s(%s)" % (action[0].__name__, ', '.join(action[1:])) if __name__ == "__main__": def planner(viewer): solve(INIT, GOAL, ACTIONS, viewer=viewer) from strips2_show import demo_planner plan = demo_planner(planner) if plan is not None: print_plan(plan)