Class Agent

java.lang.Object
  |
  +--Agent
All Implemented Interfaces:
javax.swing.tree.MutableTreeNode, java.io.Serializable, javax.swing.tree.TreeNode

public class Agent
extends java.lang.Object
implements java.io.Serializable, javax.swing.tree.MutableTreeNode

Die zentrale Klasse des Modells.

See Also:
Serialized Form

Field Summary
private  int age
          das Alter (in Runden)
private  AgentMonitor agentMonitor
          das Fenster zur Anzeige von Informationen zum Agenten, null falls keines geöffnet
static int agentNum
          die Anzahl der (vom Benutzer) geschaffenen Agenten
private  java.util.Vector agentsInRange
          eine Liste aller Agenten im Blickfeld
private  Agent bestCoordinator
          der Koordinator mit der bisher besten Bewertung (der immernoch koordiniert), null falls keiner
private  float bestCoordinatorValue
          die Bewertung dieses Koordinators
private  int birthDay
          die Runde, in der der Agent geboren wurde
private  float breedingWeight
          Gewichtung des Bedürfnisses sich fortzupflanzen
 boolean canBreed
          kann sich der Agent in dieser Runde vermehren
 boolean canEndCoordinating
          kann der Agent in dieser Runde sein Koordinatorendasein beenden
 boolean canGather
          kann der Agent in dieser Runde Nahrung sammeln
 boolean canMove
          kann sich der Agent in dieser Runde bewegen
 boolean canStartCoordinating
          kann der Agent in dieser Runde Koordinator werden
 boolean canSubordinate
          kann sich der Agent in dieser Runde einem Koordinator unterordnen
 boolean canUnsubordinate
          kann der Agent in dieser Runde eine Unterordnung beenden
private  float childFood
          soviel Nahrung gibt er bei jeder Vermehrung an seine Nachkommen weiter
private  java.util.Vector children
          die Liste der direkten Nachkommen
private  Agent coordinator
          der Koordinator des Agenten, oder null, falls der Agent nicht koordiniert wird
private  boolean coordinatorInRange
          gibt es einen Koordinator in Reichweite
private  float curiosityWeight
          Gewichtung des Bedürfnisses Neugier
private  int deathDay
          die Runde, in der der Agent gestorben ist, -1 wenn er noch lebt
private  float eatFoodPR
          soviel Nahrung verbraucht der Agent jede Runde
private  float food
          der aktuelle Nahrungsvorrat
private  float gatherAmount
          die Maximalmenge der pro Runde gesammelten Nahrung
private  float gatherRest
          soviel Nahrung belässt der Agent mindestens auf dem Feld
private  float influenceWeight
          Gewichtung des Bedürfnisses Einfluss (auf Untergebene) auszuüben
private  boolean isCoordinator
          ist der Agent zur Zeit Koordinator
private  java.util.Vector knownCoordinators
          die Liste von allen dem Agenten bekannten noch aktiven Koordinatoren
private  java.util.Vector knownCoordinatorsValues
          die Bewertungen derselben
private  java.lang.String lastAction
          womit war der Agent gerade beschäftigt
private  Memory memory
          das Gedächtnis
private  float memoryMaxAge
          nur solange kann er Informationen über Felder in seinem Gedächtnis behalten
private  MemoryMonitor memoryMonitor
          das Fenster zu Anzeige des Gedächtnisses, null falls keines geöffnet
private  java.lang.String name
          der eindeutige name, mit Hinweisen auf die Vorfahren
private  int numOfChildren
          die Anzahl an direkten Nachkommen
private  Agent parent
          der Eltern-Agent
private  float planningRange
          Informationen über Felder bis zu diesem Abstand bezieht der Agent in seine Planungen mit ein
private  float pubertyAge
          in diesem Alter wird der Agent fruchtbar
private  Satisfaction sat
          die Satisfaction des Agenten (siehe dort)
 int startCoordinatingDate
          in dieser Runde wurde der Agent Koordinator
private  java.util.Vector subordinates
          die Liste der Untergebenen (falls der Agent koordiniert)
 int subordinationDate
          in dieser Runde ordnete sich der Agent dem aktuellen Koordinator unter
private  float subordinationStartValue
          mit diesem Nahrungsvorrat startete der Agent seine aktuelle Unterordnung
private  float survivalWeight
          Gewichtung des Bedürfnisses zu Überleben
