1#ifndef PROBFD_HEURISTICS_SCP_HEURISTIC_H
2#define PROBFD_HEURISTICS_SCP_HEURISTIC_H
4#include "probfd/heuristics/task_dependent_heuristic.h"
6#include "probfd/task_evaluator_factory.h"
13class RandomNumberGenerator;
18class ProbabilityAwarePatternDatabase;
19class PatternCollectionGenerator;
24class SCPHeuristic :
public TaskDependentHeuristic {
26 enum OrderingStrategy { RANDOM, SIZE_ASC, SIZE_DESC, INHERIT };
29 const value_t termination_cost_;
30 const OrderingStrategy ordering_;
31 const std::shared_ptr<utils::RandomNumberGenerator> rng_;
33 std::vector<pdbs::ProbabilityAwarePatternDatabase> pdbs_;
36 explicit SCPHeuristic(
37 std::shared_ptr<ProbabilisticTask> task,
38 std::shared_ptr<FDRCostFunction> task_cost_function,
40 std::shared_ptr<pdbs::PatternCollectionGenerator> generator,
41 OrderingStrategy order,
42 std::shared_ptr<utils::RandomNumberGenerator> rng);
45 value_t evaluate(
const State& state)
const override;
48class SCPHeuristicFactory :
public TaskEvaluatorFactory {
49 const std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
50 pattern_collection_generator_;
51 const SCPHeuristic::OrderingStrategy ordering_;
52 const int random_seed_;
53 const utils::Verbosity verbosity_;
57 std::shared_ptr<probfd::pdbs::PatternCollectionGenerator>
58 pattern_collection_generator,
59 SCPHeuristic::OrderingStrategy ordering,
61 utils::Verbosity verbosity);
63 std::unique_ptr<FDREvaluator> create_evaluator(
64 std::shared_ptr<ProbabilisticTask> task,
65 std::shared_ptr<FDRCostFunction> task_cost_function)
override;
This namespace contains heuristic implementations.
Definition additive_cartesian_heuristic.h:19
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
double value_t
Typedef for the state value type.
Definition aliases.h:7