|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--java.lang.Thread
|
+--planner.Planner
|
+--planner.plannertypes.PlannerTypeC
Der PlannerTypeC ist eine GraphPlan-Variante, die Pl?ne
f?r dynamische Objektwelten erzeugt und STRIPS-Operatoren mit disjunktiven Nachbedingungen
erlaubt.
Planungsstrategie:
GraphPlan (GP) (siehe Blum and Furst, 1997) gilt derzeit als einer der schnellsten
Planner-Algorithmen f?r STRIPS-beschr?nkte klassische Planungsdom?nen. Bei der Adaption
dieses Ansatzes f?r die Suche im Web mussten insbes. zwei Probleme gel?st werden:
Operator (genauer: f?r ein PredArgument
innerhalb der Operator-Postcondition) vermerkt, dass dieser bei seiner Ausf?hrung
"ein neues Objekt in die Welt setzen wird", so kann GraphPlan schon zum Planungszeitpunkt (wo nur der
Objekttyp, aber nicht das konkrete neue Objekt bekannt ist) dieses "virtuelle" Objekt verwalten und
einbeziehen.
Thread-Funktinalit?t und Eventhandling:
Siehe Ausf?hrungen in Planner.
Planner,
PlanExecution,
Operator| Field Summary | |
private java.util.LinkedList |
bestOpsLL
LinkedList der Operatoren nach Gewichtung |
private boolean |
couldExecOnePlan
speichert, ob mind. |
private static int |
dynWorldObjectsCounter
Counter f?r Anzahl der dynamisch erzeugten "virtuellen" Weltobjekte. |
private Level |
graphExpansionLevel
Planning Graph level, das gerade expandiert wird (Propositon- oder Actionlevel). |
static Operator |
noOp
Alle Propositionen des PLevel P_i werden durch noOps im ALevel A_i ins PLevel P_{i+1} ?bertragen. |
private static int |
planExecuteFinishedEvent
int Konstante fuer Event planExecuteFinishedEvent Fuer Gesamtuebersicht siehe Planner. |
private static int |
planReadyFinishedEvent
int Konstante fuer Event planReadyFinishedEvent F?r Gesamt?bersicht siehe Planner. |
(package private) Operator |
targetMatchOp
Operator zur Ueberpr?fung, ob das Ziel bereits erreicht ist. |
| Fields inherited from class planner.Planner |
alreadyCalledEval,
destroyThread,
planInfo,
plannerID,
planReadyAborted,
searchID,
suspended |
| Fields inherited from class java.lang.Thread |
contextClassLoader,
daemon,
eetop,
group,
inheritedAccessControlContext,
initial_stack_memory,
MAX_PRIORITY,
MIN_PRIORITY,
name,
NORM_PRIORITY,
priority,
PrivateInfo,
single_step,
stillborn,
stopThreadPermission,
target,
threadInitNumber,
threadQ,
values |
| Constructor Summary | |
PlannerTypeC(PlanInformation planInfo)
Konstruktor des Planers. |
|
| Method Summary | |
private boolean |
aNodePlan2PlanTree(java.util.LinkedList aNodePlan)
Generiert aus dem uebergebenen aNodePlan einen entsprechenden PlanTree. |
private boolean |
checkPropositionExclusivity(PNode p0,
PNode p1)
Markiert zwei Propositionen p0, p1 als "wechselseitig exklusiv", falls in A_{i-1} alle p0-erzeugenden Aktionen "wechselseitig exklusiv" mit allen p1-erzeugenden Aktionen sind. |
private boolean |
compeetingNeedsActions(ANode a0,
ANode a1)
"Compeeting Needs"-Test fuer zwei Aktionen a0 und a1. |
private void |
createNextActionLevel()
Erweitert den planningGraph um das n?chste Actionlevel ( ALevel). |
private void |
createNextPropositionLevel()
Erweitert den Planning Graph um das n?chste Proposition-Level ( PLevel). |
private ANode |
createNoOp4PNode(PNode pNode)
Erzeugt f?r ?bergebenen ANode aus PLevel P_i noOp f?r ALevel A_i. |
PlanInformation |
eval()
PG343-Graphplan |
private boolean |
expandPlanningGraph()
Versucht, den Planning Graph um ein Action- und ein Proposition-Level zu expandieren. |
private boolean |
extractSolution()
R?ckw?rtssuche im PlanningGraph nach einem g?ltigen Plan. |
private boolean |
findALevelSolutions4Goals(java.util.ListIterator[] goalAddingActionsLI,
java.util.LinkedList[] goalAddingActionsLL,
int goal2AchieveIndex,
PLevel currentPLevel,
java.util.LinkedList solLL)
Sucht fuer ein Array von P_i-Propositionen (=goals) alle Mengen von A_{i-1} Aktionen, die wechselseitig nicht exklusiv sind und die diese Propositionen (=goals) adden, also alle A_{i-1}-Level L?sungen. |
private void |
getBestOps()
Liest aus der OperatorDB die Operatoren nach Gewichtung sortiert aus. |
private boolean |
goalSetCreationStep(PNode[] goals,
PLevel currentPLevel,
java.util.LinkedList solLL)
Sucht rekursiv f?r goals aus P-Level P_i des Planning Graph in R?ckw?rtsrichtung nach A-Level A_{i-1} L?sungen. |
private boolean |
graphHasLeveledOff()
|
private boolean |
graphHasReachedMaxLevel()
Testet, ob der Planning Graph die maximale Anzahl von Leveln erzeugt hat. |
static int |
incDynWorldObjectsCounter()
Inkrementiert den Z?hler dynWorldObjectsCounter. |
private void |
initializePlanningGraph()
Initialisiert den Planning Graph, i.e. |
private boolean |
interferenceActions(ANode a0,
ANode a1,
boolean oneDirectionChecked)
"Interference"-Test fuer zwei Aktionen a0 und a1. |
private java.util.LinkedList |
pNodeMatches4Op(java.util.ListIterator[] pNodesLI,
java.util.LinkedList[] pNodesLL,
Operator theOp,
int itLevel)
findet fuer den uebergebene Operator alle PNodes-Mengen, von denen jede die op-Preconditions matcht und deren Elemente nicht mutual exclusiv sind. |
private Predicate |
proposMatchesPrecond(Predicate propos,
Predicate precond)
versucht, die Operator Precondition precond mit der Proposition propos zu matchen. |
void |
run()
?berschriebene Thread-Methode run. |
protected void |
triggerEvent(int eventIntId)
Triggert abhaengig vom uebergebenen int eventIntId den entsprechenden Event. |
| Methods inherited from class planner.Planner |
alreadyUsedAction,
getPlanInfo,
getPlannerID,
myDestroy,
myResume,
mySuspend,
setPlanInfo,
setPlannerID |
| Methods inherited from class java.lang.Thread |
|
| Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
| Field Detail |
private java.util.LinkedList bestOpsLL
private Level graphExpansionLevel
public static final Operator noOp
private boolean couldExecOnePlan
private static int dynWorldObjectsCounter
Operator targetMatchOp
Operator zur Ueberpr?fung, ob das Ziel bereits erreicht ist.
Seine Vorbedingung (Operator.precond): die Zielpr?dikate
(PlanInformation.targetPredicates).private static final int planReadyFinishedEvent
Planner.private static final int planExecuteFinishedEvent
Planner.| Constructor Detail |
public PlannerTypeC(PlanInformation planInfo)
| Method Detail |
public void run()
public PlanInformation eval()
private void initializePlanningGraph()
PlanInformation.startPredicates).private boolean expandPlanningGraph()
private void createNextActionLevel()
ALevel).private ANode createNoOp4PNode(PNode pNode)
private void createNextPropositionLevel()
PLevel).private boolean extractSolution()
| extractSolution | initiiert die Plansuche. |
| goalSetCreationStep | leistet rekursiv die eigentliche R?ckw?rtssuche. |
| findALevelSolutions4Goals | Hilfsmethode f?r goalSetCreationStep sucht f?r aktuelles P_i-Level A_{i-1} L?sungen; |
| aNodePlan2PlanTree | Generiert aus dem aNodePlan (LinkedList von aNode[]) einen entsprechenden PlanTree |
private boolean goalSetCreationStep(PNode[] goals,
PLevel currentPLevel,
java.util.LinkedList solLL)
goals - PNode[], die aktuellen goals aus P-Level P_i, die in ALevel A_{i-1} zu l?sen sind.currentPLevel - PLevel P_i, in dem die goals vorkommen. Level-time i ist mindestens 1 (dann Termination).
private boolean findALevelSolutions4Goals(java.util.ListIterator[] goalAddingActionsLI,
java.util.LinkedList[] goalAddingActionsLL,
int goal2AchieveIndex,
PLevel currentPLevel,
java.util.LinkedList solLL)
goalAddingActionsLI - ListIterator[] ?ber die goalAddingsActionsLLgoalAddingActionsLL - LinkedList[] von ANode. goalAddingActionsLL[i] enth?lt die Aktionen, die
das i-te goal hinzuf?gen.goal2AchieveIndex - int Index des goals, zu dem eine hinzuf?genden Aktion gesucht wird.private boolean aNodePlan2PlanTree(java.util.LinkedList aNodePlan)
PlanTree.aNodePlan - LinkedList von paralell ausf?hrbaren ANode[]
private boolean interferenceActions(ANode a0,
ANode a1,
boolean oneDirectionChecked)
private boolean compeetingNeedsActions(ANode a0,
ANode a1)
private boolean checkPropositionExclusivity(PNode p0,
PNode p1)
private Predicate proposMatchesPrecond(Predicate propos,
Predicate precond)
private java.util.LinkedList pNodeMatches4Op(java.util.ListIterator[] pNodesLI,
java.util.LinkedList[] pNodesLL,
Operator theOp,
int itLevel)
pNodesLI - Array von ListIterator. i-ter Iterator iteriert ueber i-te LinkedList von pNodesLL.pNodesLL - Array von LinkedList. i-te LinkedList enthaelt Liste von PNodes, die evtl. die i-te
Operator-Precond matchen.op - Der Operator, fuer den matchende pNodes-Mengen gefunden werden sollen.itLevel - Iterationslevel, Index im Precond-Array des Operators. Initial mit 0 zu belegen.private boolean graphHasLeveledOff()
private boolean graphHasReachedMaxLevel()
protected void triggerEvent(int eventIntId)
Planner.eventIntId - int Konstante, die den auszul"osenden Event beschreibt.private void getBestOps()
public static int incDynWorldObjectsCounter()
dynWorldObjectsCounter.dynWorldObjectsCounter.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||