Groups | Search | Server Info | Login | Register
Groups > de.sci.informatik.ki > #3310
| From | ram@zedat.fu-berlin.de (Stefan Ram) |
|---|---|
| Newsgroups | de.sci.informatik.ki |
| Subject | Roboter-Simulation |
| Date | 2026-04-27 16:07 +0000 |
| Organization | Stefan Ram |
| Message-ID | <Simulation-20260427163215@ram.dialup.fu-berlin.de> (permalink) |
Ich habe eine Roboter-Simulation programmiert (mit etwas Hilfe von einem Chatbot), in der ein Roboter zwei Augen hat, die jeweils nur ein Pixel sehen, und sich drehen und vorwärts bewegen kann. Bei der Simulation läuft eine Evolution für das Gehirn, das sich im Laufe der Zeit verändern kann, indem neue Neuronen oder Verbindungen hinzukommen oder entfernt werden oder ihre Parameter verändert werden. Das Gehirn empfängt Daten von den Augen (Entfernung und Farbe, jeweils ein Pixel) sowie von Oszillatoren und kann Antriebsdüsen für Rotation und lineare Bewegung steuern Die Roboter müssen die gelegentlich abgeworfene Nahrung erkennen und sich dann zu ihr hinbewegen um länger zu überleben, und die Überlebensdauer dient als Indikator für die Güte eines Roboters. Zunächst zeigte sich das folgende Verhalten: Ein Roboter dreht sich, bis er Nahrung erspät, und bewegt sich dann zu der Nahrung hin. Dieses erscheint eigentlich schon ziemlich optimal, aber es gab zwei Schwächen: Wenn die Nahrung zu weit entfernt war, übersah der Roboter sie manchmal, weil er sich dafür zu schnell drehte. Wenn die Nahrung zu nah war, rotierte der Roboter weiter, und benötigte dadurch mehr Zeit, um zur Nahrung zu kommen. Ich dachte mir, daß die Roboter lernen müßten, ihre Drehung zu verlangsamen - aber sie kamen anscheinend nicht auf diese Idee! Nun gab es nach mehreren Monaten einen Fortschritt: Die Dreh- geschwindigkeit wurde (per Zufall, durch eine Mutation) mit einem Oszillator gekoppelt und dieser dann (durch eine weitere Mutation) verlangsamt. Dadurch ist die Drehgeschwindigkeit nun überhaupt erst einmal variabel und teilweise langsamer, und die Roboter mit dieser Variabilität leben nun etwas länger. Besser als diese Variabilität wäre es eigentlich meiner Meinung nach, die Drehgeschwindigkeit einfach insgesamt zu reduzieren, aber aus irgendeinem Grund scheint dies bisher nicht passiert zu sein. Die Fortschritte kamen nachdem ich einige Veränderungen an meinem Programm vornahm: Die Mutationen waren bisher eher klein (um keinen guten Roboter zu zerstören), aber nun lasse ich manchmal auch größere Sprünge zu (be fast and break things) - und nur dadurch konnte die Frequenz eines Oszillators so stark erniedrigt werden, daß die neuen Roboter dadurch länger überleben. Man darf also nicht zu zaghaft/vorsichtig sein. Außerdem erkannte ich erst nach einer Weile, daß die Lebensdauer eines Roboters stark vom zufällig abgeworfenem Futter abhing, so daß ein einzelner Wert nicht aussagekräftig ist. Daraufhin begann ich damit, für jeden Roboter den Mittelwert aus mehreren Durchläufen als Qualität zu verwenden. Damit es nicht zu lange dauert, habe ich das Futter dann etwas reduziert, um die Dauer eines einzelnen Durchlaufs zu verkleinern. Da es zu lange dauern würde, für jeden Roboter ausreichend viele (>10000) Durchläufe zu machen, mache ich diesen Aufwand nur für gute Roboter, so daß die besten Roboter zirka 2000 Durchläufe hatten und die schlechteren nur zirka 100.
Back to de.sci.informatik.ki | Previous | Next — Next in thread | Find similar
Roboter-Simulation ram@zedat.fu-berlin.de (Stefan Ram) - 2026-04-27 16:07 +0000 Re: Roboter-Simulation ram@zedat.fu-berlin.de (Stefan Ram) - 2026-04-27 17:55 +0000
csiph-web