Delphi-PRAXiS
Seite 1 von 10  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ideen zur Schach KI (https://www.delphipraxis.net/44025-ideen-zur-schach-ki.html)

Cicaro 12. Apr 2005 10:11


Ideen zur Schach KI
 
Hallo !

Ich möchte zur Zeit 'ne Schach-KI programmieren. Meine Komponenten sind fast fertig. Ich fang also damit an meinem Gegner beizubringen schach zu denken.

Nach welchen Kriterien sollte denn die KI ihre Entscheidungen treffen ?
:wiejetzt:
meine ersten Ideen:
- Figurenvorteil
- möglichst große Anzahl an gedeckten Feldern
...

Teilt mir bitte eure Ideen mit !

Binärbaum 12. Apr 2005 10:16

Re: Ideen zur Schach KI
 
Tja, sowas hab ich auch mal vor längerer Zeit probiert, bin aber an der KI gescheitert. :oops:

Also ich bin damals davon ausgegangen, dass man neben dem rein materiellen Vorteil auch die jeweilige Stellung auf dem Schachbrett bewertet. Je nachdem, welcher Zug zu einer besseren Stelung führte (d.h. einen positionellen Vorteil brachte), wurde dieser ausgeführt.

MfG
Binärbaum

glkgereon 12. Apr 2005 10:18

Re: Ideen zur Schach KI
 
also, da ich auch mal dieses projekt hatte, habe ich mir genau die selben fragen gestellt.

- Material
- Angriffsmöglichkeiten
- Königsstellung/sicherheit
- Bauernstellung
- Zentrum
- Entwicklung
- Felder unter Kontrolle
- Taktische Gesichtspunkte (Löcher, Springer/Läufer, ...)

hilft dir vielleicht weiter...

Cicaro 12. Apr 2005 10:52

Re: Ideen zur Schach KI
 
Zitat:

Zitat von Binärbaum
Je nachdem, welcher Zug zu einer besseren Stelung führte (d.h. einen positionellen Vorteil brachte), wurde dieser ausgeführt.

Ich hab' Probleme diese Strategie auf die Mathematik zu übertragen. Ich dachte nämlich das man bei einem bestimmten Zug aufgrund von gewissen Kriterien Punkte sammelt, die durch ihre Höhe helfen zu entscheiden.
Welche Stellungen sind denn gut ?

Binärbaum 12. Apr 2005 11:03

Re: Ideen zur Schach KI
 
Zitat:

Zitat von Cicaro
Welche Stellungen sind denn gut ?

Das ist unterschiedlich und kommt auch auf die jemweilige Figur an.
Also ein Bauer ist zum Beispiel am wertvollsten, wenn er in der 7. (weiß) bzw. 2. Reihe (schwarz) steht, da man diesen beim nächsten Zug verwandeln kann.
Für König ist es hingegen sinnvoll, wenn man die Rochade ausführt, da er so besser geschützt ist.
Für Springer ist es gut, wenn aich sich im (erweiterten) Zentrum befinden,...
...
Die Liste lässt sich jetzt noch ein ganzes Stück fortsetzen.
Das eigentliche problem ist, erstmal die Kriterien zu finden, nach denen man entscheidet, ob eine Figur mindestens genau so gut oder besser steht als vorher. Die Umsetzung sollte dann das kleinere Problem sein (zumindest war es bei mir so).

MfG
Binärbaum

Cicaro 12. Apr 2005 11:08

Re: Ideen zur Schach KI
 
Zitat:

Zitat von glkgereon
- Material
- Angriffsmöglichkeiten
- Königsstellung/sicherheit
- Bauernstellung
- Zentrum
- Entwicklung
- Felder unter Kontrolle
- Taktische Gesichtspunkte (Löcher, Springer/Läufer, ...)

hilft dir vielleicht weiter...

Ja, wenn du mir auch erklärst, wie diese Kriterien mathematisch zur Entscheidung führen können.

Zum Beispiel:
Taktische Gesichtspunkte:
Löcher. Wie findet mein Programm löcher ? Durch neuronale Netze ?

Schach kann ich ja mehr oder weniger spielen. Für mein' Prohjekt interessiert mich aber mehr die mathematische Logik dahinter.

Und was verstehst du unter Entwicklung ? Möglichst viele Figuren an der Front ?

Trotzdem danke.

Slartibartfass 12. Apr 2005 11:09

Re: Ideen zur Schach KI
 
Zitat:

Zitat von Cicaro
Nach welchen Kriterien sollte denn die KI ihre Entscheidungen treffen ?

meine ersten Ideen:
- Figurenvorteil
- möglichst große Anzahl an gedeckten Feldern
...

Hi, Leute
Bin zwar, was programmieren angeht ein totaler n00b, aber egal..

Vergessen sollte man nicht, dass ein Schachprogramm besonders am Spielbeginn dem menschl. Spieler unterlegen ist, da dieser oft bestimmte Varianten (Sizilianisch, Französisch, etc. etc.) einstudiert hat, die, langfristig gesehen, den Spielaufbau zu seinen Gunsten entscheiden können, während die nur auf die nächsten Züge bedachte KI erst im Mittel- bzw. Endspiel den Vorteil "mathematischer Logik" einsetzen kann.

Ich würde daher empfehlen, dass du deinem Programm eine Reihe von Eröffnungen einprogrammierst, die dem Programm beim Spielbeginn "auf die Sprünge helfen".

:coder2:

mika 12. Apr 2005 11:18

Re: Ideen zur Schach KI
 
OT:

Danke für die Fjorde Slartibart ;)

