AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
domain_abstracted_task.h
1#ifndef PROBFD_TASKS_DOMAIN_ABSTRACTED_TASK_H
2#define PROBFD_TASKS_DOMAIN_ABSTRACTED_TASK_H
3
4#include "probfd/tasks/delegating_task.h" // IWYU pragma: export
5
6#include <memory>
7#include <string>
8#include <vector>
9
10namespace probfd::extra_tasks {
11
12/*
13 Task transformation for performing domain abstraction.
14
15 We recommend using the factory function in
16 domain_abstracted_task_factory.h for creating DomainAbstractedTasks.
17*/
18class DomainAbstractedTask : public tasks::DelegatingTask {
19 const std::vector<int> domain_size_;
20 const std::vector<int> initial_state_values_;
21 const std::vector<FactPair> goals_;
22 const std::vector<std::vector<std::string>> fact_names_;
23 const std::vector<std::vector<int>> value_map_;
24
25 const value_t non_goal_termination_cost;
26
27 FactPair get_abstract_fact(const FactPair& fact) const;
28
29public:
30 DomainAbstractedTask(
31 const std::shared_ptr<ProbabilisticTask>& parent,
32 std::vector<int>&& domain_size,
33 std::vector<int>&& initial_state_values,
34 std::vector<FactPair>&& goals,
35 std::vector<std::vector<std::string>>&& fact_names,
36 std::vector<std::vector<int>>&& value_map);
37
38 value_t get_non_goal_termination_cost() const override;
39
40 int get_variable_domain_size(int var) const override;
41 std::string get_fact_name(const FactPair& fact) const override;
42 bool are_facts_mutex(const FactPair& fact1, const FactPair& fact2)
43 const override;
44
45 FactPair
46 get_axiom_precondition(int op_index, int fact_index) const override;
47 FactPair get_axiom_effect(int op_index, int eff_index) const override;
48
49 FactPair
50 get_operator_precondition(int op_index, int fact_index) const override;
51
52 FactPair
53 get_operator_outcome_effect(int op_index, int outcome_index, int eff_index)
54 const override;
55
56 FactPair get_goal_fact(int index) const override;
57
58 std::vector<int> get_initial_state_values() const override;
59 void
60 convert_state_values_from_parent(std::vector<int>& values) const override;
61};
62
63} // namespace probfd::extra_tasks
64
65#endif
double value_t
Typedef for the state value type.
Definition aliases.h:7