Author: Roberto Waldteufel
Date: 02:07:11 07/13/98
Go up one level in this thread
On July 12, 1998 at 17:08:49, Robert Hyatt wrote: >On July 12, 1998 at 13:03:08, Roberto Waldteufel wrote: > >> >>On July 11, 1998 at 21:03:15, Bruce Moreland wrote: >> >>> >>>On July 11, 1998 at 18:49:39, Roberto Waldteufel wrote: >>> >>>>I never reduce the depth when the side to move is in check, but I find that if I >>>>do the same for moves that administer check it sometimes blows my search sky >>>>high, hanging the machine for an inordinate amount of time. It's a pity, because >>>>I also found many times that this method discovered long mates as you describe. >>>>How do you overcome the problem of situations where the number of checks becomes >>>>excessive, eg a king being chased around the board by a queen that lacks >>>>supporting pawns or pieces to deliver a mate? >>> >>>I'll tell you what I discovered when I messed with this some time ago. I'll >>>start at the beginning in the off chance that someone else is listening as well. >>> >>>The dawn of man extension is to extend when you check. This seems to help >>>programs along certain tactical lines where the king is in trouble. I do this, >>>I've always done it, and everything below here assumes that giving check is an >>>unqualified one-ply extension, that's a constant. >>> >>>If you try to be super-aggressive and extend both when giving check, and when >>>getting out of check, you'll simply blow sky high. >>> >>>So if the goal is to try to extend checks more, there needs to be some >>>constraint to the extensions. An attempt at constraint involves only extending >>>when you are in check, and have exactly *one* legal way out. This will appear >>>to work fine in most middlegame situations, and it will completely destroy some >>>of these long mate test problems. >>> >>>It is my opinion that there needs to be some further constraint on this >>>extension. You'll see some positions bog, sometimes really badly. I'm not sure >>>exactly why this happens, but your reasons for why it might happen seem good. >>> >>>I've done experiments with two ways to constrain this extension. One is when >>>you only allow it to happen a couple of times along one line, and another is >>>when you somehow choose to only do this extension perhaps 75% of the time that >>>the conditions are met for it. >>> >>>Either of these seems to stop the bogging enough that your thing can still play >>>chess while using this extension. >>> >>>bruce >> >>Hi Bruce, >> >>Thanks for your excellent explanation. My mistake was that I had not thought of >>the 75% factor. This way makes a lot of sense, and I will definitely implement >>this. I don't think it makes a difference whether the actual extensions occur on >>the checking ply or the check evasion ply, as long as replies to checks are >>allways examined full width, so perhaps it would be simpler to do it all at the >>same node, like this: >> >>if side to move in check then >> if only one legal reply then >> newdepth=depth+0.75 >> else >> newdepth=depth >> end if >>else >> newdepth=depth-1 >>end if >> >>Do you extend any replies to checks that have more than one choice? I can think >>of one or two interesting cases, like double check, or Bxh7+ when the Black king >>is on g8 and White has Nf3 and Qd1 (or Qe2). Maybe the 75% figure would need to >>be different for each case. Have you tried anything like this? >> >>Roberto > > >once you do singular extensions, as we did in Cray Blitz, this becomes moot, >because such a position is obviously "singular" by any definition you would >want to use. > >But as far as working on the "one-legal-response" extension, Peter G once >suggested, and I tried in Cray Blitz, a modification he called "one sane >reply." Here there may be multiple moves, but if only one is reasonable >then you extend that one anyway. An example would be two moves, one moving >the king to a safe square, the other interposing a piece that can be captured >for nothing, still leaving you in check. The king move would be extended >anyway. When I started playing with this, I didn't like it, but later >found that "singular extensions" was just a general class of these types >of positions and our singular extensions code worked pretty well, although >it does have a high cost. > >One thing I have planned is to try singular extensions again, using my >current fractional-ply increment (same algorithm as in Cray Blitz in fact.) >I had planned to do some further singular extension testing in CB, to see if >it would be useful to extend on positions where there are many moves but at >least 2 appear to be "singular" type moves. Extending would be dangerous, >except that you *could* extend each 1/2 ply instead of 1, or extend each >of the two 3/4 ply rather than 1... Lots of things to try here, once I get >singular extensions into crafty. Right now I am staying busy with the SMP >search, which is certainly non-trivial to get right. Hi Bob, Thanks for your reply. I like the idea of a half ply extension for two moves instead of a 1 ply extension for one. In a sense you are restricting the amount of extension emanating from a node and the sharing it between its most deserving children. I suppose there is nothing to prevent you also extending, say, one third of a ply on three moves, or one quarter of a ply on four moves, etc. Perhaps also the moves might not all get identical extensions. If a sacrifice has three plausible defences of which one seems more sensible than the other two, you could extend the most sensible one half a ply and the less sensible-but-still-plausible two replies each a quarter of a ply. It might take a lot of work to determine the best ratios for the many possible situations, but it certainly sounds like an idea with some promise. When you extend a fraction of a ply, how do you implement it? There are two ways I have tried, but I am not sure which is best. One is to maintain a counter that loops in a cycle - eg for the 75% extension for the "one legal move" criterion, I increment the counter, test if it has reached 4, and extend 1 ply if it is still <4, or reset it to 0 and don't extend when it =4. The other method seems more sensible to me, but requires a lot more code modification: instead of reducing the depth by 1 every ply, I reduce it by some larger fixed amount, eg 8. Then for a three quarter ply extension, I only reduce the depth by 2 instead of 8. How do you do it in Crafty? Best wishes, Roberto
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.