Saltar al contenido principal

Reglas personalizadas y variantes

Este artículo presenta las diversas reglas de Go soportadas por KataGo, variantes de tamaño de tablero y cómo personalizar la configuración de reglas.


Visión general de conjuntos de reglas

Comparación de reglas principales

Conjunto de reglasMétodo de conteoKomiSuicidioRecaptura de ko
ChineseConteo de área7.5ProhibidoProhibida
JapaneseConteo de territorio6.5ProhibidoProhibida
KoreanConteo de territorio6.5ProhibidoProhibida
AGAMixto7.5ProhibidoProhibida
New ZealandConteo de área7PermitidoProhibida
Tromp-TaylorConteo de área7.5PermitidoProhibida

Configuración KataGo

# config.cfg
rules = chinese # Conjunto de reglas
komi = 7.5 # Komi
boardXSize = 19 # Ancho del tablero
boardYSize = 19 # Alto del tablero

Reglas chinas (Chinese)

Características

Método de conteo: Conteo de área (piedras + territorio)
Komi: 7.5 puntos
Suicidio: Prohibido
Recaptura de ko: Prohibida (regla simplificada)

Explicación del conteo de área

Puntuación final = Piedras propias + Puntos vacíos propios

Ejemplo:
Negro 120 piedras + Negro 65 puntos de territorio = 185 puntos
Blanco 100 piedras + Blanco 75 puntos de territorio + Komi 7.5 = 182.5 puntos
Negro gana por 2.5 puntos

Configuración KataGo

rules = chinese
komi = 7.5

Reglas japonesas (Japanese)

Características

Método de conteo: Conteo de territorio (solo puntos vacíos)
Komi: 6.5 puntos
Suicidio: Prohibido
Recaptura de ko: Prohibida
Requiere marcar piedras muertas

Explicación del conteo de territorio

Puntuación final = Puntos vacíos propios + Piedras capturadas del oponente

Ejemplo:
Negro 65 puntos de territorio + 10 capturas = 75 puntos
Blanco 75 puntos de territorio + 5 capturas + Komi 6.5 = 86.5 puntos
Blanco gana por 11.5 puntos

Determinación de piedras muertas

Las reglas japonesas requieren que ambos jugadores acuerden qué piedras están muertas:

def is_dead_by_japanese_rules(group, game_state):
"""Determinar piedras muertas según reglas japonesas"""
# Necesita probar que la cadena no puede hacer dos ojos
# Esta es la complejidad de las reglas japonesas
pass

Configuración KataGo

rules = japanese
komi = 6.5

Reglas AGA

Características

Las reglas de la American Go Association (AGA) combinan las ventajas de las reglas chinas y japonesas:

Método de conteo: Mixto (área o territorio, mismo resultado)
Komi: 7.5 puntos
Suicidio: Prohibido
Blanco necesita dar una piedra para pasar

Regla de pasar

Negro pasa: No necesita dar piedra
Blanco pasa: Necesita entregar una piedra a Negro

Esto hace que el conteo de área y territorio den el mismo resultado

Configuración KataGo

rules = aga
komi = 7.5

Reglas Tromp-Taylor

Características

Las reglas de Go más simples, ideales para implementación en programas:

Método de conteo: Conteo de área
Komi: 7.5 puntos
Suicidio: Permitido
Recaptura de ko: Super Ko (prohibir cualquier posición repetida)
No requiere determinar piedras muertas

Super Ko

def is_superko_violation(new_state, history):
"""Verificar si viola Super Ko"""
for past_state in history:
if new_state == past_state:
return True
return False

Determinación del final del juego

No requiere acuerdo de piedras muertas
El juego continúa hasta:
1. Ambos jugadores pasan consecutivamente
2. Luego usar búsqueda o jugar realmente para determinar el territorio

Configuración KataGo

rules = tromp-taylor
komi = 7.5

Variantes de tamaño de tablero

Tamaños soportados

KataGo soporta múltiples tamaños de tablero:

TamañoCaracterísticasUso recomendado
9×9~81 puntosPrincipiantes, partidas rápidas
13×13~169 puntosAprendizaje avanzado
19×19361 puntosCompeticiones estándar
PersonalizadoCualquieraInvestigación, pruebas

Método de configuración

# Tablero 9×9
boardXSize = 9
boardYSize = 9
komi = 5.5

# Tablero 13×13
boardXSize = 13
boardYSize = 13
komi = 6.5

# Tablero no cuadrado
boardXSize = 19
boardYSize = 9

Komi recomendado

TamañoReglas chinasReglas japonesas
9×95.55.5
13×136.56.5
19×197.56.5

Configuración de handicap

Partidas con handicap

El handicap es una forma de ajustar la diferencia de fuerza:

