 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 571 Wohnort: Jüterbog
|
Verfasst am: 09.09.2015, 09:34 Titel: |
|
|
@nemored:
Wäre denn von meinem Zeugs irgendwas bezüglich Minimax zu gebrauchen? ein einfaches ja würde genügen um mich mal damit intensiver auseinander zu setzen.
Mutton |
|
| Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4730 Wohnort: ~/
|
Verfasst am: 09.09.2015, 12:25 Titel: |
|
|
Ganz ehrlich, ich habe es mir noch nicht angeschaut. Aber prinzipiell ist jede Bewertungsfunktion zunächst einmal für Minimax brauchbar, und wenn sie dann doch nicht so taugt, kann man anschließend an den Bewertungskriterien feilen. Der Minimax-Algorithmus drumherum ist davon dann unabhängig.
Vielleicht komme ich heute noch dazu, mir das anzusehen, dann sage ich Bescheid. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
-----
"Das wissen doch sowieso nur Nerdinauten, die Schlaumeierologie studiert haben." - coldmirror |
|
| Nach oben |
|
 |
Roland Chastain

Anmeldungsdatum: 05.12.2011 Beiträge: 194 Wohnort: Frankreich
|
|
| Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 571 Wohnort: Jüterbog
|
Verfasst am: 12.09.2015, 10:11 Titel: |
|
|
Die letzten vier Tage hab ich mir den Kopf zermartert wie das mit dem Minimax so funktionieren könnte... ich glaube mittlerweile eine Vorstellung zu haben:
Ich mache alle Züge bis zu einer bestimmten Tiefe, bewerte diese und nehme dann den "besten" der mir vom Gegenspieler übrig gelassenen schlechten Züge.
Nur um meine Vorstellung weiter zu strapazieren:
Wenn ein Zug bedeuten würde man könnte dem Gegner ein Stein klauen... Um herauszufinden welcher fehlende Stein den größten Schaden anrichtet, ist dann wohl wieder ein Suchbaum notwendendig, der wie eine zusätzliche Wucherung herauswächst?
Mutton |
|
| Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1055 Wohnort: Niederbayern
|
Verfasst am: 12.09.2015, 13:49 Titel: |
|
|
| Muttonhead hat Folgendes geschrieben: | Die letzten vier Tage hab ich mir den Kopf zermartert wie das mit dem Minimax so funktionieren könnte... ich glaube mittlerweile eine Vorstellung zu haben:
Ich mache alle Züge bis zu einer bestimmten Tiefe, bewerte diese und nehme dann den "besten" der mir vom Gegenspieler übrig gelassenen schlechten Züge.
Nur um meine Vorstellung weiter zu strapazieren:
Wenn ein Zug bedeuten würde man könnte dem Gegner ein Stein klauen... Um herauszufinden welcher fehlende Stein den größten Schaden anrichtet, ist dann wohl wieder ein Suchbaum notwendendig, der wie eine zusätzliche Wucherung herauswächst?
Mutton |
Ich habe selber noch keine Idee, wie man das am besten machen könnte?
Mühle ist doch nicht so einfach wie ich gedacht habe. Habe mich aber die letzten paar Tage nicht mehr damit beschäftigt. Muss mir das nochmal genauer ansehen. Was mir eben noch einfiel: Man könnte jeden möglichen Zug prüfen ob dieser die Partie beendet. Sei es durch Zugunfähigkeit oder durch wegnehmen des drittletzten Steines.
Also fiktiv Zug ausführen und Stellung auf Zugunfähigkeit prüfen.
Zugunfähigkeit ist bei meinem Testprogramm ja bereits drin!
Letztens habe ich eine Schachdatenbankdatei mit dem Texteditor geöffnet und so was ähnliches wie das hier gesehen:
| Code: | | ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� |
Welche Verschlüselung steckt da dahinter? Man sieht lauter Vierecke! Und auch Leerzeichen sind in großer Menge vorhandenZuerst habe ich gedacht, was ist denn das? Nun weiß ich aber, dass das verschlüsselt wurde? Vielleicht hat das von euch schon einer mal irgendwo gesehen?
Edit:
Man sieht hier gar nichts? Ich habe leider kein Bild von der Textdatei!
Edit2: https://www.freebasic-portal.de/porticula/verschluesselung-txt-1811.html
Einfach die Datei downloaden und Inhalt als .txt speichern, dann sieht man was.
Gruß
Alwim _________________ SHELL SHUTDOWN -s -t 05 |
|
| Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4730 Wohnort: ~/
|
Verfasst am: 12.09.2015, 15:21 Titel: |
|
|
@ALWIM: Ich vermute stark, dass die Daten nicht verschlüsselt sind, sondern einfach nur in einem platzsparenden binären Format gespeichert wurden. Eine Schachdatenbank in für Menschen lesbarer Form zu speichern halte ich für sehr ineffizient.
@Muttonhead und andere Minimax-Interessierte:
Mein Minimax-Gedankengang läuft folgendermaßen: Du machst rekursiv mehrere Züge mit wechselnder Spielerseite (die Tiefe der Suche ergibt dann die Stärke der AI). Auf Ebene 1 führt man alle möglichen Züge nacheinander durch (und macht sie am Ende wieder rückgängig) und lässt dafür eine Antwort des Gegners berechnen (Ebene 2). Ebene 2 macht dasselbe: alle möglichen Züge durchführen und einen Gegenzug dazu anfordern. An unterster Ebene wird dann lediglich das Spielbrett bewertet und an die nächsthöhere Ebene zurückgegeben.
Aus allen Zügen innerhalb einer Ebene sucht sich der Computer denjenigen heraus, bei dem der Gegnerzug am schlechtesten abschneidet. Das sollte dann der beste Zug für ihn sein, und diesen besten Wert gibt er an die nächsthöhere Ebene zurück. Diese sucht sich auch wieder unter all diesen besten Werten denjenigen heraus, welcher der schlechteste ist; usw. Die Bewertungsfunktion selbst wird also nur auf unterster Ebene aufgerufen (da natürlich dann wegen der rekursiven Verzeigung sehr sehr häufig); alle anderen Ebenen "bewerten" anhand der Rückgabe der nächsttieferen Ebene.
An einem konkreten Beispiel bedeutet das: Wenn du einen Zug machen kannst, mit dem du den Gegner einsperrst, liefert dir die nächste Rekursionebene einen extrem schlechten Wert (Gegner hat verloren). Das wird dann wohl der schlechteste Wert unter allen anderen möglichen Zügen sein, weshalb du diesen Zug auswählst und negativ zurückgibst (also einen sehr hohen positiven Wert: ich werde gewinnen). Die nächsthöhere Ebene wird nun versuchen, diesen Zug, mit dem die tiefere Ebene einen so hohen Wert erreichen konnte, zu vermeiden, sprich: dort wird versucht, einen Zug zu machen, mit dem der Gegner nicht sofort gewinnen kann.
Ich habe im 2D-Spieleprogrammierbüchlein einen Mini-Minimax-Algorithmus für ein Nim-Spiel drin. Da es hier nur drei mögliche Bewertungssituationen gibt (gewonnen, verloren, ungewiss), ist die Bewertungsfunktion extrem einfach und wurde gleich in die Minimax-Prozedur eingebaut (wird aber trotzdem nur auf unterster Ebene verwendet). Das erste Mal mit Minimax beschäftigt habe ich mich für einen Programmierwettbewerb mit meinem Spiel Major; da habe ich aber schon seit Jahren nicht mehr reingeschaut, und das ist noch für fbc v0.17. Mit -lang deprecated könnte es sich vielleicht copilieren lassen.
(Falls du den Highscore suchst, der funktioniert soweit ich weiß nicht ...)
@Roland: Wirklich ein schönes Programm.
Ich habe schon eine ganze Weile nach einer guten und vielseitiger Mühle-Umsetzung für Linux gesucht und nicht gesehen, dass ich dieses Programm in den Paketquellen habe. Nur die Berechnungstiefe muss ich kräftig nach unten schrauben (oder nach oben? auf jeden Fall in Richtung einfach )
edit: fehlenden Link eingefügt _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
-----
"Das wissen doch sowieso nur Nerdinauten, die Schlaumeierologie studiert haben." - coldmirror
Zuletzt bearbeitet von nemored am 12.09.2015, 19:48, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 571 Wohnort: Jüterbog
|
Verfasst am: 12.09.2015, 19:45 Titel: |
|
|
@nemored: weisst du wie verzweifelt man ist wenn man denkt man operiert mit
zwei Werten, einem Minimal und einem MaximalWert...
man bekommt es nicht zusammen
http://www.trinimon.de/Chess/ChessGame/Develop/chs_min.htm
der kleine Suchbaum und die Darstellung als Funktion min(,) und max(,) da hatte ich eine Eingebung.
 |
|
| Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4730 Wohnort: ~/
|
Verfasst am: 12.09.2015, 19:55 Titel: |
|
|
Ich wurde eben darauf aufmerksam gemacht, dass mein Nim-Spiel-Link gar nicht drin steht; ich habe ihn jetzt oben ergänzt.
Ja, eigentlich arbeitest du nur mit einem Wert; der Minimalwert des Gegners ist der Maximalwert für dich. Die größere Herausforderung besteht (neben einer guten Bewertungsfunktion) darin, die Suche schnell zu machen, indem man die Züge geschickt vorsortiert und die Rekursion frühzeitig abbricht, wenn das Ergebnis nicht mehr besser als das bisher beste werden kann. Das wäre dann aber schon Alpha-Beta. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
-----
"Das wissen doch sowieso nur Nerdinauten, die Schlaumeierologie studiert haben." - coldmirror |
|
| Nach oben |
|
 |
|
|
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.
|
|