Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Stockfish github
- - By Benno Hartwig Date 2015-07-30 07:41
Habt ihr Erfahrungen mit dem Stockfish-github?

Ich habe dort nun doch mal eine Sourcenänderung für den fishtest platzieren wollen.
Habe mir Github installiert, mir wurde Stockfish angeboten, habe mir einen branch von master geholt.
Daraufhin war der Sourcensatz dann auf meinem Rechner.
Ich habe im search.cpp meine kleine Änderung gemacht.
Das hat Github auch erkannt, die neuen Zeilen richtig markiert.
Ich habe die beiden Felder für Beschreibung ausgefüllt, commited und gesynct.
Das sah eigentlich sehr gut aus, aber:

Nun taucht meine Änderung "Bonus_in_qsearch" in der Liste korrekt in der History auf, zusammen mit diversen Änderungen, die sämtlich mehr als 2 Jahre alt sind.
Bin ich auf irgendeinem Abstellgleich gelandet? Bei etwas Uraltem?
Auch auf den Stockfish/fishtest-Seiten finde ich nichts von mir.

Bin ich zu ungeduldig?
Habe ich was falsch gemacht? (ich befürchte es)
Wie wäre es richtig gewesen?

Benno
Parent - - By Jörg Oster Date 2015-07-30 11:08
Hallo Benno,

ohne dein Repository zu kennen, ist es natürlich schwierig was zu sagen.
Generell gilt: gewünschte Änderungen immer auf einen neuen Branch committen, niemals auf den master branch!
Der master branch soll ja genau so sein wie der official/stockfish.
Die Adresse vom offiziellen Stockfish ist: https://github.com/official-stockfish/Stockfish

So updated man den master branch:
Code:
git fetch upstream
git merge upstream/master
git push origin master


So legt man einen branch an, wechselt in diesen, macht Änderungen, committed diese,
und wechselt wieder zurück zum master:
Code:
git checkout -b beispiel     // erzeugt einen neuen branch "beispiel" und wechselt auch gleich zu diesem
... jetzt die Änderungen an den Sourcen vornehmen ...
git add *                    // fügt die Änderungen hinzu
git commit -a                // jetzt kannst du eine kleine Beschreibung hinzufügen; außerdem den neuen bench (empfehlenswert)
git push origin beispiel     // und dann lädst du deinen neuen branch hoch
git checkout master          // und wechselst wieder zum master branch
Parent - - By Benno Hartwig Date 2015-07-30 15:35
Thanx,
ich werde es ausprobieren.
Vermutlich gibt es wohl auch eine ausführliche englischsprachige Beschreibung.
Habe ich nur noch nicht gefunden.
Aber vielleicht geben deine Hinweise die Richtung schon ausreiched vor.

Benno
Parent - - By Jörg Oster Date 2015-07-30 15:40
Benno Hartwig schrieb:

Thanx,
ich werde es ausprobieren.
Vermutlich gibt es wohl auch eine ausführliche englischsprachige Beschreibung.
Habe ich nur noch nicht gefunden.
Aber vielleicht geben deine Hinweise die Richtung schon ausreiched vor.

Benno

Schau mal hier https://help.github.com/articles/fork-a-repo/
Parent - By Benno Hartwig Date 2015-07-30 16:21
Thanx.

Meine hoffungtragende, geänderte Version muss ich dann ja irgendwie dem Fishtest zuführen.
Mal gucken, ob mir da
https://github.com/glinscott/fishtest/wiki/Creating-my-first-test
weiter hilft.

Benno
Parent - - By Tom Paul Date 2015-07-30 17:33
Benno Hartwig schrieb:

Habt ihr Erfahrungen mit dem Stockfish-github?

Ich habe dort nun doch mal eine Sourcenänderung für den fishtest platzieren wollen.
Habe mir Github installiert, mir wurde Stockfish angeboten, habe mir einen branch von master geholt.
Daraufhin war der Sourcensatz dann auf meinem Rechner.
Ich habe im search.cpp meine kleine Änderung gemacht.
Das hat Github auch erkannt, die neuen Zeilen richtig markiert.
Ich habe die beiden Felder für Beschreibung ausgefüllt, commited und gesynct.
Das sah eigentlich sehr gut aus, aber:

