Direkt zum Hauptbereich

Rust


Ich habe mich, auf Vorschlag von Sebastian hin, die letzten Wochen mit einer Implementierung von "Vier gewinnt" in Rust versucht.

An Rust gefällt mir das Speicherkonzept, das ohne Garbage Collection, Speicherlecks und Nullpointer-Exceptions zur Compile-Zeit zu verhindern sucht.

Auch die Entwicklungsumgebung mit Cargo, der Paketverwaltung und der integrierten Testunterstützung kommt mir sehr entgegen.

Aber die Syntax erscheint mir nicht ganz rund und irgendwie inkonsistent. Die Verwendung von traits als Interfaces habe ich noch nicht durchdrungen. Und Marcos hielt ich eigentlich für ausgestorben.

Kommen wir aber zur "Vier gewinnt" Implementierung - meiner Nemesis: Ich habe mich wieder an den MinMax-Algorithmus versucht. Nach C++, Java, C# nun also in Rust. Und ich bin wieder gescheitert. Gut, der Algorithmus an sich funktioniert, ist aber entsprechend zu langsam, um ein perfektes Spiel zu spielen. Bis zu 7 Züge kann ich ihn nur voraus rechnen lassen, damit der Spieler nicht minutenlang warten muss. Und dann kann auch ich ihn noch schlagen. Bei 8 vorausberechneten Zügen hat mich das Programm geschlagen. Da konnte ich aber nebenher noch ein Buch lesen.

Es gäbe Verbesserungen des Algorithmus, wie z.B. die Alpha-Beta-Suche. Ich habe mir auch eine solche Implementierung in C++ angeschaut, aber verstehen tue ich sie nicht.

Ich gebe jetzt auch auf. Der Spaß ist jetzt irgendwie raus aus der Sache. Soll sich ein neuronalen Netz jetzt damit herum ärgern.

Nachtrag:
Nach nochmaliger Recherche bin ich noch auf andere Dokumente gestoßen. Vielleicht können die mich ja noch erhellen. Aber nur mit Widerwillen.

Kommentare

  1. Ich muss zugeben, das mit Rust war keine gute Idee von mir. Ich zumindest für meinen Teil habe enorme Schwierigkeiten mit Rust warm zu werden. Insbesondere kann ich nicht nachvollziehen, warum einfachste Konzepte wie Klassen wieder so anders gelöst werden.

    Zweitens glaube ich, Vier Gewinnt ist kein gutes Beispiel für ein Spiel, wenn man einen AI Bot entwickeln will, da man keinen Trainingspartner hat. Andere Spiele wie Tetris oder auch 2048 geben wesentlich einfacher Feedback, von dem man lernen kann. Dadurch kann man einen Bot unendlich oft gegen das Spiel trainieren lassen ohne vorher einen perfekten Gegenspieler zu implementieren.

    AntwortenLöschen
  2. Einen Tetris-Clone würde ich auch gerne mal wieder spielen.

    AntwortenLöschen

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

Utopie gesucht

In den 90er Jahren gab es meiner Meinung nach eine positive Zukunftssicht. Das sah man u.a. in der Serie Star Trek The next generation. Heute dagegen scheint es nur noch pessimistische Blicke auf die Zukunft zu geben. Auch die aktuellen Star Trek Serien stellen eine düsterere Welt dar. Dies könnte zu einer selbst erfüllenden Prophezeiung werden. Gibt es in der aktuellen Popkultur noch Utopien?

Umlagen und Produktivität

Genug prokastiniert. Hier jetzt also der Folgeartikel zum letzten Rentenbeitrag (also dem Artikel, nicht die Zahlung :-)). Zuerst möchte ich den Umstand hervorheben, dass unsere deutsche Rentenversicherung, wie bekannt sein dürfte, ein Umlagesystem ist. Das bei diesem System eingezahlte Geld wird nicht in einem Tresor bis zur Rente verwahrt und fließt auch nicht in Investitionen, wie Staats- oder Unternehmensanleihen, die später dann eine Rendite abwerfen würden; sondern es wird sofort wieder an die aktuellen Rentner ausgezahlt. Das hat große Vorteile, weil es gerade auch die Schwachen absichert (oder zumindest sollte), die während ihrer Erwerbstätigkeit nicht die Mittel haben, um privat vorzusorgen, und vor großen volkswirtschaftlichen Katastrophen absichert, wie Finanzkrisen oder Kriegen, die angespartes Kapital binnen kürzester Zeit vernichten können. Deswegen ist ein Umlageverfahren gerade nach solchen Katastrophen eine gute Lösung, um schnell die Bedürftigen zu unterstützen, da s...

Bevölkerungsstatistikspielereien

Beim statistischen Bundesamt kann man sich Daten der Fortschreibung des Bevölkerungsstandes seit 1970 herunterladen. Da bekommt man dann eine Tabelle, in der für jedes Jahr die Anzahl der Menschen in Deutschland des jeweiligen Alters aufgeführt sind.  Ich habe mir einmal immer die Zehnerjahre geben lassen und die Anzahl der Personen unter 18 Jahren aufsummiert (Jugend), zwischen 18 und 64 (Erwerbstätige) und alle ab 65 (Rentner) und habe dann das Verhältnis der Erwerbstätigen zu den Rentnern ermittelt.  (Hier als Bild, da ich in Blogger keine vernünftige Tabellendarstellung hinbekomme). Man sieht, dass 1970 auf einen Rentner noch 4 Erwerbstätige kamen, also - bildlich gesprochen - jeder Arbeiter etwa ein Viertel der Rente eines Rentners beisteuerte. Heute kommen nur noch ganz knapp drei Erwerbstätige auf einen Rentner, was bedeuten kann, dass entweder jeder Erwerbstätige jetzt ein Drittel der Rente schultern muss oder der Rentner nur nur drei Viertel der ursprünglichen Rente ...