AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
merge_scoring_function_total_order.h
1#ifndef MERGE_AND_SHRINK_MERGE_SCORING_FUNCTION_TOTAL_ORDER_H
2#define MERGE_AND_SHRINK_MERGE_SCORING_FUNCTION_TOTAL_ORDER_H
3
4#include "downward/merge_and_shrink/merge_scoring_function.h"
5
6#include <memory>
7
8namespace utils {
9class RandomNumberGenerator;
10}
11
12namespace merge_and_shrink {
13enum class AtomicTSOrder { REVERSE_LEVEL, LEVEL, RANDOM };
14enum class ProductTSOrder { OLD_TO_NEW, NEW_TO_OLD, RANDOM };
15
16class MergeScoringFunctionTotalOrder : public MergeScoringFunction {
17 AtomicTSOrder atomic_ts_order;
18 ProductTSOrder product_ts_order;
19 bool atomic_before_product;
20 int random_seed; // only for dump options
21 std::shared_ptr<utils::RandomNumberGenerator> rng;
22 std::vector<std::pair<int, int>> merge_candidate_order;
23
24 virtual std::string name() const override;
25 virtual void
26 dump_function_specific_options(utils::LogProxy& log) const override;
27
28public:
29 explicit MergeScoringFunctionTotalOrder(
30 AtomicTSOrder atomic_ts_order,
31 ProductTSOrder product_ts_order,
32 bool atomic_before_product,
33 int random_seed);
34 virtual std::vector<double> compute_scores(
35 const FactoredTransitionSystem& fts,
36 const std::vector<std::pair<int, int>>& merge_candidates) override;
37 virtual void initialize(const TaskProxy& task_proxy) override;
38
39 virtual bool requires_init_distances() const override { return false; }
40
41 virtual bool requires_goal_distances() const override { return false; }
42};
43} // namespace merge_and_shrink
44
45#endif