1#ifndef PROBFD_PDBS_PATTERN_COLLECTION_GENERATOR_HILLCLIMBING_H
2#define PROBFD_PDBS_PATTERN_COLLECTION_GENERATOR_HILLCLIMBING_H
4#include "probfd/pdbs/pattern_collection_generator.h"
5#include "probfd/pdbs/types.h"
7#include "probfd/fdr_types.h"
8#include "probfd/value_type.h"
18class RandomNumberGenerator;
21namespace dynamic_bitset {
27class ProbabilisticTaskProxy;
30namespace probfd::sampling {
31class RandomWalkSampler;
35class SubCollectionFinderFactory;
41class PatternCollectionGeneratorHillclimbing
42 :
public PatternCollectionGenerator {
43 using DynamicBitset = dynamic_bitset::DynamicBitset<uint64_t>;
46 class IncrementalPPDBs;
48 std::shared_ptr<PatternCollectionGenerator> initial_generator_;
49 std::shared_ptr<SubCollectionFinderFactory> subcollection_finder_factory_;
52 const int pdb_max_size_;
54 const int collection_max_size_;
55 const int num_samples_;
57 const int min_improvement_;
58 const double max_time_;
59 std::shared_ptr<utils::RandomNumberGenerator> rng_;
62 int remaining_states_;
76 unsigned int generate_candidate_pdbs(
77 const ProbabilisticTaskProxy& task_proxy,
78 const std::shared_ptr<FDRSimpleCostFunction>& task_cost_function,
79 utils::CountdownTimer& hill_climbing_timer,
80 const std::vector<std::vector<int>>& relevant_neighbours,
81 const ProbabilityAwarePatternDatabase& pdb,
82 std::set<DynamicBitset>& generated_patterns,
83 PPDBCollection& candidate_pdbs);
96 utils::CountdownTimer& hill_climbing_timer,
97 IncrementalPPDBs& current_pdbs,
98 const sampling::RandomWalkSampler& sampler,
101 std::vector<Sample>& samples)
const;
108 std::pair<int, int> find_best_improving_pdb(
109 utils::CountdownTimer& hill_climbing_timer,
110 IncrementalPPDBs& current_pdbs,
111 const std::vector<Sample>& samples,
112 PPDBCollection& candidate_pdbs,
138 const ProbabilisticTaskProxy& task_proxy,
139 const std::shared_ptr<FDRSimpleCostFunction>& task_cost_function,
140 IncrementalPPDBs& current_pdbs);
143 explicit PatternCollectionGeneratorHillclimbing(
144 std::shared_ptr<PatternCollectionGenerator> initial_generator,
145 std::shared_ptr<SubCollectionFinderFactory>
146 subcollection_finder_factory,
148 int collection_max_size,
152 int search_space_max_size,
153 std::shared_ptr<utils::RandomNumberGenerator> rng,
154 utils::Verbosity verbosity);
156 ~PatternCollectionGeneratorHillclimbing()
override;
164 PatternCollectionInformation generate(
165 const std::shared_ptr<ProbabilisticTask>& task,
166 const std::shared_ptr<FDRCostFunction>& task_cost_function)
override;
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8
double value_t
Typedef for the state value type.
Definition aliases.h:7