The target should be simply to get a better result from a specific position that you start.
Better result if you are losing is making the game longer or not losing.
Better result if you get a draw is a draw with a bigger evaluation in one of the moves or winning.
Better result if you are winning is winning a shorter game.
A simple process of learning against a deterministic engine that I call A that can be done also by the interface and not by the engine is
1)Play a game with a deterministic engine B against A and get some result
Your game is the starting point of iteration 1.
2)Try to change one of the moves of B in the game in order to get a better result when the rest of the moves are played by B
If you get a better result your new game is the starting point of the next iteration to try to get a better result
If you do not get a better result Try to do a different change in one of the moves(Note that in order to save time you may decide to resign the game when the evaluation at some move is clearly worse then the evaluation with your best result when the idea is that if the evaluation is -7 at move 20 you will probably be mated faster than the case that the evaluation is -4 at move 20).
You stop the process when you get a game when every change in one of the moves do not give you a better result and before stopping the process you also try the games you resigned in the last iteration again because maybe the -7 give better result because it gives later a fortress position and a draw when the -4 was losing.
This process is very long but if we play against opponents who play very fast then we can finish the iterations fast enough to get results.
I would like to see something that does it because I would like to see what is the biggest handicap that you can give to determinstic chess engines and still draw or even win but I do not plan to do what I suggest manually.
Note that it may be possible to finish step 2 only after you try to change all the possible moves in order to choose the best change because if you can change one move from losing in 41 moves to losing in 50 moves it is better than changing one move from losing in 41 moves to losing in 45 moves.
I guess that this may give better final result but the disadvantage is that the process is going to take even more time.
Is there an engine that can learn for a defined target?
Moderator: Ras
-
Uri Blass
- Posts: 11148
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
-
Ovyron
- Posts: 4562
- Joined: Tue Jul 03, 2007 4:30 am
Re: Is there an engine that can learn for a defined target?
This could be done using an UCI adapter. The adapter keeps track of moves played and results. If a game was won, moves played previously are moved instantly. If not, it can use the searchmoves command of the engine to look for alternative moves to the one played, and if they're within some margin play them instead. The time used to move on the original game could be used to decide how much to think about it.
The engine would improve on the position as more time accumulated on the clock when a successful move is played instantly, and better moves are found naturally or via searchmoves excluding the best one.
The engine would improve on the position as more time accumulated on the clock when a successful move is played instantly, and better moves are found naturally or via searchmoves excluding the best one.
Your beliefs create your reality, so be careful what you wish for.