104 internal::PerStateInformation<Action, UseInterval>> {
106 typename HeuristicDepthFirstSearch::FRETHeuristicSearchAlgorithm;
109 using StateInfo =
typename Base::StateInfo;
110 using AlgorithmValueType = Base::AlgorithmValueType;
113 using MDP =
typename Base::MDPType;
114 using Evaluator =
typename Base::EvaluatorType;
116 using PolicyPicker =
typename Base::PolicyPicker;
118 using Statistics = internal::Statistics;
119 using ExpansionInfo = internal::ExpansionInfo;
120 using LocalStateInfo = internal::LocalStateInfo;
123 const bool forward_updates_;
124 const BacktrackingUpdateType backtrack_update_type_;
125 const bool cutoff_tip_;
126 const bool cutoff_inconsistent_;
127 const bool terminate_exploration_on_cutoff_;
128 const bool label_solved_;
131 storage::StateHashMap<LocalStateInfo> local_state_infos_;
132 std::vector<StateID> visited_;
133 std::deque<ExpansionInfo> expansion_queue_;
134 std::deque<StateID> stack_;
136 Statistics statistics_;
139 std::vector<Transition<Action>> transitions_;
140 std::vector<AlgorithmValueType> qvalues_;
144 std::shared_ptr<PolicyPicker> policy_chooser,
145 bool forward_updates,
146 BacktrackingUpdateType backtrack_update_type,
148 bool cutoff_inconsistent,
149 bool terminate_exploration_on_cutoff,
157 Evaluator& heuristic,
160 double max_time)
override;
165 void solve_with_vi_termination(
167 Evaluator& heuristic,
170 utils::CountdownTimer& timer);
172 void solve_without_vi_termination(
174 Evaluator& heuristic,
177 utils::CountdownTimer& timer);
179 template <
bool GetVisited>
180 bool policy_exploration(
182 Evaluator& heuristic,
184 utils::CountdownTimer& timer);
186 bool advance(MDP& mdp, ExpansionInfo& einfo, StateInfo& state_info);
190 ExpansionInfo& einfo,
192 LocalStateInfo& lsinfo,
193 utils::CountdownTimer& timer);
199 Evaluator& heuristic,
200 ExpansionInfo& einfo,
203 bool value_iteration(
205 const std::ranges::input_range
auto& range,
206 utils::CountdownTimer& timer);
208 std::pair<bool, bool> vi_step(
210 const std::ranges::input_range
auto& range,
211 utils::CountdownTimer& timer,
212 unsigned long long& stat_counter);