AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
pattern_collection_generator_multiple.h
1#ifndef PROBFD_PDBS_PATTERN_COLLECTION_GENERATOR_MULTIPLE_H
2#define PROBFD_PDBS_PATTERN_COLLECTION_GENERATOR_MULTIPLE_H
3
4#include "probfd/pdbs/pattern_collection_generator.h"
5#include "probfd/pdbs/projection_transformation.h"
6
7#include "probfd/fdr_types.h"
8
9#include <memory>
10#include <string>
11#include <unordered_set>
12#include <utility>
13
14// Forward Declarations
15struct FactPair;
16
17namespace utils {
18class CountdownTimer;
19class RandomNumberGenerator;
20} // namespace utils
21
22namespace probfd {
23class ProbabilisticTaskProxy;
24}
25
26namespace probfd::pdbs {
27class ProjectionStateSpace;
28class ProbabilityAwarePatternDatabase;
29} // namespace probfd::pdbs
30
31namespace probfd::pdbs {
32
33class PatternCollectionGeneratorMultiple : public PatternCollectionGenerator {
34 const int max_pdb_size_;
35 const int max_collection_size_;
36 const double pattern_generation_max_time_;
37 const double total_max_time_;
38 const double stagnation_limit_;
39 const double blacklisting_start_time_;
40 const bool enable_blacklist_on_stagnation_;
41 const bool use_saturated_costs_;
42
43 const std::shared_ptr<utils::RandomNumberGenerator> rng_;
44
45 const std::string implementation_name_;
46
47 bool collection_size_limit_reached(int remaining_collection_size) const;
48 bool time_limit_reached(const utils::CountdownTimer& timer) const;
49
50 virtual ProjectionTransformation compute_pattern(
51 int max_pdb_size,
52 double max_time,
53 const std::shared_ptr<utils::RandomNumberGenerator>& rng,
54 const ProbabilisticTaskProxy& task_proxy,
55 const std::shared_ptr<FDRSimpleCostFunction>& task_cost_function,
56 const FactPair& goal,
57 std::unordered_set<int>&& blacklisted_variables) = 0;
58
59 PatternCollectionInformation generate(
60 const std::shared_ptr<ProbabilisticTask>& task,
61 const std::shared_ptr<FDRCostFunction>& task_cost_function) override;
62
63public:
64 explicit PatternCollectionGeneratorMultiple(
65 int max_pdb_size,
66 int max_collection_size,
67 double pattern_generation_max_time,
68 double total_max_time,
69 double stagnation_limit,
70 double blacklist_trigger_percentage,
71 bool enable_blacklist_on_stagnation,
72 bool use_saturated_costs,
73 std::shared_ptr<utils::RandomNumberGenerator> rng,
74 std::string implementation_name,
75 utils::Verbosity verbosity);
76};
77
78} // namespace probfd::pdbs
79
80#endif // PROBFD_PDBS_PATTERN_COLLECTION_GENERATOR_MULTIPLE_H
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8