Hallo Ihr zwei,
Peter, bitte noch nicht zu viel Euphorie

Außer mir selbst hat die Elo-Stufen ja offenbar noch niemand ausprobiert, und auch ich selbst bin bisher (nach dem Programmieren, "kalibrieren" und den vielen automatischen Testmatches) mangels Zeit erst zu ganz wenigen Partien auf den ganz unteren Stufen gekommen. Vielleicht kommst Du ja auch zu dem Schluss, dass das alles Müll ist... was ich natürlich nicht hoffe
Stimmt, zu dem "wie" habe ich bisher noch nichts geschrieben.
Es gäbe ja verschiedene Möglichkeiten, und ich war mir selber nicht sicher, wie ich es implementieren sollte. Ich habe mich dann entschlossen, es zunächst einmal über die Suchtiefe zu versuchen. Wobei es aber, wie sich in den ersten Tests zeigte, mit einer reinen Beschränkung der "nominalen" Suchtiefe (also der Suchtiefe, mit der das Programm anfängt zu suchen, und die in den Infos als Suchtiefe angezeigt wird) nicht getan ist. Denn die Sucherweiterungen ("search extensions") und die Quiescence Search (abschließende Suchphase nach der "Brute Force" Suche - die es so in der reinen Form ja eigentlich auch nicht mehr gibt - in der nur noch Schlagfolgen und ggf. Schachgebote untersucht werden) machen einem da schnell einen Strich durch die Rechnung. Hinzu kommen noch die vielen selektiven Suchbaumbeschneidungen, die eine Vorhersage der tatsächlichen Suchtiefe zusätzlich unmöglich machen. Also habe ich da auch noch eingegriffen. Und dann per trial and error bestimmte Festlegungen getroffen, mit diesen Festlegungen dann automatisierte Testmatches gegen diverse Engines spielen lassen, die in der angestrebten Spielstärke lagen (also z.B. für die Annahme Elo 1500 gegen Engines von ca. 1200 bis ca. 1800 Elo). Und dann so lange gefeilt, bis die "Turnierperformance" in den Testserien der angestrebten Elo-Zahl entsprach. Aus den ersten Ergebnissen konnte ich dann entsprechend auch Schlussfolgerungen für die nächsten Elo-Stufen ziehen, was den trial-and-error Prozess dann verkürzt hat.
In die Stellungsbewertung habe ich jetzt erst einmal nicht eingegriffen.
So ist es jetzt zumindest so, dass die Engine keine "Geschenke" macht, sondern wenn, dann tatsächlich etwas "übersieht". Was ich persönlich nicht mag, sind Engines, die in abgeschwächter Stufe 1-2 mal während einer Partie Figuren opfern und dann den Rest der Partie wie ein Großmeister spielen und im Endspiel unbesiegbar sind. Sollte jetzt so nicht passieren. Aber Geschmäcker sind ja auch verschieden...
Bei meinen ersten selbst gespielten Partien gegen die ganz unteren Elo Stufen habe ich versucht, mich an meine ersten Partien als Kind gegen meinen ersten Schachcomputer zu erinnern (ein Chess Champion MK2

) In der ersten Partie gegen die Elo 1100 Stufe wollte ich schon fast Frust schieben, bis ich folgende Stellung auf dem Brett hatte. Gegen eine ungedrosselte Engine so natürlich nicht zu gewinnen, aber den MK2 hätte ich damals als Kiddy, zur Not auch mit Figurenopfern, in genau so eine Stellung getrieben und dann richtig schön fertig gemacht
Also mal probieren, und tatsächlich:
29. Se5 Db2
30. Txf7 Txf7
31. Dxf7+ Kh8
32. Sxg6#
Ok, das hatte funktioniert und geht für die Einstellung "Elo 1100" wohl auch so in Ordnung.
Noch schnell der Gegencheck, und yupp, gegen die Einstellung "Elo 1300" funktioniert das bereits, wie erhofft, nicht mehr.
Was mir jetzt noch fehlt, ist, dass die Engine so tut, als würde sie alles geben - heißt, es sollte eine Einstellung geben, die bewirkt, dass sie nicht zu schnell zieht, sondern genauso viel Zeit verbraucht, wie bei ungedrosseltem Betrieb. Ist sonst schnell frustrierend, wenn man selber stundenlang überlegt, aber die Engine zieht immer mehr oder weniger sofort und gewinnt womöglich trotzdem
Und dann als nächstes Einstellungen in der Richtung "aggressiv", "furchtloser Angreifer" oder auch "vorsichtiger Verteidiger", "Feigling" etc.
Aber jetzt erst einmal mit Zittern und Bangen abwarten, was die ersten Anwender zu den Elo-Einstellungen sagen...
Viele Grüße,
Heiko
