Class Environment

java.lang.Object
  |
  +--Environment
All Implemented Interfaces:
Simulator

public class Environment
extends java.lang.Object
implements Simulator

Die Klasse Environment implementiert die Simulator-Schnittstelle über die die GUI auf die Funktionalität des Agenten und der Gene zugreift. Stand 09.07.2001

Author:
Clemens Mühlberger, Jan Bannert, Steffen Glückselig
See Also:
simulator

Field Summary
protected  long builtCounter
           
protected  Nest currentNest
           
protected  boolean enableCrossover
           
protected  int indexCurrentNest
           
protected  double mutationPropability
           
protected  int numberAgents
           
protected static int numberGens
           
protected  int numberNests
           
protected  GenPool Pool
           
protected  int posCrystallizationPoint
           
protected  int resolveConflictByStrategy
           
protected  Koord3D sizeNest
           
protected static int STANDARD_CRYSTALL_POINT
           
protected static boolean STANDARD_DO_CROSSOVER
           
protected static int STANDARD_NAgents
           
protected static int STANDARD_NESTs
           
protected static int STANDARD_NGinG
           
protected  double STANDARD_PropJoker
           
protected  double STANDARD_PropLeer
           
protected  double STANDARD_PropStein
           
protected static int STANDARD_RESOLVE
           
protected static int STANDARD_sizeSide
           
protected static int STANDARD_viewSize
           
protected  int viewSize
           
 
Fields inherited from interface Simulator
CENTER, CORNER, FIRST, LEAST_JOKER, MIDDLE, MOST_JOKER, RANDOM
 
Constructor Summary
Environment()
          Der Standardkonstruktor für eine Environment.
Environment(int number)
          Ein Konstruktor für eine Environment.
Environment(int numbNests, int numbAgents)
          Zusätzlich noch mit Anzahl der Agenten in einer Nest.
Environment(int numbNests, int numbAgents, Koord3D size)
          Zusätzlich mit Grösse der Nest.
Environment(int numbNests, int numbAgents, Koord3D size, int numbGens)
          Zusätzlich mit Anzahl der Gene pro Genom.
Environment(int numbNests, int numbAgents, Koord3D size, int numbGens, int strategy)
          Zusätzlich mit Grösse des Sichtfelds.
Environment(int numbNests, int numbAgents, Koord3D size, int numbGens, int strategy, int viewSize)
           
Environment(int numbNests, int numbAgents, Koord3D size, int numbGens, int strategy, int viewSize, boolean enableCrossover)
          Zusätzlich mit Konfliktauflösungsstrategie.
Environment(int numbNests, int numbAgents, Koord3D size, int numbGens, int strategy, int viewSize, boolean enableCrossover, int startingPoint)
           
 
Method Summary
protected static void debug(java.lang.String msg)
           
protected  void finalize()
           