private  java.awt.Point target
          das vom Koordinator ermittelte Zielfeld, null falls keines oder falls es schon erreicht ist
private  java.util.Vector targets
          die Liste der Zielfelder der Untergebenen
private  float viewingRange
          Felder bis zu diesem Abstand kann er wahrnehmen
private  float wealthWeight
          Gewichtung des Bedürfnisses nach Reichtum
private  java.awt.Point whereToMove
          auf welches Feld geht der nächste Schritt
private  int x
          die aktuelle X-Koordinate
private  int y
          die aktuelle Y-Koordinate
 
Constructor Summary
Agent(Agent parent)
          Erschafft einen neuen Agenten.
 
Method Summary
 void breed()
          Der Agent pflanzt sich fort.
 java.util.Enumeration children()
          Liefert eine Aufzählung aller direkten Nachkommen.
 void coordinationTerminated()
          Hiermit wird einem Untergebenen das Ende der Koordination mitgeteilt.
 void coordinatorDied()
          Hiermit wird einem Untergebenen der Tod seines Koordinators mitgeteilt.
 int decide()
          Führt eine Entscheidung herbei, was in dieser Runde zu tun ist.
private  void endCoordinating()
          Der Agent beendet seinen Status als Koordinator
 void gather()
          Der Agent sammelt Nahrung.
 int getAge()
          Liefert das Alter des Agenten zurück.
 boolean getAllowsChildren()
          Liefert zurück, ob es dem Agenten erlaubt ist Nachwuchs in die Welt zu setzen.
 float getBestCoordinatorValue()
          Liefert die Bewertung des besten Koordinators den der Agent bisher hatte.
 int getBirthDay()
          Liefert die Nummer der Runde, in der der Agent geboren (oder geschaffen) wurde
 javax.swing.tree.TreeNode getChildAt(int i)
          Liefert das Kind mit dem übergebenen Index.
 int getChildCount()
          Liefert die Zahl der Kinder.
 int getChildFood()
          Liefert den Wert des Parameters childFood (Nahrungmenge für den Nachwuchs)
 java.awt.Color getColor()
          Der Agent gibt die Farbe zurück, in der er gerne gezeichnet würde.
 Agent getCoordinator()
          Liefert den Koordinator des Agenten zurück, null falls keiner existiert.
 float getCoordinatorValue()
          Die aktuelle Bewertung des aktuellen Koordinators des Agenten.
 int getDeathDay()
          Liefert die Nummer der Runde, in der der Agent gestorben ist.
 java.lang.String getDebugInfo()
          Liefert fürs Debuggen hilfreiche Informationen zum Agenten
 float getEatFoodPR()
          Liefer den Wert des Parameters eatFoodPR (Nahrungsverbrauch pro Runde).
 float getFood()
          Liefert den aktuellen Nahrungsvorrat des Agenten zurück
 float getGatherAmount()
          Liefert die Nahrungsmenge, die ein Agent maximal pro Runde sammelt.
 float getGatherRest()
          Liefert die Nahrungsmenge, die ein Agent mindestens auf einem Feld belässt.
 int getIndex(javax.swing.tree.TreeNode child)
          Liefert den Index des übergebenen Kindes.
 java.lang.String getLastAction()
          Sagt, welche Aktion der Agent gerade getan hat.
 java.lang.String getLongInfo()
          Liefert ausführliche Informationen zum Agenten
 java.lang.String getMediumInfo()
          Liefert etwas ausführlichere Informationen zum Agenten
 Memory getMemory()
          Liefert das Gedächtnis des Agenten.
 float getMemoryMaxAge()
          Liefert das maximale Alter von Informationen im Memory, danach werden diese vergessen.
 float[] getMutableValues()
          Liefert ein Array mit den potentiell durch Mutation veränderlichen Werten des Agenten. return array mit 13 float Werten.
 java.lang.String getName()
          Liefert den Namen des Agenten.
