www.delorie.com/gnu/docs/gnugo/gnugo_189.html   search  
Buy GNU books!

GNU Go Documentation

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16.2 Where influence gets used in the engine

The information obtained from the influence computation is used in a variety of places in the engine, and the influence module is called several times in the process of the move generation. The details of the influence computation vary according to the needs of the calling function.

After GNU Go has decided about the tactical stability of strings, the influence module gets called the first time. Here all lively stones act as an influence source of default strength 100. The result is stored in the variables initial_influence and initial_opposite_influence, and it is used as an important information for guessing the strength of dragons. For example, a dragon that is part of a moyo of size 25 is immediately considered alive. For dragons with a smaller moyo size, a life-and-death analysis will be done by the owl code (see 15. Life and Death Reading). A dragon with a moyo size of only 5 will be considered weak, even if the owl code has decided that it cannot be killed.

As a tool for the owl code, an "escape" influence gets computed for each dragon going through the life-and-death analysis (16.8 Escape).

Once all dragons have been evaluated, the influence module is called again and the variables initial_influence and initial_opposite_influence get overwritten. Of course, the dragon status', which are available now, are taken into account. Stones belonging to a dead dragon will not serve as an influence source, and the strengths of other stones get adjusted according to the strength of their respective dragon.

The result of this run is the most important tool for move evaluation. All helper functions of patterns as explained in 12. The Pattern Code that refer to influence results (e. g. olib(*) etc.) actually use these results. More important, initial_influence serves as the reference for computing the territorial value of a move. That is, from the influence strengths stored in initial_influence, a territory value is assigned to each intersection. This value is supposed to estimate the likelyhood that this intersection will become white or black territory.

Then, for each move that gets considered in the function value_moves, the influence module is called again via the function compute_move_influence to assess the likely territorial balance after this move, and the result is compared with the state before that move.

There are a number of changes from 3.0 to 3.2 in these influence computations relevant for territorial evaluation. Also, now an additional influence computation is done in order to compute the followup value of a move. Some explainations are in 16.4 Details of the Territory Valuation.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003