Groups | Search | Server Info | Login | Register


Groups > de.sci.informatik.ki > #3310

Roboter-Simulation

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)

Show all headers | View raw


  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 | NextNext in thread | Find similar


Thread

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