Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 29.07.2015, 23:46 Titel: Mühlespiel KI |
|
|
Hat jemand Lust eine Mühlespiel KI zu entwickeln? (Für eine KI, reichen meine bisherigen Kenntnisse nicht aus)
Sehe das ganze als Gemeinschaftsprojekt!
Ich habe ein funktionierendes Grafikprogramm (2 Spieler), was nach den offiziellen Regeln des Welt-Mühlespiel-Dachverbandes spielt!
Mein Testprogramm wird mit der Maus gesteuert. Es werden Zugunfähigkeit erkannt, sowie geschlossene Mühlen. Schließe ich beim Setzen 2 Mühlen gleichzeitig, so darf ich 2 Steine entfernen. Anhand der gelben Punkte, sieht man wo man seinen Stein hinziehen darf! Gegebenfalls mache ich daraus eine Onlineversion. Bin echt schon am überlegen ob ich eine Onlineversion programmieren soll. Da der Quellcode etwas unübersichtlich ist, wird das ganze nicht leicht werden.
https://www.freebasic-portal.de/projekte/muehlespiel-100.html
Edit:
Ich glaube, ich habe versehentlich im falschen Forum gepostet? Das gehört doch ins Projektvorstellungen rein? Kann man dort hineinverschieben, wenn ich im falschen gepostet habe.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 30.07.2015, 13:54 Titel: |
|
|
Gibts da auch ein Brett dazu? oder bin ich Blind?
Ist übrigens ziemlich Chaotisch der Code, ich versuch das ding grad unter Linux zum laufen zu bringen (Windows hab ich keins mehr). |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 30.07.2015, 16:52 Titel: |
|
|
Elor hat Folgendes geschrieben: | Gibts da auch ein Brett dazu? oder bin ich Blind?
Ist übrigens ziemlich Chaotisch der Code, ich versuch das ding grad unter Linux zum laufen zu bringen (Windows hab ich keins mehr). |
Brett befindet sich ganz am Ende! Dass der Code chaotisch ist, weiß ich. Ist bisher nur eine Studie bzw. im Anfangsstadium und für jemanden gedacht, der was draus machen will. Ich bin ja noch ganz am Anfang, habe erst mal die Grundregeln implementiert. Für einen offiziellen Download reichte das Programm noch nicht. Bisher funktioniert das ganze aber schon recht gut. Die 50-Züge-Regel funktioniert noch nicht so ganz wie es sein soll. Die muss ich irgendwann noch ändern.
Unter Linux zum laufen bringen geht! Man muss nur die WinApi-Funktionen entfernen. Ich verwende im Programm "Messagebox" der WinApi! _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 30.07.2015, 20:17 Titel: |
|
|
Ok, Danke!
Was die WinAPI angeht, die hab ich der einfach halber wegen (bedingt) durch die sGUI https://forum.qbasic.at/viewtopic.php?t=6007 ersetzt (brauchst ja nur die MessageBox). Hab bloß noch nicht raus gefunden wie man ein Programm-Icon unter Linux einbindet, hab ich noch nie benutzt. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 30.07.2015, 20:38 Titel: |
|
|
Zitat: | Hab bloß noch nicht raus gefunden wie man ein Programm-Icon unter Linux einbindet, hab ich noch nie benutzt. |
über die Abgabe einer xpm-Datei, z. B.
Code: | fbc programm.bas icon.xpm |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 30.07.2015, 21:26 Titel: |
|
|
Was ich irgendwie bei einer KI nicht verstehe/kapiere ist: Wie kommt eine Engine drauf, dass genau dieses Feld ein gutes Feld ist?
Ich mache einen Zug (egal welchen). Wie weiß der Computer jetzt, dass genau dieses eine Feld das richtige ist? Man muss ja für jedes Feld eine Bewertung erhalten können? Das leuchtet mir irgendwie noch nicht ein. Vielleicht kann ich deswegen noch keine KI fürs Mühle/Schach schreiben?
Mir ist der Alpha-Beta Algorithmus bekannt, aber so ganz verstehe ich ihn nicht. Gibt es noch andere Möglichkeiten als Mini/Max oder Alpha/Beta für eine Mühlespiel KI?
Bei mir muss es schon eine gute KI sein, damit ich verliere! Bin nämlich ein sehr starker Mühlespieler. Ich trat mal im Internet (Inetplay) gegen die perfekt spielende Mühledatenbank Mr. Data an und spielte bei 1 Partie remis! _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 31.07.2015, 09:34 Titel: |
|
|
@nemored:
Danke fuer den hinweiss, dass mit der xpm-Datei hab ich schon versucht, Kombiliert zwar aber vom Icon ist nix zu sehen.
@ALWIM: Frag Dich mal selbst warum Du einen Stein an eine bestimmte stelle setzt und versuch dann dieses Verhalten dem Computer bei zu bringen. Ich hab hier irgentwo schon Tutorials ueber KI gesehen, wenn ich zeit hab schau ich nochmal ob ich die find. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 31.07.2015, 10:37 Titel: |
|
|
Ohne mich jetzt näher damit beschäftigt zu haben: Sooo viele Zugmöglichkeiten dürfte es doch bei Mühle nicht geben (zumindest im Vergleich zu Schach). Da müsste es doch möglich sein, alle Züge bis zum Spielende durchzurechnen und dann den zu nehmen, bei dem ein Sieg am wahrscheinlichsten ist.
Oder bin ich da jetzt zu naiv?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 31.07.2015, 10:57 Titel: Mühle vollständig gelöst |
|
|
Mühle ist vollständig gelöst. Bei optimalem Spiel beider Seiten( keine Fehler) endet Mühle remis.
aus der Wikipedia: Zitat: | der Informatiker Peter Stahlhacke das Spiel auf seinem Heimrechner vollständig berechnet. Die 17 GB große Datenbank mit allen Stellungen wurde auf der Spieleseite Inetplay als das perfekt mühlespielende Programm Mr. Data veröffentlicht. |
https://de.wikipedia.org/wiki/M%C3%BChle_%28Spiel%29 |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 31.07.2015, 12:16 Titel: Re: Mühle vollständig gelöst |
|
|
RockTheSchock hat Folgendes geschrieben: | Mühle ist vollständig gelöst. Bei optimalem Spiel beider Seiten( keine Fehler) endet Mühle remis.
aus der Wikipedia: Zitat: | der Informatiker Peter Stahlhacke das Spiel auf seinem Heimrechner vollständig berechnet. Die 17 GB große Datenbank mit allen Stellungen wurde auf der Spieleseite Inetplay als das perfekt mühlespielende Programm Mr. Data veröffentlicht. |
https://de.wikipedia.org/wiki/M%C3%BChle_%28Spiel%29 |
Nicht nur Mühle ist vollständig gelöst! Auch Dame und Schach enden bei perfektem Spiel beiderseits remis!
grindstone hat Folgendes geschrieben: | Ohne mich jetzt näher damit beschäftigt zu haben: Sooo viele Zugmöglichkeiten dürfte es doch bei Mühle nicht geben (zumindest im Vergleich zu Schach). Da müsste es doch möglich sein, alle Züge bis zum Spielende durchzurechnen und dann den zu nehmen, bei dem ein Sieg am wahrscheinlichsten ist.
Oder bin ich da jetzt zu naiv?
Gruß
grindstone | Sind ja nur etwas über 9 Millionen Stellungen! _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 31.07.2015, 12:56 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Sind ja nur etwas über 9 Millionen Stellungen! | Das lässt sich in einer Datei von knapp 52 MB abspeichern.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 31.07.2015, 14:21 Titel: |
|
|
@Elor: Das Icon funktioniert natürlich nur bei einem Grafikfenster (nur der Vollständigkeit halber dazu gesagt ). Bei mir klappt es jedenfalls. Handelt es sich um ein korrektes xpm-Bild?
Während des Spiels alle Züge durchzurechnen ist sicherlich nicht effizient; da würde man also besser einmal rechnen und das ganze in der Datenbank ablegen. Ohne Datenbank halte ich eine MiniMax-Suche für am besten geeignet.
@ALWIM: Für eine MiniMax-Suche brauchst du in irgendeiner Weise ein Bewertungssystem: Möglichkeit für eine Mühle, Freiheitsgrade der Steine usw. Ein eingesperrter Stein z. B. ist schlechter als einer, der viele Bewegungsmöglichkeiten hat. Das hängt natürlich nicht nur von diesem einen speziellen Feld ab, sondern von der gesamten Brettsituation. Beurteilt wird die komplette Situation nach Setzen des Steines auf das spezielle Feld.
Wenn du dich mal mit dem MiniMax-Suchalgorithmus beschäftigen willst (lohnenswert ist es allemal), würde ich am Anfang etwas deutlich einfacheres nehmen - z. B. ein Tic Tac Toe mit lediglich drei Bewertungssituation (1 = Gewinn, -1 = Verlust, 0 = (noch) unentschieden). Danach ist er auf andere Spiele wie Mühle relativ leicht übertragbar, wichtig ist eben "nur" eine gute Bewertungsfunktion. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 31.07.2015, 14:35 Titel: |
|
|
waere es denn sinnvoll fuer sowas einen genetischen algorytmus einzusetzen?
so koennte die ai zumindest immer besser werden um so mehr man gegen
sie spielt.
oder bin ich da aufn holzweg?
salute |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 31.07.2015, 16:02 Titel: |
|
|
grindstone hat Folgendes geschrieben: | ALWIM hat Folgendes geschrieben: | Sind ja nur etwas über 9 Millionen Stellungen! | Das lässt sich in einer Datei von knapp 52 MB abspeichern.
Gruß
grindstone |
Sorry, habe mich vertan! Es sind nicht 9 Millionen sondern 9 Milliarden!!!
Habe da etwas verwechselt. Keine Ahnung wie der kleine Lapsus zustande gekommen ist. Die Datenbank ist 17 GB groß!
Laut Wikipedia sollen es rund 1,8 · 10 hoch 10 (nicht durch Drehungen, Spiegelungen oder Vertauschen von innerem und äußerem Ring ineinander überführbare) Stellungen sein!
Zitat: | @ALWIM: Für eine MiniMax-Suche brauchst du in irgendeiner Weise ein Bewertungssystem: Möglichkeit für eine Mühle, Freiheitsgrade der Steine usw. Ein eingesperrter Stein z. B. ist schlechter als einer, der viele Bewegungsmöglichkeiten hat. Das hängt natürlich nicht nur von diesem einen speziellen Feld ab, sondern von der gesamten Brettsituation. Beurteilt wird die komplette Situation nach Setzen des Steines auf das spezielle Feld. | Ich seh schon, dass das ganze nicht einfach ist. Da komme ich noch nicht mit! Ideal wäre ein Quellcode, der komplett kommentiert ist! Zum verstehen praktisch! So werde ich das warscheinlich nie verstehen.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 564 Wohnort: Jüterbog
|
Verfasst am: 31.07.2015, 16:12 Titel: |
|
|
Mal bezugnehmend zu nemored:
Ich könnte mir vorstellen eine Art Statistik des aktuellen Spielstandes zu erstellen: eigene/gegnerische, offene/geschlossene Mühlen usw.
nach einem eigenen Zug, der gültig aber nicht unbedingt sinnvoll sein muß...
... erneut eine Statistik zu Vergleichszwecken.
Hat sich beispielsweise die eigene geschlossene Mühlenzahl erhöht, könnte man das als sehr gut bewerten, als Folge darf man ja den Gegner dezimieren.
Hat sich nur die eigen offene Mühlenzahl erhöht ist das nicht so schlecht. es ist ein potentielle Mühle hinzugekommen
Wenn eine Mühle aufgemacht wird, verringert sich die geschlossene Mühlenzahl während sich die offenen erhöht, ist vielleicht neutral zu bewerten.
Auch in der Setzphase: durch setzen in eine potentielle(offene) Mühle des Gegners verringert sich dessen offene Mühlenzahl, kann als gut bewertet werden
und so weiter...
das könnte man mit allen eigenen Steinen/Richtungen abklopfen
... vielleicht ein Ansatz?
Mutton |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 03.08.2015, 13:05 Titel: |
|
|
@ALWIM: Die Tutorials findest Du unter qbasic.de -> Tutorials ->Grafik-und Spieleprogrammierung.
Die sind zwar nicht mehr ganz frisch, es reicht aber aus um sich mal einen kleinen Überblick zu verschaffen.
Zitat: |
@Elor: Das Icon funktioniert natürlich nur bei einem Grafikfenster (nur der Vollständigkeit halber dazu gesagt happy). Bei mir klappt es jedenfalls. Handelt es sich um ein korrektes xpm-Bild?
|
Ich hab mir extra nochmal so ein xpm-Bild erstellt, ist dann aber nirgends zu sehen. Als Grafik Fenster muss ja das Mühle Spiel herhalten. Gibt es da was, wie z.B. unter Windows, was man im Programm angeben muss? Im Internet hab ich in dieser Richtung allerdings (außer der xpm-Datei) nichts gefunden. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 04.08.2015, 09:03 Titel: |
|
|
@Elor: Es müssen sich lediglich bas-Datei (z. B. programm.bas) und xpm-Bild (z. B. icon.xpm) im selben Ordner befinden und dann in diesem Ordner "fbc programm.bas icon.xpm" aufgerufen werden. Pfadangaben funktionieren sicher auch, habe ich aber nicht getestet.
Das Problem ist vielleicht folgendes: Das Icon wird im Programm angezeigt, nicht im Dateimanager. Die Icon-Verwaltung für die Dateimanager läuft für jeder Arbeitsumgebung anders, deswegen wird das der Compiler nicht allgemein lösen können. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 564 Wohnort: Jüterbog
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 07.09.2015, 23:49 Titel: |
|
|
Fürn Anfang nicht schlecht! Allerdings erkennt das Programm nicht die Endphase, wo einer oder beide nur noch 3 Steine haben. Auch bei einer Mühle wird nicht angezeigt, welcher Stein genommen werden soll. Aber sonst nicht schlecht! Auch gut, wäre noch eine Prüfung ob man im nächsten Zug die Partie gewinnen kann! Zum Beispiel durch einsperren!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 08.09.2015, 22:19 Titel: |
|
|
Zitat: | Auch gut, wäre noch eine Prüfung ob man im nächsten Zug die Partie gewinnen kann! Zum Beispiel durch einsperren! |
Genau solche Dinge laufen ja beim Minimax-Verfahren über die rekursive Anwendung mehrerer Züge. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|