will you follow all the forward pruning heuristics on top of alpha-beta pruning. Previous examples of engine building from scratch I followed, seem to have gone that way toward ELO objective within the engine tournaments mostly mimicking human tournament performance objectives.
They view any "how does the engine work" user interface access, as getting in the way of speed. Is my current take home. would need ramblings.. I am saying this, just in case your objective is more didactic. In that you will keep interpretability back to chess through and through, and will not converge to the basic same architecture as most exhaustive search engine still keep, even if NNue, is it self making a better quality leaf evaluation and reduce the breadth of search for same ELO.
My main goal is to get a working engine, so I'll keep things simple in the beginning. I'm unsure how I'll continue from there, but currently I'm not really interested in trying to make the engine as strong as possible just for the sake of it.
The evaluation function only looks at a single position, without looking ahead in any way (one basic example would be only counting the material). So if one side can win a piece with a tactic, the pure evaluation might still be equal. To avoid this, engines calculate ahead, assume that both sides play the best moves for them and then evaluate the resulting position. This is then "the evaluation" of the starting position.
This is the reason why many engines have an evaluation of +3, even though the position doesn't seem too bad. They calculate 20 moves ahead, see that one side has to give up a piece eventually and this position is then evaluated.
I wonder if it would be feasible for a chess engine to incorporate in some fashion the likelihood that people will not actually play all the best moves. (I'm not suggesting you do that in this project!) I ask because the wildly swinging evaluations every time someone makes a suboptimal move make the engine not terribly useful, at least when used by lower-rated players.
I'm interested. Which programming language will you use?
I'll use C++
will you follow all the forward pruning heuristics on top of alpha-beta pruning. Previous examples of engine building from scratch I followed, seem to have gone that way toward ELO objective within the engine tournaments mostly mimicking human tournament performance objectives.
They view any "how does the engine work" user interface access, as getting in the way of speed. Is my current take home. would need ramblings.. I am saying this, just in case your objective is more didactic. In that you will keep interpretability back to chess through and through, and will not converge to the basic same architecture as most exhaustive search engine still keep, even if NNue, is it self making a better quality leaf evaluation and reduce the breadth of search for same ELO.
You can do whatever, I am just curious of goals.
My main goal is to get a working engine, so I'll keep things simple in the beginning. I'm unsure how I'll continue from there, but currently I'm not really interested in trying to make the engine as strong as possible just for the sake of it.
Fascinating. I was unable to understand this sentence:
"The evaluation you see of the initial position is than actually evaluation of the final position"
The evaluation function only looks at a single position, without looking ahead in any way (one basic example would be only counting the material). So if one side can win a piece with a tactic, the pure evaluation might still be equal. To avoid this, engines calculate ahead, assume that both sides play the best moves for them and then evaluate the resulting position. This is then "the evaluation" of the starting position.
This is the reason why many engines have an evaluation of +3, even though the position doesn't seem too bad. They calculate 20 moves ahead, see that one side has to give up a piece eventually and this position is then evaluated.
I wonder if it would be feasible for a chess engine to incorporate in some fashion the likelihood that people will not actually play all the best moves. (I'm not suggesting you do that in this project!) I ask because the wildly swinging evaluations every time someone makes a suboptimal move make the engine not terribly useful, at least when used by lower-rated players.
Thanks for clarifying! I can't help thinking, though, that the sentence itself isn't parsable as it is. Should it be something like?:
"The evaluation you see of the initial position is, then, actually the evaluation of the final position"
Yes, I missed my typo, thanks for pointing it out :)