concepts.dm.crow.planners.regression_planning_impl.crow_regression_planner_iddfs_v1.CrowRegressionPlannerIDDFSv1#

class CrowRegressionPlannerIDDFSv1[source]#

Bases: CrowRegressionPlanner

Methods

dfs(planning_state, depth)

The main entry of the depth-first search.

dfs_impl(planning_state, depth)

The actual implementation of the depth-first search.

dfs_inner(planning_state, stmt, ...)

evaluate(expression, state[, csp, ...])

Evaluate an expression and return the result.

hash_state(planning_state)

hash_state_human(planning_state)

Hash the planning state for human-readable output.

main()

main_entry(program[, minimize])

print_visited_states_count()

set_enable_human_control_interface([...])

set_enable_visited_states_count([...])

set_results(results)

Attributes

domain

results

search_stat

always_commit_skeleton

Whether to always commit the skeleton of the program.

min_search_depth

The minimum search depth.

include_effect_appliers

Whether to include the effect appliers in the search result.

enable_state_hash

Whether to enable the state hash.

executor

The executor.

state

The initial state.

goal_expr

The goal expression.

simulation_interface

The simulation interface.

is_goal_ordered

Whether the goal is ordered.

is_goal_serializable

Whether the goal is serializable.

is_goal_refinement_compressible

Whether the refinement for each component of the goal is compressible.

enable_csp

Whether to enable the CSP solver.

max_csp_trials

The maximum number of CSP trials (for solving a single CSP).

max_global_csp_trials

The maximum number of global CSP trials.

max_csp_branching_factor

The maximum CSP branching factor.

use_generator_manager

Whether to use the generator manager.

store_generator_manager_history

Whether to store the generator manager history.

include_dependency_trace

Whether to include the dependency graph in the search result.

verbose

Whether to output verbose information.

__init__(executor, state, goal_expr, *, simulation_interface=None, is_goal_ordered=True, is_goal_serializable=True, is_goal_refinement_compressible=True, enable_csp=True, max_csp_trials=1, max_global_csp_trials=100, max_csp_branching_factor=5, use_generator_manager=True, store_generator_manager_history=False, include_effect_appliers=False, include_dependency_trace=False, verbose=False, **kwargs)#

Initialize the planner.

Parameters:
  • executor (CrowExecutor) – the executor.

  • state (CrowState) – the initial state.

  • goal_expr (str | ValueOutputExpression | None) – the goal expression.

  • simulation_interface (CrowSimulationControllerInterface | None) – the simulation interface.

  • enable_reordering – whether to enable reordering.

  • is_goal_ordered (bool) – whether the goal is ordered.

  • is_goal_serializable (bool) – whether the goal is serializable.

  • is_goal_refinement_compressible (bool) – whether the goal refinement is compressible.

  • enable_csp (bool) – whether to enable the CSP solver.

  • max_csp_trials (int) – the maximum number of CSP trials.

  • max_global_csp_trials (int) – the maximum number of global CSP trials.

  • max_csp_branching_factor (int) – the maximum CSP branching factor.

  • use_generator_manager (bool) – whether to use the generator manager.

  • store_generator_manager_history (bool) – whether to store the generator manager history.

  • include_effect_appliers (bool) – whether to include the effect appliers in the search result. The effect appliers are of type CrowEffectApplier.

  • include_dependency_trace (bool) – whether to include the dependency graph in the search result.

  • verbose (bool) – whether to output verbose information.

__new__(**kwargs)#
dfs(planning_state, depth)[source]#

The main entry of the depth-first search. This function is a generator of possible planning results. Internally, it calls dfs_impl() to perform the actual search but wraps around it to handle visited states (so that we can avoid redundant search).

Parameters:
  • planning_state (_IDDFSNode) – the current planning state.

  • depth (int) – the current search depth.

Return type:

Iterator[CrowPlanningResult3]

dfs_impl(planning_state, depth)[source]#

The actual implementation of the depth-first search. This function is a generator of possible planning results.

Parameters:
  • planning_state (_IDDFSNode) – the current planning state.

  • depth (int) – the current search depth.

