AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
policy_based_flaw_generator.h
1#ifndef PROBFD_CARTESIAN_POLICY_BASED_FLAW_GENERATOR_H
2#define PROBFD_CARTESIAN_POLICY_BASED_FLAW_GENERATOR_H
3
4#include "probfd/cartesian_abstractions/flaw.h"
5#include "probfd/cartesian_abstractions/flaw_generator.h"
6#include "probfd/cartesian_abstractions/types.h"
7
8#include "downward/utils/timer.h"
9
10#include <memory>
11#include <optional>
12#include <vector>
13
14namespace utils {
15class CountdownTimer;
16class LogProxy;
17} // namespace utils
18
19namespace probfd {
20class ProbabilisticTaskProxy;
21}
22
23namespace probfd::cartesian_abstractions {
24class AbstractState;
25class CartesianAbstraction;
26class CartesianHeuristic;
27class PolicyGenerator;
28class PolicyFlawFinder;
29} // namespace probfd::cartesian_abstractions
30
31namespace probfd::cartesian_abstractions {
32
37 std::unique_ptr<PolicyGenerator> policy_generator_;
38 std::unique_ptr<PolicyFlawFinder> policy_flaw_finder_;
39
40 utils::Timer find_policy_timer_ = utils::Timer(true);
41 utils::Timer find_flaw_timer_ = utils::Timer(true);
42
43 std::unique_ptr<Solution> find_solution(
44 CartesianAbstraction& abstraction,
45 const AbstractState* init,
46 CartesianHeuristic& heuristic,
47 utils::CountdownTimer& timer);
48
49 std::optional<Flaw> find_flaw(
50 const ProbabilisticTaskProxy& task_proxy,
51 const std::vector<int>& domain_sizes,
52 CartesianAbstraction& abstraction,
53 Solution& solution,
54 utils::LogProxy& log,
55 utils::CountdownTimer& timer);
56
57public:
59 PolicyGenerator* policy_generator,
60 PolicyFlawFinder* policy_flaw_finder);
61
63
64 std::optional<Flaw> generate_flaw(
65 const ProbabilisticTaskProxy& task_proxy,
66 const std::vector<int>& domain_sizes,
67 CartesianAbstraction& abstraction,
68 const AbstractState* init_id,
69 CartesianHeuristic& heuristic,
70 utils::LogProxy& log,
71 utils::CountdownTimer& timer) override;
72
73 void notify_split() override;
74
75 void print_statistics(utils::LogProxy& log) override;
76};
77
78class ILAOFlawGeneratorFactory : public FlawGeneratorFactory {
79 int max_search_states_;
80
81public:
82 explicit ILAOFlawGeneratorFactory(int max_search_states);
83
84 std::unique_ptr<FlawGenerator> create_flaw_generator() override;
85};
86
87} // namespace probfd::cartesian_abstractions
88
89#endif // PROBFD_CARTESIAN_POLICY_BASED_FLAW_GENERATOR_H
Represents a deterministic, stationary, partial policy.
Definition solver_interface.h:16
Proxy class used to inspect a probabilistic planning task.
Definition task_proxy.h:194
Find flaws in the abstraction.
Definition flaw_generator.h:31
Find flaws using ILAO*.
Definition policy_based_flaw_generator.h:36
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8