Nun taucht meine Änderung "Bonus_in_qsearch" in der Liste korrekt in der History auf, zusammen mit diversen Änderungen, die sämtlich mehr als 2 Jahre alt sind.
Bin ich auf irgendeinem Abstellgleich gelandet? Bei etwas Uraltem?
Auch auf den Stockfish/fishtest-Seiten finde ich nichts von mir.

Bin ich zu ungeduldig?
Habe ich was falsch gemacht? (ich befürchte es)
Wie wäre es richtig gewesen?

Benno


Was mich jetzt noch viel mehr interessiert, was genau versuchst du bei Stockfish zu verbessern?
Parent - - By Benno Hartwig Date 2015-07-30 17:58
Ich möchte eine kleine Änderung in qsearch testen lassen.
Wenn die Suche feststellt, dass neben dem bislang besten Zug ein anderer existiert, der auch sehr gut ist, dann bekommt die Stellung (bzw. der Zug der zu ihr führt) einen kleinen Bonus.
Ohne Extrazeitaufwand wird dies zwar nur sporadisch festgestellt, aber ggf. ist diese Erkenntnis ja nützlich.

Dahinter steckt die Idee:
Beide Schätzungen sind unscharf/fehlerbehaftet.
Wenn es tatsächlich zu dieser Stellung kommt, dann ist die Chance gut, dass einer der beiden Züge bei der dann hier ja tieferen Suche als besser als vormals erwartet erkannt wird.

Benno
(neugierig)
Parent - - By Ralf Mueller Date 2015-07-30 18:05
Ist die Chance, dass einer der beiden Züge schlechter als erwartet bewertet wird, nicht genauso groß? Was ein Vorteil wäre, dass das Risiko einer Schlechterbewertung durch eine Alternative gesenkt wird.
Parent - By Benno Hartwig Date 2015-07-30 18:56 Edited 2015-07-30 19:13

> Ist die Chance, dass einer der beiden Züge schlechter als erwartet bewertet wird, nicht genauso groß?


Nein.
Angenommen für den einzelnen Zug gilt:    P(besser bei etwas tieferer Rechnung=0,3),     P(gut getroffen)=0,4    und P(schlechter)=0,3      (also gleiche Chancen für überschätzt und unterschätzt),
und ich komme später wirklich hin zu dieser Position, dann wird mir die jetzt weiterführende Suche zeigen, welcher ggf. besser war. Bevor ich ihn wähle!
Besser ist dann einer mit Wahrscheinlichkeit 0,3+0,3-0,3*0,3=0,51
Die Wahrscheinlichkeit dafür, dass die Schätzung zutraf ist 0,4*0,4+2*0,3*0,4=0,4
Und die Wahrscheinlichkeit dafür, dass die Position tatsächlich überschätzt wurde ist nur 0,3*0,3=0,09.

So der einfache Ansatz.
Tatsächlich sind die Züge wohl meist aber nicht unabhängig.
Wenn man sich bei einem verschätzte, wird wohl oft auch der andere in ähnlicher Weise verschätzt sein.

Aber ich wollte das einfach gern mal ausprobieren.
Erst mal in der Ruhesuche. Die ist übersichtlicher.

Benno
Parent - - By Tom Paul Date 2015-07-30 18:15
Wenn ich deine Idee richtig verstehe, dann willst du quasi, dass die Engine mehr Möglichkeiten in betracht zieht, was die Engine wiederum mehr in die Breite rechnen lässt.

Was ist denn, wenn der beste Zug z.B. +0.25 ist und der zweitbeste Zug der jetzt gefunden wurde +0.24?
Wenn der jetzt einen kleinen Bonus bekommt, was ist klein?, dann könnte er ja besser sein als der zuvor beste Zug?, obwohl es da genauso viel gibt wie zuvor, nur dazu kommt noch ein geschenktes + oben drauf.
Und soll der zweitbeste Zug dann genauso tief analysiert werden wie der erstgenannte?
Und soll die Idee nur im ersten Zug, der jeweiligen Stellung, wo sich die Engine gerade befindet, wirken? Oder in jeder Stellung der sich ständig verändernden Varianten?
Parent - - By Benno Hartwig Date 2015-07-30 19:12 Edited 2015-07-30 19:32
Mein jetzige Implementierung reagiert nur mit einem Bonus, wenn die Ruhesuche zunächst einen Zug für den  besten hält und dann noch in der gleichen Stellung einen anderen als ein klein wenig besser zu erkennen.
Das kostet sie also keine Extrazeit. Sie erkennt solche Situationen aber auch nur manchmal.