Return type:

Iterator[CrowPlanningResult3]

dfs_inner(planning_state, stmt, middle_program, scope_id, depth)[source]#
Parameters:
Return type:

Iterator[CrowPlanningResult3]

evaluate(expression, state, csp=None, bounded_variables=None, clone_csp=True, force_tensor_value=False)#

Evaluate an expression and return the result.

Parameters:
Returns:

the evaluation result and the updated CSP.

Return type:

Tuple[None | StateObjectReference | StateObjectList | TensorValue | OptimisticValue, ConstraintSatisfactionProblem | None]

hash_state(planning_state)[source]#
Parameters:

planning_state (_IDDFSNode)

Return type:

Tuple[str, …]

hash_state_human(planning_state)[source]#

Hash the planning state for human-readable output. Note that this function is not toally consistent with hash_state. This function is a “stronger” version of hash_state. For example, the following two states with different hash_state corresponds to the same human-readable hash.

State1:

unordered{ achieve@4 clear(V::x) }
Scopes:
    0: {}
    1: {}
    2: {'x': ObjectConstant<A: block>, 'y': ObjectConstant<B: block>}
    3: {'x': ObjectConstant<B: block>, 'y': ObjectConstant<C: block>}
    4: {'x': ObjectConstant<B: block>}

State2:

unordered{ achieve@2 clear(V::y) }
Scopes:
    0: {}
    1: {}
    2: {'x': ObjectConstant<A: block>, 'y': ObjectConstant<B: block>}
    3: {'x': ObjectConstant<B: block>, 'y': ObjectConstant<C: block>}
    4: {'x': ObjectConstant<B: block>}
Parameters:

planning_state (_IDDFSNode) – the planning state to hash.

Returns:

the hash of the planning state. It is a tuple of strings.

Return type:

Tuple[str, …]

main()#
Return type:

Tuple[List[Tuple[CrowControllerApplier, …]], dict]

main_entry(program, minimize=None)[source]#
Parameters:
Return type:

List[Tuple[CrowControllerApplier, …]]

print_visited_states_count()[source]#
set_enable_human_control_interface(human_control_interface=True)[source]#
Parameters:

human_control_interface (bool)

set_enable_visited_states_count(enable_visited_states_count=True)[source]#
Parameters:

enable_visited_states_count (bool)

set_results(results)#
Parameters:

results (List[CrowPlanningResult])

Return type:

None

always_commit_skeleton: bool#

Whether to always commit the skeleton of the program.

property domain: CrowDomain#
enable_csp: bool#

Whether to enable the CSP solver.

enable_state_hash: bool#

Whether to enable the state hash. When there are not a lot of duplicated states during search, turning this off can improve the performance.

executor: CrowExecutor#

The executor.

goal_expr: ValueOutputExpression | None#

The goal expression. If this is None, the goal will be extracted from the behavior named ‘__goal__’.

include_dependency_trace: bool#

Whether to include the dependency graph in the search result.

include_effect_appliers: bool#

Whether to include the effect appliers in the search result. The effect appliers are of type CrowEffectApplier.

is_goal_ordered: bool#

Whether the goal is ordered. This only takes effect when the goal is a set of AND-connected expressions.

is_goal_refinement_compressible: bool#

Whether the refinement for each component of the goal is compressible. This only takes effect when the goal is a set of AND-connected expressions.

is_goal_serializable: bool#

Whether the goal is serializable. This only takes effect when the goal is a set of AND-connected expressions.

max_csp_branching_factor: int#

The maximum CSP branching factor.

max_csp_trials: int#

The maximum number of CSP trials (for solving a single CSP).

max_global_csp_trials: int#

The maximum number of global CSP trials.

min_search_depth: int#

The minimum search depth.

property results: List[CrowPlanningResult]#
property search_stat: dict#
simulation_interface: CrowSimulationControllerInterface | None#

The simulation interface.

state: CrowState#

The initial state.

store_generator_manager_history: bool#

Whether to store the generator manager history.

use_generator_manager: bool#

Whether to use the generator manager.

verbose: bool#

Whether to output verbose information.