static int getNum()
          Liefert die Anzahl der bisher geschaffenen (nicht der geborenen) Agenten.
 int getNumOfChildren()
          Liefert die Zahl der Kinder des Agenten.
 int getNumOfSubordinates()
          Liefert die Zahl der Untergebenen.
 javax.swing.tree.TreeNode getParent()
          Liefert den Elternagenten.
 int getPlanningRange()
          Liefert den Wert des Parameters planningRange ("geistige Sichtweite")
 int getPubertyAge()
          Liefert den Wert des Parameters pubertyAge (ab dann ist der Agent fruchtbar)
 Satisfaction getSatisfaction()
          Liefert das Satisfaction-Objekt des Agenten zurück.
 java.lang.String getShortInfo()
          Liefert die wesentlichen Informationen des Agenten
 java.awt.Point getTarget()
          Liefert das aktuelle Zielfeld des Agenten, oder null falls er nicht koordiniert wird oder schon am Ziel ist.
 java.awt.Point getTarget(Agent client, int range)
          Anfrage an den Koordinator, der für den sendenden Agenten das optimale Zielfeld bestimmt.
 int getViewingRange()
          Liefert den Wert des Parameters viewingRange (Sichtweite)
 float[] getWeights()
          Liefert die Werte für die Gewichtungen der Bedürfnisse untereinander.
 int getX()
          Liefert die aktuelle X-Koordinate das Agenten.
 int getY()
          Liefert die aktuelle Y-Koordinate das Agenten.
 void giveFood(float amount)
          Erlaubt dem Empfänger die übergebene nahrungsmenge seinem Vorrat hinzuzufügen.
 void go()
          Der Agent ist dran.
 boolean hasCoordinator()
          Hat der Agent einen Koordinator oder nicht?
 boolean hasTarget()
          Hat der Agent ein Zielfeld?
 void insert(javax.swing.tree.MutableTreeNode child, int index)
          Trägt ein neues Kind beim Agenten ein.
 boolean isAlive()
          Lebt der Agent noch?
 boolean isCoordinator()
          Ist der Agent zur Zeit im "Koordiniermodus".
 boolean isLeaf()
          Ist der Agent ein Blatt im AgentTree (hat er Kinder).
 boolean isTarget(java.awt.Point p)
          Liefert true, falls das Feld Zielfeld eines Untergebenen des Koordinators ist, false sonst.
 boolean isVisible()
          Soll der Agent dargestellt werden?
 void lookAround(int range)
          Nimmt die nähere Umgebung des Agenten wahr.
 void move(java.awt.Point where)
          Der Agent bewegt sich auf die parametrisierten Koordinaten.
private  void mutateAndSetParameters(Agent child)
          Die Parameter, die der Mutation unterliegen werden im Rahmen des Modells mutiert und dem neuen Agenten zugewisen.
 void remove(int index)
          nicht implementiert
 void remove(javax.swing.tree.MutableTreeNode node)
          nicht implementiert
 void removeAgent()
           
 void removeAgentMonitor()
          Schliesst den AgentMonitor des Agenten.
 void removeFromParent()
          nicht implementiert
 void removeMemoryMonitor()
          Schliesst den MemoryMonitor des Agenten.
 void rest()
          Der Agent tut einfach nix.
 void setAge(int a)
          Legt das Alter des Agenten fest.
 boolean setAgentMonitor()
          Öffnet ein Fenster, um den aktuelle Informationen des Agenten anzuzeigen.
 void setDeathDay(int dd)
          Legt die Runde fest, in der der Agent gestorben ist.
 void setDefaultParameters()
          Setzt die individuellen Parameter auf die im Modell festgelegten Defaultwerte.
 void setFood(float food)
          Setzt den Nahrungsvorrat des Agenten auf den übergebenen Wert
 boolean setMemoryMonitor()
          Öffnet ein Fenster, um den Gedächtnisinhalt des Agenten anzuzeigen.
 void setName(java.lang.String name)
          Setzt den Namen des Agenten.
 void setParameters(float eatFoodPR, float pubertyAge, float gatherAmount, float gatherRest, float childFood, float memoryMaxAge, float viewingRange, float planningRange, float survivalWeight, float wealthWeight, float curiosityWeight, float breedingWeight, float influenceWeight)
          Legt die individuellen Werte für die Parameter des Agenten fest.
 void setParent(javax.swing.tree.MutableTreeNode newParent)
          legt einen neuen Elternknoten fest
 void setUserObject(java.lang.Object object)
          nicht implementiert
 void setX(int x)
          Legt die X-Koordinate des Agenten fest.
 void setY(int y)
          Legt die Y-Koordinate des Agenten fest.
 void showMonitors()
          Bringt eventuell vorhandene MonitorFenster des Agenten in den Vordergrund.
