Author: James Robertson
Date: 00:27:11 08/25/99
Go up one level in this thread
On August 25, 1999 at 01:29:55, Bruce Moreland wrote:
>
>On August 24, 1999 at 22:02:33, James Robertson wrote:
>
>>I was looking at my code and noticed that I never get any cutoffs when there is
>>no available hash move.
>
>I don't understand this.
>
>> I modifed my code a little, and it sped up, but then I
>>noticed tactical problems;
>
>Are you fixing bugs or trying to make it go faster? If you were trying to fix
>something, why are you checking speed?
Trying to make it go faster, and noticed when I did something that seemed to be
logical, it caused problems.
>
>>on a certain test position it never finds a fairly
>>obvious move. Anyway, here is my hash code in my search function.
>
>You aren't sounding like someone who is in control of your code. No offense,
>but what makes you think that anything is wrong with the hash stuff? What did
>you do that made it faster and why do you think this may have destabilized it?
Of course I'm in control of my code. Every bit of it that doesn't have the words
'hash' and 'alpha' or 'beta' in it. :\ The reason I have this haunting feeling
that anything that goes wrong in my program must be the hashing code is that it
is the only part I do not fully understand.
Also, I had the feeling that my changes destabilized it when it missed a simple
tactic in a certain position. I suppose there are 3 possibilities as to what
would cause the problem; a) a freak hash collision, b) a problem with the hash
stuff in my search function, or c) a problem elsewhere. I decided not to think
about a) (do you check for hash collisions, btw?), take b) here for you guys to
look at, and worry about c) later.
James
>
>Sorry to sound weird but I still have a headache from the baseball game I
>mentioned in the CM6K hacking thread.
>
>bruce
>
>>The third line checks to see if the hash move is legal. Since an UPPER flagged
>>position may occassionally have no move, the 'blank move' is considered illegal
>>and it skips any chance of a cutoff. I changed line 3 to
>>if (!hr.move || board.IsLegal(hr.move)) {
>>and got the problems I mentioned above. Can anyone help me with this?
>>
>>Thanks,
>>James
>>
>> HashRec hr;
>> if (!hash_move[ply] && hash_table.Probe(&board, &hr)) {
>> if (board.IsLegal(hr.move)) {
>> // Adjust mate score.
>> if (hr.score > MATE>>1) hr.score -= ply-1;
>> else if (hr.score < -MATE>>1) hr.score += ply-1;
>> if (hr.draft >= depth) {
>> if (hr.flags & EXACT) {
>> return hr.score;
>> } else if (hr.flags & UPPER) {
>> if (hr.score <= alpha) return hr.score;
>> } else if (hr.flags & LOWER) {
>> if (hr.score >= beta) return hr.score;
>> }
>> }
>> hash_move[ply] = hr.move;
>> }
>> }
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.