Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Matefish 1.0
- - By Jörg Oster Date 2021-11-08 14:54 Upvotes 2
Source und Windows Release hier https://github.com/joergoster/Stockfish/tree/matefish

Threads auf talkchess
https://talkchess.com/forum3/viewtopic.php?f=2&t=76209&start=860#p911186
https://talkchess.com/forum3/viewtopic.php?f=2&t=78595#p911153
Parent - By Peter Martan Date 2021-11-08 17:45
Danke, Jörg, der Defender von Windows10 verweigert aber den Download, ihn zu ignorieren, überlegt noch
Parent - - By Jörg Oster Date 2021-11-08 17:59
Noch einige kurze Hinweise zur Nutzung.

Matefish ist noch single-threaded.
Man kann zwar mehrere Threads einstellen, aber alle
rechnen dann genau das gleiche. Es bringt also noch nichts.

Außerdem ist es zur Zeit noch sinnvoll, ihn nur mit relativ kurzzügigen Problemen zu "füttern".

Und ich empfehle erstmal die Nutzung in der Kommandozeile.
Ich habe noch keinerlei Tests in irgendwelchen GUIs gemacht.
Parent - - By Benno Hartwig Date 2021-11-08 22:10

> Matefish ist noch single-threaded. Man kann zwar mehrere Threads einstellen, aber alle rechnen dann genau das gleiche.


Na, das ist doch mal originell!
Was ist es denn, was man von dieser Engine konkret erwarten kann, was andere (Matefish scheint von Stockfish abgeleitet zu sein) ggf. nicht so gut leisten?
Parent - - By Jörg Oster Date 2021-11-09 05:48
Benno Hartwig schrieb:

Na, das ist doch mal originell!
Was ist es denn, was man von dieser Engine konkret erwarten kann, was andere (Matefish scheint von Stockfish abgeleitet zu sein) ggf. nicht so gut leisten?


Matefish ist ein Mattlöseprogramm.
Ich war eigentlich davon ausgegangen, dass dies aufgrund der Behandlung im Unterforum Schachprogrammierung klar sei.
Parent - By Benno Hartwig Date 2021-11-09 06:34

> Ich war eigentlich davon ausgegangen, dass dies aufgrund der Behandlung im Unterforum Schachprogrammierung klar sei.


Vielleicht sollte man nicht davon ausgehen, dass bekannt ist, was in einem anderen Forum gepostet wurde.
Insbesondere die Behandlung der speziellen Leistungsfähigkeit einer konkreten Engine hätte ich auch gar nicht bei "Schachprogrammierung" erwartet.
Mal schauen auf was du dich da beziehst...
Parent - By Peter Martan Date 2021-11-09 07:21 Upvotes 1
Benno Hartwig schrieb:

Was ist es denn, was man von dieser Engine konkret erwarten kann, was andere (Matefish scheint von Stockfish abgeleitet zu sein) ggf. nicht so gut leisten?

Wonach klingt dir denn der Name, Benno?

Und wenn du dir den github- Link, den Jörg gegeben hat, aufgemacht hättest, müsstest du auch nicht mehr so ahnungslos sein.
Just my two cents regards
Parent - - By Robert Bauer Date 2021-11-09 10:34
Der entscheidende Paragraph ist:

Zitat:
If the engine is searching a position that is not in the tablebases (e.g. a position with 8 pieces), it will access the tablebases during the search. If the engine reports a very large score (typically 153.xx), this means it has found a winning line into a tablebase position.

If the engine is given a position to search that is in the tablebases, it will use the tablebases at the beginning of the search to preselect all good moves, i.e. all moves that preserve the win or preserve the draw while taking into account the 50-move rule. It will then perform a search only on those moves. The engine will not move immediately, unless there is only a single good move. The engine likely will not report a mate score, even if the position is known to be won.

It is therefore clear that this behaviour is not identical to what one might be used to with Nalimov tablebases. There are technical reasons for this difference, the main technical reason being that Nalimov tablebases use the DTM metric (distance-to-mate), while the Syzygy tablebases use a variation of the DTZ metric (distance-to-zero, zero meaning any move that resets the 50-move counter). This special metric is one of the reasons that the Syzygy tablebases are more compact than Nalimov tablebases, while still storing all information needed for optimal play and in addition being able to take into account the 50-move rule.