protected  void gc(int howLong)
           
 Koord3D[] gebautInRunde(int runde)
          Methode liefert alle Bloecke die in der angegebenen Runde gebaut wurden Geändert: 18.06.2001 to3d() entfernt 09.07.2001 Koord3D-Array enthält jetzt auch Lücken (später null'en), damit jeder Agent seine eigene Farbe bekommen kann.
 Koord3D[] getAgentPos(int runde)
          Methode liefert die Positionen der Agenten(Multiagentensystem) für die angegebene Runde.
 Koord3D getCrystallizationPoint()
          Liefert Position des ersten Blocks.
 int getHowOftenUsed_Gen(int index)
           
 int getIndexOfCurrentNest()
           
 int getNumberAgents()
          Liefert die Anzahl der Agenten, die sich in der aktuellen Nest befinden.
 long getNumberBuiltBlocks()
           
 int getNumberOfNests()
           
 int getResolveOfConflict()
          Methode liefert die Konfliktlösungsstrategie für die aktuelle Nest.
 int getSizeGenom()
           
 Koord3D[] laufeRunden(int runden)
          Methode lässt den Simulator die angegebene Anzahl von Runden laufen.
 boolean load(java.lang.String verzeichnis, java.lang.String dateiname)
          Lädt Nest und Genom.
protected  Genom loadGenom(java.lang.String filename)
           
 boolean loadGP(java.lang.String verzeichnis)
          Methode lädt einen kompletten GenPool aus einem Unterverzeichnis (d.h. alle darin enthaltenen txt-Dateien, falls es sich dabei um eine Genom-Datei handelt).
protected static void message(java.lang.String msg)
           
 boolean nextNest()
          Wechselt auf nächste Nest in der Liste.
 boolean resetNest()
          Löscht die in der aktuellen Nest entstandene Architektur, aber belässt das Genom Geändert: ?
 boolean resetTotal()
          Löscht einfach alle Nesten und erzeugt komplett neue.
 void setDoCrossover(boolean abler)
           
 void setFitness(double value)
          Mit dieser Methode wird die Fitness des aktuellen Genoms gesetzt.
 void setNumberAgents(int number)
          Hiermit kann man die Anzahl der Agenten, die sich in einer Nest tummeln sollen, festlegen.
 void setNumberGensInGenom(int number)
          Hiermit kann man die Anzahl der Gene in einem Genom festlegen.
 void setNumberNests(int number)
          Mit dieser Methode kann mit die Anzahl bei resetTotal() zu erzeugenden Nesten festlegen.
 void setPositionCrystallizationPoint(int pos)
           
 void setPropability(double value)
          Zum setzen der Mutationswahrscheinlichkeit Geändert: 02.07.2001
 void setResolveOfConflict(int strategy)
          Methode setzt die Konfliktlösungsstrategie für die aktuelle und alle folgenden Nesten.
 void setSizeOfNest(Koord3D size)
          Hiermit kann man die Standardgrösse einer Nest verändern.
 void setSizeOfView(int size)
           
protected  boolean store(java.lang.String filename)
          Speicher ein Genom, überschreibt aber keine bereits bestehende Datei!
 boolean store(java.lang.String verzeichnis, java.lang.String dateiname)
          Speichert aus der aktuellen Nest die entstandene Struktur, Genom, Position des Agenten und Grösses der Nest.
 boolean storeAnyways(java.lang.String verzeichnis, java.lang.String dateiname)
          Mit dieser Funktion kann gespeichert werden selbst wenn die Datei bereits existieren sollte.
 boolean storeGP(java.lang.String verzeichnis)
          Speichert den kompletten GenPool als Genom-txt-Dateien in einem Unterverzeichnis.
 
Methods inherited from class java.lang.Object
, clone, equals, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

currentNest

protected Nest currentNest

resolveConflictByStrategy

protected int resolveConflictByStrategy

mutationPropability

protected double mutationPropability

numberNests

protected int numberNests

numberAgents

protected int numberAgents

numberGens

protected static int numberGens

Pool

protected GenPool Pool

indexCurrentNest

protected int indexCurrentNest

sizeNest

protected Koord3D sizeNest

posCrystallizationPoint

protected int posCrystallizationPoint

STANDARD_CRYSTALL_POINT

protected static final int STANDARD_CRYSTALL_POINT

builtCounter

protected long builtCounter

enableCrossover

protected boolean enableCrossover

STANDARD_DO_CROSSOVER

protected static final boolean STANDARD_DO_CROSSOVER

STANDARD_NGinG

protected static final int STANDARD_NGinG

STANDARD_NAgents

protected static final int STANDARD_NAgents

STANDARD_sizeSide

protected static final int STANDARD_sizeSide

STANDARD_viewSize

protected static final int STANDARD_viewSize

viewSize

protected int viewSize

STANDARD_NESTs

protected static final int STANDARD_NESTs

STANDARD_PropStein

protected final double STANDARD_PropStein

STANDARD_PropJoker

protected final double STANDARD_PropJoker

STANDARD_PropLeer

protected final double STANDARD_PropLeer

STANDARD_RESOLVE

protected static final int STANDARD_RESOLVE
Constructor Detail

Environment

public Environment()
Der Standardkonstruktor für eine Environment. Es wird die LinkedList, die zur Haltung der Nesten verwendet wird, und ein GenPool initialisiert. Geändert: 02.07.2001 -> sizeNest + Number_Gens_... 17.07.2001 ruft jetzt den in der Hierarchie nextn Konstruktor auf

Environment

public Environment(int number)
Ein Konstruktor für eine Environment. Neben der LinkedList wird zusätzlich die angegebene Anzahl von Nesten initialisiert und zur Liste hinzugefügt.
Zusätzlich wird als standardmässig als Konfliktlösung LEAST_JOKER gewählt, also das Muster mit den wenigsten Wildcards. Geändert: 02.07.2001 -> sizeNest + Number_Gens_...

Environment

public Environment(int numbNests,
                   int numbAgents)
Zusätzlich noch mit Anzahl der Agenten in einer Nest.

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size)
Zusätzlich mit Grösse der Nest.

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size,
                   int numbGens)
