1#ifndef TASK_UTILS_VARIABLE_ORDER_FINDER_H
2#define TASK_UTILS_VARIABLE_ORDER_FINDER_H
4#include "downward/task_proxy.h"
11class RandomNumberGenerator;
14namespace variable_order_finder {
15enum VariableOrderType {
24extern void dump_variable_order_type(
25 VariableOrderType variable_order_type,
26 utils::LogProxy& log);
33class VariableOrderFinder {
35 const VariableOrderType variable_order_type;
36 std::vector<int> selected_vars;
37 std::vector<int> remaining_vars;
38 std::vector<bool> is_goal_variable;
39 std::vector<bool> is_causal_predecessor;
41 void select_next(
int position,
int var_no);
45 const TaskProxy& task_proxy,
46 VariableOrderType variable_order_type,
47 const std::shared_ptr<utils::RandomNumberGenerator>& rng =
nullptr);
48 ~VariableOrderFinder() =
default;