Mittwoch, 23. Mai 2007

Nächster Schritt

Seit langer Zeit gab es nicht mehr so viel neues auf meinem Blog, das liegt nicht zuletzt daran, dass ich in meinem anderen Hobby (Klavier) noch das Final eines Wettbewerbs absolvieren musste. Nun geht es aber daran, wie ich meine Maturarbeit fortsetzen kann, denn im Prinzip hätte ich schon genug Stoff im Praktischen gesammelt, um den schriftlichen Teil zu schreiben - damit gebe ich mich aber nicht zufrieden.
Zum einen möchte ich herausfinden, ob die Roboter auch fähig sind, Steuerkommandos entgegen zu nehmen, wie z. B. "bewege dich in dieser bestimmten Richtung fort". So konkret habe ich dieses Thema in noch keiner anderen Arbeit über evolutionäre Roboter gefunden, in den meisten ging es nur darum, dass sich der Roboter möglichst schnell fortbewegt. Dieses Thema bietet also etwas Neues, das noch nicht so intensiv erforscht wurde.
Zum anderen möchte ich aber auch neue Morphologien ausprobieren, ich peile vor allem eine ähnliche Struktur des Menschen an um zu schauen, wie effizient mein evolutionärer Algorithmus ist.
Damit bin ich bei einem weitern Thema angelangt, das Optimierungspotenzial bietet. Zur Zeit arbeitet dieser Algorithmus so, dass nur die besten Gene ausgewählt werden. Dies bewirkt, dass nach wenigen Generationen eine akzeptabler Roboter vorhanden ist, der sich schnell fortbewegen kann. Nun ist es aber so, dass durch einen Selektionsalgorithmus, der mit Zufall arbeitet (die besseren Gene aber die grössere Chance bekommen, in die nächste Generation zu gelangen), langfristig die besseren Ergebnisse erzielt werden können.
Man kann auch die Leistung des evolutionären Algorithmus erhöhen, indem die Anzahl Gene, die weiterkommen, davon abhängig macht, wie stark sich die Population momentan verbessert. Falls sie sich nur gering verbessert, verringert man den Selektionsdruck. Dadurch können sich auch andere (im Vergleich zur Mehrheit der aktuellen Generation) Bewegungsformen entwickeln, die anfänglich nicht effizient sind, jedoch im Laufe der Generation die ursprüngliche in der Leistung überholt. Verbessert sich hingegen eine Population laufend, so ist es sinnvoll, den Selektionsdruck zu erhöhen, damit quasi ein "Feintuning" der Gene vorgenommen werden kann und nicht effiziente Gene verworfen werden, da sich die Population in einer starken Entwicklungsphase befindet.
Ein dritter Punkt, der die Leistung des EA (evolutionären Algorithmus) positiv beeinträchtigt ist das stärkere Mutieren aufgrund des Abschätzens des Einfluss der einzelnen Gene auf die Leistung eines Individuums. Damit meine ich, dass Gene, die bei einer grossen Veränderung positiv die Leistung beitragen, stärker mutiert werden als Gene, die bei einer ebenfalls grossen Veränderung zu schlechten Ergebnissen führen. Dies kann man berechnen, indem angeschaut wird, wie fest ein einzelnes Gen über die ganze Population gestreut ist. Ist die Streuung gross (d.h. sehr verschiedene Werte), so werden sie stark mutiert. Bei Genen, die sehr ähnliche Werte haben, wird hingegen eine schwächere Mutation bevorzugt.
Link zu diesen Themen: http://de.wikiversity.org/wiki/Kurs:Genetische_Algorithmen/Kapitel_8

2 Kommentare:

luke de duke hat gesagt…

Hallo Jorim

um meine eigenen Gedanken zum Selektieren loszuwerden dies:

Ich denke, die besten Resultate erzielst du da, indem du etwas möglichst Realitätsnahes simulierst (logisch). Deshalb würde ich den Selektionsdruck auf keinen Fall von der Qualität der Mutationen abhängig machen, sondern ich würde ein System zu simulieren versuchen, in dem unterschiedliche Roboter vorkommen, welche sich untereinander selektieren (so à la Insel, die nur durch einige wenige Tiere bevölkert ist).

Falls das zu komplex ist, was ich mir gut vorstellen könnte, würde ich die Selektion so gestalten, dass nur eine Sorte Roboter in einem Umfeld bestehen muss, welches sich vorläufig nicht ändert. Mit bestehen meine ich aber nicht nur möglichst schnell sein.

Aber das ist natürlich leicht gesagt als Laie im Programmieren. =D

Ich bin gespannt darauf wie du weitermachst und freue mich auf den nächsten Eintrag.

greez luke

luke de duke hat gesagt…

Achja, du wolltest doch AdSense von Google in deinen Blog implementieren. - ich bin dir zuvorgekommen.