Man darf aber schon hinterfragen, wieso wieder einmal ein Rad neu erfunden wurde und nicht Projekte, die vor Jahren aufgesetzt wurden, wie "Stockfish Matefinder" einfach verbessert werden.
Das kommt davon, wenn man zuviel Branched anstatt einfach einen Parameter einzubauen, der die entscheidende Weiche setzt.
Parent - By Peter Martan Date 2021-11-09 12:15 Edited 2021-11-09 13:07 Upvotes 4
Der wesentliche Unterschied soll ja eben sein (so wie ich das verstehe), Robert, dass es als reines Matt-Suchprogramm konzipiert ist, beim MateFinder von Joseph Ellis war das eben z.B. nicht so.
Dass ein solches auf die Mattsuche (allein) spezialisiertes Programm in dieser Hinsicht mehr schneller leisten sollte als eines, das auch zum game playing taugt, wirkt irgendwie logisch, was sollten sonst Programme wie Gustav, Chest, Popeye und andere?

Natürlich wäre eine Eier legende Wollmilchsau fein, die einen ab- und zuschaltbaren Turbo zur Mattsuche hätte, vor dem MateFinder (bei dem die Suche aber auch schon nur mehr durch Contempt und "Study"- Mode (mehr oder weniger LMRs) beeinflussbar war, die Mattsuche selbst also auch nicht), gab's den sehr effizienten Mate Search (Extensions) Mode bei Zappa Mexico und bei Houdini bis zum 5er. Vom SF, auch schon mit NNUE- Nutzung, gibt's den HekaStockfish von Majkel Novak, da kann man die Mattsuche extra ein- und ausschalten. Wovon meiner bescheidenen Erfahrung mit "echten", rein auf die Mattsuche spezialisierten Problemlösern jede Mattsuche stark profitieren sollte, wäre eine Eingabemöglichkeit der erwarteten Zugzahl bis zum Matt, das konnte man meines Wissens unter den game playing programs nur bei Houdini.

