SlowDomain

Declared in astar/SlowDomain.h; the same class on the site of Doxygen.

template<class D>
class SlowDomain

a Domain whose expansions cost a given amount of extra work

Wraps the Domain D and adds to each expansion work iterations of the computation \( j = 11 i \bmod 9999943 \), \( i = j \), which keeps a core busy with no memory access, as in the experiment of Jinnai and Fukunaga (JAIR 2017, section 3.1.1) on the effect of slow expansions. It is meant to compare the searches when the expansion dominates, as in planning with an expensive heuristic or in motion planning.

Public Types

using state_type = state_t<D>

the state type

using cost_type = cost_t<D>

the cost type

Public Functions

inline SlowDomain(const D &d, unsigned long work)

constructor, taking the Domain (which must outlive this) and the work

inline state_type initial_state(void) const
inline bool is_goal(const state_type &s) const
inline std::uint64_t hash(const state_type &s) const
inline cost_type heuristic(const state_type &s) const
template<class F>
inline void for_each_successor(const state_type &s, cost_type h, F &&f) const

the successors of D, after work iterations of busy work

template<class F>
inline void for_each_successor(
const state_type &s,
cost_type h,
std::uint8_t op,
F &&f
) const
inline std::size_t num_features(void) const
template<class F>
inline void for_each_feature(const state_type &s, F &&f) const
inline std::size_t num_abstract_features(void) const
inline std::size_t abstract_feature(std::size_t i) const
inline std::uint64_t abstract_state(const state_type &s) const
inline std::uint64_t perfect_hash(const state_type &s) const
inline std::size_t num_nblocks(void) const
inline std::size_t nblock(const state_type &s) const
template<class F>
inline void for_each_nblock_successor(std::size_t b, F &&f) const
inline cost_type pairwise_heuristic(const state_type &s, const state_type &t) const