private  void startCoordinating()
          Der Agent wechselt in den Status eines Koordinators.
private  void subordinate()
          Hiermit ordnet sich der Agent dem Koordinatir unter, den er sich ausgesucht hat.
 void subordinateToCoordinator(Agent sub)
          Diese Methode wird an den Koordinator geschickt, um die Unterordnung perfekt zu machen.
 java.lang.String toString()
          Liefert den Namen des Agenten.
private  void unsubordinate()
          Hiermit beendet ein Untergebener diesen Zustand (der des Koordiniertwerdens)
 void unsubordinateFromCoordinator(Agent sub)
          Hier wieder das Pendant auf Seiten des Koordinators, dem mitgeteilt wird, dass ein Untergebener die Beziehung beendet.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

agentNum

public static int agentNum
die Anzahl der (vom Benutzer) geschaffenen Agenten

food

private float food
der aktuelle Nahrungsvorrat

age

private int age
das Alter (in Runden)

birthDay

private int birthDay
die Runde, in der der Agent geboren wurde

deathDay

private int deathDay
die Runde, in der der Agent gestorben ist, -1 wenn er noch lebt

name

private java.lang.String name
der eindeutige name, mit Hinweisen auf die Vorfahren

x

private int x
die aktuelle X-Koordinate

y

private int y
die aktuelle Y-Koordinate

memory

private Memory memory
das Gedächtnis

memoryMonitor

private MemoryMonitor memoryMonitor
das Fenster zu Anzeige des Gedächtnisses, null falls keines geöffnet

agentMonitor

private AgentMonitor agentMonitor
das Fenster zur Anzeige von Informationen zum Agenten, null falls keines geöffnet

numOfChildren

private int numOfChildren
die Anzahl an direkten Nachkommen

whereToMove

private java.awt.Point whereToMove
auf welches Feld geht der nächste Schritt

sat

private Satisfaction sat
die Satisfaction des Agenten (siehe dort)

lastAction

private java.lang.String lastAction
womit war der Agent gerade beschäftigt

children

private java.util.Vector children
die Liste der direkten Nachkommen

parent

private Agent parent
der Eltern-Agent

isCoordinator

private boolean isCoordinator
ist der Agent zur Zeit Koordinator

coordinator

private Agent coordinator
der Koordinator des Agenten, oder null, falls der Agent nicht koordiniert wird

target

private java.awt.Point target
das vom Koordinator ermittelte Zielfeld, null falls keines oder falls es schon erreicht ist

agentsInRange

private java.util.Vector agentsInRange
eine Liste aller Agenten im Blickfeld

bestCoordinator

private Agent bestCoordinator
der Koordinator mit der bisher besten Bewertung (der immernoch koordiniert), null falls keiner

bestCoordinatorValue

private float bestCoordinatorValue
die Bewertung dieses Koordinators

coordinatorInRange

private boolean coordinatorInRange
gibt es einen Koordinator in Reichweite

knownCoordinators

private java.util.Vector knownCoordinators
die Liste von allen dem Agenten bekannten noch aktiven Koordinatoren

knownCoordinatorsValues

private java.util.Vector knownCoordinatorsValues
die Bewertungen derselben

subordinates

private java.util.Vector subordinates
die Liste der Untergebenen (falls der Agent koordiniert)

targets

private java.util.Vector targets
die Liste der Zielfelder der Untergebenen

canMove

public boolean canMove
kann sich der Agent in dieser Runde bewegen

canGather

public boolean canGather
kann der Agent in dieser Runde Nahrung sammeln

canBreed

public boolean canBreed
kann sich der Agent in dieser Runde vermehren

canSubordinate

public boolean canSubordinate
kann sich der Agent in dieser Runde einem Koordinator unterordnen

canUnsubordinate

public boolean canUnsubordinate
kann der Agent in dieser Runde eine Unterordnung beenden

canStartCoordinating

public boolean canStartCoordinating
kann der Agent in dieser Runde Koordinator werden

canEndCoordinating

public boolean canEndCoordinating
kann der Agent in dieser Runde sein Koordinatorendasein beenden

startCoordinatingDate

public int startCoordinatingDate
in dieser Runde wurde der Agent Koordinator

subordinationDate

public int subordinationDate
in dieser Runde ordnete sich der Agent dem aktuellen Koordinator unter