Und in Hinblick auf "Branching", wenn du den Branches auch noch die Eigennamen nimmst, weiß überhaupt kein Mensch mehr, der nicht eigens jeden Code von jedem "neuen" Branch nachliest, was von wem ist und wozu gedacht.
Und alles, was gut und schön für einzelne User wäre (ich würde mir z.B. immer einen abschaltbaren Nullmove und eine Pure NNUE Eval wünschen, beides ist in Jörgs MOJO als UCI- Option drin, alles irgendwie für die Analyse Wünschenswerte in den SF dev hineinzupacken, würde ein default- Setting, das zum optimalen game playing (gegen die stärksten Gegner) am geeignetsten wäre, nicht nur sehr umstritten werden lassen, es würde allein von der Menge an zusätzlichem Code Rechengeschwindigkeit kosten, kurz, das bringst du sicher nie durchs Framework. Auch schon deshalb nicht, weil du es immer extra mit jeder neuen Analyse- Code- Modifikation gegen die nächst ältere ohne die Neuerung und mit dem jeweils gerade aktuellen NNUE testen müsstest.

Joseph Ellis hat seinen Matefinder durch Crystal ersetzt, was auch seine Gründe haben wird, und von Jörg gibt's den auch ausgesprochen interessanten MOJO (Modifikation Jörg Oster)- Stockfish zum game playing und zur Analyse, ich finde, man sollte froh sein, wenn sich SF- Kundige nicht "nur" darum kümmern, um "Elo" zu rittern, sondern sich ausdrücklich auch um die Analyse und deren Spezialaufgaben eigens annehmen.

Just my two cents regards mal wieder
Parent - - By Thomas Plaschke Date 2021-11-09 12:31 Edited 2021-11-09 12:35
Ich habe ein wenig herumprobiert (Konsole und Arena). Auf den UCI-Befehl 'stop' reagiert die Engine nicht (und ohne Ausgabe). 'quit' funktioniert während der Berechnung (auch) nicht. Da scheint noch was zu haken. Gestartet habe ich die Berechnung jeweils mit 'go infinite'.
Kein Matt findet Matefinder übrigens in dieser Stellung (von P. Drumare 1962), die Teil des Nolot-Testsets ist: fen 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - - bm #8
Übrigens stürzt beim "profile-build" die pgo-Testengine bei der ersten bench-Aufgabe ab. Ich habe den pgo-Build hilfsweise mit "perft 5" statt "bench" erstellt.

Viele Grüße
Th. Plaschke
Parent - - By Jörg Oster Date 2021-11-09 14:18
Thomas Plaschke schrieb:

Ich habe ein wenig herumprobiert (Konsole und Arena). Auf den UCI-Befehl 'stop' reagiert die Engine nicht (und ohne Ausgabe). 'quit' funktioniert während der Berechnung (auch) nicht. Da scheint noch was zu haken. Gestartet habe ich die Berechnung jeweils mit 'go infinite'.
Kein Matt findet Matefinder übrigens in dieser Stellung (von P. Drumare 1962), die Teil des Nolot-Testsets ist: fen 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - - bm #8
Übrigens stürzt beim "profile-build" die pgo-Testengine bei der ersten bench-Aufgabe ab. Ich habe den pgo-Build hilfsweise mit "perft 5" statt "bench" erstellt.

Viele Grüße
Th. Plaschke


Danke Thomas.

Ich habe heute morgen noch einen Fix gepusht.
Damit sollte auch 'go infinite' funktionieren.

Das mit dem 'profile-build' kann ich bestätigen.
Da scheint sich ein Fehler eingeschlichen zu haben.
Ein normaler build sollte aber funktionieren.

Interessanterweise läuft ein 'bench' ganz normal durch bei mir.
Engine:
./matefish bench
Matefish 1.0 64 POPCNT by T. Romstad, M. Costalba, J. Kiiski, G. Linscott

Position: 1/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 923 nps 461500 tbhits 0 time 2 pv c5b3 a2b3 g5e3
bestmove c5b3 ponder a2b3

Position: 2/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 209 nps 209000 tbhits 0 time 1 pv e4f5 d6d5 g4d1
bestmove e4f5 ponder d6d5

Position: 3/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 365 nps 182500 tbhits 0 time 2 pv e1h4 c1a1 b4c2
bestmove e1h4 ponder c1a1

Position: 4/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 361 nps 361000 tbhits 0 time 1 pv c1c2 e4f5 c2f5
bestmove c1c2 ponder e4f5

Position: 5/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 96 nps 48000 tbhits 0 time 2 pv f4c7 e8f8 c7f7
bestmove f4c7 ponder e8f8

Position: 6/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 142 nps 142000 tbhits 0 time 1 pv e5g6 a4b3 h1h8
bestmove e5g6 ponder a4b3

Position: 7/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 362 nps 362000 tbhits 0 time 1 pv h2d6 e3d2 c2c3
bestmove h2d6 ponder e3d2

Position: 8/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 354 nps 354000 tbhits 0 time 1 pv c6a7 b2b7 e5c6
bestmove c6a7 ponder b2b7

Position: 9/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 914 nps 457000 tbhits 0 time 2 pv h1a1 d5e4 f5e7
bestmove h1a1 ponder d5e4

Position: 10/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 565 nps 565000 tbhits 0 time 1 pv d1d3 d5h1 d3f5
bestmove d1d3 ponder d5h1

Position: 11/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 724 nps 362000 tbhits 0 time 2 pv a3f8 e1g2 a4c2
bestmove a3f8 ponder e1g2

Position: 12/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 649 nps 324500 tbhits 0 time 2 pv c4d6 f1b5 d6b5
bestmove c4d6 ponder f1b5

Position: 13/15
info string No mate in 1 found
info string Success! Mate in 2 found!
info depth 3 seldepth 3 multipv 1 score mate 2 nodes 226 nps 226000 tbhits 0 time 1 pv g4f4 h5f4 h6g7
bestmove g4f4 ponder h5f4

Position: 14/15
info string No mate in 1 found
info string No mate in 2 found
info depth 3 seldepth 3 multipv 1 score cp 0 nodes 127 nps 127000 tbhits 0 time 1 pv h4h1
bestmove h4h1

Position: 15/15
info depth 0 score cp 0
info depth -1 seldepth 0 multipv 1 score mate 0 nodes 0 nps 0 tbhits 0 time 1 pv (none)
bestmove (none)

===========================
Total time (ms) : 8
Nodes searched  : 6017
Nodes/second    : 752125


Gruß, Jörg.
Parent - - By Thomas Plaschke Date 2021-11-09 14:24
Ja, im fertigen Programm ("normaler" Build oder pgo) läuft Bench bei mir auch normal (ohne Parameter oder mit "16 1 x default mate" (x=1-5)).
VG
Th. Plaschke
Parent - - By Jörg Oster Date 2021-11-09 14:39
Und hier noch die "Matt in 8"-Position:

Engine:
position fen 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - -
d

+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   | 8
+---+---+---+---+---+---+---+---+
|   |   |   |   |   | p |   |   | 7
+---+---+---+---+---+---+---+---+
|   |   |   |   | p | P |   |   | 6
+---+---+---+---+---+---+---+---+
|   |   |   | p | P |   | p |   | 5
+---+---+---+---+---+---+---+---+
| N |   |   | P |   | k | P |   | 4
+---+---+---+---+---+---+---+---+
|   |   | P |   |   | p |   | P | 3
+---+---+---+---+---+---+---+---+
|   |   | K |   |   | P |   |   | 2
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   | 1
+---+---+---+---+---+---+---+---+
   a   b   c   d   e   f   g   h

Fen: 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - - 0 1
Key: 3A3B9E35BA3A75F9
Checkers:
go mate 8
info string No mate in 1 found
info string No mate in 2 found
info string No mate in 3 found
info string No mate in 4 found
info string No mate in 5 found
info string No mate in 6 found
info string No mate in 7 found
info depth 15 currmove c2d3 currmovenumber 3
info depth 15 currmove c2b2 currmovenumber 4
info depth 15 currmove c2d2 currmovenumber 5
info string Success! Mate in 8 found!
info depth 15 seldepth 15 multipv 1 score mate 8 nodes 8370014 nps 1960649 hashfull 0 tbhits 0 time 4269 pv c2d2 f4e4 a4c5 e4f4 c5e6 f7e6 f6f7 f4e4 f7f8b e4f4 f8a3 f4e4 a3c1 e4f4 d2d3
bestmove c2d2 ponder f4e4
Parent - - By Thomas Plaschke Date 2021-11-09 15:23
Interessant!
Von der Konsole startete ich mit go oder go infinite. Das Matt in 8 wird gefunden, aber die Suche anscheinend nicht beendet (und eine Hauptvariante bzw. ein Info-String wie in Tiefe 15 nicht ausgegeben). Die Engine reagiert dann auch nicht auf "quit".
Ich erhalte mit der Engine vom aktuellen Quellcode aus Github folgende Ausgabe:
Engine:
position fen 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - -
d

+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   | 8
+---+---+---+---+---+---+---+---+
|   |   |   |   |   | p |   |   | 7
+---+---+---+---+---+---+---+---+
|   |   |   |   | p | P |   |   | 6
+---+---+---+---+---+---+---+---+
|   |   |   | p | P |   | p |   | 5
+---+---+---+---+---+---+---+---+
| N |   |   | P |   | k | P |   | 4
+---+---+---+---+---+---+---+---+
|   |   | P |   |   | p |   | P | 3
+---+---+---+---+---+---+---+---+
|   |   | K |   |   | P |   |   | 2
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   |   | 1
+---+---+---+---+---+---+---+---+
   a   b   c   d   e   f   g   h

Fen: 8/5p2/4pP2/3pP1p1/N2P1kP1/2P2p1P/2K2P2/8 w - - 0 1
Key: 3A3B9E35BA3A75F9
Checkers:
go mate 8
info string No mate in 1 found
info string No mate in 2 found
info string No mate in 3 found
info string No mate in 4 found
info string No mate in 5 found
info string No mate in 6 found
info string No mate in 7 found
info depth 15 currmove c2d2 currmovenumber 5
info string Success! Mate in 8 found!
quit
Die unterschiedliche Ausgabe liegt wahrscheinlich daran, dass Du bereits weiter kodiert hast. Das "quit" beendete das Programm tatsächlich nicht.

VG
Th. Plaschke
Parent - - By Jörg Oster Date 2021-11-09 15:48
Werde ich mir in Ruhe anschauen müssen.
Danke fürs Probieren und Berichten!

Gruß, Jörg.
Parent - By Thomas Plaschke Date 2021-11-10 09:39
Ich hatte Veränderungen am makefile vorgenommen. Unter anderem verwendete ich zusätzliche Optimierungsparameter. Die damit erstellten Programmfiles zeigen das von mir skizzierte Verhalten - auch mit den von Dir gestern, am späten Abend freigegebenen Änderungen. Nur -O3 allein funktioniert.
Viele Grüße
Th. Plaschke
Parent - - By Jörg Oster Date 2021-11-09 11:07
Anscheinend besteht generell Unklarheit darüber, was Matefish ist bzw. macht.
Bei der nächsten Version werde ich versuchen, dies etwas besser zu erläutern.
Mea culpa.
Parent - - By Robert Bauer Date 2021-11-09 11:42
Entschuldige Jörg,

ich habe jetzt erst gesehen, dass Du selbst der Autor bist.
Dann habe ich eine Frage bzw. einen Ratschlag, damit Dir nicht dasselbe Schicksal ereilt wie anderen Branches.

Zunächst mag Matefish ein experimenteller Branch sein. Wenn dieser zum Erfolg führt, wäre es jedoch wahrscheinlich empfehlenswert, dies als Engine-Parameter in den Hauptzweig der Main-Community zu überführen.
Das wäre ein richtig geiles Feature für Stockfish, welches immer schon in (den meisten) Engines gefehlt hat.
Im Branch hast Du ansonsten ja den permanenten Pflegebedarf - zumindest ab und zu - mit neuen Releases von Stockfish auch den Matefish neu releasen zu müssen.
Eventuell ist das nicht so oft notwendig, da lediglich gewisse Mattsuchtechniken benötigt werden, aber besser wäre es trotzdem.

Ich weiß nicht, ob das erlaubt ist, aber wahrscheinlich wäre es geschickter, zumindest ein Einleitungskapitel zu Matefish ganz nach oben vor die Beschreibung von Stockfish auf der Github-Seite zu ziehen.
Kannst Du bitte auch herausarbeiten, was an Matefish der neue Ansatz ist, gegenüber dem 3 Jahre alten "Stockfish Matefinder" von Joseph Ellis:
https://github.com/jhellis3/Stockfish/tree/mate_finder
Parent - By Jörg Oster Date 2021-11-09 15:23
Robert Bauer schrieb:

Entschuldige Jörg,

ich habe jetzt erst gesehen, dass Du selbst der Autor bist.
Dann habe ich eine Frage bzw. einen Ratschlag, damit Dir nicht dasselbe Schicksal ereilt wie anderen Branches.

Zunächst mag Matefish ein experimenteller Branch sein. Wenn dieser zum Erfolg führt, wäre es jedoch wahrscheinlich empfehlenswert, dies als Engine-Parameter in den Hauptzweig der Main-Community zu überführen.
Das wäre ein richtig geiles Feature für Stockfish, welches immer schon in (den meisten) Engines gefehlt hat.

Das wird nicht passieren. Aus verschiedenen Gründen.

Zitat:

Im Branch hast Du ansonsten ja den permanenten Pflegebedarf - zumindest ab und zu - mit neuen Releases von Stockfish auch den Matefish neu releasen zu müssen.
Eventuell ist das nicht so oft notwendig, da lediglich gewisse Mattsuchtechniken benötigt werden, aber besser wäre es trotzdem.

Matefish ist in der Beziehung völlig losgelöst von Stockfish.

Zitat:

Ich weiß nicht, ob das erlaubt ist, aber wahrscheinlich wäre es geschickter, zumindest ein Einleitungskapitel zu Matefish ganz nach oben vor die Beschreibung von Stockfish auf der Github-Seite zu ziehen.

Das geht nicht. Dies gehört mit zum master-branch von Stockfish und muss so bleiben.
Eventuell werde ich noch für Matefish ein eigenes Repo erstellen. Mal schauen.

Zitat:

Kannst Du bitte auch herausarbeiten, was an Matefish der neue Ansatz ist, gegenüber dem 3 Jahre alten "Stockfish Matefinder" von Joseph Ellis:
<a class='ura' href='https://github.com/jhellis3/Stockfish/tree/mate_finder'>https://github.com/jhellis3/Stockfish/tree/mate_finder</a>

Daran ist nichts neu, sondern einfach nur eine andere Zielsetzung als bei einer normalen Engine.
Wer sich dafür interessiert, dem kann ich nur den verlinkten Artikel im ersten Beitrag von Lothar empfehlen. https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12512

Gruß, Jörg.
Up Topic Hauptforen / CSS-Forum / Matefish 1.0

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill