Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mühlespiel KI
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 29.07.2015, 23:46    Titel: Mühlespiel KI Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 30.07.2015, 13:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 30.07.2015, 16:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 30.07.2015, 20:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4676
Wohnort: ~/

BeitragVerfasst am: 30.07.2015, 20:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 30.07.2015, 21:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 31.07.2015, 09:34    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1258
Wohnort: Ruhrpott

BeitragVerfasst am: 31.07.2015, 10:37    Titel: Antworten mit Zitat

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? lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 31.07.2015, 10:57    Titel: Mühle vollständig gelöst Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 31.07.2015, 12:16    Titel: Re: Mühle vollständig gelöst Antworten mit Zitat

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? lächeln

Gruß
grindstone
Sind ja nur etwas über 9 Millionen Stellungen!
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1258
Wohnort: Ruhrpott

BeitragVerfasst am: 31.07.2015, 12:56    Titel: Antworten mit Zitat

ALWIM hat Folgendes geschrieben:
Sind ja nur etwas über 9 Millionen Stellungen!
Das lässt sich in einer Datei von knapp 52 MB abspeichern. cool

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4676
Wohnort: ~/

BeitragVerfasst am: 31.07.2015, 14:21    Titel: Antworten mit 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?

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
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 132

BeitragVerfasst am: 31.07.2015, 14:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 31.07.2015, 16:02    Titel: Antworten mit Zitat

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. cool

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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 564
Wohnort: Jüterbog

BeitragVerfasst am: 31.07.2015, 16:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 03.08.2015, 13:05    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4676
Wohnort: ~/

BeitragVerfasst am: 04.08.2015, 09:03    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 564
Wohnort: Jüterbog

BeitragVerfasst am: 03.09.2015, 07:23    Titel: Antworten mit Zitat

Hallo Alwim lächeln
Meine äusserst bescheidenen Kenntnisse in Dame und KI und bewusst keiner Internet Recherche haben mich mal dazu hinreissen lassen:

folgendes mal speichern as "Statistik.bas"
https://www.freebasic-portal.de/porticula/statistik-bas-1808.html

"KUI.bas" (künstliche UnIntelligenz)
https://www.freebasic-portal.de/porticula/kui-bas-1809.html

und das graphische Frontend:
https://www.freebasic-portal.de/porticula/frontend-bas-1810.html
Mit dem Frontend kann man eine Brettsituation zusammenklicken (mehrmals Klicken, Farbrotation)
mit der Leertaste ist eine kleine Statistik zu sehen
mit 1/2 wird eine Zugempfehlung für weiss/schwarz gegeben... ich schweige mal darüber
mit s/l kann eine Brettsituation gespeichert/geladen werden

im Moment betrachte ich mal nur die Schiebephase.
vielleicht kann man was davon gebrauchen in einem Min-Max-Algo

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1047
Wohnort: Niederbayern

BeitragVerfasst am: 07.09.2015, 23:49    Titel: Antworten mit Zitat

Muttonhead hat Folgendes geschrieben:
Hallo Alwim lächeln
Meine äusserst bescheidenen Kenntnisse in Dame und KI und bewusst keiner Internet Recherche haben mich mal dazu hinreissen lassen:

folgendes mal speichern as "Statistik.bas"
https://www.freebasic-portal.de/porticula/statistik-bas-1808.html

"KUI.bas" (künstliche UnIntelligenz)
https://www.freebasic-portal.de/porticula/kui-bas-1809.html

und das graphische Frontend:
https://www.freebasic-portal.de/porticula/frontend-bas-1810.html
Mit dem Frontend kann man eine Brettsituation zusammenklicken (mehrmals Klicken, Farbrotation)
mit der Leertaste ist eine kleine Statistik zu sehen
mit 1/2 wird eine Zugempfehlung für weiss/schwarz gegeben... ich schweige mal darüber
mit s/l kann eine Brettsituation gespeichert/geladen werden

im Moment betrachte ich mal nur die Schiebephase.
vielleicht kann man was davon gebrauchen in einem Min-Max-Algo

Mutton

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4676
Wohnort: ~/

BeitragVerfasst am: 08.09.2015, 22:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz