Development of playing vs fixed depth and tactical training
Posted: 16 Dec 2008, 19:43
I tried to make the subject selfexplaining, but who knows... my english is not good enought.
I want to do two things that i think will be usefull and that i cannot find in other much better software that i own (and which u need to pay)
1.- Playing against an engine at fixed depth:
---------------------------------------------------
I dont know if anybody really tries to play against a computer. Often it is a very annoying thing, because no matter what u try, u always end up loosing. This is why ppl developing engines thought it would be usefull to reduce the skill of the engines.
The easiest way is to simply reduce the ply depth of the search. This is my favourite way, because u keep all the positional knowledge of the engine, but it is not tactically unbeatable.
The main problem arises when u want to play say 3/0 games to practice against a strong oponent, or, in my case, when ur one of those miserable ppl who doesnt have internet at home, so ur only way to play is by playing against the computer.
In either case, u want to play against the engine at a defined time controls to emulate an human opponent. Unfortunately, this is not supported by normal chess software (i wont say it is not supported by winboard because i never played a single game there, but i plan to if i can programe this ) like fritz, or the newer aquarium.
Not only u cannot have ur clock set to, say 3 min for the whole game, but also the engine moves instantly, what is annoying, and makes u play faster than u would want in other circumstances.
What i want to programe is a mode where u can select the max depth of the engine, while keeping the normal pace of a game: So not only i will have my clock set at 3 min, but also the engine's clock will be set to 3 min, and it will take its time to answer, even if it has to reach depth 1 and uses 1 ms to reach it.
How i want to do it? I dont know enought how winboard works, but i think that this must work w/o much programing: When my special mode of play is set at a specified time control and depth, i run the same rutine as if there were no specified depth to reach. The engine will be sending winboard information about evaluation and depth continuously until it decides what to move (i dont know if it is its decition or winboard decition, but it doesnt matter, the point is that it stops after consuming the time is meant to consume under the time control specified).
I will store the best move sent when the engine reaches the ply specified. Other moves will be ignored.
Possibly i will need to start a new game every move, since the engine will think that the move actually played is the move it selected after a long thought, not the one of a specified depth, but i rather want this to happen than to stop the engine at the specified depth and simply put a delay in the GUI, because i have plans for the research it makes after reaching the fixed depth. I think that it wont damage the performance of winboard to create a new game each move, but i could be wrong...
What i want to do with the rest of the search after playing at depth 1 (say)? I want to store the evaluations of the better search, so i will be able to calculate the accuracy of the moves made on the board supposing that the evaluation of the actual depth search is a perfect evaluation.
Exemple: supose it is my turn to move, while im thinking, the engine is also thinking, so it has an opinion about that position, which is reflected in the evaluation score. Now, i make my move. The last evaluation of the engine is kept as the "true" evaluation of the position before my move. Then, the engine starts pondering the new position. It will reach a final decition about the position in the moment it decides to move. We keep this evaluation also.
The loss of the player in this move, compared to the "perfect play" of the engine is the absolute value of the difference between this two evaluations (indeed it doesnt need to be absolute, so u can improve the engine play by finding moves that lead u to a better position than the moves by the engine, but this is not important at this moment).
This way, we can make a mean of the loss of a player during a game. In theory, this loss will be somehow related to the elo rating. Once we find this relation, we can assess the strength of a player in each game, so we can inform the player about his strength, what i find very interesting when u just can play with ur computer.
2.-Tactical training:
----------------------
I want to make possible in winboard what is possible on chessbase in a certain way, and what is done in CT-Art (Convekta): The GUI puts u a position and ask u for the best move in this position. U must make the move u think is the best as if u were in a normal game, and if it is correct it will tell u so and (maybe) put u another problem. If it is not correct, then the GUI will ask u to input another move.
This will be make by keeping track of the number of problems solved correctly, and the total number of mistakes, etc.
In the web there is Chess Tactic Server to train it, but as i said, i dont have internet.
When this is done, it is possible to have different "bases" of positions rated by elo, so it is possible to rate u as well, as it is done in CTS or CT-Art, and it will be possible to plot ur evolution, which i find usefull, and when i do the problems well, very satisfactory
Ok, thats all i want to do at the moment... I dont know why i always write so much, but i wanted to make myself clear, so maybe i can attract the atention of somebody who wants to help me
Thx for reading me.
I want to do two things that i think will be usefull and that i cannot find in other much better software that i own (and which u need to pay)
1.- Playing against an engine at fixed depth:
---------------------------------------------------
I dont know if anybody really tries to play against a computer. Often it is a very annoying thing, because no matter what u try, u always end up loosing. This is why ppl developing engines thought it would be usefull to reduce the skill of the engines.
The easiest way is to simply reduce the ply depth of the search. This is my favourite way, because u keep all the positional knowledge of the engine, but it is not tactically unbeatable.
The main problem arises when u want to play say 3/0 games to practice against a strong oponent, or, in my case, when ur one of those miserable ppl who doesnt have internet at home, so ur only way to play is by playing against the computer.
In either case, u want to play against the engine at a defined time controls to emulate an human opponent. Unfortunately, this is not supported by normal chess software (i wont say it is not supported by winboard because i never played a single game there, but i plan to if i can programe this ) like fritz, or the newer aquarium.
Not only u cannot have ur clock set to, say 3 min for the whole game, but also the engine moves instantly, what is annoying, and makes u play faster than u would want in other circumstances.
What i want to programe is a mode where u can select the max depth of the engine, while keeping the normal pace of a game: So not only i will have my clock set at 3 min, but also the engine's clock will be set to 3 min, and it will take its time to answer, even if it has to reach depth 1 and uses 1 ms to reach it.
How i want to do it? I dont know enought how winboard works, but i think that this must work w/o much programing: When my special mode of play is set at a specified time control and depth, i run the same rutine as if there were no specified depth to reach. The engine will be sending winboard information about evaluation and depth continuously until it decides what to move (i dont know if it is its decition or winboard decition, but it doesnt matter, the point is that it stops after consuming the time is meant to consume under the time control specified).
I will store the best move sent when the engine reaches the ply specified. Other moves will be ignored.
Possibly i will need to start a new game every move, since the engine will think that the move actually played is the move it selected after a long thought, not the one of a specified depth, but i rather want this to happen than to stop the engine at the specified depth and simply put a delay in the GUI, because i have plans for the research it makes after reaching the fixed depth. I think that it wont damage the performance of winboard to create a new game each move, but i could be wrong...
What i want to do with the rest of the search after playing at depth 1 (say)? I want to store the evaluations of the better search, so i will be able to calculate the accuracy of the moves made on the board supposing that the evaluation of the actual depth search is a perfect evaluation.
Exemple: supose it is my turn to move, while im thinking, the engine is also thinking, so it has an opinion about that position, which is reflected in the evaluation score. Now, i make my move. The last evaluation of the engine is kept as the "true" evaluation of the position before my move. Then, the engine starts pondering the new position. It will reach a final decition about the position in the moment it decides to move. We keep this evaluation also.
The loss of the player in this move, compared to the "perfect play" of the engine is the absolute value of the difference between this two evaluations (indeed it doesnt need to be absolute, so u can improve the engine play by finding moves that lead u to a better position than the moves by the engine, but this is not important at this moment).
This way, we can make a mean of the loss of a player during a game. In theory, this loss will be somehow related to the elo rating. Once we find this relation, we can assess the strength of a player in each game, so we can inform the player about his strength, what i find very interesting when u just can play with ur computer.
2.-Tactical training:
----------------------
I want to make possible in winboard what is possible on chessbase in a certain way, and what is done in CT-Art (Convekta): The GUI puts u a position and ask u for the best move in this position. U must make the move u think is the best as if u were in a normal game, and if it is correct it will tell u so and (maybe) put u another problem. If it is not correct, then the GUI will ask u to input another move.
This will be make by keeping track of the number of problems solved correctly, and the total number of mistakes, etc.
In the web there is Chess Tactic Server to train it, but as i said, i dont have internet.
When this is done, it is possible to have different "bases" of positions rated by elo, so it is possible to rate u as well, as it is done in CTS or CT-Art, and it will be possible to plot ur evolution, which i find usefull, and when i do the problems well, very satisfactory
Ok, thats all i want to do at the moment... I dont know why i always write so much, but i wanted to make myself clear, so maybe i can attract the atention of somebody who wants to help me
Thx for reading me.