def gps(initial_states, goal_states, operators, beam_width=10): prefix = 'Executing ' for operator in operators: operator['add'].append(prefix + operator['action']) def get_successors(states): return successors(states, operators) def goal_reached(states): for goal in goal_states: if goal not in states: return False return True def cost(states): sum = len([s for s in states if s.startswith(prefix)]) sum += len([g for g in goal_states if g not in states]) return sum final = beam_search(initial_states, goal_reached, get_successors, cost, beam_width) return [state for state in final if state.startswith(prefix)]
def alg(start, done, next): return search.beam_search(start, done, next, cost, 3)