Zusätzlich mit Anzahl der Gene pro Genom.

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size,
                   int numbGens,
                   int strategy)
Zusätzlich mit Grösse des Sichtfelds.

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size,
                   int numbGens,
                   int strategy,
                   int viewSize)

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size,
                   int numbGens,
                   int strategy,
                   int viewSize,
                   boolean enableCrossover)
Zusätzlich mit Konfliktauflösungsstrategie.

Environment

public Environment(int numbNests,
                   int numbAgents,
                   Koord3D size,
                   int numbGens,
                   int strategy,
                   int viewSize,
                   boolean enableCrossover,
                   int startingPoint)
Method Detail

setSizeOfNest

public void setSizeOfNest(Koord3D size)
Hiermit kann man die Standardgrösse einer Nest verändern. Geändert: 02.07.2001
Specified by:
setSizeOfNest in interface Simulator
Parameters:
size - neue Grösse

getNumberBuiltBlocks

public long getNumberBuiltBlocks()
Specified by:
getNumberBuiltBlocks in interface Simulator

getNumberOfNests

public int getNumberOfNests()
Specified by:
getNumberOfNests in interface Simulator

getIndexOfCurrentNest

public int getIndexOfCurrentNest()
Specified by:
getIndexOfCurrentNest in interface Simulator

setDoCrossover

public void setDoCrossover(boolean abler)
Specified by:
setDoCrossover in interface Simulator

getHowOftenUsed_Gen

public int getHowOftenUsed_Gen(int index)
Specified by:
getHowOftenUsed_Gen in interface Simulator

getSizeGenom

public int getSizeGenom()
Specified by:
getSizeGenom in interface Simulator

setSizeOfView

public void setSizeOfView(int size)
Specified by:
setSizeOfView in interface Simulator

setPositionCrystallizationPoint

public void setPositionCrystallizationPoint(int pos)
Specified by:
setPositionCrystallizationPoint in interface Simulator

setNumberGensInGenom

public void setNumberGensInGenom(int number)
Hiermit kann man die Anzahl der Gene in einem Genom festlegen. Geändert: 09.07.2001
Specified by:
setNumberGensInGenom in interface Simulator
Parameters:
number - neue Anzahl der Gene

setNumberAgents

public void setNumberAgents(int number)
Hiermit kann man die Anzahl der Agenten, die sich in einer Nest tummeln sollen, festlegen. Geändert: 09.07.2001
Specified by:
setNumberAgents in interface Simulator
Parameters:
number - neue Anzahl von Agenten

getNumberAgents

public int getNumberAgents()
Liefert die Anzahl der Agenten, die sich in der aktuellen Nest befinden. Geändert: 09.07.2001
Specified by:
getNumberAgents in interface Simulator
Returns:
Anzahl der Agenten, die sich gegenwärtig wirklich in der Nest tummeln.

setResolveOfConflict

public void setResolveOfConflict(int strategy)
Methode setzt die Konfliktlösungsstrategie für die aktuelle und alle folgenden Nesten. Geändert: 12.06.2001 12.07.2001 null-Pointer abgefangen
Specified by:
setResolveOfConflict in interface Simulator
Parameters:
strategy - Gibt die Konfliktlösung an

getResolveOfConflict