subordinationStartValue

private float subordinationStartValue
mit diesem Nahrungsvorrat startete der Agent seine aktuelle Unterordnung

eatFoodPR

private float eatFoodPR
soviel Nahrung verbraucht der Agent jede Runde

pubertyAge

private float pubertyAge
in diesem Alter wird der Agent fruchtbar

gatherAmount

private float gatherAmount
die Maximalmenge der pro Runde gesammelten Nahrung

gatherRest

private float gatherRest
soviel Nahrung belässt der Agent mindestens auf dem Feld

childFood

private float childFood
soviel Nahrung gibt er bei jeder Vermehrung an seine Nachkommen weiter

memoryMaxAge

private float memoryMaxAge
nur solange kann er Informationen über Felder in seinem Gedächtnis behalten

viewingRange

private float viewingRange
Felder bis zu diesem Abstand kann er wahrnehmen

planningRange

private float planningRange
Informationen über Felder bis zu diesem Abstand bezieht der Agent in seine Planungen mit ein

survivalWeight

private float survivalWeight
Gewichtung des Bedürfnisses zu Überleben

wealthWeight

private float wealthWeight
Gewichtung des Bedürfnisses nach Reichtum

curiosityWeight

private float curiosityWeight
Gewichtung des Bedürfnisses Neugier

breedingWeight

private float breedingWeight
Gewichtung des Bedürfnisses sich fortzupflanzen

influenceWeight

private float influenceWeight
Gewichtung des Bedürfnisses Einfluss (auf Untergebene) auszuüben
Constructor Detail

Agent

public Agent(Agent parent)
Erschafft einen neuen Agenten. Danach müssen noch diverse Werte gesetzt werden. Mit mutateAndSetParameters, setParameters oder setDefaultParameters.
Parameters:
parent - der Eltern-Agent.
Method Detail

getNum

public static int getNum()
Liefert die Anzahl der bisher geschaffenen (nicht der geborenen) Agenten. Muss nicht mit der Zahl der lebenden existierenden Agenten übereinstimmen.
Returns:
Die Zahl der (vom Benutzer) geschaffenen Agenten als int.

go

public void go()
Der Agent ist dran. Über diese Methode wird der Agent von Scheduler angesprochen.

lookAround

public void lookAround(int range)
Nimmt die nähere Umgebung des Agenten wahr. D.h. die Information in memory wird für alle Felder in Sichtweite aktualisiert. Zusätzlich werden noch die Informationen über mögliche Koordinatoren aktualisiert.
Parameters:
range - Sichtweite in alle acht Richtungen.

decide

public int decide()
Führt eine Entscheidung herbei, was in dieser Runde zu tun ist. Die Hauptarbeit erledigt sat (Satisfaction).
Returns:
Liefert die Aktion, die zu tun ist.

move

public void move(java.awt.Point where)
Der Agent bewegt sich auf die parametrisierten Koordinaten.
Parameters:
where - ein Punkt mit den absoluten Koordinaten des Zielfeldes.

rest

public void rest()
Der Agent tut einfach nix.

gather

public void gather()
Der Agent sammelt Nahrung. D.h. er entnimmt dem Nahrungsaufkommen des Feldes auf dem er steht einen Teil und fuegt ihn seinem Nahrungsvorrat hinzu.

breed

public void breed()
Der Agent pflanzt sich fort. Auf einem möglichst nahegelegenen Feld schafft der Agent einen neuen, und gibt ihm einen Teil seines Nahrungsvorrates ab.

getTarget

public java.awt.Point getTarget(Agent client,
                                int range)
Anfrage an den Koordinator, der für den sendenden Agenten das optimale Zielfeld bestimmt.
Parameters:
client - der Agent, für den das Ziel bestimmt ist.
range - seine Reichweite, innerhalb derer das Ziel liegen muss.
Returns:
das Zielfeld (d.h. seine Koordinaten als Point).

subordinate

private void subordinate()
Hiermit ordnet sich der Agent dem Koordinatir unter, den er sich ausgesucht hat.

subordinateToCoordinator

public void subordinateToCoordinator(Agent sub)
Diese Methode wird an den Koordinator geschickt, um die Unterordnung perfekt zu machen.
Parameters:
sub - der Agent der sich unterordnet.

unsubordinate

private void unsubordinate()
Hiermit beendet ein Untergebener diesen Zustand (der des Koordiniertwerdens)

