AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
pattern_generator.h
1#ifndef PDBS_PATTERN_GENERATOR_H
2#define PDBS_PATTERN_GENERATOR_H
3
4#include "downward/pdbs/pattern_collection_information.h"
5#include "downward/pdbs/pattern_information.h"
6#include "downward/pdbs/types.h"
7
8#include "downward/utils/logging.h"
9
10#include <memory>
11#include <string>
12
13class AbstractTask;
14
15namespace utils {
16class RandomNumberGenerator;
17}
18
19namespace pdbs {
20class PatternCollectionGenerator {
21 virtual std::string name() const = 0;
22 virtual PatternCollectionInformation
23 compute_patterns(const std::shared_ptr<AbstractTask>& task) = 0;
24
25protected:
26 mutable utils::LogProxy log;
27
28public:
29 explicit PatternCollectionGenerator(utils::Verbosity verbosity);
30 virtual ~PatternCollectionGenerator() = default;
31
32 PatternCollectionInformation
33 generate(const std::shared_ptr<AbstractTask>& task);
34};
35
36class PatternGenerator {
37 virtual std::string name() const = 0;
38 virtual PatternInformation
39 compute_pattern(const std::shared_ptr<AbstractTask>& task) = 0;
40
41protected:
42 mutable utils::LogProxy log;
43
44public:
45 explicit PatternGenerator(utils::Verbosity verbosity);
46 virtual ~PatternGenerator() = default;
47
48 PatternInformation generate(const std::shared_ptr<AbstractTask>& task);
49};
50
51} // namespace pdbs
52
53#endif