Die Entscheidungskomponente des Agenten
Die Entscheidungskomponente des Agenten.Der Deliberator waehlt aus einer Reihe von Handlungsoptionen (Objekte der Klasse Option und ihrer Subklassen) wünschenswerte aus, und setzt dann den nuetzlichsten, unter den momentan sinnvollen Nebenbedingungen realisierbaren Wunsch um. Die Liste der beruecksichtigten Optionen und Nebenbedingungen ist zur Laufzeit aenderbar.
Die zentrale Methode ist startDeliberation. Sie steuert den Ablauf des Entscheidungsprozesses. Dieser Entscheidungsprozeß wird jedesmal gestartet, wenn neue Sichtinformationen eintreffen, oder die Action-Queue von Effectors leer ist. Das heißt, daß jede Handlungsoption jederzeit, also auch während ihrer Umsetzung, in der Lage sein muß, den erwarteten Nutzen ihrer Umsetzung bis zum Ende zu berechnen.
Von der Klasse wird nur ein Objekt erzeugt. Die Klasse ist nicht zur Vererbung geeignet.
Quelltext
[Header | [Implementierung]
CVS Informationen zum Interface
************************************************** * * Aktueller Stand * * $RCSfile: Deliberator.h,v $ * $Revision: 1.18 $ * $Date: 1998/08/14 13:20:14 $ * $Author: myritz $ * **************************************************
Als erstes werden die geforderten Nebenbedingungen bestimmt. Dazu wird jedes
Element von potentialConstraints nach seiner
expectedUtility gefragt. Ist sie groesser als
minConstraintUtility(), wird sie in die Liste der geforderten
Nebenbedingungen aufgenommen. Als nächstes werden die Wünsche bestimmt. Dazu wird von jedem Wunsch in
options eine Kopie angelegt, der die geforderten Nebenbedingungen
mitgeteilt werden (per Aufruf von setConstraints() ). Liegt der
erwartete Nutzen über minDesireUtility(), wird die Handlungsoption in
die Liste der Wünsche aufgenommen. Interessant ist hier vor allem die
Bestimmung der Nützlichkeit eines Wunsches durch
Option::computeExpectedUtility(). Nun wird aus den Wünschen eine Absicht bestimmt. Dabei spielen die letzte
Absicht, zu deren Umsetzung sich der Agent entschlossen hat (committed
intention), die Umsetzbarkeit eines Wunsches, und nicht zuletzt der Nutzen des
jeweiligen Wunsches eine Rolle. Dieser Schritt ist in die Methode
indexOfBestDesire ausgelagert. Konnte kein umsetzbarer Wunsch ermittelt
werden, wird der Standardwunsch Option zur Absicht bestimmt. Bevor ein konkreter Plan entwickelt wird, hat die Absicht die Gelegenheit,
Daten mit der bisherigen Absicht abzugleichen (mit dem Aufruf von
adaptToPreviousIntention() ). Als letztes wird die nun festgelegt Absicht aufgefordert, einen Plan zu ihrer
Umsetzung zu erzeugen (mit generatePlan). Dieser Plan wird nun
den Effectors zur Ausführung übergeben.
Deliberator( const Array<int>& optionIds, const Array<int>& potentialConstraintIds, Effectors *anEffector )
potentialConstraintIds -
anEffector - Zeiger auf den Effektor void addOption(int optionId )
void addPotentialConstraint(int constraintId )
void startDeliberation()
~Deliberator()
class NoDesiresLeftException: public Exception
Effectors* theEffector
Array <Option *> options
Array <Constraint *> potentialConstraints
Option* currentIntention
Option* previousIntention
void initialize( const Array<int>& optionIds, const Array<int>& potentialConstraintIds )
int indexOfBestDesire( const Array<Option *>& desires )
int minConstraintUtility()
int minDesireUtility()
Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B
generated by doc++