public int getResolveOfConflict()
Methode liefert die Konfliktlösungsstrategie für die aktuelle Nest. Geändert: 12.06.2001
Specified by:
getResolveOfConflict in interface Simulator
Returns:
Konfliktlösungsstrategie für diese Nest

laufeRunden

public Koord3D[] laufeRunden(int runden)
Methode lässt den Simulator die angegebene Anzahl von Runden laufen. Geändert: 18.06.2001 komplett auf 3D umgestellt 09.07.2001 Koord3D-Array enthält jetzt auch Lücken (später null'en), damit jeder Agent seine eigene Farbe bekommen kann. 14.07.2001 anstelle von (0,0,0) wird in dem Koord3D-Array jetzt null zurückgeliefert
Specified by:
laufeRunden in interface Simulator
Parameters:
runden - Anzahl der zu laufenden Runden
Returns:
points Koord3D-Array das die Positionen angibt, an denen in den Runden Steine gebaut wurden.

gebautInRunde

public Koord3D[] gebautInRunde(int runde)
Methode liefert alle Bloecke die in der angegebenen Runde gebaut wurden Geändert: 18.06.2001 to3d() entfernt 09.07.2001 Koord3D-Array enthält jetzt auch Lücken (später null'en), damit jeder Agent seine eigene Farbe bekommen kann.
Specified by:
gebautInRunde in interface Simulator
Parameters:
runde - Nummer der Runde, von der die Blöcke angefordert werden
Returns:
array Koord3D-Array, indem die Positionen der gebauten Blöcke angegeben werden.
Wegen Multiagentensystem -> Array.

getAgentPos

public Koord3D[] getAgentPos(int runde)
Methode liefert die Positionen der Agenten(Multiagentensystem) für die angegebene Runde. Geändert: 18.06.2001 to3d() entfernt
Specified by:
getAgentPos in interface Simulator
Parameters:
runde - angeforderte Runde
Returns:
array mit demutationPropabilityn Positionen der Agenten (zur Zeit DES Agenten)

getCrystallizationPoint

public Koord3D getCrystallizationPoint()
Liefert Position des ersten Blocks. Geändert: 18.06.2001 to3d() entfernt
Specified by:
getCrystallizationPoint in interface Simulator
Returns:
Koord3D mit der Position des ersten Blocks

nextNest

public boolean nextNest()
Wechselt auf nächste Nest in der Liste. Geändert: 02.07.2001 -> auf doMutation() umgestellt, weil makeNewPool() (noch) nicht funktioniert -> umgebung.setStrategy() wird jetzt mit der oben gesetzten Variable aufgerufen -> neuer Nests-Konstruktor 14.07.2001 makeNewPool() ersetzt mit doMutation() und doCrossover(), wobei doMutation() immer aufgerufen wird.
Specified by:
nextNest in interface Simulator
Returns:
boolean ob dieser Wechsel erfolgreich war

gc

protected void gc(int howLong)

finalize

protected void finalize()
Overrides:
finalize in class java.lang.Object

setPropability

public void setPropability(double value)
Zum setzen der Mutationswahrscheinlichkeit Geändert: 02.07.2001
Specified by:
setPropability in interface Simulator
Parameters:
value - neue Wahrscheinlichkeit (Wert wird skaliert)

loadGP

public boolean loadGP(java.lang.String verzeichnis)
Methode lädt einen kompletten GenPool aus einem Unterverzeichnis (d.h. alle darin enthaltenen txt-Dateien, falls es sich dabei um eine Genom-Datei handelt). Geändert: 05.07.2001
Specified by:
loadGP in interface Simulator
Parameters:
verzeichnis - Unterverzeichnis, in dem sich der GenPool befindet.

load

public boolean load(java.lang.String verzeichnis,
                    java.lang.String dateiname)
Lädt Nest und Genom. Hierfür werden die .list und die .txt Dateien eingelesen. Aus der .list-Datei wird das Nest rekonstruiert, d.h. die bisher gebauten Steine. Aus der .txt-Datei wird die Position des Agenten, die Grösses der Nest (des Arrays) und das Genom rekonstruiert. Aktuell ersetzt die geladene Nest die aktuelle!! Geändert: 19.06.2001 Nur noch eine Nest, die aktuelle wird dann überschrieben 21.06. evtl. übergebene Dateierweiterung wird weggeschnitten. 03.07.2001 Es wird nur noch der übergebene Dateiname verwendet, weil es sonst nicht richtig funktioniert 05.07.2001 Geladenes Genom wird in GenPool an die nächste Stelle eingefügt(!)
Specified by:
load in interface Simulator
Parameters:
verzeichnis - Gibt ein Verzeichnis an
dateiname - Gibt eine pseudo-Datei an, an die .list und .txt angehängt wird.
Returns:
boolean ob das Laden erfolgreich war oder nicht.

loadGenom

protected Genom loadGenom(java.lang.String filename)

store

public boolean store(java.lang.String verzeichnis,
                     java.lang.String dateiname)
Speichert aus der aktuellen Nest die entstandene Struktur, Genom, Position des Agenten und Grösses der Nest. Geändert: 03.07.2001 -> Es wird nur noch der übergebene Dateiname verwendet, weil es sonst nicht richtig funktioniert 05.07.2001 Struktur wird nicht mehr gespeichert
Specified by:
store in interface Simulator
Parameters:
verzeichnis - Gibt ein Verzeichnis an
dateiname - Gibt eine pseudo-Datei an, an die .list und .txt angehängt wird.
Returns:
boolean ob das Speichern erfolgreich war oder nicht.

storeGP

public boolean storeGP(java.lang.String verzeichnis)
Speichert den kompletten GenPool als Genom-txt-Dateien in einem Unterverzeichnis. Diese Funktion überschreibt evtl. bereits vorhandene Dateien! Geändert: 05.07.2001
Specified by:
storeGP in interface Simulator
Parameters:
verzeichnis - Unterverzeichnis, in das der GenPool gespeichert werden soll.
Returns:
ob das Speicher funktioniert hat oder nicht.

storeAnyways

public boolean storeAnyways(java.lang.String verzeichnis,
                            java.lang.String dateiname)
Mit dieser Funktion kann gespeichert werden selbst wenn die Datei bereits existieren sollte. Geändert: 05.07.2001
Specified by:
storeAnyways in interface Simulator
Parameters:
verzeichnis - in das zu speichernde Verzeichnis
dateiname - der Name der Datei. Zur Zeit wird nur diese Information verwendet!!
Returns:
ob das Speichern geklappt hat.

store

protected boolean store(java.lang.String filename)
Speicher ein Genom, überschreibt aber keine bereits bestehende Datei! Geändert: 05.07.2001
Parameters:
filename - Name unter dem die Datei(das Genom) gespeichert werden soll
Returns:
ob das Speichern funktioniert hat oder nicht

resetNest

public boolean resetNest()
Löscht die in der aktuellen Nest entstandene Architektur, aber belässt das Genom Geändert: ?
Specified by:
resetNest in interface Simulator
Returns:
boolean ob das Resetten erfolgreich war, oder nicht

resetTotal

public boolean resetTotal()
Löscht einfach alle Nesten und erzeugt komplett neue. Deren Anzahl kann mit setNumberNests(int) festgelegt werden. Arbeitet daher ein bisschen anders als resetNest(). Geändert: 13.06.2001
Specified by:
resetTotal in interface Simulator
Returns:
boolean ob das Resetten erfolgreich war, oder nicht

setNumberNests

public void setNumberNests(int number)
Mit dieser Methode kann mit die Anzahl bei resetTotal() zu erzeugenden Nesten festlegen. Geändert: ?
Specified by:
setNumberNests in interface Simulator
Parameters:
number - Anzahl der zu erzeugenden Nesten

setFitness

public void setFitness(double value)
Mit dieser Methode wird die Fitness des aktuellen Genoms gesetzt. Geändert: 09.07.2001 Fitness-Wert wird jetzt an Genom weitergegeben und geht nicht mehr über GenPool
Specified by:
setFitness in interface Simulator
Parameters:
value - Fitness. Wert wird skaliert.

debug

protected static void debug(java.lang.String msg)

message

protected static void message(java.lang.String msg)