Ob es hilft, nur genau dann zu reagieren? Oder führt das zu einem Vergleich von Äpfeln und Birnen?
Das möchte ich gern ausprobieren.

Wie groß darf die Differenz sein?
Muss getunt werden. Im Moment habe ich den Eindruck, dass die Differenz deutlich größer sein darf als ich erst dachte.

Wie groß darf der Bonus sein?
Mein Eindruck: nur 1 oder 2. Bereits mit sporadischen 3 hatte ich schlechte Erfahrungen. (PS: gemeint ist der Bauernbruchteil, den Stockfish im Typ Value darstellt. 1/256 Bauern?)
Der Bonus sollte aber wohl in Abhängigkeit von der Differenz gewählt werden.

Natürlich "verstimme" ich so das bisherige Stockfish-Stellungsbewerten ein wenig. Aber das ist ja Zweck der Übung, ich will ja hin und wieder einen anderen Zug provozieren.
Wenn nach bisheriger Bewertung 2 Zugmöglichkeiten der Engine als gleich bewertet werden, dann entsteht jetzt eine ganz kleine Neigung hin zu solchen Varianten, in denen mehrere gute Züge für einen selbst in den Stellungen auftauchen, während mehrere gute Züge für den Gegner eher vermieden werden.

So meine Idee, die natürlich auch Quark sein kann.
Aber verspielt, wie ich manchmal bin, möchte ich es gern mal probieren.

Ist man bereit, doch etwas Rechenzeit zu investieren, dann könnte die Ruhesuche auch stets im Fenster (alpha-1, beta) weitersuchen statt (alpha, beta).
dann könnte konkret erkannt werden, ob es mehr als einen Zug mit bester Bewertung gibt.
Sooo viel Zeit kostet das eventuell nicht. Wäre dann auch einen Test wert. Später.

Benno
Parent - By Tom Paul Date 2015-07-30 19:24 Edited 2015-07-30 19:29
Hört sich gut an.
Ich selbst hatte letztens eine Turnierpartie mit Stockfish analysiert, der sagte mir zu drei verschiedenen Zügen die er für die besten hielt, dass alle drei für mich die Partie verlieren, meinen Zug den ich in der Partie gespielt hatte und per Hand eingeben musste, bewertete Stockfish zunächst mit ~-1.79 und erkannte dann nach einiger Zeit das 0.00.

Evtl. solltest du nicht nur einen zweiten, vielleicht besseren, Zug in betracht ziehen, sondern vielleicht mehr Züge.
Es gibt ja das bekannte Stockfish Problem mit MV Mode z.B. 20 wo er alle Züge gleich bewertet und da könnte deine Idee den kleinen aber feinen Unterschied erkennen.

Das testen im Framework ist auch so eine Sache, da haben die Engines quasi 0 Bedenkzeit um auf eine gute Tiefe zu kommen und wenn deine Idee auch nur 1 Sekunde mehr Bedenkzeit kostet, dann hast du im Endeffekt 1 Sekunde weniger und 1 Sekunde weniger kann im Framework z.B. Tiefe 10 anstatt 15 bedeuten oder 15 anstatt 20.

Vielleicht funktioniert diese Idee ja auch nur bei langer Bedenkzeit.
Parent - By Tom Paul Date 2015-07-31 17:49
Und wie sieht es aus?

Ps. da Stockfish kaum oder gar keine ELO von 16 auf 32 bzw. 32 auf 64 Kerne gewinnt, würde deine Idee hier vielleicht besser wirken und ein + bringen, da Stockfish ohne Verlust in die Breite rechnen dürfte und somit ab und zu etwas entdecken könnte.
Up Topic Hauptforen / CSS-Forum / Stockfish github

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill