-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathrelease_notes_BagaturEngine.txt
427 lines (339 loc) · 24.2 KB
/
release_notes_BagaturEngine.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
Version 5.1c (30 August 2024)
* Fix *.sh scripts and make them working
* Revise how the distribution looks like:
* Pack all java classes and NNUE data file into a single jar file
* Move bat/sh scripts to the root of the distribution
* Add a configured main class to run the engine in order to remove the necessary program arguments in the scripts
Version 5.1b (3 August 2024)
* Singular move extension implemented
* Revise search and move ordering
* Revise time management
Version 5.1a (7 July 2024)
* Updated logo
* Updated NUEE network file with new version
* Bug fixing for an issue which appears on very fast time control (e.g. 40/0:01+0.01)
* Bug fixing of PV line - now the last move is always valid
* Bug fixing for negative mate scores reported to GUI
* Disable chess extension but make sure qsearch extends all check positions with search of depth 1
* Disable Mop-up evaluation and rely on the NNUE evaluation
* LMR skips are more often on moves which produce beta cutoffs
Version 5.1 (17 June 2024)
* NNUE in Java based on Bullet trainer and custom training process. More info: https://github.com/bagaturchess/Bagatur/tree/master/NNUE
Version 5.0 (2 June 2024)
* NNUE Java porting implemented and works correctly without incremental updates. More info: https://github.com/bagaturchess/Bagatur/tree/master/NNUE
* Switching the default evaluation to NNUE Java as it is now 100 Elo stronger than the classical version. (Which was NOT the case with JNI NNUE version introduced in version 4.1a)
Version 4.1a (30 January 2024)
* NNUE support - adding script files for running under Linux for both 1 core and multicore versions
* NNUE support - adding exe and bat files for multicore version under Windows
Version 4.1 (23 January 2024)
* Optimizations and bugfixing in the evaluation function
Version 4.0 (20 January 2024)
* Adding exe and bat file for 1 core NNUE version of Bagatur, currently under Windows only. More information: https://github.com/bagaturchess/Bagatur/tree/master/NNUE
* Optimizations in the evaluation function - use int instead of double during calculations
* Use directly the Transposition Table score in the root search node too
Version 3.7e (26 December 2023)
* Bugfixing - mate with bishop and knight is now possible.
* EGTB Handling: return score directly if there is EGTB hit.
* EGTB Handling: search scores of Draw and EGTB hits are now stored in TT again.
Version 3.7d (24 May 2023)
* 3.7c is still weaker than version 3.0. These changes in 3.7d aim to restore the ELO strength.
* Move ordering: bad captures are now before quiet moves (like in version 3.0).
* Search: Randomize move lists before sorting 2.5 times more often.
* Search: Switch on Adaptive LMR, it keeps around 5% of all nodes not reduced by LMR.
* EGTB Handling: search scores of Draw, Mate and EGTB hits are not stored in TT.
Version 3.7c (1 May 2023)
* 3.7b is still weaker than version 3.0. These changes aim to restore the ELO after the new features and changes after 3.0:
* Keep Continuation History tables between the searches and not clear them, like in version 3.0.
* Enable again the LMR reduction's skip rate with a high value in order to not affect CPU performance.
Version 3.7b (25 March 2023)
* Less aggressive randomization of move order before sorting.
Version 3.7a (18 February 2023)
* Change the condition for randomizing the non-attacking moves. Now they are always randomized.
Version 3.7 (07 February 2023)
* SMP version:
* 1. On https://tcec-chess.com/ S24, there is still NPS scaling issue, because the achieved value is 5-10M nps and the expected is 30M nps.
* 2. The issue is reproducible on CentOS Stream release 8 and Java OpenJDK 1.8.0.
* 3. The tests show that with up to 64 cores (128 logical processors) it still achieves more stable and deeper depth, for a fixed time, with only 1 Transposition Table, although the NPS is between 3 and 6 times smaller.
* 4. A new UCI option is introduced for SMP version - CountTranspositionTables.
* 5. On CentOS Stream release 8 and Java OpenJDK 1.8.0, with 8 Transposition Tables the SMP search achieves similar depth and time, so there is sense to set it not to be 1, only when there is a NPS scaling issue. In such cases it could be set up to SQRT(THREADS_COUNT) Transposition Tables.
* 6. More details about the tests of the SMP version, could be found here: https://github.com/bagaturchess/Bagatur/tree/master/Sources/Search#readme
* 7. Bug fixing and optimizations inside the bagaturchess.search.impl.rootsearch.parallel.SearchersInfo class.
* 8. SMP version: Code clean up and simplification
*
* Single Core version
* 1. Randomize the non-attacking moves, before moves' ordering and sorting, in order to benefit from the search's undeterminism and minimize error.
Version 3.6b (04 September 2022)
* TBs: DTZ or DTM check improved. Still not 100% accurate - alone king condition used. Still direct DTM from native syzygy lib is not used, because of JNI/C types related issues, which need more time.
* TBs: Syzygy native lib changes and JNI integration code adoption - methods time are incorrect. How Value has to be converted to int?
* Search revision: move ordering based on the LMR beta cutoff move's ration. Added clear method in History Tables. CLEAR_TABLES_ON_NEW_SEARCH flag introduced and set to false.
* Search revision: enable LMP and LMR for all nodes (without statistical constraints - in this case "faster" is over "too accurate")
Version 3.6a (21 August 2022)
* Bugfixing: Syzygy TB support - DTZ handling
* Optimization: Decision whether to use or not LMR based on below alpha statistics of previous LMR searches
Version 3.6 (12 August 2022)
* Add Syzygy TB support
* Bugfixing: Bagatur evaluation jumps in SMP version
Version 3.5 (3 August 2022)
* Code improvements and bugfixing in regards to UCI options handling
Version 3.4h (2 August 2022)
* Bugfixing: When setting UCI options, which need re-creation of search objects, use their direct names, without converting to lower case.
* Optimization: create search objects only once, after all UCI options are set.
Version 3.4g (29 July 2022)
* Bugfixing (not related with FRC), of an issue introduced with version 3.4f. It is related with the extraction of moves from Transposition Table and building the PV to show as output.
* Bugfixing (not related with FRC), sometimes in mate positions, after repetition of move 2 times, Bagatur evaluation jumps between 0 and +-mate score.
Version 3.4f (24 July 2022)
* Fix for FRC: send castling moves to GUI always as "king capture own rook"
Version 3.4e (14 July 2022)
* Fixes for FRC: prevent king being attacked after castling (e.g. 1rn2r2/1pnkb3/2ppp3/p4p2/2P2P2/1P1BN3/3PPBP1/q1KR3R w - - 0 22)
* Add one more way for FRC castling notation in addition to "capture own rook or equal from_to square" - when king move has file difference bigger then 1, like in classic chess
Version 3.4d (13 July 2022)
* Fixes for FRC: send correct castling moves to GUI - capture own rook or equal from_to square (e.g. c8c8)
Version 3.4c (11 July 2022)
* Make it understand both FENs' and moves' notations in cutechess-cli (e.g. HAha, h1a1)
Version 3.4b (6 July 2022)
* Add UCI_Chess960 option to make it working with cutechess-cli
Version 3.4a (5 July 2022)
* Bugfix: update Zobrist key with side_to_move during castling in both classic and FRC/960 chess
* Use small static array for rook from to squares during castling instead of creating it each time
* Increase memory of single core version to 4G
Version 3.4 (1 July 2022)
* Added support for Fischer random chess a.k.a. Chess960
* Fixes in UCI protocol in regards to 'position' command
* Disabled TB support for single core version, because it has issues (for SMP version it is already disabled)
Version 3.3 (30 May 2022)
* Introducing new UCI options for better memory and scalability management, especially in SMP version:
* MemoryUsagePercent, TranspositionTable, IsGlobalTranspositionTable, EvalCache
* SMP version scales on 104 logical cores during TCEC Season 22 testing games and achieved 22 Mnps with IsGlobalTranspositionTable UCI option set to false
Version 3.2 (19 January 2022)
* Hotfix: TBs are temporarily switched off in SMP version, because of crashes in libJSyzygy.so: [libJSyzygy.so+0x6513] probe_dtz+0x403
Version 3.1 (7 January 2022)
* Hotfix: now the SMP version is working again with tbhits reporting logic
Version 3.0 (1 January 2022)
* Reduced LMR, now it finds mate in 5 in one test position using up to 10 seconds. More details: https://github.com/bagaturchess/Bagatur/issues/11
* UCI metric "tbhits" implemented as a part of info string
* Online Syzygy probing implemented. More details: https://github.com/bagaturchess/Bagatur/issues/9
* Endgame improvements, more accurate evaluation, it returns often 0 for draw games:
- knows if the last pawn is captured, then there should be enough mating material, otherwise the end game will be draw in the best case.
- knows only 2 knights and king are not enough mating material. More details: https://github.com/bagaturchess/Bagatur/issues/12
- knows it is better to exchange when the side has more material.
Version 2.3 (11 November 2021)
* 50 ELO stronger than 2.2e
* Improved SMP version
* Fine tuning of the memory allocation of transposition tables and evaluation caches
- Code works well with different memory settings. The calculations of structures' sizes looks correct.
Version 2.2i (11 November 2021)
* Additional fixes to prevent potential Java OutOfMemory errors
- Reduce 2 times memory allocations for transposition tables and evaluation caches in order to be on the safe side for now.
Version 2.2h (11 November 2021)
* Destroy the old transposition table before creating a new one (when it have to be re-created). This prevents potential OutOfMemory errors.
Version 2.2g (6 November 2021)
* Improvements in the SMP version
- Still the same idea of having separate transposition table for 32 threads
- All threads are now using all transposition tables (if they are more than 1)
- Bug fixing of version 2.2f
Version 2.2f (6 November 2021)
* Improvements for the SMP version
* Set max memory to 33GB for Windows and 96 GB for Linux
* Start threads per groups of 32 with separate transposition table for each group.
* In Java the arrays cannot be bigger than ~30GB.
* The recommended memory per thread is 1GB.
* With around 32GB per thread group, this setting should have excellent effect with 32, 64, 128, 256 and more threads.
Version 2.2e (16 August 2021)
* Enable ContinuationHistory as it is obviously the best option for move ordering. Without it, the engine performs with 50 ELO less.
* The SMP version still scales well on many CPUs after splitting the evaluation cache per each thread.
Version 2.2d (20 May 2021)
* SMP version: split evaluation cache per thread for better scalability on many CPUs
* Fix memory allocation problem in the data structure, which collects the best line
Version 2.2c (2 May 2021)
* SMP version: Disable ContinuationHistory as it consumes too much memory per each search thread. When the memory is close to the upper limit, the performance of the Java program is slow.
Version 2.2b (30 April 2021)
* No changes in the single core version
* Fixes in nodes counting (NPS) in SMP version (reported by TCEC, Aloril)
* Optimizations in SMP version (reported by TCEC, Aloril)
Version 2.2a (21 February 2021)
* Optimizations of search and qsearch with small ELO increase (~15)
* Bugfixing
Version 2.2 (29 May 2020)
* Reduced LMR and LMP for moves with high history scores
* SMP based on threads (not processes), it is now with 65+ ELO stronger than the single core version
* Injected icon in the executable files and update of WinRun4J to version 0.4.5
Version 2.1a (21 May 2020)
* Improvements in single core version with small ELO increase
* Evaluation cache increased to 256M for better performance
* Additional fixes in SMP version: parallel start and stop of the slave threads
Version 2.1 (1 May 2020)
* No changes in the single core version
* Fixed SMP version, which now works better than the single core version :-)
* In SMP version: increased max threads count from 64 to 256
Version 2.0 (13 March 2020)
* New evaluation function, based on Chess22k
Version 1.9b (7 March 2020)
* Bugfix: parallel search now works on Linux, just use ./bin/Bagatur_mcore.sh
Version 1.9a (14 January 2020)
* Optimization: don't perform NonPv search in the root position
* Improvement: add piece-to history supplementary to from-to history heuristic
Version 1.9 (19 December 2019)
* New search algorithm, based on Chess22k
* Search improvements: Use transposition table in quiescence search
* Search improvements: Disable futility pruning in quiescence search (for positions in check)
* Search improvements: New beta window generation in MTD(f) implementation
Version 1.8a (20 September 2019)
* Enable Syzygy tablebases for SMP version
* Corrections in PV search and collection of the best line
* Now LMR has new formula
Version 1.8 (30 July 2019)
* New evaluation function, based on the Stockfish
* Time control optimization for SMP version - don't use too much time if evaluation changes
Version 1.7b (2 July 2019)
* Bugfix: into the time control found during TCEC Season 16 testing by Aloril
Version 1.7a (18 April 2019)
* Optimizations of move ordering: bad captures are ordered with higher value
* Optimizations of move ordering: piece-square tables are not used in ordering
Version 1.7 (29 March 2019)
* Support for Syzygy tablebases, based on the java porting done by ljgw https://github.com/ljgw/syzygy-bridge
* New evaluation function
Version 1.6c (15 March 2019)
* Parallel search: now improved with several bug fixes
* Parallel search: UCI option implemented for Thread Memory (MB)
* Late move reduction is now more aggressive for all nodes
Version 1.6b (21 February 2019)
* Late move reduction is now decreased for PV nodes (+30 ELO)
Version 1.6a (11 February 2019)
* Revert memory management experiments introduced with versions 1.5g and 1.6
* More deeper internal iterative deepening search
* Late move reduction is now adjusted with move's history scores
Version 1.6 (17 January 2019)
* Separate transposition tables for search and qsearch for better memory management
* Use both transposition tables when probing position
* If presented use transposition table scores before qsearch
Version 1.5g (14 January 2019)
* Memory management improvements - more memory for the transposition table
* Use Late move reduction for remaining depth > 3
Version 1.5f (31 October 2018)
* 15 ELO stronger (measured versus 1.5e)
* Time management improvements
* Singular move extension implemented
* Optimizations of quiescence search - it searches all capture moves
Version 1.5e (20 July 2017)
* Endgame Tablebases support - switched OFF, because of engine crash errors (JNI and java OutOfMemory related)
Version 1.5d (15 July 2017)
* Search optimizations: added move history pruning and move count pruning
* Search optimizations: tuning of late move reduction
* Search optimizations: tuning of null move
* Search optimizations: switch OFF check extension
Version 1.5c (29 May 2017)
* Search optimizations: improved moves history table (PieceTo implementation)
Version 1.5b (25 May 2017)
* Search optimizations: less aggressive late move reduction
* Search optimizations: switch ON check extension
Version 1.5a (11 May 2017)
* Endgames without pawns - adding material imbalance to mock-up evaluation
* Evaluation function - tuning of all features
Version 1.5 (3 May 2017)
* 35+ ELO stronger (measured versus 1.4e)
* Search optimizations: adjusted best move window
* More tuning of Endgame's mate search - use endgame table bases after depth 13
Version 1.4e (15 April 2017)
* Evaluation function tuning (versus Stockfish7)
* Endgame improvements for mate search - use endgame table bases after depth 15
Version 1.4d (31 August 2016)
* Memory optimizations: increased memory usage percent, hence more entries into the transposition table (now on 40/40 time controls search goes deeper)
* Fix for endgames without pawns
* Fix for mate distance pruning
* Updated readme files
Version 1.4c (15 June 2016)
* 25+ ELO stronger (measured versus 1.4b with 150+ games - 1m+1s and 5m+5s time controls)
* Memory optimizations: no java objects creation during search, hence less java garbage collection and more engine performance
* Renamed *.exe files
Version 1.4b (31 May 2016)
* 28+ ELO stronger (measured versus 1.4a)
* Search optimizations: adjustments of the depth reduction amount used in late move reduction and null move reduction
* Default memory increased from 256MB to 1024MB. Could be set in the corresponding *.ini files to *exe files (or bat files if you don't use *.exe starters)
* Fixes in UCI communication with Arena UI (e.g. start-stop issues, MultiPV under Pondering issues)
Version 1.4a (24 May 2016)
* Bugfix: removed bug when in some endgames engine just stop thinking
* New UCI option Openning Mode - 'random' and 'most played first'
* Changed logo
* Simplified distribution structure
Version 1.4 (11 May 2016)
* 35+ ELO stronger!
* Added Windows 64 support for Gaviota Endgame Tablebases
* Search optimizations: New depth reduction function used in late move reduction, extensions adjustments, more reliable static pruning, separate transposition table per CPU (preparation for the new parallel search)
* Evaluation function: support for double bishops, good and bad bishops
* Draw probability adjustment for endgames with different colored bishops
* Updated *.exe files to support Java 7 and Java 8
* Default memory increased from 128MB to 256MB. Could be set in the corresponding *.ini files to *exe files (or bat files if you don't use *.exe starters)
* Improved memory management
* Fixed Pondering
Version 1.3a (07 December 2012)
* Endgame Tablebases support - Gaviota EGTB (currently, for win 32 only). Find more details in readme.txt.
* New UCI option 'Logging Policy' is introduced - 'single file', 'multiple files' and 'none'
* SMP version: fixed Operation System dependent issue, which causes the engine to use only one thread in some conditions
Version 1.3 (05 July 2012)
* SMP version is finally enabled and now works as expected. Your feedback is welcome, especially if you run it on more than 2 physical CPUs.
* Fixed new bug which appears in rare cases and cause the engine to exit with error
Version 1.2g (5 June 2012)
* 50 ELO stronger! Improved search algorithm (e.g. better tuned null move pruning)
* Improved SMP version although there is still room for improvement
Version 1.2f (26 May 2012)
* SMP version is now stronger. It is working with the latest 'single core' searcher algorithm as a basis
* Fixed bug which appears in rare cases and cause the engine to stop working
Version 1.2e (12 May 2012)
* 40 ELO stronger: optimized search - improved move ordering and search parameters
Version 1.2d (9 December 2011)
* 30 ELO stronger: optimized search - use the data from unsuccessful null move search in order not to reduce the strongest move of opponent
* bugfix: "loss on time" introduced by version 1.2c
Version 1.2c (4 December 2011)
* 30 ELO stronger: optimized search by making null move heuristic a bit more aggressive
Version 1.2b (3 November 2011)
* bugfix: read and use the option set for threads count of SMP version
Version 1.2a (30 October 2011)
* 50 ELO stronger than version 1.2. Achieved by tuning of search algorithm.
* Min threads count of SMP version are set to 2. Reported by Olivier Deville during OpenWar 9th Edition test games
* Default process priority is set to 'normal'
* Technical: Refactoring of configuration API & Impl code
Version 1.2 (10 September 2011)
* MultiPV search mode implemented! (a.k.a K-Best Moves search)
* Improved time-control of 'sudden death' playing mode (reported by Lars Hallerstrom during ChessWar XVII)
* Reduced adaptive extensions in non-pv nodes for better and faster search. Now in most cases the engine succeed to make one additional iteration for the same time.
* Evaluation: Increased King Safety weight with 10%
Version 1.1.3 (27 August 2011)
* Fixed "loss on time" issue during time-per-move mode. Reported by Olivier Deville during ChessWar XVII test games
* Fixed "loss on time" issue in 40th move with tournament time controls like 40/X. Again catched and reported by Olivier Deville
* Fixed issue in 64 bits EXE - again memory issue which appears in some rare cases
* Updated readme files (e.g. credits section)
* UCI: Usage of Transposition table entries' scores in PV nodes is implemented as UCI option (default value is false)
* Technical: Trust window of MTD search is now adaptive and vary between 0 and 32 centipawn depending on the stability of the best move (bigger stability when one and the same best move appears in more search iterations)
* Technical: Transposition table's entries (their scores) in PV nodes are used only if the length of the best line is enough (with the expected depth)
* Technical: Big source code refactoring in regards to the changes of the configuration concept
Version 1.1.2 (23 August 2011)
* Hot-fix of memory issue. Engine hangs and throws OutOfMemory error after last memory tunings in version 1.1.1. Now it should work fine.
* Decreased trust window of MTD Search from 8 to 0. Now each iteration needs a bit more researches but on the other hand more transposition table's entries has 'exact' type.
* Enable the usage of transposition table's entries (their scores) also in PV nodes
* UCI: Fixed issue in 'setoption' UCI command. Sometimes Arena sends not only name-value pair but also additional information.
* Changed own opening book. The new one is based on Hitman 5.2.
Version 1.1.1 (17 August 2011)
* Added EXE files for 32 and 64 bits Windows platforms. Now the usage is easy and the engine could be used in different UIs (then Arena) like Fritz and Polyglot.
* Default memory decreased from 256MB to 128MB. Could be set in the corresponding *.ini files to *exe files (or bat files if you don't use *.exe starters)
* More efficient cache usage - Transposition Table 40% of the free memory, Eval Cache - 40% of the free memory, Pawns Eval Cache - 20 % of the free memory.
* Directory structure of the distribution (zip file) is changed again.
* Fixed 'slow search' problem. It appears sometimes with given combination of hardware/windows/java and is related with the limited speed of I/O operations with the file system and process streams.
* UCI: uci options for evaluation function are implemented. Now the weights could be set from GUI. The following evaluation's components are included: King Safety, Mobility, Safe Mobility, Cental Space, Piece-Square, Pawns Structure, Passed Pawns.
* UCI: Send search information more often to UCI GUI (not only with the best line / principal variation)
* UCI: Go search with count of 'nodes' implemented
* UCI: Move immediately if mate is found in 3 sequential search depths
Version 1.1.0 (2 August 2011)
* Pondering mode implemented! Mate distance pruning disabled during Pondering.
* Added to-do list in the distribution. Feel free to contribute. :-)
* Bagatur's LOGO changed. Many thanks to Dusan Stamenkovic, http://www.chessmosaic.com/
* Improved time management: work well in tournament mode (with given moves to the next control a.k.a. 'movestogo' property of 'go' UCI command)
* Fixed bug reported during ChessWar XVII: Use 'long algebraic notation' instead of SAN in order to be UCI compatible
* Fixed bug reported during ChessWar XVII: Parallel search is now optional. Two separate *.bat files are created for running Bagatur on either signle-core or multi-core.
* Disable usage of opening book and single reply optimization during analyze mode
* Improved read-me file: Fixed typos. Added 'Clarifications' section. Added 'Credits' section.
* Changed directory structure of the distribution. Added 'bin' and 'dat' folders.
Version 1.0.1 (22 July 2011)
* Fixed bug reported during ChessWar XVII: "Loss on time" in games with fixed time (without time's increment per move)
* Reduced debug information in the engine's log file
Version 1.0.0 (27 Feb 2011)
* Initial code base