Ratio reduction

Discussion of chess software programming and technical issues.

Moderators: hgm, Dann Corbit, Harvey Williamson

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Ratio reduction

Post by sje »

Ratio reduction is the form of LMR (Late Move Reduction) is use by Symbolic. RR is implemented by applying a draft (depth) reduction by updating the draft after each move at a node by scaling with some ratio R less than one. In Symbolic, one ply equals 256 draft units and the reduction ratio is 63/64. Since integer division is used, there is some truncation error, but not much. The actual code:

Code: Select all

if (tptr->draft > 0)
  tptr->draft = (63 * tptr->draft) / 64;
RR is not applied during the gainer (quiescence) search, but is used for all other nodes including check evasion.

The most noticeable effect is that an RR search with 63/64 gets one extra iteration vs a search without RR (all other things being equal). However, there is not a significant strength difference; in an ongoing 1,000 game match, RR vs non-RR is dead even at 59w 59l 55d.

The 63/64 RR version of Symbolic is now playing at FICS and ICC.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Some results

Post by sje »

Some results with ratio reduction:

After several experiments, it looks like that simple RR (Ratio Reduction) is too dependent on move ordering to work well in all types of positions. A very slight reduction factor has little noticeable effect, and large reductions cause the search to miss tactical shots staring with lower ranked moves.

One idea for improving draft (depth) modification is to add an extension/reduction data structure to the current search draft. This added data would describe the extensions/reductions already in use and so would guide the application of additional extensions/reductions. For example, it would allow the coder to enforce certain extensions or reductions to be limited to once per branch or that the total effect would have some fixed limits in either direction.