Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


#ActualÁlvaro

Posted 18 March 2013 - 03:11 PM

No I'm working on the nine men morris game for now. I will use quiescence search to return just the moves that will form mills. I think that would be similar to to capture moves in chess.

Oh, in that case it might help, but I don't think it will be as critical as in chess.

Also, how can I test transposition tables to check that the code I added with regards to TT works fine?

That's a very tricky thing to test. I would implement iterative deepening right away. You should then observe the behavior where after searching up to depth D, repeating the search gets you to depth D almost instantly. If that doesn't happen, you are probably doing something wrong.

You should pick a few positions and measure the number of nodes and the time it takes for the search to reach a particular depth. Although the speed in nodes per second will probably go down after implementing the transposition table, the time to reach a depth should go down.

Finally, you should play a match between your program with and without transposition tables. How many games to play is a tricky question, but I wouldn't do less than a thousand. They can be quite fast (for chess I use about 0.2 seconds per move). The important thing here is accumulating statistics. I would also observe the two programs playing at slower pace (say 10 seconds per move), so you can see what they are doing and notice if there's something broken.

I do what I described in the previous paragraph for almost every change to my program. If you don't do something like that, I don't think you can make meaningful progress.

#2Álvaro

Posted 18 March 2013 - 03:10 PM

No I'm working on the nine men morris game for now. I will use quiescence search to return just the moves that will form mills. I think that would be similar to to capture moves in chess.

Oh, in that case it might help, but I don't think it will be as critical as in chess.

Also, how can I test transposition tables to check that the code I added with regards to TT works fine?

That's a very tricky thing to test. I would implement iterative deepening right away. You should then observe the behavior where after searching up to depth D, repeating the search gets you to depth D almost instantly. If that doesn't happen, you are probably doing something wrong.

You should pick a few positions and measure the number of nodes and the time it takes for the search to reach a particular depth. Although the speed in nodes per second will probably go down after implementing the transposition table, the time to reach a depth should go down.

Finally, you should play a match between your program with and without transposition tables. How many games to play is a tricky question, but I wouldn't do less than a thousand. They can be quite fast (for chess I use about 0.2 seconds per move). The important thing here is accumulating statistics. I would also observe the two programs playing at slower pace (say 10 seconds per move), so you can observe what they are doing and see if there's something broken.

I do what I described in the previous paragraph for almost every change to my program. If you don't do something like that, I don't think you can make meaningful progress.

#1Álvaro

Posted 18 March 2013 - 02:00 PM

No I'm working on the nine men morris game for now. I will use quiescence search to return just the moves that will form mills. I think that would be similar to to capture moves in chess.

Oh, in that case it might help, but I don't think it will be as critical as in chess.

Also, how can I test transposition tables to check that the code I added with regards to TT works fine?

That's a very tricky thing to test. I would implement iterative deepening right away. You should then observe the behavior were after searching up to depth D, repeating the search gets you to depth D almost instantly. If that doesn't happen, you are probably doing something wrong.

You should pick a few positions and measure the number of nodes and the time it takes for the search to reach a particular depth. Although the speed in nodes per second will probably go down after implementing the transposition table, the time to reach a depth should go down.

Finally, you should play a match between your program with and without transposition tables. How many games to play is a tricky question, but I wouldn't do less than a thousand. They can be quite fast (for chess I use about 0.2 seconds per move). The important thing here is accumulating statistics. I would also observe the two programs playing at slower pace (say 10 seconds per move), so you can observe what they are doing and see if there's something broken.

I do what I described in the previous paragraph for almost every change to my program. If you don't do something like that, I don't think you can make meaningful progress.

PARTNERS