Archived Website: This website is a static snapshot for archival purposes only. It is no longer maintained or updated.

planner.plannertypes
Class PlannerTypeA

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--planner.Planner
              |
              +--planner.plannertypes.PlannerTypeA

public class PlannerTypeA
extends Planner

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.

Version:
2.0 [99-12-18]
Author:
Christian Fischbach
See Also:
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
, activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, exit, getContextClassLoader, getName, getPriority, getThreadGroup, init, interrupt, interrupt0, interrupted, isAlive, isDaemon, isInterrupted, isInterrupted, join, join, join, nextThreadNum, registerNatives, resume, resume0, setContextClassLoader, setDaemon, setName, setPriority, setPriority0, sleep, sleep, start, stop, stop, stop0, suspend, suspend0, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

alreadyCalledEval

private boolean alreadyCalledEval
zeigt an, ob die eval() Methode dieses Planer-Objects schon mal aufgerufen wurde (true) oder nicht (false)
Since:
version 1.1

knowledgeHasChanged

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)
Since:
version 1.1

bestOpsIt

private java.util.ListIterator bestOpsIt
ListIterator ueber die Operatoren nach Gewichtung
Since:
version 1.1

targetMatchOp

Operator targetMatchOp
Operator zur Ueberpruefung, ob das Ziel bereits erreicht ist. Seine Vorbedingungen: die Zielpraedikate.
Since:
version 1.4

targetMatchOpExeInterval

private int targetMatchOpExeInterval
Anzahl der erfolgreich auszufuehrenden Operatoren vor Ausfuehrung des targetMatchOp
Since:
version 1.4

targetMatchOpExeTimer

private int targetMatchOpExeTimer
Zaehler fuer das targetMatchOpExeInterval
Since:
version 1.4

lastSuccessfullNode

PlanTree lastSuccessfullNode
Referenz auf den letzten erfolgreich ausgefuehrten PlanTree-Knoten
Since:
version 1.3

planReadyUnfinishedEvent

private static final int planReadyUnfinishedEvent
int Konstante fuer Event planReadyUnfinishedEvent Fuer Gesamtuebersicht siehe Planner.
Since:
version 1.4

planExecuteFinishedEvent

private static final int planExecuteFinishedEvent
int Konstante fuer Event planExecuteFinishedEvent Fuer Gesamtuebersicht siehe Planner.
Since:
version 1.7
Constructor Detail

PlannerTypeA

public PlannerTypeA(PlanInformation planInfo)
Konstruktor des 1-Schritt Planners ohne Sensororientierung.
Method Detail

run

public void run()
Ueberschriebene Thread-Methode run(). Thread terminiert, wenn von aussen via 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.
Die genannten Methoden m?ssen wie folgt von aussen benutzt werden:
(0) Nach Event planReadyAborted
Aufruf myDestroy().
(1) Nach Event planReadyUnfinished
Aufruf mySuspend().
Zum weiterplanen
Aufruf myResume().
(2) Nach Event planExecuteFinishedEvent
Aufruf myDestroy()
Overrides:
run in class Planner
Since:
version 1.8



eval

public PlanInformation eval()
Veranlasst den PlanerTypeA, wenn m"oglich, den n"achsten Plan der Tiefe 1 aufzustellen. Erkennt Planungserfolg- und misserfolg.
Overrides:
eval in class Planner

isOperatorExecutable

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. eine Konzeptinstanz in der A-Box ex. und f"ur die Rolle zu zweistelligen Pr"adikaten mind. eine Rolleninstanz in der A-Box ex., ansonsten unerf"ullbar (R"uckgabe: false). Dieser schwache Erf"ullbarkeitstest erfasst -- im Gegensatz zur starken Variante im Planausf"uhrer -- keine pr"adikat"ubergreifenden Abh"angigkeiten. Diese k"onnen nur mit aufwendigeren rekursiven Verfahren gecheckt werden.
Parameters:
op - Operator, f"ur den der schwache Erf"ullbarkeitstest durchgef"uhrt werden soll
Returns:
boolean "ubergebener Operator ist schwach erf"ullbar (true) oder nicht (false)
Since:
version 1.2
See Also:
PlanExecution

try2ExecOp

protected boolean try2ExecOp(Operator op)
Sendet den uebergebene Operator bei (schwacher!) Ausfuehrbarkeit per Event an die PlanAusfuehrung
Parameters:
op - Operator, der bei (schwacher!) Ausf"uhrbarkeit an die PlanExecution "ubergeben wird
Returns:
boolean true, falls der "ubergebene Operator per Event an die PlanExecution "ubergeben wurde, sonst false
Since:
version 1.4
See Also:
PlanExecution

triggerEvent

protected void triggerEvent(int eventIntId)
Triggert abhaengig vom uebergebenen int eventIntId den entsprechenden Event. Fuer eine Gesamtuebersicht der int Konstanten fuer events siehe Planner.
Parameters:
eventIntId - int Konstante, die den auszul"osenden Event beschreibt.
Since:
version 1.5