unsubordinateFromCoordinator

public void unsubordinateFromCoordinator(Agent sub)
Hier wieder das Pendant auf Seiten des Koordinators, dem mitgeteilt wird, dass ein Untergebener die Beziehung beendet.
Parameters:
sub - der Agent, der die Unterordnung beendet.

startCoordinating

private void startCoordinating()
Der Agent wechselt in den Status eines Koordinators.

endCoordinating

private void endCoordinating()
Der Agent beendet seinen Status als Koordinator

coordinationTerminated

public void coordinationTerminated()
Hiermit wird einem Untergebenen das Ende der Koordination mitgeteilt.

coordinatorDied

public void coordinatorDied()
Hiermit wird einem Untergebenen der Tod seines Koordinators mitgeteilt.

mutateAndSetParameters

private void mutateAndSetParameters(Agent child)
Die Parameter, die der Mutation unterliegen werden im Rahmen des Modells mutiert und dem neuen Agenten zugewisen. Als Basis dienen die Werte des Elternagenten.
Parameters:
child - der Nachwuchs, dem die neuen Werte zugewiesen werden.

getMutableValues

public float[] getMutableValues()
Liefert ein Array mit den potentiell durch Mutation veränderlichen Werten des Agenten. return array mit 13 float Werten.

getColor

public java.awt.Color getColor()
Der Agent gibt die Farbe zurück, in der er gerne gezeichnet würde.
Returns:
die Farbe.

isAlive

public boolean isAlive()
Lebt der Agent noch?
Returns:
ein boolean, der angibt, ob der Agent noch lebt.

isCoordinator

public boolean isCoordinator()
Ist der Agent zur Zeit im "Koordiniermodus".
Returns:
true, falls der Agent koordiniert, false wenn nicht.

getNumOfSubordinates

public int getNumOfSubordinates()
Liefert die Zahl der Untergebenen.
Returns:
die Anzahl der von diesem Agenten koordinierten Agenten.

getCoordinator

public Agent getCoordinator()
Liefert den Koordinator des Agenten zurück, null falls keiner existiert.
Returns:
der Koordinator des Agenten.

getBestCoordinatorValue

public float getBestCoordinatorValue()
Liefert die Bewertung des besten Koordinators den der Agent bisher hatte.
Returns:
die Bewertung. (deafult für unbekannte Koordinatoren ist 0)

getCoordinatorValue

public float getCoordinatorValue()
Die aktuelle Bewertung des aktuellen Koordinators des Agenten.
Returns:
die Bewertung

getTarget

public java.awt.Point getTarget()
Liefert das aktuelle Zielfeld des Agenten, oder null falls er nicht koordiniert wird oder schon am Ziel ist.
Returns:
die Koordinaten des Zielfeldes als Point

hasCoordinator

public boolean hasCoordinator()
Hat der Agent einen Koordinator oder nicht?
Returns:
true wenn ja, false falls nicht.

hasTarget

public boolean hasTarget()
Hat der Agent ein Zielfeld?
Returns:
true oder false (siehe getTarget)

isTarget

public boolean isTarget(java.awt.Point p)
Liefert true, falls das Feld Zielfeld eines Untergebenen des Koordinators ist, false sonst.
Parameters:
die - Koordinaten des fraglichen Feldes als Point

isVisible

public boolean isVisible()
Soll der Agent dargestellt werden?
Returns:
ein boolean, der angibt, ob der Agent noch lebt, oder erst kürzlich verstorben ist.

getMemoryMaxAge

public float getMemoryMaxAge()
Liefert das maximale Alter von Informationen im Memory, danach werden diese vergessen.
Returns:
Wert des Parameters memoryMaxAge

getGatherAmount

public float getGatherAmount()
Liefert die Nahrungsmenge, die ein Agent maximal pro Runde sammelt.
Returns:
Wert des Parameters gatherAmount

getGatherRest

public float getGatherRest()
Liefert die Nahrungsmenge, die ein Agent mindestens auf einem Feld belässt.
Returns:
Wert des Parameters gatherRest

getWeights

public float[] getWeights()
Liefert die Werte für die Gewichtungen der Bedürfnisse untereinander.
Returns:
ein Array mit den Gewichten von {survival, wealth, curiosity, breeding, influence}

setParameters

