Пример #1
0
def test_lm_cut_mark_single_goal():
    task = _get_intermediate_task()
    heuristic = LmCutHeuristic(task)
    heuristic.compute_hmax(task.initial_state)
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    assert {f.name
            for f in heuristic.goal_plateau} == {heuristic.explicit_goal, 'g'}
Пример #2
0
def test_lm_cut_compute_single_cut():
    task1 = _get_intermediate_task_two_paths()
    heuristic = LmCutHeuristic(task1)
    heuristic.compute_hmax(task1.initial_state)
    heuristic.goal_plateau.clear()
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    cut = heuristic.find_cut(task1.initial_state)
    assert [op.name for op in cut] == ["op4"]
Пример #3
0
def test_lm_cut_compute_single_cut():
    task1 = _get_intermediate_task_two_paths()
    heuristic = LmCutHeuristic(task1)
    heuristic.compute_hmax(task1.initial_state)
    heuristic.goal_plateau.clear()
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    cut = heuristic.find_cut(task1.initial_state)
    assert [op.name for op in cut] == ['op4']
Пример #4
0
def test_lm_cut_mark_multiple_goal():
    task = _get_intermediate_task()
    heuristic = LmCutHeuristic(task)
    heuristic.compute_hmax(task.initial_state)
    # artificially alter operator costs to get a larger goal plateau
    heuristic.relaxed_ops['op4'].cost = 0.
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    assert ({f.name for f in heuristic.goal_plateau} in
            [{heuristic.explicit_goal, 'v4', 'g'},
             {heuristic.explicit_goal, 'v5', 'g'}])
Пример #5
0
def test_two_times_hmax_same_result():
    task = _get_intermediate_task()
    heuristic = LmCutHeuristic(task)
    heuristic.compute_hmax(task.initial_state)
    heuristic.compute_hmax(task.initial_state)
    # artificially alter operator costs to get a larger goal plateau
    heuristic.relaxed_ops["op4"].cost = 0.0
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    assert {f.name for f in heuristic.goal_plateau} in [
        {heuristic.explicit_goal, "v4", "g"},
        {heuristic.explicit_goal, "v5", "g"},
    ]
Пример #6
0
def test_lm_cut_at_goal():
    task = _get_simple_task_at_goal()
    heuristic = LmCutHeuristic(task)
    h_val = heuristic(make_root_node(task.initial_state))
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    assert h_val == 0.0
Пример #7
0
def test_lm_cut_at_goal():
    task = _get_simple_task_at_goal()
    heuristic = LmCutHeuristic(task)
    h_val = heuristic(make_root_node(task.initial_state))
    heuristic.compute_goal_plateau(heuristic.explicit_goal)
    assert h_val == 0.