# Handicap 2 piedras
handicap = 2

# Handicap 9 piedras
handicap = 9

Posiciones de handicap

HANDICAP_POSITIONS = {
2: [(3, 15), (15, 3)],
3: [(3, 15), (15, 3), (15, 15)],
4: [(3, 15), (15, 3), (3, 3), (15, 15)],
# 5-9 piedras usan puntos estrella + tengen
}

Komi en partidas con handicap

# Tradicional: Sin komi o medio punto
komi = 0.5

# Moderno: Ajustar según número de piedras
# Cada piedra vale ~10-15 puntos

Configuración de reglas en modo Analysis

Comandos GTP

# Establecer reglas
kata-set-rules chinese

# Establecer komi
komi 7.5

# Establecer tamaño de tablero
boardsize 19

Analysis API

{
"id": "query1",
"moves": [["B", "Q4"], ["W", "D4"]],
"rules": "chinese",
"komi": 7.5,
"boardXSize": 19,
"boardYSize": 19,
"overrideSettings": {
"maxVisits": 1000
}
}

Opciones de reglas avanzadas

Configuración de suicidio

# Prohibir suicidio (por defecto)
allowSuicide = false

# Permitir suicidio (estilo Tromp-Taylor)
allowSuicide = true

Reglas de Ko

# Simple Ko (solo prohibir recaptura inmediata)
koRule = SIMPLE

# Positional Super Ko (prohibir repetir cualquier posición, sin importar quién juega)
koRule = POSITIONAL

# Situational Super Ko (prohibir repetir posiciones del mismo jugador)
koRule = SITUATIONAL

Reglas de puntuación

# Conteo de área (China, AGA)
scoringRule = AREA

# Conteo de territorio (Japón, Corea)
scoringRule = TERRITORY

Reglas de impuesto

Algunas reglas tienen puntuación especial para áreas de seki:

# Sin impuesto
taxRule = NONE

# Seki sin puntos
taxRule = SEKI

# Todos los ojos sin puntos
taxRule = ALL

Entrenamiento multi-reglas

Ventaja de KataGo

KataGo usa un solo modelo que soporta múltiples reglas:

def encode_rules(rules):
"""Codificar reglas como entrada de red neuronal"""
features = np.zeros(RULE_FEATURE_SIZE)

# Método de puntuación
features[0] = 1.0 if rules.scoring == 'area' else 0.0

# Suicidio
features[1] = 1.0 if rules.allow_suicide else 0.0

# Regla de Ko
features[2:5] = encode_ko_rule(rules.ko)

# Komi (normalizado)
features[5] = rules.komi / 15.0

return features

Entrada consciente de reglas

La entrada de la red neuronal incluye:
- Estado del tablero (19×19×N)
- Vector de características de reglas (K dimensiones)

Esto permite que el mismo modelo entienda diferentes reglas

Ejemplo de cambio de reglas

Código Python

from katago import KataGo

engine = KataGo(model_path="kata.bin.gz")

# Análisis con reglas chinas
result_cn = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="chinese",
komi=7.5
)

# Análisis con reglas japonesas (misma posición)
result_jp = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="japanese",
komi=6.5
)

# Comparar diferencias
print(f"Tasa de victoria de Negro (reglas chinas): {result_cn['winrate']:.1%}")
print(f"Tasa de victoria de Negro (reglas japonesas): {result_jp['winrate']:.1%}")

Análisis de impacto de reglas

def compare_rules_impact(position, rules_list):
"""Comparar el impacto de diferentes reglas en la evaluación de la posición"""
results = {}

for rules in rules_list:
analysis = engine.analyze(
moves=position,
rules=rules,
komi=get_default_komi(rules)
)
results[rules] = {
'winrate': analysis['winrate'],
'score': analysis['scoreLead'],
'best_move': analysis['moveInfos'][0]['move']
}

return results

Preguntas frecuentes

Diferencias de reglas que causan diferentes resultados

La misma partida puede tener diferentes resultados según las reglas:
- Diferencias de puntuación entre conteo de área y territorio
- Manejo de áreas de seki
- Impacto de los pases (tenuki)

¿Qué reglas elegir?

EscenarioReglas recomendadas
PrincipiantesChinese (intuitivo, sin disputas)
Competiciones onlinePor defecto de la plataforma (generalmente Chinese)
Nihon Ki-inJapanese
Implementación en programasTromp-Taylor (más simple)
Competiciones profesionales en ChinaChinese

¿El modelo necesita entrenarse para reglas específicas?

El modelo multi-reglas de KataGo ya es muy fuerte. Pero si solo usas un conjunto de reglas, puedes considerar:

# Entrenamiento con reglas fijas (puede mejorar ligeramente la fuerza para esas reglas)
rules = chinese

Lectura adicional