public class LimitedMemoryDFS extends DFS
If a terminal function is provided via the setter method defined for OO-MDPs, then the search algorithm will not expand any nodes that are terminal states, as if there were no actions that could be executed from that state. Note that terminal states are not necessarily the same as goal states, since there could be a fail condition from which the agent cannot act, but that is not explicitly represented in the transition dynamics.
DeterministicPlanner.PlanningFailedException
Modifier and Type | Field and Description |
---|---|
protected java.util.LinkedList<HashableState> |
memoryQueue
A queue for storing the most recently expanded nodes.
|
protected int |
memorySize
the size of the memory; that is, the number of recently expanded search nodes the valueFunction will remember.
|
protected java.util.Map<HashableState,java.lang.Integer> |
memoryStateDepth
Stores the depth at which each state in the memory was explored.
|
maintainClosed, maxDepth, numVisted, optionsFirst, rand
gc, internalPolicy
actionTypes, debugCode, domain, gamma, hashingFactory, model, usingOptionModel
Constructor and Description |
---|
LimitedMemoryDFS(SADomain domain,
StateConditionTest gc,
HashableStateFactory hashingFactory,
int maxDepth,
boolean maintainClosed,
boolean optionsFirst,
int memorySize)
Constructor for memory limited DFS
|
Modifier and Type | Method and Description |
---|---|
protected SearchNode |
dfs(SearchNode n,
int depth,
java.util.Set<HashableState> statesOnPath)
Runs DFS from a given search node, keeping track of its current depth.
|
SDPlannerPolicy |
planFromState(State initialState)
Plans and returns a
SDPlannerPolicy . |
DFSInit, getNumVisited, numOptionsInGAs, resetSolver, setOptionsFirst, shuffleGroundedActions, sortActionsWithOptionsFirst
deterministicPlannerInit, encodePlanIntoPolicy, hasCachedPlanForState, planContainsOption, planHasDupilicateStates, querySelectedActionForState
addActionType, applicableActions, getActionTypes, getDebugCode, getDomain, getGamma, getHashingFactory, getModel, setActionTypes, setDebugCode, setDomain, setGamma, setHashingFactory, setModel, solverInit, stateHash, toggleDebugPrinting
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addActionType, getActionTypes, getDebugCode, getDomain, getGamma, getHashingFactory, getModel, setActionTypes, setDebugCode, setDomain, setGamma, setHashingFactory, setModel, solverInit, toggleDebugPrinting
protected int memorySize
protected java.util.LinkedList<HashableState> memoryQueue
protected java.util.Map<HashableState,java.lang.Integer> memoryStateDepth
public LimitedMemoryDFS(SADomain domain, StateConditionTest gc, HashableStateFactory hashingFactory, int maxDepth, boolean maintainClosed, boolean optionsFirst, int memorySize)
domain
- the domain in which to plangc
- indicates the goal stateshashingFactory
- the state hashing factory to usemaxDepth
- depth limit of DFS. -1 specifies no limit.maintainClosed
- whether to maintain a closed list or notoptionsFirst
- whether to explore paths generated by options first.memorySize
- the number of most recently expanded nodes to remember.public SDPlannerPolicy planFromState(State initialState)
SDPlannerPolicy
. If
a State
is not in the solution path of this planner, then
the SDPlannerPolicy
will throw
a runtime exception. If you want a policy that will dynamically replan for unknown states,
you should create your own DDPlannerPolicy
.planFromState
in interface Planner
planFromState
in class DFS
initialState
- the initial state of the planning problemSDPlannerPolicy
.protected SearchNode dfs(SearchNode n, int depth, java.util.Set<HashableState> statesOnPath)