|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--dataanalysis.databases.DatabaseElement
|
+--operators.Operator
Abstrakte Superklasse f?r alle Operatoren, die implementiert werden sollen.
Operatoren haben als einzige Datenquelle die Vor-
und Nachbedingung. Aus diesen Informationen m?ssen
die Operatoren das variable Wissen, das sie nutzen sollen extrahieren.
Dabei d?rfen die Operatoren auf keinen Fall die
Pr?dikate oder deren
Argumente neu erzeugt oder deren
Referenzen neu gesetzt werden. Das ist allein dem Planner
vorbehalten.
Instanzen d?rfen und sollen jedoch in den
Nachbedingungen neu erzeugt werden.
Dabei gibt es einen Sonderfall: Wenn die zu erzeugende
Instanz dem Konzept
mengenurl angeh?rt, dann muss das zugeh?rige
Contents-Objekt vom Typ
SearchNetResult oder
URLList sein, damit die
PlanExecution diese schlie?lich in
Instanzen des Konzepts
url ?berf?hren kann.
Da die Konzeptreferenzen innerhalb des Operators
dieselben sein sollen, die auch in der T_Box vorhanden
sind, sollte im Konstruktor eines Operators darauf geachtet werden,
dass die Namen f?r die Pr?dikate, die in den
Vor- und Nachbedingung des
Operator genutzt werden denen f?r die Konzepte
entsprechen, damit aufgrund dieses Namens sp?ter z.B. von der
OperatorDB automatisch die richtigen Konzepte zugewiesen werden k?nnen.
Die Operatoren k?nnen in der OperatorDB verwaltet werden.
OperatorDB, Serialized Form| Field Summary | |
protected java.util.LinkedList |
added
Hilfsstruktur zur Buchf?hrung ?ber hinzugef?gte Instanzen w?hrend der Planausf?hrung. |
protected java.util.LinkedList |
deleted
Hilfsstruktur zur Buchf?hrung ?ber gel?schte Instanzen w?hrend der Planausf?hrung. |
static int |
OPCLASSIC
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType, dass es sich um einen klassischen Operator handelt. |
static int |
OPCLASSIFIER
|
static int |
OPCONDITIONAL
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType, dass es sich um einen konditionalen Operator handelt. |
private long |
opID
Erm?glicht die eindeutige Identifikation der Operatoren. |
static int |
OPREACTIVE
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType an, dass es sich um einen reaktiven Operator handelt. |
static int |
OPTARGETMATCH
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType an , dass es sich bei diesem Operator, um
einen Operator handelt, der z.B. |
protected int |
opType
Der Operatortyp gibt an, ob es sich um einen klassischen, einen klassisch konditionalen oder reaktiven Operator
handelt. |
protected int |
postcondFullfilled
Diese Variable gibt an, welche der m?glichen Nachbedingung erf?llt ist. |
protected Postcondition[] |
postconds
Die Nachbedingungen des Operators. |
protected Predicate[] |
precond
Die Vorbedingung des Operators. |
protected int |
predicateIndexToVerify
Dieser Z?hler gibt an, welches Vorbedingungspr?dikat als n?chstes daraufhin ?berpr?ft werden muss, ob es schon belegt ist. |
private double |
weight
Die Gewichtung, die durch den Lerner vergeben wird und der verbesserten Auswahl von Operatoren zum Planungszeitpunkt dient. |
| Fields inherited from class dataanalysis.databases.DatabaseElement |
elementname |
| Constructor Summary | |
Operator()
Ein Konstruktor dieser Signatur muss in allen Kindklassen vorhanden sein. |
|
| Method Summary | |
void |
clear()
Diese Methode l?scht den Inhalt von added und deleted |
java.lang.Object |
clone()
Diese Methode f?hrt ein Deepcopy des Operators durch. |
Operator |
deepClone()
Deprecated. |
java.lang.Object |
deepPointerClone()
clone-Methode, die (1) neue PredArgs erzeugt UND (2) ihre Verzeigerung ueber Praedikatsgrenzen hinweg beachtet. |
boolean |
equals(java.lang.Object o)
Zwei Operatoren sind genau dann gleich, wenn sie dieselbe opID haben. |
abstract void |
eval()
Diese Methode entspricht bei Roboterpl?nen den Effektoren. |
java.util.LinkedList |
getAdded()
|
java.util.LinkedList |
getDeleted()
|
Postcondition |
getFullfilledPostcondition()
Diese Methode gibt die erf?llte Postcondition zur?ck. |
long |
getOpID()
Liefert die Operator-ID. |
int |
getOpType()
Liefert den Typ opType (Int) des Operators. |
Postcondition[] |
getPostcond()
Liefert die Nachbedingungen des Operators. |
int |
getPostcondFullfilled()
|
Predicate[] |
getPrecond()
Liefert die Vorbedingung des Operators. |
Predicate |
getUnverifiedPrecondPred()
Erstes nicht vollst?ndig belegtes Pr?dikat der Operatorvorbedingung wird zur?ckgegeben. |
double |
getWeight()
Liefert die Gewichtung des Operators. |
void |
setAdded(java.util.LinkedList ll)
Setzt added. |
void |
setDeleted(java.util.LinkedList ll)
Setzt deleted. |
long |
setOpID(long id)
Setzt die Operator-ID. |
int |
setOpType(int i)
Setzt den Typ des Operators. |
Postcondition[] |
setPostcond(Postcondition[] postc)
Setzt die Nachbedingungen des Operators. |
int |
setPostcondFullfilled(int i)
Setzt postcondFullfilled. |
Predicate[] |
setPrecond(Predicate[] prec)
Setzt die Vorbedingung des Operators. |
protected void |
setPredicateIndexToVerify(int i)
Diese Methode setzt die Variable predicateIndexToVerify
und hilft beim Clonen. |
void |
setVerifiedPrecondPred(Predicate verifiedPred)
Setzt das n?chste zu verifizierende Pr?dikat der Operatorvorbedingung. |
double |
setWeight(double w)
Setzt die Gewichtung des Operators Diese Methode soll durch OperatorDB.updateWeightMap(double,Operator) aufgerufen werden und durch
sonst nichts! Sonst drohen schwerwiegende Inkonsistenzen
in der OperatorDB! |
java.lang.String |
toString()
gibt das Objekt als String aus |
| Methods inherited from class dataanalysis.databases.DatabaseElement |
getElementname,
logMessage,
setElementname |
| Methods inherited from class java.lang.Object |
|
| Field Detail |
private double weight
Operator
gegeben und nicht einer bestimmten Instanz
eines Operators.OperatorLearnerprivate long opID
OperatorDB.addOperator(Operator)
der Klasse OperatorDB gesetzt.PlanArchive,
OperatorDBprotected int opType
Operator
handelt.
Reaktive Operatoren sind solche mit deren
Nachbedingung man nicht weiterplanen kann.
Konditionale Operatoren haben mehrere m?gliche
Nachbedingungensbelegungen (Disjunktion von Konjunktionen von
Nachbedingungen)
Klassische Operatoren haben genau eine Nachbedingung.
OPCLASSICOPCONDITIONALOPREACTIVEPlannerprotected int predicateIndexToVerify
protected int postcondFullfilled
Operatorpublic static final int OPCLASSIC
Operator handelt.public static final int OPREACTIVE
Operator handelt.public static final int OPCONDITIONAL
Operator handelt.public static final int OPTARGETMATCH
Operator, um
einen Operator handelt, der z.B. f?r den
PlannerTypeA ?berpr?ft, ob
das Ziel erreicht ist.public static final int OPCLASSIFIER
protected Predicate[] precond
Predicate
Wird interpretiert als Konjunktion.protected Postcondition[] postconds
Postcondition. Wird interpretiert als
Disjunktion von Add- und
Delete-Listen-Paaren.protected transient java.util.LinkedList added
protected transient java.util.LinkedList deleted
| Constructor Detail |
public Operator()
OperatorDB.getNewOperator(long)| Method Detail |
public abstract void eval()
throws OperatorFailedException
PlanExecutionpublic Predicate getUnverifiedPrecondPred()
predicateIndexToVerify gibt das n?chste zu
betrachtende Vorbedingungspr?dikat an, das
?berpr?ft werden muss.Predicate das n?chste zu belegende
Pr?dikat. Sonst null.PlanExecutionpublic void setVerifiedPrecondPred(Predicate verifiedPred)
predicateIndexToVerifyverifiedPred - Das verifizierte Pr?dikat.public long getOpID()
long die Operator-ID
erm?glicht die eindeutige Identifikation der Operatoren
innerhalb einer OperatorDB.PlanArchive,
OperatorDBpublic long setOpID(long id)
id - die zu setzende Operator-ID.long die neue Operator-ID.PlanArchive,
OperatorDBpublic Predicate[] getPrecond()
Predicate, die in precond stehen,
ergeben zusammen die Vorbedingung des Operators.
Die Predicate werden als konjunktiv verkn?pft betrachtet.Predicatepublic Predicate[] setPrecond(Predicate[] prec)
prec - die zu setzende Vorbedingung.Predicate, die in precond stehen,
ergeben zusammen die Vorbedingung des Operators.
Die Predicate werden als konjunktiv verkn?pft betrachtet.Predicatepublic Postcondition[] getPostcond()
Postcondition.PlanExecution,
Predicate,
Postconditionpublic Postcondition[] setPostcond(Postcondition[] postc)
postc - die zu setzende Nachbedingung.PlanExecution,
Predicate,
Postconditionpublic double getWeight()
Float die Gewichtung des Operators.
ist eine Gewichtung, die durch einen {@learners.OperatorLearner Lerner}
vergeben wird und der
verbesserten Auswahl von {@link operators.Operator Operatoren}
zum Planungszeitpunkt dient.OperatorLearnerpublic double setWeight(double w)
OperatorDB.updateWeightMap(double,Operator) aufgerufen werden und durch
sonst nichts! Sonst drohen schwerwiegende Inkonsistenzen
in der OperatorDB!w - die zu setzende Gewichtung des Operatorsdouble die Gewichtung des OperatorsOperatorLearner,
OperatorDB.updateWeightMap(double,Operator)public int getOpType()
long<( />ode) der Operatortyp- Since:
- Version 1.0
- See Also:
Plannerpublic int setOpType(int i)
t - der zu setzende Operatortyp.Plannerpublic int getPostcondFullfilled()
postcondFullfilled.postconds
public int setPostcondFullfilled(int i)
throws OperatorNoSuchPostconditionException
postcondFullfilled.i - der zu setzende Array Index postcondFullfilled.postcondFullfilledpostcondspublic boolean equals(java.lang.Object o)
opID haben. Das verpflichtet den Shellbenutzer
aufzupassen, dass gleiche {operators.Operator Operatoren} immer
die gleiche opID haben. Daher sollte ein solcher
Operatoren nur einmal
in die OperatorDB geschrieben werden, da diese
f?r jeden hinzugef?gten Operator eine neue opID
vergibt.o - Objecttrue, wenn die opIDs ?bereinstimmen,
sonst false.CompoundOperator.equals(java.lang.Object),
OperatorDB.addOperator(Operator)public java.lang.String toString()
public java.lang.Object clone()
throws java.lang.CloneNotSupportedException
public Operator deepClone()
throws java.lang.CloneNotSupportedException
public java.lang.Object deepPointerClone()
throws java.lang.CloneNotSupportedException
protected void setPredicateIndexToVerify(int i)
predicateIndexToVerify
und hilft beim Clonen. Sie sollte sonst nicht aufgerufen werden, da
sonst die Belegung der Prädikate in der Vorbedinunng
durch die PlanExecution durcheinander geraten
k?nnte.i - der zu setzende Index
public Postcondition getFullfilledPostcondition()
throws OperatorNotEvaluatedException
Postcondition zur?ck.Postcondition, die erf?llt ist.public void clear()
added und deletedpublic java.util.LinkedList getAdded()
addedpublic java.util.LinkedList getDeleted()
deletedpublic void setDeleted(java.util.LinkedList ll)
deleted.ll - die zu setzende LinkedListpublic void setAdded(java.util.LinkedList ll)
added.ll - die zu setzende LinkedList
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||