/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
* This is GNU Go, a Go program. Contact gnugo@gnu.org, or see *
* http://www.gnu.org/software/gnugo/ for more information. *
* Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
* 2008 and 2009 by the Free Software Foundation. *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation - version 3 or *
* (at your option) any later version. *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License in file COPYING for more details. *
* You should have received a copy of the GNU General Public *
* License along with this program; if not, write to the Free *
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
* Boston, MA 02111, USA. *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* The cosmic style uses more influence than the defaults attenuation
* The "TERR_.."-values are used in the influence computations used
* for territory evaluation. (initial_influence with dragons_known,
#define DEFAULT_ATTENUATION \
(cosmic_importance * 2.7 + (1.0 - cosmic_importance) * 3.0)
#define TERR_DEFAULT_ATTENUATION \
(cosmic_importance * 2.15 + (1.0 - cosmic_importance) * 2.4)
/* Extra damping coefficient for spreading influence diagonally. */
#define DIAGONAL_DAMPING \
(cosmic_importance * 2.5 + (1.0 - cosmic_importance) * 2.0)
#define TERR_DIAGONAL_DAMPING \
(cosmic_importance * 2.5 + (1.0 - cosmic_importance) * 1.7)
/* Smallest amount of influence that we care about distributing. */
#define INFLUENCE_CUTOFF 0.02
/* Value in delta_territory_cache indicating that the value has not
* been computed. Arbitrary but unattainable.
#define NOT_COMPUTED (-2.0 * MAX_BOARD * MAX_BOARD)
/* Maximum number of regions allowed between territory, moyo, and area.
* FIXME: This number is vastly exaggerated. Should be possible to
* come up with a much better upper bound.
#define MAX_REGIONS (3*MAX_BOARD*MAX_BOARD + 1)
#define MAX_INTRUSIONS (2 * MAX_BOARD * MAX_BOARD)
int source_pos
; /* Stone from which intrusion originates.*/
int strength_pos
; /* Position of the intrusion influence soure. */
signed char safe
[BOARDMAX
];
float white_influence
[BOARDMAX
]; /* Accumulated influence. */
float black_influence
[BOARDMAX
]; /* Accumulated influence. */
float white_strength
[BOARDMAX
]; /* Strength of influence source. */
float black_strength
[BOARDMAX
]; /* Strength of influence source. */
float white_attenuation
[BOARDMAX
];
float black_attenuation
[BOARDMAX
];
float white_permeability
[BOARDMAX
];
float black_permeability
[BOARDMAX
];
int is_territorial_influence
; /* 0 only if computing escape_influence.*/
float territory_value
[BOARDMAX
];
int non_territory
[BOARDMAX
];
int color_to_move
; /* Which color is in turn to move. */
int queue
[MAX_BOARD
* MAX_BOARD
]; /* Points receiving influence. */
struct intrusion_data intrusions
[MAX_INTRUSIONS
];
/* Typedef for pointer to either of the functions whose_territory(),
* whose_loose_territory(), whose_moyo(), and whose_area().
typedef int (*owner_function_ptr
)(const struct influence_data
*q
, int pos
);
/* Used for tuning game advancement algorythm */
#define WEIGHT_TERRITORY 10
/* cosmic_importance is a number between 0.0 and 1.0 ;
* when cosmic_importance is 0.0, the default influence
* values are used; when cosmic_importance is 1.0, GNU Go
* will try to play an influence-oriented fuseki by
* over-estimatingthe potential territory values of moyos.
* In the current implementation, cosmic_importance decreases
* slowly for 19*19 games from 1.0 at move 4 to 0.0 at move 120.
/* Used in the whose_moyo() function */
struct moyo_determination_data
float my_influence_minimum
;
float opp_influence_maximum
;