Comments (9)
You are correct. Also, you got me looking at evaluteDraws(). I release that insufficient material should be done in the search, not in the eval ... which led me to notice I accidentally disabled the fifty move rule recently, although it showed no elo loss.
from ethereal.
I think there is another really small speed improvement in draw detection:
for (int i = board->numMoves - 2; i >= 0; i -= 2) {
Can it be:
for (int i = board->numMoves - 4; i >= 0; i -= 2) {
If i'm not wrong you should need at least 4 plies to repeat the current move.
Also can the draw detection be done after making a move on search? It should avoid redoing some draw detection (when it is not dropped by lmr or something).
from ethereal.
Draw detection is not tried until the move is to actually be searched.
As for the minus 4, this will not work. I could come up with an example, but the -4 makes sense if you were to move back and forth, ie the typical human draw by repetition. But really, we care if the position has been repeated at all in the last < 50 moves.
from ethereal.
You do a draw evaluation on LMR search and if it holds you do another search that would do another draw evaluation, right?
The move repetition window should be (inside the 50 move repetition) and the fastest way to draw should be the typical human draw by repetition so you should not be able to repeat the current board before 4 plies (board->numMoves- 4).
from ethereal.
Okay -- I see the case for LMR. I'll measure it, but it will make things a bit nasty.
I see what you are saying about -4 now, but I still think there is the case of the position being the same, as a result of a null move being made.
from ethereal.
I think only 2 null moves in a row would give you the same board in 2 plies.
from ethereal.
Okay. You are right about this.
However, I don't think I want to do it, just in the off chance that I at some point allow a double null move. This is one of those subtle things that I will forget about.
I am doing your evaluateDraw() suggestion, as well as the fixes to some various things. Testing looks like a good non-regression. http://chess.grantnet.us/viewTest/1391/
from ethereal.
Great! Really small improvement, but still a improvement.
from ethereal.
Resolved d9171ca
from ethereal.
Related Issues (20)
- Can you build a Korean chess engine? HOT 1
- PONDERLOCK is locked by a thread and unlocked by another thread which is undefined behavior HOT 2
- UCI_AnalyseMode HOT 1
- Error compiling Ethereal on MacOS HOT 2
- compiling error : "the clang compiler does not support '-march=native'" HOT 1
- strange and surprising chess mistake : Why ? HOT 1
- Evals not normalized to +1.00 = 50% win
- Normalized evaluation HOT 5
- Ethereal Commercial VS Ethereal Free HOT 2
- make error HOT 3
- tt_store comment confusion HOT 2
- Things to do if I had time
- pawn targets in genAllNoisyMoves HOT 4
- Sizeof(board.history)
- Please add ARMv9.2, SVE2, Dot Product and Neon support HOT 1
- queen contribution to attackedBy2 is wrong HOT 6
- nit -- line appears to be a no-op
- Bug in evaluateComplexity HOT 2
- Recommendation for CCC Engines
- Missing -static in CFLAGS? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ethereal.