Thema: Schach
Einzelnen Beitrag anzeigen
  #41  
Alt 06.01.16, 14:45
Hawkwind Hawkwind ist offline
Singularität
 
Registriert seit: 22.07.2010
Ort: Rabenstein, Niederösterreich
Beitr?ge: 3.072
Standard AW: Schach

Zitat:
Zitat von TomS Beitrag anzeigen
Einen ersten Blick habe ich mal über den Code streifen lassen. Schaut doch sehr nach einer Bewertung aus wie sie vermutlich sehr viele Programme sehr ähnlich haben. Er hat auch noch ähnliche Algorithmen drin, wo ich bei meinem Programm damals versucht war, diese zu entsorgen: z.B. die Bewertungen in pawn.cpp. Offenbar weil es so "teuer" ist, werden einige heuristischen Bewertungen aufgrund der Bauernstruktur nur am Root-Node der Suche gemacht (also nur einmal) und in den Knoten der eigentlichen Suche werden dann einfach diese Werte genutzt (anstatt sie neu zu berechnen; die Stellung weicht ja ab vom root-Node). Der Autor war wohl auch nicht überzeugt davon: einiger Code davon ist bereits auskommentiert mit dem Hinweis

// this was moved to the dynamic evaluation


Ich vermute, dass die letzten - von mir fett hervorgehobenen - Punkte aus

9.6.7 Evaluation function

The evaluation function includes:

Material
Mobility
Drawish-material heuristics
Separated passed-pawn evaluation from the pawn hash table. Interaction with pieces can be taken into account
Pawn-shelter penalty; with king placement this forms some sort of a simplistic king-safety feature
Incremental move generation
Futility and delta pruning (not tested in conjunction with history pruning and hence not activated by default)
Move ordering (bad captures are postponed)
History pruning (not tested seriously yet enabled by default)


für die Spielstärke von Fruit ausschlaggebend sind. Sie betreffen aber eher die Suche als die Bewertung. Ich vermisse allerdings in dieser Liste das sehr bewährte Nullmove-Pruning, das spätestens seit Ende der 90er "State Of the Art" . ist. Das kommerzielle Programm "Fritz" von ChessBase soll diese Art Vorwärtsabschneidungen extrem implementiert haben.
Sehe gerade, Fruit macht aber auch diese Standard-Technik
search_full.cpp: string = option_get_string("NullMove Pruning");
search_full.cpp: NullReduction = option_get_int("NullMove Reduction");

Alles in allem finde ich es erstaunlich, dass Fruit so viel stärker als andere Amateure spielte.

---

Die Veröffentlichung des Codes von Fruit hatte ja offenbar zu einer dramatischen Verbesserung in der Spielstärke einiger Amateur-Engines geführt, siehe z.B.
http://www.top-5000.nl/riis.pdf
Seite 7

Ge?ndert von Hawkwind (06.01.16 um 15:31 Uhr)
Mit Zitat antworten