informationexchange
Class PlanTree

java.lang.Object
  |
  +--informationexchange.PlanTree

public class PlanTree
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

Der PlanTree steht im Planinformationsobjekt und wird vom Planner erzeugt, von der PlanExecution zur Ausf?hrung benutzt. Dies Objekt ist nicht dazu gedacht, abgespeichert zu werden. Die f?r die Lerner relevanten Informationen k?nnen in einen LearnTree exportiert werden.

Since:
[1999-08-08]
Author:
Oliver Geppert
See Also:
LearnTree, Serialized Form

Field Summary
private  int child
          Index, den dieser Knoten im Vorg?ngerknoten hat.
private  boolean[] goalPath
          Feld von goalPath-Markierungen.
private  boolean[] goalReached
          Ist goalReached[i] true, so ist mit Erreichen der entsprechenden Nachbedingung auch das Ziel erreicht.
private  PlanTree[] next
          Feld von Zeigern auf die Nachfolgeknoten.
private  Operator operator
          Der Operator, der im Knoten gespeichert ist.
private  PlanTree prev
          Zeiger auf den Vorg?ngerknoten.
 
Constructor Summary
PlanTree(Operator operator)
          Konstruktor, der einen Wurzelknoten erzeugt.
 
Method Summary
 int getChild()
           
 PlanTree getNext()
           
 PlanTree getNext(int i)
          Liefert einen Nachfolgeknoten.
 Operator getOperator()
           
 PlanTree getPrev()
           
 PlanTree getRoot()
           
 boolean goalReached()
          Liefert den Wert von goalReached f?r diejenige Nachbedingung, die nach Ausf?hrung des Operators erf?llt ist.
 boolean goalReached(int i)
          Liefert den Wert von goalReached f?r die Nachbedingung mit Index i.
 boolean isRoot()
           
 void markGoalPath()
          Wird vom Planausf?hrer aufgerufen und initialisiert den Aufruf von markGoalPath (int i) mit dem Index der erf?llten Nachbedingung.
 void markGoalPath(int index)
          Markiert den Pfad vom aktuellen Knoten abw?rts bis zur Wurzel als zum Ziel f?hrenden Pfad.
 PlanTree removeNext(int i)
          Entfernt den Nachfolgebaum mit dem Index i.
 long renamePredArgs()
          Ruft die eigentlich renamePredArgs-Methode auf.
 long renamePredArgs(long count)
          Benennt die PredArguments, die im Planbaum auftauchen, der Reihe nach aufsteigend durch.
 int setChild(int child)
          Setzt child.
 void setGoalReached(int i)
          Setzt die goalReached-Markierung f?r die Nachbedingung i auf true.
 PlanTree setNext(PlanTree next, int i)
          Setzt einen PlanTree als Nachfolgeknoten.
 PlanTree setPrev(PlanTree prev)
          Setzt den Vorg?ngerknoten auf prev.
 LearnTree toLearnTree()
          Exportiert die f?r die Lerner wichtigen Informationen in einen LearnTree.
 void unsetGoalReached(int i)
          Setzt die goalReached-Markierung f?r die Nachbedingung i auf false.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

operator

private Operator operator
Der Operator, der im Knoten gespeichert ist.
Since:
[1999-08-08]

prev

private PlanTree prev
Zeiger auf den Vorg?ngerknoten.
Since:
[1999-08-08]

next

private PlanTree[] next
Feld von Zeigern auf die Nachfolgeknoten.
Since:
[1999-08-08]

goalPath

private boolean[] goalPath
Feld von goalPath-Markierungen. Ist eine Markierung auf true gesetzt, f?hrt der entsprechende Pfad gleichen Indexes zum Ziel. Es wird also der folgende (!) Knoten markiert. Der Wurzelknoten wird als implizit auf dem Weg zum Ziel liegend gesehen.
Since:
[1999-08-08]

goalReached

private boolean[] goalReached
Ist goalReached[i] true, so ist mit Erreichen der entsprechenden Nachbedingung auch das Ziel erreicht. Ist goalReached[i] false, so ist der Plan gescheitert, wenn hinter der (erf?llten) Nachbedingung mit Index i kein PlanTree mehr h?ngt. goalReached wird f?r die einzelnen Nachbedingungen vom Planer mittels setGoalReached[i] und unsetGoalReached[i] auf true bzw. false resp. gesetzt.
Since:
[1999-08-31]

child

private int child
Index, den dieser Knoten im Vorg?ngerknoten hat. Hat bei einem Wurzelknoten den Wert -1.
Since:
[1999-08-08]
Constructor Detail

PlanTree

public PlanTree(Operator operator)
Konstruktor, der einen Wurzelknoten erzeugt. Aus dem ?bergebenen Operator wird die Anzahl der n?tigen Nachfolgeknoten ermitteln.
Parameters:
Operator - operator - Der im Knoten zu speichernde Operator.
Since:
[1999-08-08]
Method Detail

markGoalPath

public void markGoalPath()
                  throws OperatorNotEvaluatedException
Wird vom Planausf?hrer aufgerufen und initialisiert den Aufruf von markGoalPath (int i) mit dem Index der erf?llten Nachbedingung.
Since:
[1999-08-22]

markGoalPath