public void setParameters(float eatFoodPR,
                          float pubertyAge,
                          float gatherAmount,
                          float gatherRest,
                          float childFood,
                          float memoryMaxAge,
                          float viewingRange,
                          float planningRange,
                          float survivalWeight,
                          float wealthWeight,
                          float curiosityWeight,
                          float breedingWeight,
                          float influenceWeight)
Legt die individuellen Werte für die Parameter des Agenten fest.
Parameters:
eatFoodPR - soviel Nahrung verbraucht der Agent pro Runde
pubertyAge - ab diesem Alter kann sich der Agent vermehren
gatherAmount - maximal diese Nahrungsmenge sammelt der Agent pro Runde
gatherRest - mindestens diese Nahrungsmenge belässt der Agent auf dem Feld
childFood - soviel Nahrung gibt der Agent an jeden Nachkommen weiter
memoryMaxAge - das maximale Alter von Informationem im Gedächtnis (Memory)
viewingRange - alle Felder bis zu diesem Abstand kann der Agent wahrnehmen
planningRange - alle Informationen über Felder bis zu diesem Abstand fließen in die Planung ein
survivalWeight - Gewichtung des Bedürfnis Überleben
wealthWeight - Gewichtung des Bedürfnis Reichtum
curiosityWeight - Gewichtung des Bedürfnis Neugier
breedingWeight - Gewichtung des Bedürfnis Fortpflanzung
influenceWeight - Gewichtung des Bedürfnis Einfluss

setDefaultParameters

public void setDefaultParameters()
Setzt die individuellen Parameter auf die im Modell festgelegten Defaultwerte.

setName

public void setName(java.lang.String name)
Setzt den Namen des Agenten.
Parameters:
name - der neue Name des Agenten.

getName

public java.lang.String getName()
Liefert den Namen des Agenten.
Returns:
der Name des Agenten

getShortInfo

public java.lang.String getShortInfo()
Liefert die wesentlichen Informationen des Agenten
Returns:
ein String, in dem zeilenweise ein paar Infos zum aktuellen Zustand des Agenten steht.

getMediumInfo

public java.lang.String getMediumInfo()
Liefert etwas ausführlichere Informationen zum Agenten

getLongInfo

public java.lang.String getLongInfo()
Liefert ausführliche Informationen zum Agenten

getDebugInfo

public java.lang.String getDebugInfo()
Liefert fürs Debuggen hilfreiche Informationen zum Agenten

getBirthDay

public int getBirthDay()
Liefert die Nummer der Runde, in der der Agent geboren (oder geschaffen) wurde
Returns:
der Geburtstag des Agenten

setDeathDay

public void setDeathDay(int dd)
Legt die Runde fest, in der der Agent gestorben ist.
Parameters:
der - Todestag des Agenten

getDeathDay

public int getDeathDay()
Liefert die Nummer der Runde, in der der Agent gestorben ist.
Returns:
der Todestag (-1 falls der Agent noch lebt)

getMemory

public Memory getMemory()
Liefert das Gedächtnis des Agenten.
Returns:
das Gedächtnis des Agenten.

setX

public void setX(int x)
Legt die X-Koordinate des Agenten fest.
Parameters:
x - (0 <= x < fieldsX)

getX

public int getX()
Liefert die aktuelle X-Koordinate das Agenten.
Returns:
x

setY

public void setY(int y)
Legt die Y-Koordinate des Agenten fest.
Parameters:
y - (0 <= y < fieldsY)

getY

public int getY()
Liefert die aktuelle Y-Koordinate das Agenten.
Returns:
y

setFood

public void setFood(float food)
Setzt den Nahrungsvorrat des Agenten auf den übergebenen Wert

giveFood

public void giveFood(float amount)
Erlaubt dem Empfänger die übergebene nahrungsmenge seinem Vorrat hinzuzufügen. Der Absender muss dafür sorgen, die Menge bei sich abzuziehen.

getFood

public float getFood()
Liefert den aktuellen Nahrungsvorrat des Agenten zurück

getEatFoodPR

public float getEatFoodPR()
Liefer den Wert des Parameters eatFoodPR (Nahrungsverbrauch pro Runde).

getViewingRange

public int getViewingRange()
Liefert den Wert des Parameters viewingRange (Sichtweite)

getPlanningRange

public int getPlanningRange()
Liefert den Wert des Parameters planningRange ("geistige Sichtweite")

