AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
adaptive_flaw_generator.h
1#ifndef PROBFD_CARTESIAN_ADAPTIVE_FLAW_GENERATOR_H
2#define PROBFD_CARTESIAN_ADAPTIVE_FLAW_GENERATOR_H
3
4#include "probfd/cartesian_abstractions/flaw.h"
5#include "probfd/cartesian_abstractions/flaw_generator.h"
6
7#include <cstddef>
8#include <memory>
9#include <optional>
10#include <vector>
11
12// Forward Declarations
13namespace utils {
14class CountdownTimer;
15class LogProxy;
16} // namespace utils
17
18namespace probfd {
19class ProbabilisticTaskProxy;
20}
21
22namespace probfd::cartesian_abstractions {
23class AbstractState;
24class CartesianAbstraction;
25class CartesianHeuristic;
26} // namespace probfd::cartesian_abstractions
27
28namespace probfd::cartesian_abstractions {
29
35 std::vector<std::unique_ptr<FlawGenerator>> generators_;
36 size_t current_generator_ = 0;
37
38public:
39 explicit AdaptiveFlawGenerator(
40 std::vector<std::unique_ptr<FlawGenerator>> generators);
41
42 std::optional<Flaw> generate_flaw(
43 const ProbabilisticTaskProxy& task_proxy,
44 const std::vector<int>& domain_sizes,
45 CartesianAbstraction& abstraction,
46 const AbstractState* init_id,
47 CartesianHeuristic& heuristic,
48 utils::LogProxy& log,
49 utils::CountdownTimer& timer) override;
50
51 void notify_split() override;
52
53 void print_statistics(utils::LogProxy& log) override;
54};
55
56class AdaptiveFlawGeneratorFactory : public FlawGeneratorFactory {
57 std::vector<std::shared_ptr<FlawGeneratorFactory>> generator_factories_;
58
59public:
60 explicit AdaptiveFlawGeneratorFactory(
61 std::vector<std::shared_ptr<FlawGeneratorFactory>> generators);
62
63 std::unique_ptr<FlawGenerator> create_flaw_generator() override;
64};
65
66} // namespace probfd::cartesian_abstractions
67
68#endif // PROBFD_CARTESIAN_ADAPTIVE_FLAW_GENERATOR_H
Proxy class used to inspect a probabilistic planning task.
Definition task_proxy.h:194
A flaw generator that uses an incomplete flaw generator, with a complete flaw generator as a backup.
Definition adaptive_flaw_generator.h:34
Find flaws in the abstraction.
Definition flaw_generator.h:31
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8