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

operators
Class Operator

java.lang.Object
  |
  +--dataanalysis.databases.DatabaseElement
        |
        +--operators.Operator
Direct Known Subclasses:
ClassifierOperator, CompageContainsKeywordOperator, CompageContainsKeywordOperator2, CompoundOperator, FindComPageOperator, FindContainsProductOperator, FindProdPageFromHomeOperator, FindProdPageOperator, GuessCompageFromProdpageCutOperator, GuessCompageOperator, GuessCompanynameOperator, PrintlnOperator

public abstract class Operator
extends DatabaseElement
implements java.lang.Cloneable, java.io.Serializable

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.

Version:
1.9
Author:
Nils Malzahn
See Also:
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
, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

weight

private double weight
Die Gewichtung, die durch den Lerner vergeben wird und der verbesserten Auswahl von Operatoren zum Planungszeitpunkt dient. Diese Gewichtung wird dem Operator gegeben und nicht einer bestimmten Instanz eines Operators.
See Also:
OperatorLearner
Since:
Version 1.1

opID

private long opID
Erm?glicht die eindeutige Identifikation der Operatoren. Wird von der Methode OperatorDB.addOperator(Operator) der Klasse OperatorDB gesetzt.
See Also:
PlanArchive, OperatorDB
Since:
Version 1.0

opType

protected int opType
Der Operatortyp gibt an, ob es sich um einen klassischen, einen klassisch konditionalen oder reaktiven 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.

See Also:
Planner
Since:
Version 1.0


predicateIndexToVerify

protected int predicateIndexToVerify
Dieser Z?hler gibt an, welches Vorbedingungspr?dikat als n?chstes daraufhin ?berpr?ft werden muss, ob es schon belegt ist.

postcondFullfilled

protected int postcondFullfilled
Diese Variable gibt an, welche der m?glichen Nachbedingung erf?llt ist.
See Also:
Operator
Since:
Version 1.0

OPCLASSIC

public static final int OPCLASSIC
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType, dass es sich um einen klassischen Operator handelt.
Since:
Version 1.0

OPREACTIVE

public static final int OPREACTIVE
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType an, dass es sich um einen reaktiven Operator handelt.
Since:
Version 1.0

OPCONDITIONAL

public static final int OPCONDITIONAL
Diese Integer-Konstante bedeutet im Zusammenhang mit dem operatorType, dass es sich um einen konditionalen Operator handelt.
Since:
Version 1.0

OPTARGETMATCH

public static final 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. f?r den PlannerTypeA ?berpr?ft, ob das Ziel erreicht ist.
Since:
1.5

OPCLASSIFIER

public static final int OPCLASSIFIER

precond

protected Predicate[] precond
Die Vorbedingung des Operators. Array von Predicate Wird interpretiert als Konjunktion.
Since:
Version 1.0

postconds

protected Postcondition[] postconds
Die Nachbedingungen des Operators. Array von Postcondition. Wird interpretiert als Disjunktion von Add- und Delete-Listen-Paaren.
Since:
Version 1.0

added

protected transient java.util.LinkedList added
Hilfsstruktur zur Buchf?hrung ?ber hinzugef?gte Instanzen w?hrend der Planausf?hrung.
Since:
1.7

deleted

protected transient java.util.LinkedList deleted
Hilfsstruktur zur Buchf?hrung ?ber gel?schte Instanzen w?hrend der Planausf?hrung.
Since:
1.7
Constructor Detail

Operator

public Operator()
Ein Konstruktor dieser Signatur muss in allen Kindklassen vorhanden sein. In ihm m?ssen alle Vorbedingungen und Nachbedingungen erzeugt und gesetzt werden, falls es welche geben soll. Diese Konstruktorsignatur stellt die Clonbarkeit sicher!
Since:
Version 1.0
See Also:
OperatorDB.getNewOperator(long)
Method Detail

eval

public abstract void eval()
                   throws OperatorFailedException
Diese Methode entspricht bei Roboterpl?nen den Effektoren. Hier werden also die Dinge gemacht, die dazu f?hren, dass die Nachbedingungen eintreten.
Throws:
{@link - exception.OperatorFailedException} Wenn bei der Ausf?hrung der Operatoren ein Fehler auftritt wird eine Exception von diesem Typ geworfen. Ansonsten gilt: Du sollst keine andere Exception neben dieser werfen!
Since:
Version 1.0
See Also:
PlanExecution

getUnverifiedPrecondPred

public Predicate getUnverifiedPrecondPred()
Erstes nicht vollst?ndig belegtes Pr?dikat der Operatorvorbedingung wird zur?ckgegeben. Der Z?hler predicateIndexToVerify gibt das n?chste zu betrachtende Vorbedingungspr?dikat an, das ?berpr?ft werden muss.
Returns:
Predicate das n?chste zu belegende Pr?dikat. Sonst null.
Since:
Version 1.0
See Also:
PlanExecution

setVerifiedPrecondPred

public void setVerifiedPrecondPred(Predicate verifiedPred)
Setzt das n?chste zu verifizierende Pr?dikat der Operatorvorbedingung. Es handelt sich dabei um das Pr?dikat vor predicateIndexToVerify
Parameters:
verifiedPred - Das verifizierte Pr?dikat.
Since:
Version 1.0

getOpID

public long getOpID()
Liefert die Operator-ID.
Returns:
long die Operator-ID erm?glicht die eindeutige Identifikation der Operatoren innerhalb einer OperatorDB.
Since:
Version 1.0
See Also:
PlanArchive, OperatorDB

setOpID

public long setOpID(long id)
Setzt die Operator-ID.
Parameters:
id - die zu setzende Operator-ID.
Returns:
long die neue Operator-ID.
Since:
Version 1.0
See Also:
PlanArchive, OperatorDB

