Hyperion hat geschrieben:
Muss ein Lebenwesen davon mehrere haben oder hat es bei Dir ggf. welche? Ok, ein Vogel kann laufen und fliegen. Wenn man so etwas nicht simulieren will, dann kann man doch verschiedene Callables schreiben, von denen man dann eines auswählt, welches übernommen werden soll. Oder kapiere ich das noch immer nicht?
Will man bei manchen Tieren mehrere Bewegungsarten simulieren, so braucht es eine Art "Medium", an die man eine Bewegung einordnet. Also "luft" -> fliegen, "erde" -> laufen | kriechen | robben, "wasser" -> schwimmen. So in der Art.
Will man da kein exklusives oder bei mehreren Dimensionen wirds noch komplizierter. Dann musst Du eben unterhalb von / zusätzlich zu einem Medium noch eine weitere Kategorie einbauen. Bei einer Vererbung wird dann bei Kollision nach welcher Regel auch immer nur eine von zwei Bewegungsalternativen gewählt. Wichtig ist dabei eben die Charakterisierung.
Ich meine das nicht im Sinnen von verschiedene Fortbewegunsmöglichkeiten. Vlt sollte ich es eher Aktionen nennen. Einfach mal ein Bsp.
Ich habe 3 Bakterienarten
A, lebt einfach nur vor sich hin
B, frisst A, flieht vor C
C, frisst B
Ich verwende ein 2D grid
Nehmen wir an es sieht so aus:
x y z
1. | | C | |
2. | A | B | |
3. | | | |
Was soll B nun tun?
Einerseits will es vor C fliehen, also nach Y3 ziehen, andrerseits aber auch A fressen, also nach X2 ziehen. Über Aktionsgene möchte ich dies nun darstellen.
Dabei versuche ich ein einfach erweiterbares System zu verwenden.
Sagen wir in Zukunft erfinde ich ein Gen das es B ermöglicht C anzugreifen.
Dadurch erhält B zwar keine Nahrung, kann sich aber C mit einer Bestimmten Wahrscheinlichkeit vom Hals schaffen. Welche Aktion macht er nun?
Das einzige System das ich bisher gefunden habe ist dies. Ich sammle einfach alle Aktionen, berechne sie und greife dann zufällig eines der Ergebnis heraus. Sagen wir Es hat 20 Aktionsgene und 15 sagen geh nach links (aus welchen gründen auch immer) und 5 sagen geh nach rechts. Dann geht Es mit 75% Wahrscheinlichkeit nach links und mit 25% nach rechts.
Da ich aber Gene mixen möchte bekomme ich Probleme den eine Funktion kann man schlecht mit einer anderen mixen und dann immer noch was vernünftiges raus bekommen. Deshalb muss ich die Ergebnisse mixen was aber dazu führt das ich mit jeder Generation mehr und mehr Funktionen berechnen müsste oder ich einen Normierungsfaktor mit einbauen müsste.
Oder ich baue eine feste Funktion und verändere nur die Parameter die sie bekommt. Dann kann ich aber nicht einfach neue Gene einbauen die dann neue Parameter einführen.
Alles nicht so toll.