|
| | SlowDomain (const D &d, unsigned long work) |
| | constructor, taking the Domain (which must outlive this) and the work
|
| state_type | initial_state (void) const |
| bool | is_goal (const state_type &s) const |
| std::uint64_t | hash (const state_type &s) const |
| cost_type | heuristic (const state_type &s) const |
| template<class F> |
| 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>
requires OperatorDomain< D > |
| void | for_each_successor (const state_type &s, cost_type h, std::uint8_t op, F &&f) const |
| std::size_t | num_features (void) const |
template<class F>
requires FeatureDomain< D > |
| void | for_each_feature (const state_type &s, F &&f) const |
| std::size_t | num_abstract_features (void) const |
| std::size_t | abstract_feature (std::size_t i) const |
| std::uint64_t | abstract_state (const state_type &s) const |
| std::uint64_t | perfect_hash (const state_type &s) const |
| std::size_t | num_nblocks (void) const |
| std::size_t | nblock (const state_type &s) const |
template<class F>
requires NBlockDomain< D > |
| void | for_each_nblock_successor (std::size_t b, F &&f) const |
| cost_type | pairwise_heuristic (const state_type &s, const state_type &t) const |
template<class D>
class PBeFS_di_unipi_it::SlowDomain< D >
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.