Delphi-PRAXiS
Seite 10 von 10   « Erste     8910   

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 25. Mai 2005 09:31

Re: Ideen zur Schach KI
 
@alzaimar:
Du scheinst dich ja schon viel damit beschäftigt zu haben. Dein Ansatz weicht auch von meinem etwas ab. Ich wollte ja alles selber programmieren. Geübt habe ich auch schon an einfachen Spielen (Dame, 4Gewinnt, Cube und Magnetic). Lass mich trotzdem machen. Ich werd' schon aufgeben, wenn es sein muss. Außerdem ist die Methode doch nicht falsch, hab' nämlich die KI fertiggestellt, die genau einen halben Zug vorausdenkt und nur auf Figurenvorteil spielt. :mrgreen:

Aber zum Thema Horizonteffekt: man kann ja den Zug wählen, dessen erfolgversprächende Folgezüge zahlreicher sind als die der anderen Züge.

Außerdem ist Schach-KI-Programmierung nur deshalb so schwer, weil das Spiel so beliebt ist und weil man die Theorie des Spiels mittlerweile so gut ausgearbeitet hat.

Kennt ihr das auch: je schneller die KI spielt, desto wahrscheinlicher verliert man selber ?

alzaimar 25. Mai 2005 11:44

Re: Ideen zur Schach KI
 
Ich bleibe dabei, das ich nicht glaube, das dein Verfahren immer den besten Zug findet. Er sucht nur eine ganze Weile nach zufälligen Zügen... Das dabei eventuell der beste Zug dabei ist, ist logisch. Erzeuge zum Spass mal eine Liste aller möglichen Züge, führe die nacheinander aus, merke Dir die Stellungbwertung, und zeige dann den besten Zug an. Ich bezweifle, das bei Dir immer das gleiche rauskommt...

Mein Zeugs habe ich erstmal so hingeschrieben, ich weiss gar nicht, ob das funktioniert.

Ja, ich hab so ziemlich alle Spiele (Brett- und Denkspiele) programmiert (als ich noch nicht arbeiten musste) von Dame über Reversi, Backgammon, Go-Bang, 4-Gewinnt etc. Ich habe auch mal eine Arbeitsplangenerierung als Spiel programmiert (eigentlich ein Optimierungsproblem, aber das ist Schach ja auch: Finde den besten Zug)

Du solltest auf jeden Fall Alpha-Beta-Pruning implementieren, einen schnellen Zuggenerator und eine schnelle Bewertungsfunktion implementieren.

Der Horizonteffekt tritt ja dann auf, wenn der Rechner 'denkt', dieser Zug (der Letzte in der Vorschautiefe) sei jetzt der Brenner, aber in Wirklichkeit bekommt er gleich danach eine aufs Maul. Wie kann man das vermeiden? Ich glaube, das ist das grosse Problem. Aber, man kann versuchen, die wirklich dämlichen Horizonteffekte zu vermeiden. Wie? Nun, wenn wir uns im Schlagabtausch befinden und ich denke, ich hau Dir die Dame weg und gebe mir 1000 Punkte, ist das toll. Im nächsten Zug wäre ich Matt (was ich nicht sehe). Also sollten Züge, die einen grossen Vorteil erlangen (oder einen Nachteil abwenden) tiefer analysiert werden (bis sich z.B. die Lage wieder beruhigt hat). Wann hat sich 'die Lage wieder beruhigt'? Wenn z.B. das Vorzeichen der Stellungsbewertung nicht bei jedem Halbzug wechselt, oder auch einfach: Wenn [Stellung (Mein-Zug) - Stellung (Deine Antwort)] < Schwellenwert...

Du kannst dich auch mal mit neuronalen Netzen beschäftigen. Das beste Backgammonprogramm arbeitet damit und ist unbesiegbar geworden. Neuronale Netze werden gerne als Allheilmittel gepriesen. Sind sie zwar nicht, aber diffuse Muster können sie ganz gut erkennen. Bei vielen Stellungen gibt es ja solche 'Muster'...

Halte uns auf dem Laufenden, viel Spass. Fragen werden immer gerne beantwortet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Seite 10 von 10   « Erste     8910   

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