Gute Nachrichten, > - Blau = Pheromon > - Gruen = Substrat Wir werden uns bemuehen jetzt ne ausfuerliche Doku zu schreiben (am besten gleich in Englisch), welche das Programm noch genauer erklaeren wird. Zur Zeit ist der Menuepunkt HELP-TOPICS noch ein inaktiver Punkt - da waere es vielleicht keine schlechte Idee, ne Hilfe mit HTML zu implementieren. Dort soll dann alles zu finden sen. > - Die obigen Elemente haben unterschiedliche Konzentrationen in > verschiedenen Regionen, sieht man das irgendwo? Das ist zur Zeit noch nicht ersichtlich, es waere aber durchaus denkbar, dass wenn man die Maus ueber ein Feld bewegt, dass man dann irgendwo die Pheromon-, Substrat- und Lichtkonzentration angezeigt bekommt. > - Beim Zeichnen ueberdeckt Substrat die Pheromon Anzeige. Das ist uns auch schon negativ aufgefallen. Eine Moeglichkeit waere, dass man bei einem Gitter-Kaestchen in der oberen Haelfte ein Pheromon anzeigt und in der unteren Haelfte ein Substrat. Aber da gibt es mehrere Moeglichkeiten. > - Selektierter Agent wird rot gezeichnet Yepp, wird auch in der Doku vermerkt. > - Wie sind die Richtungen kodiert? 1=rechts, 2=unten, 3=links, > 4=oben? Kommt auch in die Doku. > - Wie werden die Sensorwerte berechnet? Also ausgehend von der Agentenposition, wird ein Kreissektor (entsprechend dem FOV) durchlaufen, und der Sensor ueberprueft nun auf jedem Feld in diesem Sektor ob etwas interessantes (fuer den jeweiligen Sensortyp) vorhanden ist. Ist dies der Fall, wird der Sensor-Output entsprechend erhoeht. Beim Bumpersensor war ein kleiner Kunstgriff notwendig: Wenn der Agent am Aquariumrand ist, so wird der entsprechende Sensor um ein vielfaches erhoeht, als wenn er auf einen anderen Agenten trifft (anderer Agent=0.1f, Rand=10.0f) > - Interessant, dass, falls auch kein Agent an einen anderen angrenzt > ist, dass die BumperSensoren Werte haben?! Das war unter anderem ein Problem, welches ich gestern entdeckt habe. Da bei der Berechnung des FOV (und dem Suchprozess nach anderen Agenten im FOV) die Schleife von r=0 bis r=range-1 ging, hat der Agent sich selbst mit den Bumper-Sensoren entdeckt. Ich habe dann das r ersetzt durch r+1 (bei allen Sensoren) und es gibt trotzdem noch einen Input beim Bumper. Das sollten wir uns vielleicht nochmals ansehen, obwohl wichtig ist ja, dass wenn ein Agent oder der Aquariumrand in der Naehe ist, dann ist der Bumper-Sensorwert hoeher. > - Kann man die Lichtverteilung auch sehen? Auch das koennten wir wie bereits oben bei Substrat/Pheromone-Anzeige mit einer Bewegung mit der Maus ueber ein Feld sichtbar machen. > - Funktioniert das Einstellen der Light Settings im Settings Dialog > schon vollstaendig? Ich kann nicht die Distribution function und den > light cycle einstellen. Dazu sind wir aus Zeitmangel nicht mehr gekommen. Zur Zeit wird also nur ne Sinus-Funktion verwendet, welche in etwa einen Day-Night-Cycle emulieren soll. > - Im Simulation Tab des Settings Dialogs werden die Eingabefelder von > steps und height auf Breite 0 reduziert. Dies tritt auf, wenn man den Settingsdialog kleiner macht (wenn ich das jetzt richtig verstanden habe). Nun, das sind die Tuecken der JAVA-Layoutmanager. Aber das sollten wir uns auf jeden Fall auch nochmal ansehen. > - Bei Einzelschritt, nach Beendigung der Simulation kommt der Dialog > Simulation finished mehrfach. Ich weiss jetzt nicht genau, wie das gemeint ist. Aber der Dialog (simulation finished) soll absichtlich immer wieder kommen, wenn die Simulation zu Ende ist, und man auf Play/Step drueckt. Man soll also immer die Moeglichkeit haben, die Simulation fortzusetzen. > - Kann ich das ANN sehen? Dazu sind wir auch noch nicht gekommen (dazu muessen wir erst einen SNNS-Export schreiben). Die Sourcen von Andreas Lackner haben wir auf jeden Fall (ich glaube das ist auch die neueste Version) und sie laeuft. Wie genau wir die ANN-Anzeige dann machen (vom Programm aus, oder am Ende der Simulation alle ANNs in ein File abspeichern und dann extern ansehen) muessen wir noch besprechen. > Das war's einstweilen, werde noch weiter testen. Bis jetzt kann ich > eine besondere Tendenz der Agenten zum Substrat feststellen ... Das ist uns auch schon aufgefallen, wir sind uns da nur nicht ganz sicher, ob das jetzt an den Settings liegt, oder ob noch irgendwo ein fieser Fehler versteckt ist. > nachdem ich die demo3.asf benutzt habe um eine Statistik zu > erstellen, war ich von der Menge an Daten (44MB, 12595 Seiten in MS Word) > ziemlich begeistert. > uebrigens, das Abspeichern in lesbarer Form ist gut, > das sollten wir beibehalten. OK > - Kann man die Anzahl der Neuronen sehen in der Simulation bzw. > setzen? Zur Zeit ist die Anzahl der Neuronen im PhenoTyp durch eine Konstante festgelegt. Im GenoTyp haben wir entsweilen konkrete Werte dafuer benutzt (auf die Konstanten im PhenoTyp wird also vom GenoTyp aus nicht zugegriffen). Aber im Prinzip spricht nichts dagegen, dass man noch eine Moeglichkeit einbaut, dass man die Anzahl der Neuronen selber festlegen kann > - Wie sind die Transferfunktionen der einzelnen Neuronen? Bis jetzt werden nur Splines verwendet. Die anderen Funktionen sind aber bereits in der Funktion transferFunc(...) im PhenoTyp vorhanden. > - Wird die identische Splinefunktion fuer alle Neuronen, incl. > Input Neuronen verwendet? Die Splines sind fuer alle Neuronen in einem neuronalen Netz fuer einen Agenten gleich. > - Veraendern sich die Gewichte durch Evolution? Die Gewichtsmatrix (weight_matrix im PhenoTyp) aendert sich (wird mutiert, oder CrossOver) bei Agenten-Reproduktion. > - Beim Phenotyp wird die rechte obere Dreiecksmatrix verwendet um > Verbindungen zu kodieren, unser Ansatz benutzte die linke untere > Dreiecksmatrix. Die Verbindungsmatrix hat folgenden Aufbau: int neuron_matrix[von][nach]... Von 0 1 2 3 4 5 6 . . . 0 1 0 1 1 0 0 0 N 1 1 0 1 1 0 0 a 2 0 0 1 0 1 c 3 1 0 1 1 h 4 1 1 0 5 0 0 6 1 . . Also um die untere Haelfte zu verwenden, muesste man nur die Indizes beim Array-Zugriff vertauschen (bzw. die Matrix mit verkehrten Indizes im File ausgeben). > - Wieviele Punkte werden fuer die CSplines verwendet (?10 x/y?) Fuer die Splines werden 10 Punkte verwendet. > - kann man die Anzahl an Punkten setzen? Nein, bis jetzt ist die Anzahl der Punkte konstant. Das laesst sich aber mit ein bisschen Arbeit sicher aendern. > - Welcher Wertebereich wird fuer die Koordinaten verwendet? Zur Zeit verwenden wir einen Wertebereich von 0.0f - 200.0f. Es war uns einfach noch nicht ganz klar, welche Groesse in etwa die ANN-Outputs haben. Aber wir haben bereits angedacht, dass man die ANN-Outputs normiert, sodass die Werte immer im Wertebereich der Splines bleiben. Ansonsten loesen die Splines eine Exception aus. Zur Zeit wird diese Exception abgefangen und der Output der Transferfunktion wird auf 0.0f gesetzt. > - Kann es sein, dass sich die Werte der Stuetzpunkte im Spline nicht > aendern? Aus Zeitgruenden haben wir zur Zeit die Splines nicht mutieren lassen. Denn bei einer Mutation/Crossover kann es (wird es ziemlich sicher) passieren, dass auch die X-Werte der Splines in eine falsche Reihenfolge kommen und dass wiederum loest eine haessliche Exception aus. Wir haben aber den CrossOver/Mutation-Code im Programm einfach auskommentiert, so koennen wir dann daran weiterarbeiten. > - Schoen waere es, wenn man fuer die Sensor Values ebenfalls Tags definiert. ?????? > - Ein Tag fuer den einzelnen Simulationsschritt waere vorteilhaft. ?????? > - Wo werden die Parameter (Mutation, etc.) fuer die Evolution gesetzt > bzw. im Stat file angezeigt? Wo koennen diese Parameter gesetzt werden? Diese Parameter sind im Moment noch hard-gecodet. Man kann diese Parameter aber in einer naexten Version von ALGAE sicher noch im SettingsDialog unterbringen. > - Wo koennen die Parameter fuer Meiose, Mitose gesetzt werden, also > ab welchem Energielevel Meiose und Mitose einsetzen? > Mit welchem Energielevel werden neue Agenten eingefuegt? > Kann man den Wert setzen, vielleicht sogar in Abhaengigkeit von Eltern? Zur Zeit ueberprueft die AgentWorld, ob das Energielevel des Agenten doppelt so gross (oder groesser) ist, wie fuer Mitose/Meiose gebraucht wird. Ist dies der Fall, dann wird entweder Mitose oder Meiose eingeleitet. Auch hier gilt dasselbe wie bei den Parametern fuer Mutation. Sollte in einer neuen Version von ALGAE im Settingsdialog auftauchen. > - Was ist der Unterschied in der Simulation von Fast und Slow? Der Ablauf der Simulation wird mit Hilfe eines Timers gesteuert. Mit Hilfe der Speed-Sliders (Fast - Slow), kann man die Zeit zwischen 2 Aufrufen einstellen. Dadurch kann man also die Simulation schneller bzw. langsamer ablaufen lassen. Aber ich finde, dass das nur auf wirklich schnellen Rechnern Sinn macht > - Wann erneuert sich das Substrat, bzw. wann wird es aufgebaut ... > und wie wird es in der Simulation dargestellt? Also das Substrat erneuert sich abhaengig von der substrate renew rate im SettingsDialog und wieviel Substrat gerade in der Simulation vorhanden ist, ist in der Statuszeile abzulesen. > - Ist das auch Teil der Statistik? In der Statistik wird in jedem Schritt gespeichert, wieviel Substrat in diesem Schritt erneuert wurde, wieviel von Agenten konsumiert wurde und wieviel letztenendes im Aquarium noch vorhanden ist. > - Kann man den Radius der Pheromonauschuettung einstellen? Bis jetzt noch nicht, waere aber eine Ueberlegung Wert. Zur Zeit wird ein Pheromon nur an die aktuelle Agentenposition gesetzt. > - Falls ich mich fuer einen bestimmten Agenten intressieren in der > Welt ist es kompliziert diesen ueber die Liste zu finden ... Selektion > durch Mausselektion? Das ist uns auch schon aufgefallen, vor allem wenn da so 200 Agenten herumschwimmen, dann wird es wirklich ziemlich muehsam. Aber man koennte dies verknuepfen mit der Substrat/Pheromon/Lichtanzeige, die ich ja schon in einem Punkt angesprochen habe. Also, wenn man die Maus ueber ein Feld bewegt, koennte man auch anzeigen, welcher Agent sich gerade auf diesem Feld befindet. Dann wuerde auch die Auswahl um einiges leichter fallen. Vielleicht sollten wir dazu die Statuszeile um eine weitere Zeile erweitern. > - Habe gerade eine Sim it 10x10 Welt und 10 Agenten laufen lassen fuer > 100 Schritte. Sieht alles ziemlich plausible aus, aber die Tuecken > stecken sicher im Detail. Dessen bin ich mir auch ziemlich sicher. Da ja die ANNs und sonst noch so einiges durch Zufall erzeugt wird, ist es auch sehr schwer, zu ueberpruefen ob eine Simulation nun wirklich das macht, was sie machen soll. Aber wird sind permanent am Testen, und jetzt wo der eigentlich Stress ja vorbei ist, koennen wir auch nochmal den ganzen Sourcecode durchgehen (kommentiert muss er ja sowieso noch werden) und nach Fehlern Ausschau halten. > - wird Pheromon immmer ausgeschuettet, oder gibt es dafuer eine > Grenze, ab der ausgeschuettet wird? Ein Agent schuettet eigentlich immer Pheromone aus (bei jedem Simulations- schritt). Aber es waere durchaus denkbar, einem Agenten einen gewissen Pheromonvorrat zu geben, welcher durch Pheromonausschuettung aufgebraucht wird und mit Hilfe von Energieaufsammeln wieder erneuert wird.