Information Technology Reference
In-Depth Information
zu können. Dazu werden zwei Java-Schnittstellen Sensor und Effector definiert.
Gleichzeitig werden die Klasse Clause durch SensorClause und EffectorClau-
se erweitert.
Sensor ist dabei eine Instanz von SensorClause und Effector eine Instanz
von EffectorClause . SensorClause gibt eine Anfrage an eine Sensormethode
aus, die durch eine beliebige Klasse definiert ist, welche die Schnittstelle Sensor imple-
mentiert und bei der Rule registriert. Rule sucht während der Laufzeit sensorName
und ruft die Methode auf dem registrierten Sensorobjekt auf. Bei den Effektoren wird ein
ähnliches Verfahren eingesetzt. Die Schnittstelle Sensor besteht aus der einzigen Me-
thode sensor() , die drei Parameter benötigt: das Objekt SensorClause , das diese
Methode aufgerufen hat, den Namen des Sensors, der verwendet werden soll, und eine
RuleVariable , in der die Ergebnisse gespeichert werden. Die Methode sensor()
gibt einen booleschen Wert zurück. Die Klasse SensorClause erweitert Clause , in-
dem sie ein Objektdatenelement hinzufügt, das die Schnittstelle Sensor implementiert
und einen String, der sensorName angibt. SensorClause() benötigt zwei Parame-
ter: den Namen des zu überprüfenden Sensors und eine RuleVariable , die den Wahr-
heitswert enthält. Die Methode check() wird von einer Produktionsregel aufgerufen,
um den Wahrheitswert von SensorClause auszuwerten.
Die Schnittstelle Effector erlaubt den Aufruf einer beliebigen Klasse als Effektor
von einer Regel in einer Produktionsregelbasis. Sie muss die Schnittstelle implementie-
ren, indem sie eine einzelne Methode effector() bereitstellt, die auf ein Objekt, den
Namen eines Effektors und einen String als Argumentparameter zurückgreift. Die Klasse
EffectorClause erweitert Clause , indem sie Elemente für die Namen der aufzuru-
fenden Effektoren hinzufügt: ein Datenelement, das einen Verweis auf das Objekt enthält,
das die Methode effector() implementiert und einen String von Argumenten. Der
Konstruktor EffectorClause() benötigt zwei Parameter: den Namen des aufzuru-
fenden Effektors und das Stringargument. Die Methode perform() wird eingesetzt, um
die Methode effector() auf dem Objekt aufzurufen, das sich registriert hat, um die
Funktion des Effektors bereitzustellen.
Um Tatsachen repräsentieren zu können, wird eine Klasse namens Fakt eingeführt,
deren Konstruktor eine einzige Klausel als Parameter benötigt. Ein Faktum kann die Zu-
weisung eines Wertes zu einer Regelvariablen, ein Sensoren- oder ein Effektorenaufruf
sein. Die Fakten sind als Teil der Produktionsregelbasis zusammen mit den anderen Regeln
definiert. Sie sind in der Rule -Klasse registriert. Die Methode initializeFacts()
wird aufgerufen, um ein einzelnes Faktum zu setzen, bevor ein Schlussfolgerungszyklus
durchgeführt wird.
9.4
Genetische Algorithmen
Im Rahmen der Konzeptionalisierung und Implementierung wurde die Technik des Ge-
netischen Algorithmus eher theoretisch und generisch entwickelt. Im Folgenden werden
 
Search WWH ::




Custom Search