Author: Antonio Dieguez
Date: 06:58:07 09/01/01
Go up one level in this thread
On September 01, 2001 at 06:27:12, Koundinya Veluri wrote: >On August 31, 2001 at 12:02:54, Antonio Dieguez wrote: > >> >>>Interesting point, I'll have to try this before going on about the differences I >>>see between them. But I don't understand one thing. The first part: >>> >>>>(when depth =1 and blablabla...) >>>> >>>>int ev=evaluate(...); >>>> >>>>if (ev>=beta+window) >>>>{ return beta; } >>> >>>is happening at depth == 1. But it looks like these: >>> >>>>for captures: >>>>... >>>>if (ev+expectedMaterialGain+window2<=current_alpha) >>>>{ skip that capture } >>>>... >>>> >>>>for other moves: >>>>... >>>>if (ev+MaximumExpectedPositionalGainWithThisMove<=current_alpha) >>>>{ skip this move. } >>>>... >>> >>>are also happening at depth == 1. After depth == 1, I do a quiescence search >>>anyway so what would I be pruning out? >> >>The moves skiped....... >> >>Anyway, are you acord with me that you are doing extra work right? >>you can get the same effect without an aditional call to quiesce. >>forget my futility prunning for captures and non captures if that is confusing >>you, do the way you wish or were doing before. The only additional thing that >>your qsearch adds is the if eval()>=beta+window then return beta, nothing more. >> >> >>bye bye bye. > >Thanks for clearing my doubt. Yes, I'm probably doing more work than I need to, >but that's the case for the rest of my program as well :). Ignore the >eval()>=beta+window part, and I still don't agree that the qsearch is doing the >same pruning as your futility pruning for captures an non-captures. The idea is >the same but the conditions for pruning are very different. I tried futility >pruning before but it just didn't work in my program. I guess they just work >differently in every program. > >Koundinya You could give it another try :) forgive me to insist replying :) int ev=eval(); if (ev>=beta+window) { return beta; } then see captures with the normal alphabeta window then: if (ev+window<alpha) { return alpha; } then see noncaptures if you are still here. ----------- the main diff. is not see captures aditionally with bigger window. ----------- In your code: suposse quiesce>=beta+window then we are going to cut off usually quicker here in the code above because the captures are seen with a smaller window. or suposse quiesce<=alpha-window this is similar as to ask if ev+window<alpha after captures, sometimes equal and sometimes not... I realize now it is NOT exactly the same..., so I were a bit wrong in this point am sorry, but this ev+window<alpha is a little more what one would want to ask, and prunes even more. With less nodes. Ok, good bye now.
This page took 0.01 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.