Basisklasse fuer alle umsetzbaren Handlungsmoeglichkeiten des Agenten
Ausgabe auf dem Terminal
Objekte anlegen und zerstören
Basisklasse fuer alle umsetzbaren Handlungsmoeglichkeiten des Agenten. Jedes Objekt dieser Klasse steht fuer eine Option, die eine konkrete Aktionsfolge zur Umsetzung erzeugen kann. Ebenso wie bei Constraints haengt die Utilityberechnung von Wuenschen von der aktuellen Situation ab. Zusaetzlich werden aber einschraenkende Wuensche (Nebenbedingungen) beachtet. Nebenbedingungen muessen von Constraint abstammen.Jedesmal, nachdem sich die aktuelle Situation im Weltmodell oder die Liste der zu beruecksichtigenden Nebenbedingungen geaendert hat, wird die expectedUtility (der Nutzen) neu berechnet.
Auch von Option selbst koennen Instanzen erzeugt werden. Sie werden zur Initialisierung im Deliberator und als letzter Fallback bei der Intentionerzeugung verwendet. Normalerweise werden aber nur von Nachkommen von Option Instanzen erzeugt.
Mit den uebergebenen Arrays von Zeigern auf Constraints wird keine Verantwortung fuer Constraint-Objekte uebergeben. Das die Option besitzende Objekte muss garantieren, dass Zeiger waerend der Lebensdauer der Option gueltig bleiben.
Quelltext
[Header | [Implementierung]
CVS Informationen zum Interface
************************************************** * * Aktueller Stand * * $RCSfile: Option.h,v $ * $Revision: 1.13 $ * $Date: 1998/08/14 13:21:02 $ * $Author: myritz $ * **************************************************
Die Berechnung von isPossible ist deutlich aufwendiger als die Berechnung
der expectedUtility. Wurde die Utility noch nicht berechnet, muss sie
zunaechst berechnet werden, um festzulegen, welche Constraints
beruecksichtigt werden muessen. Danach wird ein Planskelett erzeugt (wenn
nicht bereits eines existiert), das dann garantiert umsetzbar ist. Das Ergebnis wird gecacht, so dass ein wiederholter Aufruf der Funktion in
derselben Situation schnell zu demselben Ergebnis fuehrt.
Die Kosten fuer (1) sind abhaengig von der Option und vom Weltmodell. Nebenbedingungen vom Typ (2) haben die Kosten NEUTRAL_COST. Die Kosten der Einhaltung einer unbekannten Nebenbedingung sind MAX_COST.
Dadurch versucht die Option nie, sie zu erfuellen.
void setConstraints( const Array<Constraint *>& constraints )
virtual int cancellationCost()
virtual bool isPossible()
virtual bool forceContinuation()
virtual void adaptToPreviousIntention( const Option *previousIntention )
virtual Plan generatePlan()
virtual String toString()
virtual StorableObject* copy()
virtual ~Option()
Array <Constraint *> requestedConstraints
mutable Array <Constraint *> acceptedConstraints
int computeExpectedUtility()
virtual int baseUtility()
virtual int constraintCost( const Constraint *constraint )
bool isConstraintAccepted( int constraintId )
void setIsOptionPossible( bool isOptionPossible )
bool isOptionPossible()
mutable bool theIsOptionPossible
Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B
generated by doc++