|
||||||||||
| 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.PlannerTypeA
Der PlannerTypeA ist ein 1-Schritt Planner ohne Sensororientierung.
Die Eigenschaft, Pl?ne der Tiefe 1 zu erstellen, teilt er mit echten sog. reaktiven Planern.
Anders als diese, kann er seine Operatorwahl allerdings nicht von Sensoren abh?ngig machen --
f?r die Suche im Web konnten keine sinnvollen Sensoren bestimmt werden. Der
PlannerTypeA w?hlt Operatoren allein nach ihrer Bewertung aus. Zwei Eigenschaften
verhindern, dass seine Planung voellig chaotisch verl?uft. (1) Constraint Instanzen
aus der Eingabe werden in die Operatorvorbedingungen eingesetzt, (2) nur solche Operatoren werden
an die Planausf?hrung weitergegeben, deren Vorbedingung einem "schwachen" Erf?llbarkeitscheck standh?lt.
Planungsstrategie:
Versucht, die Operatoren in der Reihenfolge ihrer Gewichtung auszuf?hren (Operatordurchlauf).
Nach je targetMatchOpExeInterval-vielen erfolgreich ausgef?hrten Operatoren,
versucht er, den targetMatchOp auszuf?hren. Gelingt dies, ist das Ziel erreicht.
Ist in einem Operatordurchlauf mindestens ein Operator erfolgreich, dann hat sich das Wissen
evtl. ge?ndert und der PlannerTypeA startet ggf. einen neuen Operatordurchlauf.
Ansonsten ist die Planung gescheitert.
Thread-Funktionalit?t und Eventhandling:
Siehe Ausf?hrungen in Planner.
OperatorLearner,
Planner,
Operator| Field Summary | |
private boolean |
alreadyCalledEval
zeigt an, ob die eval() Methode dieses Planer-Objects schon mal aufgerufen wurde (true) oder nicht (false) |
private java.util.ListIterator |
bestOpsIt
ListIterator ueber die Operatoren nach Gewichtung |
private boolean |
knowledgeHasChanged
zeigt an, ob sich das Wissen geaendert haben kann (true -- EIN Operator wurde erfolgreich ausgefuehrt) oder nicht (false -- KEIN Operator konnte erfolgreich ausgefuehrt werden) |
(package private) PlanTree |
lastSuccessfullNode
Referenz auf den letzten erfolgreich ausgefuehrten PlanTree-Knoten |
private static int |
planExecuteFinishedEvent
int Konstante fuer Event planExecuteFinishedEvent Fuer Gesamtuebersicht siehe Planner. |
private static int |
planReadyUnfinishedEvent
int Konstante fuer Event planReadyUnfinishedEvent Fuer Gesamtuebersicht siehe Planner. |
(package private) Operator |
targetMatchOp
Operator zur Ueberpruefung, ob das Ziel bereits erreicht ist. |
private int |
targetMatchOpExeInterval
Anzahl der erfolgreich auszufuehrenden Operatoren vor Ausfuehrung des targetMatchOp |
private int |
targetMatchOpExeTimer
Zaehler fuer das targetMatchOpExeInterval |
| 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 | |
PlannerTypeA(PlanInformation planInfo)
Konstruktor des 1-Schritt Planners ohne Sensororientierung. |
|
| Method Summary | |
PlanInformation |
eval()
Veranlasst den PlanerTypeA, wenn m"oglich, den n"achsten Plan der Tiefe 1 aufzustellen. |
protected boolean |
isOperatorExecutable(Operator op)
Schwacher(!) Erf"ullbarkeitstest f"ur die Vorbedingungen des "ubergebenen Operators -- die Vorbedingungen sind (schwach!) erf"ullbar (Rueckgabe: true), falls f"ur das Konzept zu einstelligen Pr"adikaten mind. |
void |
run()
Ueberschriebene Thread-Methode run(). |
protected void |
triggerEvent(int eventIntId)
Triggert abhaengig vom uebergebenen int eventIntId den entsprechenden Event. |
protected boolean |
try2ExecOp(Operator op)
Sendet den uebergebene Operator bei (schwacher!) Ausfuehrbarkeit per Event an die PlanAusfuehrung |
| 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 boolean alreadyCalledEval
private boolean knowledgeHasChanged
private java.util.ListIterator bestOpsIt
Operator targetMatchOp
private int targetMatchOpExeInterval
private int targetMatchOpExeTimer
PlanTree lastSuccessfullNode
private static final int planReadyUnfinishedEvent
Planner.private static final int planExecuteFinishedEvent
Planner.| Constructor Detail |
public PlannerTypeA(PlanInformation planInfo)
| Method Detail |
public void run()
Planner.myDestroy() verlangt. suspend() und resume() sind inhaerent deadlock
gefaehrlich, deshalb in java 1.2 deprecated. Loesung hier ist, ?ber eine
Variable Planner.suspended, die mit Planner.mySuspend() bzw. Planner.myResume()
von aussen gesetzt wird, innerhalb einer while-Schleife in run() mit wait()
das gewuschte Verhalten nachzubilden.(0) Nach Event planReadyAborted Aufruf myDestroy(). (1) Nach Event planReadyUnfinished Aufruf mySuspend(). Zum weiterplanen Aufruf myResume(). (2) Nach Event planExecuteFinishedEvent Aufruf myDestroy()
public PlanInformation eval()
protected boolean isOperatorExecutable(Operator op)
op - Operator, f"ur den der schwache Erf"ullbarkeitstest durchgef"uhrt werden sollboolean "ubergebener Operator ist schwach erf"ullbar (true) oder nicht (false)PlanExecutionprotected boolean try2ExecOp(Operator op)
op - Operator, der bei (schwacher!) Ausf"uhrbarkeit an die PlanExecution "ubergeben wirdboolean true, falls der "ubergebene Operator per Event an die PlanExecution
"ubergeben wurde, sonst falsePlanExecutionprotected void triggerEvent(int eventIntId)
Planner.eventIntId - int Konstante, die den auszul"osenden Event beschreibt.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||