Information Technology Reference
In-Depth Information
die die gewünschten Flugzeiten und Ticketpreise genauer festlegen. Es werden einige Re-
gelvariablen (
departs
,
retums
und
price
) verwendet, die während des Schlussfol-
gerungsvorgangs die Zeit- und Preisinformationen enthalten.
Die Methode
initialize()
des Agenten legt die Regelbasis für den Flug durch
Aufruf der Methode
initFlightRules()
fest. Der
Sleep-Timer
ist beispielsweise
auf dreißig Sekunden und der Status auf initialisiert (
INITIATED
) eingestellt. Nachdem
der Informations-Agent initialisiert wurde, wird die Methode
processAgent Event()
aufgerufen, um alle Ereignisse zu verarbeiten, die er empfängt. Der
InformationA-
gent
verarbeitet nur Ereignisse, die die Aktion
process
enthalten. Alle anderen Ereig-
nisse werden ignoriert. Wird ein Ereignis empfangen, das
process
enthält oder wird der
Agent synchron aufgerufen, sendet die Methode
process()
die Flugpreisanfrage zu der
Website und überprüft die als Ergebnis erhaltenen Flüge darauf, ob sie für den Anwender
interessant sind.
In der Methode
initFlightRules()
wird zunächst eine Regelvariable mit der
Bezeichnung
departureTime
definiert, die die Werte
morning
,
afternoon
oder
evening
enthalten kann. Eine weitere Regelvariable,
desiredDeparture
, kann die
Werte
yes
oder
no
annehmen, um anzuzeigen, ob die Abflugzeit den Wünschen des An-
fragenden entspricht. Die gleichen Regelvariablen werden für die Rückflugzeit festge-
legt. Eine weitere Regelvariable mit der Bezeichnung
rank
wird verwendet, um jede
Zusammenstellung von Flugoptionen einzustufen. Sie kann die Werte
good
,
better
oder
best
annehmen. Zusätzlich werden Objekte als Bedingung (
condition
) für
=
,
!
=
, > und < definiert. Die erste Regel,
morningDeparture
, hat eine Prämissenklausel,
die als Regelvariable
departs
definiert und auf kleiner als 1200 gesetzt ist (Mittag). Die
nächste Klausel dieser Regel weist der Variablen
departureTime
den Wert
morning
zu. Auf dieselbe Weise werden unter Verwendung der passenden Zeiten und Bedingungen
aus den Prämissenklauseln die Regeln für
afternoonDeparture
,
eveningDepar-
ture
,
morningReturn
,
afternoonReturn
und
eveningReturn
definiert. Der
nächste Satz von Regeln gibt an, ob die Hin-und Rückflugzeiten im gewünschten Bereich
liegen. Die Variable
desiredDeparture
wird auf
yes
gesetzt, wenn
departure-
Time
den Wert
evening
hat. Die Variable
desiredReturn
wird auf
yes
gesetzt,
wenn
returnTime
den Wert
morning
oder
afternoon
enthält. Der letzte Satz von
Regeln bewertet die Flüge. Wenn ein Flug eine gewünschte Hin- und Rückflugreisezeit
hat und weniger als 1000 $ kostet, wird die Regelvariable
rank
für diesen Flug auf den
Wert
best
gesetzt. Wenn die Zeit für den Hin- oder für den Rückflug nicht den Wünschen
entspricht, der Flug aber weniger als 800 $ kostet, erhält die
rank
den Wert
better
.
Wenn weder Hin- noch Rückflugzeit im gewünschten Rahmen liegen, der Preis aber ge-
ringer als 600 $ ist, wird die
rank
für diesen Flug auf den Wert
good
gesetzt. Die Re-
gelbasis ist bewusst etwas komplizierter gestaltet, als es der Anfwendungsfall eigentlich
erfordert. Es soll jedoch gezeigt werden, wie Regeln mit Prämissenklauseln von den Kon-
sequenzklauseln anderer Regeln abhängen. Dadurch wird eine interessantere Situation für
die Vorwärtsverkettung geschaffen, da einige Regeln beim Fortschreiten der Verarbeitung
das Hinzufügen weiterer Regeln zur Konfliktmenge verursachen.