(hoffe das ich den Namen jetzt noch richtig im Kopf habe, 42 :)



Zurück zum Thema:

Ich weiss zwar nicht wie man ne Schach KI programmiert aber diesen Thread behalt ich mal weiter im Auge, ist ne seeehr interessante Problemstellung! Vielleicht mal n OSS Schachprogramm nach Denkansätzen durchforsten?


mfg

Binärbaum 12. Apr 2005 11:22

Re: Ideen zur Schach KI
 
Zitat:

Zitat von Cicaro
Zitat:

Zitat von glkgereon
- Material
- Angriffsmöglichkeiten
- Königsstellung/sicherheit
- Bauernstellung
- Zentrum
- Entwicklung
- Felder unter Kontrolle
- Taktische Gesichtspunkte (Löcher, Springer/Läufer, ...)

hilft dir vielleicht weiter...

Ja, wenn du mir auch erklärst, wie diese Kriterien mathematisch zur Entscheidung führen können.

Zum Beispiel:
Taktische Gesichtspunkte:
Löcher. Wie findet mein Programm löcher ? Durch neuronale Netze ?

Schach kann ich ja mehr oder weniger spielen. Für mein' Prohjekt interessiert mich aber mehr die mathematische Logik dahinter.

Und was verstehst du unter Entwicklung ? Möglichst viele Figuren an der Front ?

Trotzdem danke.

Zu den Löchern:
Da musst du einfach abfragen, ob z.B. auf den betreffenden Feldern noch eigene Figuren stehen, die die dahinterliegenden schützen (beim König wichtig), oder ob sie evtl. auch nur einen Läufer blockieren.

Mit Entwicklung meint er sicher, dass man mehrere Züge hintereinander auf ein bestimmtes Ziel (z.B. Angriff auf dem Königsflügel) hinarbeitet. Das wird aber schon schwieriger (für die KI).

Und zur "mathematischen Logik":
Ein ehemaliger Schach-Weltmeister hat mal gesagt (nicht wörtlich, aber vom Inhalt her):
"Ein Spiel, indem alles so klar wäre wie 2 mal 2 gleich 4, würde schnell an Reiz verlieren."
Soll heißen, dass es nicht so einfach ist, eine gewisse Logik herauszuarbeiten, um das Schachspiel zu beschreiben.
Und wie man diese "Logik" dann in dein Programm implementiert, hängt stark davon ab, wie du die gegenwärtige Stellung auf dem Brett darstellst (d.h. Datentypen, ...).

MfG
Binärbaum

atreju2oo0 12. Apr 2005 11:34

Re: Ideen zur Schach KI
 
Zitat:

Zitat von Binärbaum
Das ist unterschiedlich und kommt auch auf die jemweilige Figur an.
Also ein Bauer ist zum Beispiel am wertvollsten, wenn er in der 7. (weiß) bzw. 2. Reihe (schwarz) steht, da man diesen beim nächsten Zug verwandeln kann.
Für König ist es hingegen sinnvoll, wenn man die Rochade ausführt, da er so besser geschützt ist.
Für Springer ist es gut, wenn aich sich im (erweiterten) Zentrum befinden,...
...

Wenn dein Programm nach diesen Gesichtspunkten entscheidet schickt es alle Bauern auf die Reise zum Gegner führt ne Rochade aus und lässt den König in der Ecke stehen!
Das interessante an Schach ist ja gerade, das jeder mögliche Zug der beste sein kann.
Es gibt genug Partien die gewonnen wurden, weil der spätere Gewinner 4 Züge vorher seine Dame geopfert hat!
Deshalb ist der Ansatz nach generell-günstigen Positionen zu spielen IMHO falsch.

Ich bin mit so einer KI zwar auch gescheitert aber mein Ansatz war die Position bewerten zu lassen nach
Anzahl der ungedeckten Figuren/Anzahl der gedeckten (Im Optimum 1) sowie
Anzahl der ungedeckten Felder/Anzahl der gedeckten (Im Optimum 1)

Damit hat man
1) ne Aussage über die eigene Position (Wenn alles gedeckt ist steht man gut ;) )
2) ne Aussage über die Möglichkeiten des Gegners (Wenn alle Felder gedeckt sind... Wo soll er noch hin)

Dieser Ansatz ist schon nicht so schlecht, aber er führt zu 2 Problemen:
1) Wenn ein Bauer durch ne Dame gedeckt ist, so ist er eigentlich nicht gedeckt da niemand die Dame opfert...
2) Im Endspiel läuft man so komplett gegen den Baum!

Soweit ich weiß benutzen heutige KI's 3 Engines:
die Erste für die Eröffnung (wird in Datenbanken gespeichert)
die Zweite für das Spiel (das ist die Richtige KI)
die Dritte für das Endspiel (Ab 5 Steinen pro Spieler steht bei Fehlerfreiem Spiel fest wer gewinnt, glaube ich)

Falls das Opensource-entwickelt werden soll würde ich mich da übrigens gerne dran beteiligen!
nen neuer Versuch kann nicht schaden ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.
Seite 1 von 10  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz