neuroevolution-ai / NeuroEvolution-CTRNN_new

MIT License
3 stars 3 forks source link

hyper populations / preparation for multiagent learning #35

Closed bjuergens closed 3 years ago

bjuergens commented 3 years ago

Hier nur eine issue, damit der alte code nicht in vergessenheite geräte, für den Fall, dass wir das mit den hyper-populations wieder in angriff nehmen wollen. https://github.com/neuroevolution-ai/NeuroEvolution-CTRNN_new/blob/b06cfaa1cf9d2b1ce3f361f101b935640a9b26e1/neuro_evolution_ctrnn/tools/algorithms.py#L58

Hier ist eine Modifikation von MuLambdaES, wo die population in specieses unterteilt wird. Die Unterteilung geschieht anhand des euklidischen Abstandes der genome und AgglomerativeClustering. Alle paar generation werden species aussortiert, die "stale" sind (d.h. sie haben lange keine neuen besten individuuen hervorgebracht). Außerdem wird regelmäßig die species gelöscht, die die schlechteste fitness hat. Wenn es wieder platz für neue species gibt, dann wird die species geteilt, deren genome am weitesten gestreut sind.

Man beachte: Der code hier ist nur ein Prototyp/Proof-of-concept.

Ich denke dieser Ansatz kann sehr gut den Suchraum in die Breite erforschen. Außerdem denke ich, dass dieser Ansatz sehr gut kompatibel ist zu Multi-Agenten training, da die Species relativ früh sehr unterschiedliche Strategien entwickeln, sodass ein heterogenes Meta* zu Tage tritt. Ich hatte diesen Ansatz nicht weiterverfolgt, weil wir damals eher Gym betrachtet haben, wo eine Suche in die Tiefe wichtiger ist (also mit viel feintuning der gewichte anstelle dem suchen von neuen strategien)

* "Meta" hier im Strategischen Sinne. Das Word "Meta" beschreibt die dominierende Strategie in einer Population. (erklärung hier).

bjuergens commented 3 years ago

ich denke das man das ding sehr gut als wrapper für die optimizer implementieren. Die unterpopulation kann man mit einem beliebigen optimizers intern mutieren. Dem meta-pop-training ding ist es egal wie die einzelnen population intern trainiert werden.


ein konkretes einfaches beispiel für implementierung zusammen mit multiagenten lernen: Es gibt 16 species. Evaluation finden in gruppen von 16 spielern statt. Jede evaluation findet mit jeweils einem individuum aus jeder species statt. Die fitness des einzelnen individuum ist dann der rang des individuums in seiner jeweiligen gruppe (alternativ: K/D oder Kills).

bjuergens commented 3 years ago

neue idee, (die eigentlich eine eigene issue sein müsste):

implementierung eines separaten evaluationslaufes für das beste individuums einer generation. (es gab ein related work, wo das so gemacht wurde ---ich glaube backtobasic18---).

Implementierung:

Ziel:

bjuergens commented 3 years ago

closed because inactivity.

feel free to reopen, if we want to address this topic again in the future (even if it's just for discussion)