setAge

public void setAge(int a)
Legt das Alter des Agenten fest.

getAge

public int getAge()
Liefert das Alter des Agenten zurück.

getChildFood

public int getChildFood()
Liefert den Wert des Parameters childFood (Nahrungmenge für den Nachwuchs)

getPubertyAge

public int getPubertyAge()
Liefert den Wert des Parameters pubertyAge (ab dann ist der Agent fruchtbar)

getNumOfChildren

public int getNumOfChildren()
Liefert die Zahl der Kinder des Agenten.

setMemoryMonitor

public boolean setMemoryMonitor()
Öffnet ein Fenster, um den Gedächtnisinhalt des Agenten anzuzeigen.

setAgentMonitor

public boolean setAgentMonitor()
Öffnet ein Fenster, um den aktuelle Informationen des Agenten anzuzeigen.

removeMemoryMonitor

public void removeMemoryMonitor()
Schliesst den MemoryMonitor des Agenten.

removeAgentMonitor

public void removeAgentMonitor()
Schliesst den AgentMonitor des Agenten.

showMonitors

public void showMonitors()
Bringt eventuell vorhandene MonitorFenster des Agenten in den Vordergrund.

getSatisfaction

public Satisfaction getSatisfaction()
Liefert das Satisfaction-Objekt des Agenten zurück.

getLastAction

public java.lang.String getLastAction()
Sagt, welche Aktion der Agent gerade getan hat.

toString

public java.lang.String toString()
Liefert den Namen des Agenten.
Overrides:
toString in class java.lang.Object

removeAgent

public void removeAgent()

children

public java.util.Enumeration children()
Liefert eine Aufzählung aller direkten Nachkommen.
Specified by:
children in interface javax.swing.tree.TreeNode
Returns:
die direkten Nachkommen des Agenten Diese und die folgenden Methoden stammen aus dem Interface MutableTreeNode. Es sind nur diejenigen ausprogrammiert, die auch tatsächlich benötigt werden.

getAllowsChildren

public boolean getAllowsChildren()
Liefert zurück, ob es dem Agenten erlaubt ist Nachwuchs in die Welt zu setzen.
Specified by:
getAllowsChildren in interface javax.swing.tree.TreeNode
Returns:
true, da prinzipiell jeder Agent Nachwuchs bekommen kann.

getChildAt

public javax.swing.tree.TreeNode getChildAt(int i)
Liefert das Kind mit dem übergebenen Index.
Specified by:
getChildAt in interface javax.swing.tree.TreeNode
Parameters:
i - der Index des Gesuchten Kindes
Returns:
das (i+1)te Kind des Agenten

getChildCount

public int getChildCount()
Liefert die Zahl der Kinder.
Specified by:
getChildCount in interface javax.swing.tree.TreeNode

getIndex

public int getIndex(javax.swing.tree.TreeNode child)
Liefert den Index des übergebenen Kindes.
Specified by:
getIndex in interface javax.swing.tree.TreeNode

getParent

public javax.swing.tree.TreeNode getParent()
Liefert den Elternagenten.
Specified by:
getParent in interface javax.swing.tree.TreeNode

isLeaf

public boolean isLeaf()
Ist der Agent ein Blatt im AgentTree (hat er Kinder).
Specified by:
isLeaf in interface javax.swing.tree.TreeNode

insert

public void insert(javax.swing.tree.MutableTreeNode child,
                   int index)
Trägt ein neues Kind beim Agenten ein.
Specified by:
insert in interface javax.swing.tree.MutableTreeNode

remove

public void remove(int index)
nicht implementiert
Specified by:
remove in interface javax.swing.tree.MutableTreeNode

remove

public void remove(javax.swing.tree.MutableTreeNode node)
nicht implementiert
Specified by:
remove in interface javax.swing.tree.MutableTreeNode

removeFromParent

public void removeFromParent()
nicht implementiert
Specified by:
removeFromParent in interface javax.swing.tree.MutableTreeNode

setParent

public void setParent(javax.swing.tree.MutableTreeNode newParent)
legt einen neuen Elternknoten fest
Specified by:
setParent in interface javax.swing.tree.MutableTreeNode

setUserObject

public void setUserObject(java.lang.Object object)
nicht implementiert
Specified by:
setUserObject in interface javax.swing.tree.MutableTreeNode