def test_local_beam_search(): initial = 0 goal = 10 limits = (-goal, goal) p = AnnotatedProblem( EasyProblem(initial, initial_cost=initial, extra=limits)) sol = next(local_beam_search(p, graph=False)) assert abs(sol.state_node.state - limits[0]) <= 0.1 p2 = HillProblem(initial, goal=goal, initial_cost=initial, extra=limits) sol = next(local_beam_search(p2)) assert abs(sol.state_node.state - goal) <= 0.1 p3 = HillProblemNoGoalTest(initial, goal=goal, initial_cost=initial, extra=limits) sol = next(local_beam_search(p3)) assert abs(sol.state_node.state - goal) <= 0.1 p4 = AnnotatedProblem( HillProblem(initial, goal=initial, initial_cost=initial, extra=limits)) sol = next(local_beam_search(p4)) assert p4.nodes_expanded == 0 assert p4.goal_tests == 1 assert abs(sol.state_node.state - initial) <= 0.1 p5 = AnnotatedProblem(PlateauProblem(initial)) sol = next(local_beam_search(p5, beam_width=2))
def test_local_beam_search(): initial = 0 goal = 10 limits = (-goal, goal) p = AnnotatedProblem(EasyProblem(initial, initial_cost=initial, extra=limits)) sol = next(local_beam_search(p, graph_search=False)) assert abs(sol.state - limits[0]) <= 0.1
def beam2(problem): return local_beam_search(problem, beam_width=2)
def local_beam_width2(problem): return local_beam_search(problem, beam_width=2)
def beam2(problem): return local_beam_search(problem, beam_width=2, cost_limit=0)
def beam1(problem): return local_beam_search(problem, beam_width=1)