getPrecond

public Predicate[] getPrecond()
Liefert die Vorbedingung des Operators.
Returns:
Predicate[] die Vorbedingung des Operators Die Predicate, die in precond stehen, ergeben zusammen die Vorbedingung des Operators. Die Predicate werden als konjunktiv verkn?pft betrachtet.
Since:
Version 1.0
See Also:
Predicate

setPrecond

public Predicate[] setPrecond(Predicate[] prec)
Setzt die Vorbedingung des Operators.
Parameters:
prec - die zu setzende Vorbedingung.
Returns:
Predicate[] die neue Vorbedingung Die Predicate, die in precond stehen, ergeben zusammen die Vorbedingung des Operators. Die Predicate werden als konjunktiv verkn?pft betrachtet.
Since:
Version 1.0
See Also:
Predicate

getPostcond

public Postcondition[] getPostcond()
Liefert die Nachbedingungen des Operators.
Returns:
Postcondition[] die @link #postconds Nachbedingungen} des Operators. Interpretiert wird das Array als Disjunktion von Konjunktionen innerhalb der Postcondition.
Since:
Version 1.0
See Also:
PlanExecution, Predicate, Postcondition

setPostcond

public Postcondition[] setPostcond(Postcondition[] postc)
Setzt die Nachbedingungen des Operators.
Parameters:
postc - die zu setzende Nachbedingung.
Returns:
Postcondition[] die neue Nachbedingungen.
Since:
Version 1.0
See Also:
PlanExecution, Predicate, Postcondition

getWeight

public double getWeight()
Liefert die Gewichtung des Operators.
Returns:
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.
Since:
Version 1.0
See Also:
OperatorLearner

setWeight

public 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!
Parameters:
w - die zu setzende Gewichtung des Operators
Returns:
double die Gewichtung des Operators
Since:
Version 1.0
See Also:
OperatorLearner, OperatorDB.updateWeightMap(double,Operator)

getOpType

public int getOpType()
Liefert den Typ opType (Int) des Operators.
Returns:
long<( />ode) der Operatortyp
Since:
Version 1.0
See Also:
Planner

setOpType

public int setOpType(int i)
Setzt den Typ des Operators.
Parameters:
t - der zu setzende Operatortyp.
Returns:
int der neue Operatortyp
Since:
Version 1.0
See Also:
Planner

getPostcondFullfilled

public int getPostcondFullfilled()
Returns:
int postcondFullfilled.
Since:
Version 1.0
See Also:
postconds

setPostcondFullfilled

public int setPostcondFullfilled(int i)
                          throws OperatorNoSuchPostconditionException
Setzt postcondFullfilled.
Parameters:
i - der zu setzende Array Index postcondFullfilled.
Returns:
int neue postcondFullfilled
Since:
Version 1.0
See Also:
postconds

equals

public boolean equals(java.lang.Object o)
Zwei Operatoren sind genau dann gleich, wenn sie dieselbe 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.
Parameters:
o - Object
Returns:
true, wenn die opIDs ?bereinstimmen, sonst false.
Overrides:
equals in class java.lang.Object
Since:
Version 1.3.1
See Also:
CompoundOperator.equals(java.lang.Object), OperatorDB.addOperator(Operator)

toString

public java.lang.String toString()
gibt das Objekt als String aus
Returns:
Einen String, der den Zustand des Objekts repr?sentiert.
Overrides:
toString in class DatabaseElement
Since:
Version 1.2

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Diese Methode f?hrt ein Deepcopy des Operators durch. Es werden auch die Attribute des Operators werden geklont. Vor- und Nachbedingungen
Returns:
Ein Klon des Operators
Overrides:
clone in class java.lang.Object
Since:
Version 1.8

deepClone

public Operator deepClone()
                   throws java.lang.CloneNotSupportedException
Deprecated.  
Diese Methode f|hrt ein Deepcopy des Opera! durch. Es werden auch die Attribute des {@link operators.Operator Opera! werden geklont. Auch die {@link operators.PredArguments in den Predicates der Vor- und Nachbedingungen
Returns:
Ein Klon des Operators
Since:
Version 1.8

deepPointerClone

public java.lang.Object deepPointerClone()
                                  throws java.lang.CloneNotSupportedException
clone-Methode, die (1) neue PredArgs erzeugt UND (2) ihre Verzeigerung ueber Praedikatsgrenzen hinweg beachtet.
Returns:
Ein Klon des Operators
Since:
Version 1.9

setPredicateIndexToVerify

protected void setPredicateIndexToVerify(int i)
Diese Methode setzt die Variable 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.
Parameters:
i - der zu setzende Index
Since:
Version 1.3

getFullfilledPostcondition

public Postcondition getFullfilledPostcondition()
                                         throws OperatorNotEvaluatedException
Diese Methode gibt die erf?llte Postcondition zur?ck.
Returns:
Die Postcondition, die erf?llt ist.
Throws:
OperatorNotEvaluatedException - wird geworfen, wenn die Methode aufgerufen wird bevor das Ergebnis des Operators ermittelt wurde.
Since:
1.4

clear

public void clear()
Diese Methode l?scht den Inhalt von added und deleted
Since:
1.7

getAdded

public java.util.LinkedList getAdded()
Returns:
added
Since:
1.7

getDeleted

public java.util.LinkedList getDeleted()
Returns:
deleted
Since:
1.7

setDeleted

public void setDeleted(java.util.LinkedList ll)
Setzt deleted.
Parameters:
ll - die zu setzende LinkedList
Since:
1.7

setAdded

public void setAdded(java.util.LinkedList ll)
Setzt added.
Parameters:
ll - die zu setzende LinkedList
Since:
1.7