Wie spare ich Suchtiefe wenn ich mich bei der Positionsauswertung auf Quiet Positions beschränken will (in einem Schachcomputer)?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

schau mal bei chatgpt nach:

Hier seine Antwort die eigentlich immer weiterhelfen:

Die beschriebene Strategie ist in der Schachprogrammierung ein bekanntes Verfahren, das oft als "Quiescence Search" bezeichnet wird. Das Ziel ist, Züge zu berücksichtigen, die das Gleichgewicht der Position drastisch verändern könnten (wie das Schlagen von Figuren), bevor die Stellungsbewertung vorgenommen wird. Dies verhindert, dass der Computer eine Position überbewertet, weil er nicht gesehen hat, dass eine Figur im nächsten Zug geschlagen werden könnte.

Ein üblicher Ansatz, um unnötige Berechnungen zu reduzieren, besteht darin, die Quiescence Search auf eine bestimmte Tiefe zu beschränken oder nur bestimmte Züge (wie Schlag- und Promotionszüge) zu berücksichtigen.

Wenn die Quiescence Search weiterhin zu zeitaufwändig ist, könnten Sie eine Heuristik einsetzen, um zu entscheiden, ob es wahrscheinlich ist, dass der Gegner zurückschlägt. Beispielsweise könnten Sie berücksichtigen, ob das geschlagene Stück von höherem Wert ist oder ob das schlagende Stück durch den Zug gefährdet wird.

In Bezug auf die Verwendung der vorausberechneten zusätzlichen Ply zur Verbesserung der Bewertung: Dies ist durchaus möglich und wird oft als "Principal Variation Search" (PVS) bezeichnet. Mit PVS speichern Sie die Züge des "besten Pfads", den Sie bisher gefunden haben, und untersuchen diesen Pfad zuerst, wenn Sie tiefer in den Baum eintauchen. Dies kann dazu führen, dass weniger Züge in Betracht gezogen werden müssen, da Sie oft denselben Pfad verfolgen und dadurch weniger "schlechte" Züge untersuchen.

Eine weitere Methode zur Verbesserung der Effizienz ist das "Transposition Table" (TT), bei dem bereits bewertete Positionen in einer Datenstruktur gespeichert werden. Wenn dieselbe Position später erneut auftritt (was im Schach oft vorkommt), können Sie einfach die gespeicherte Bewertung verwenden, anstatt die Position erneut zu berechnen.

Bitte beachten Sie jedoch, dass all diese Methoden die Komplexität des Programms erhöhen und es schwieriger machen können, Fehler zu finden und zu beheben. Es ist also eine Frage des Ausgleichs zwischen der Effizienz der Suche und der Komplexität des Codes.

Woher ich das weiß:Hobby – Programmierer

Paolinus 
Beitragsersteller
 21.07.2023, 10:38

Also ich habe die Quiescence Search bereits auf eine bestimmte Tiefe beschränkt und schaue auch nur auf Schlag-Züge. Wenn ich nur gucke ob die schlagende Figur wertvoller ist als die geschlagene, ignoriere ich viele wichtige Möglichkeiten. Schauen ob zurückgeschlagen werden kann klingt sinnvoll, das verbraucht weniger Ressourcen als ein ganzes Ply Tiefe. Das probiere ich mal (dauert eine Weile, wenn ich es umgesetzt habe, komme ich darauf zurück). Wenn ich das zusätzliche Ply für eine PVS verwenen will, müsste ich ja direkt nach jedem möglichen Zug die Stellung auswerten, das wäre wieder zusätzlicher Rechenaufwand... Abgesehen davon mag ich Chat GPT nicht besonders, deswegen habe ich hier gefragt. Trotzdem Danke.

0
JulianOnFire  21.07.2023, 10:50
@Paolinus

gerne, ja verstehe ich. Chatgpt gibt nicht immer 100% richtige Antworten, da darf man nicht drauf vertrauen. Allerdings kannst du ihn solange schlagen und volllabern bis du das Problem gelöst hast

0
Paolinus 
Beitragsersteller
 21.07.2023, 10:59
@JulianOnFire

Ich mag die KI's an sich nicht. Aus moralischer Sicht, dass sie Arbeitsplätze frisst und die Leute vom selber nachdenken abhält.

1
JulianOnFire  21.07.2023, 09:34

wenn das nicht hilft, poste mal bitte deinen code hier

1