public void markGoalPath(int index)
Markiert den Pfad vom aktuellen Knoten abw?rts bis zur Wurzel als zum Ziel f?hrenden Pfad. Die vom aktuellen Knoten zum Ziel f?hrende Nachbedingung wird ?ber den int i markiert. Die Instanzen der Vorbedingung und der Deleteliste der erf?llten Nachbedingung werden als auf dem Weg zu einem Ziel liegend markiert.
Parameters:
int - i - der Index der zu markierenden Nachbedingung
Since:
[1999-08-29]

isRoot

public boolean isRoot()
Returns:
boolean - Ist true, wenn der Knoten eine Wurzel ist, sonst false.
Since:
[1999-08-08]

getRoot

public PlanTree getRoot()
Returns:
PlanTree - Der Wurzelknoten, der zu diesem Knoten geh?rt.
Since:
[1999-08-08]

setPrev

public PlanTree setPrev(PlanTree prev)
Setzt den Vorg?ngerknoten auf prev.
Parameters:
PlanTree - prev - der zu setzende Vorg?ngerknoten
Returns:
PlanTree - der neue Vorg?ngerknoten
Since:
[1999-08-29]

setChild

public int setChild(int child)
Setzt child.
Since:
[1999-08-29]

getNext

public PlanTree getNext()
                 throws OperatorNotEvaluatedException
Returns:
PlanTree - Der Nachfolgeknoten, der sich aus einem ausgef?hrten Operator als erf?llte Nachbedingung ergibt.
Since:
[1999-08-08]

getNext

public PlanTree getNext(int i)
Liefert einen Nachfolgeknoten. Dabei folgt der Operator im Knoten, der "uber den Index i zur"uckgegeben wird, dem aktuellen Operator hinter der Nachbedingung mit Index i.
Parameters:
int - i - Index des Nachfolgeknotens.
Returns:
PlanTree - Der Nachfolgeknoten mit Index i.
Since:
[1999-08-08]

setNext

public PlanTree setNext(PlanTree next,
                        int i)
Setzt einen PlanTree als Nachfolgeknoten. Dem ?bergebenen LearnTree wird der aktuelle Knoten als Vorg?ngerknoten gesetzt.
Parameters:
PlanTree - next - Der zu setztende Nachfolgeknoten.
int - i - Index des Nachfolgeknotens.
Since:
[1999-08-08]

removeNext

public PlanTree removeNext(int i)
Entfernt den Nachfolgebaum mit dem Index i. Der gel?schte Baum wird als eigener Baum zur?ckgegeben.
Parameters:
int - i - der Index des zu l?schenden Nachfolgebaumes.
Returns:
PlanTree - der gel?schte Nachfolgebaum.
Since:
[1999-08-29]

getPrev

public PlanTree getPrev()
Returns:
PlanTree - der Vorg?ngerknoten
Since:
[1999-08-08]

getOperator

public Operator getOperator()
Returns:
Operator - Der Operator des Knotens.
Since:
[1999-08-08]

getChild

public int getChild()
Returns:
int - Der Index des Knotens im Vorg?ngerknoten. Handelt es sich um einen Wurzelknoten, wird -1 zur?ckgegeben.
Since:
[1999-08-08]

toLearnTree

public LearnTree toLearnTree()
Exportiert die f?r die Lerner wichtigen Informationen in einen LearnTree.
Returns:
LearnTree -
Since:
[1999-08-15]
See Also:
LearnTree

renamePredArgs

public long renamePredArgs()
Ruft die eigentlich renamePredArgs-Methode auf. Diese Methode sollte sinnvollerweise vor dem Aufruf von toLearnTree() gemacht werden.
Returns:
long - die Gesamtzahl der traversierten PredArgs. K?nnte f?r die Statistik interessant sein.
Since:
[1999-08-29]

renamePredArgs

public long renamePredArgs(long count)
Benennt die PredArguments, die im Planbaum auftauchen, der Reihe nach aufsteigend durch. Identische PredArguments behalten aufgrund der selben Referenzierung gleiche Namen. Diese Methode wird von renamePredArgs() aufgerufen. Die Traversierung durch die PredArguments ist aufgrund diverser length, size(), getArity() zwar un?sthetisch, aber diese PG hat sich ja gegen sch?nen Code ausgesprochen. :->
Parameters:
long - count - die Nummer (der Name) des ersten PredArguments.
Returns:
long - die gr??te Nummer, die bereits vergeben wurde.
Since:
[1999-08-29]

goalReached

public boolean goalReached()
                    throws OperatorNotEvaluatedException
Liefert den Wert von goalReached f?r diejenige Nachbedingung, die nach Ausf?hrung des Operators erf?llt ist.
Returns:
boolean - Zur Bedeutung vgl. das Attribut goalReached[]
Since:
[1999-08-31]

goalReached

public boolean goalReached(int i)
Liefert den Wert von goalReached f?r die Nachbedingung mit Index i.
Parameters:
int - i - Der Index der Nachbedingung.
Returns:
boolean - Zur Bedeutung vgl. das Attribut goalReached[]
Since:
[1999-08-31]

setGoalReached

public void setGoalReached(int i)
Setzt die goalReached-Markierung f?r die Nachbedingung i auf true.
Parameters:
int - i - Der Index der Nachbedingung.
Since:
[1999-08-31]

unsetGoalReached

public void unsetGoalReached(int i)
Setzt die goalReached-Markierung f?r die Nachbedingung i auf false.
Parameters:
int - i - Der Index der Nachbedingung.
Since:
[1999-08-31]