Ich muss ein Semesterprojekt über Genetische Algorithmen machen, und ich hatte die Idee, die Eigenschaften eines Ego-Shooter-Bot zu stimmen (d. h. Waffen, die verwendet werden sollen usw.). Zum Beispiel würde ich die Merkmale in Form einer Zeichenkette darstellen, wobei die ersten 10 Bits die Wahrscheinlichkeit darstellen, Waffe1 zu wählen, die nächsten 10 Bits die Wahrscheinlichkeit, Waffe2 zu wählen usw. Ich würde somit die optimale Zeichenkette erhalten und somit in der Lage sein, herauszufinden Was sollte das optimale Waffenset sein, das ich benutzen sollte?
Das offensichtliche Problem, vor dem ich stehe, ist, wie man die Fitnesswerte findet. Meine Idee wäre, wenn ich die Fitness einer Saite finden möchte, zwinge ich den Roboter, die entsprechenden Waffen zu benutzen und ein Spiel dagegen zu spielen und die Endnote des Bot als Fitness zu verwenden. Das Problem ist, dass ich eine große Anzahl von Spielen spielen müsste.
Gibt es eine Art Simulation, die ich machen kann? Kann ich zum Beispiel irgendwie eine Funktion f bekommen, in der ich die Eigenschaften des Bots einspeise (zB: Waffen, etc.) und die entsprechenden Fitnesswerte zurückgeben würde? Stellen Open-Source-FPS-Spiele eine solche Bibliothek zur Verfügung?
Die andere Möglichkeit wäre, in den Quellcode des Spiels zu gehen und dann verschiedene Szenarios zu simulieren und die Punktzahl in jedem Szenario zu notieren. Ich würde es vorziehen, nicht die zusätzliche Komplexität zu haben, in die Quelle des Spiels zu gehen, da dies ein kurzes (1 Monat) Projekt ist.
Danke.
Ich denke, dass Ihr Projekt für ein einmonatiges Projekt sehr komplex ist.
Es ist nicht ganz so aufregend, aber vielleicht könntest du stattdessen Strategien für ein Brett- oder Kartenspiel ausprobieren. Dies ist eine viel einfachere Situation und viele Spiele können einfach und schnell simuliert werden, so dass Sie einen genetischen Algorithmus verwenden können, um eine gute Spielstrategie zu finden. Es wird Ihnen die Prinzipien genetischer Algorithmen beibringen, ohne dass Sie den riesigen Quellcode verstehen müssen, der notwendig wäre, um einen Ego-Shooter zu simulieren.
Ich stimme Mark Byers zu, es ist ein wenig zu ehrgeizig für ein einmonatiges Projekt.
Wie auch immer, vielleicht solltest du NERO (Neuro-Evolving Robotic Operatives) ausprobieren, ein Spiel, das auf Ken Stanleys Algorithmus basiert NEAT (NeuroEvolution von Augmentationstopologien).
Sie können sich auch Stanleys Papiere ansehen:
Mehrere Implementierungen von NEAT existieren für verschiedene Sprachen, so dass dies ein Anfang sein kann.
Sie können einen bereits vorhandenen Bot verwenden, um Daten zu generieren, falls verfügbar und wenn dies möglich ist.
Alternativ können Sie Autohotkey (google suchen) verwenden, um eine Sequenz von Tasten- und Mausdrücken zu erzeugen und den Bot irgendwie automatisch auf eine dumme Weise spielen zu lassen.
Deine Fitnessfunktion kann sein, wie viel DPS ein gegebener Bot gegen einen sitzenden Entengegner austeilt. Z.B. Lass den Bot den Spieler angreifen und wehre dich nicht zurück.
Sie können die Fitness notieren, so dass doppelte Personen nicht erneut getestet werden müssen.
Alternativ können Sie das Überleben des Stärkeren wörtlich machen, indem Sie zwei Personen in gegnerische Teams setzen und sehen, wer wen umbringt.
Weil Sie technisch keine Fitness-Funktion brauchen, nur eine Möglichkeit, Einzelpersonen zu vergleichen.
Um die Anzahl der Vergleiche zu reduzieren, können die Individuen jeder Generation über ein Turnier wie
verglichen werden %Vor%was zeigt, dass die oberen zwei Individuen C sind, dann A.
Tags und Links genetic-algorithm