Lewati ke konten utama

Aturan Kustom dan Varian

Artikel ini memperkenalkan berbagai aturan Go, varian ukuran papan yang didukung KataGo, serta cara mengkonfigurasi aturan kustom.


Gambaran Set Aturan

Perbandingan Aturan Utama

Set AturanMetode PenghitunganKomiBunuh DiriPengembalian Ko
ChinesePenghitungan area7.5DilarangDilarang
JapanesePenghitungan teritori6.5DilarangDilarang
KoreanPenghitungan teritori6.5DilarangDilarang
AGACampuran7.5DilarangDilarang
New ZealandPenghitungan area7DiizinkanDilarang
Tromp-TaylorPenghitungan area7.5DiizinkanDilarang

Konfigurasi KataGo

# config.cfg
rules = chinese # Set aturan
komi = 7.5 # Komi
boardXSize = 19 # Lebar papan
boardYSize = 19 # Tinggi papan

Aturan Tiongkok (Chinese)

Karakteristik

Metode penghitungan: Penghitungan area (batu dan teritori)
Komi: 7.5 poin
Bunuh diri: Dilarang
Pengembalian ko: Dilarang (aturan sederhana)

Penjelasan Penghitungan Area

Skor akhir = Jumlah batu sendiri + Jumlah titik kosong sendiri

Contoh:
Batu hitam 120 + Teritori hitam 65 = 185 poin
Batu putih 100 + Teritori putih 75 + Komi 7.5 = 182.5 poin
Hitam menang 2.5 poin

Konfigurasi KataGo

rules = chinese
komi = 7.5

Aturan Jepang (Japanese)

Karakteristik

Metode penghitungan: Penghitungan teritori (hanya titik kosong)
Komi: 6.5 poin
Bunuh diri: Dilarang
Pengembalian ko: Dilarang
Perlu menandai batu mati

Penjelasan Penghitungan Teritori

Skor akhir = Titik kosong sendiri + Batu lawan yang ditangkap

Contoh:
Teritori hitam 65 + Tangkapan 10 = 75 poin
Teritori putih 75 + Tangkapan 5 + Komi 6.5 = 86.5 poin
Putih menang 11.5 poin

Penentuan Batu Mati

Aturan Jepang memerlukan kedua belah pihak untuk menyetujui batu mana yang mati:

def is_dead_by_japanese_rules(group, game_state):
"""Penentuan batu mati di bawah aturan Jepang"""
# Perlu membuktikan bahwa grup batu tidak bisa membuat dua mata
# Ini adalah kompleksitas aturan Jepang
pass

Konfigurasi KataGo

rules = japanese
komi = 6.5

Aturan AGA

Karakteristik

Aturan American Go Association (AGA) menggabungkan keunggulan aturan Tiongkok dan Jepang:

Metode penghitungan: Campuran (area atau teritori, hasilnya sama)
Komi: 7.5 poin
Bunuh diri: Dilarang
Putih perlu mengisi satu batu untuk pass

Aturan Pass

Hitam pass: Tidak perlu mengisi batu
Putih pass: Perlu menyerahkan satu batu ke Hitam

Ini membuat hasil penghitungan area dan teritori konsisten

Konfigurasi KataGo

rules = aga
komi = 7.5

Aturan Tromp-Taylor

Karakteristik

Aturan Go paling ringkas, cocok untuk implementasi program:

Metode penghitungan: Penghitungan area
Komi: 7.5 poin
Bunuh diri: Diizinkan
Pengembalian ko: Super Ko (dilarang mengulangi posisi apapun)
Tidak perlu menentukan batu mati

Super Ko

def is_superko_violation(new_state, history):
"""Periksa apakah melanggar Super Ko"""
for past_state in history:
if new_state == past_state:
return True
return False

Penentuan Akhir Permainan

Tidak perlu kedua belah pihak menyetujui batu mati
Permainan berlanjut sampai:
1. Kedua belah pihak pass berturut-turut
2. Kemudian gunakan pencarian atau mainkan sampai selesai untuk menentukan teritori

Konfigurasi KataGo

rules = tromp-taylor
komi = 7.5

Varian Ukuran Papan

Ukuran yang Didukung

KataGo mendukung berbagai ukuran papan:

UkuranKarakteristikPenggunaan yang Disarankan
9×9~81 titikPemula, permainan cepat
13×13~169 titikPembelajaran lanjutan
19×19361 titikPertandingan standar
KustomApa sajaPenelitian, pengujian

Cara Konfigurasi

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

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

# Papan non-persegi
boardXSize = 19
boardYSize = 9

Saran Komi

UkuranAturan TiongkokAturan Jepang
9×95.55.5
13×136.56.5
19×197.56.5

Pengaturan Handicap

Permainan Handicap

Handicap adalah cara untuk menyesuaikan perbedaan kekuatan:

# Handicap 2 batu
handicap = 2

# Handicap 9 batu
handicap = 9

Posisi 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 batu menggunakan titik bintang + tengen
}

Komi untuk Handicap

# Tradisional: Tidak ada komi atau setengah komi untuk handicap
komi = 0.5

# Modern: Sesuaikan berdasarkan jumlah handicap
# Setiap batu bernilai sekitar 10-15 poin

Pengaturan Aturan Mode Analysis

Perintah GTP

# Atur aturan
kata-set-rules chinese

# Atur komi
komi 7.5

# Atur ukuran papan
boardsize 19

Analysis API

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

Opsi Aturan Lanjutan

Pengaturan Bunuh Diri

# Larang bunuh diri (default)
allowSuicide = false

# Izinkan bunuh diri (gaya Tromp-Taylor)
allowSuicide = true

Aturan Ko

# Simple Ko (hanya larang pengembalian langsung)
koRule = SIMPLE

# Positional Super Ko (larang mengulangi posisi apapun, tidak peduli giliran siapa)
koRule = POSITIONAL

# Situational Super Ko (larang mengulangi posisi yang dimainkan pemain yang sama)
koRule = SITUATIONAL

Aturan Penilaian

# Penghitungan area (Tiongkok, AGA)
scoringRule = AREA

# Penghitungan teritori (Jepang, Korea)
scoringRule = TERRITORY

Aturan Pajak

Beberapa aturan memiliki penilaian khusus untuk area seki:

# Tanpa pajak
taxRule = NONE

# Seki tanpa poin
taxRule = SEKI

# Semua mata tanpa poin
taxRule = ALL

Pelatihan Multi-Aturan

Keunggulan KataGo

KataGo menggunakan satu model untuk mendukung berbagai aturan:

def encode_rules(rules):
"""Encode aturan sebagai input neural network"""
features = np.zeros(RULE_FEATURE_SIZE)

# Metode penilaian
features[0] = 1.0 if rules.scoring == 'area' else 0.0

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

# Aturan ko
features[2:5] = encode_ko_rule(rules.ko)

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

return features

Input Sadar Aturan

Input neural network mencakup:
- Status papan (19×19×N)
- Vektor fitur aturan (K dimensi)

Ini memungkinkan model yang sama memahami aturan yang berbeda

Contoh Pergantian Aturan

Kode Python

from katago import KataGo

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

# Analisis dengan aturan Tiongkok
result_cn = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="chinese",
komi=7.5
)

# Analisis dengan aturan Jepang (posisi yang sama)
result_jp = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="japanese",
komi=6.5
)

# Bandingkan perbedaan
print(f"Winrate Hitam aturan Tiongkok: {result_cn['winrate']:.1%}")
print(f"Winrate Hitam aturan Jepang: {result_jp['winrate']:.1%}")

Analisis Dampak Aturan

def compare_rules_impact(position, rules_list):
"""Bandingkan dampak aturan berbeda pada evaluasi posisi"""
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

Pertanyaan Umum

Perbedaan Aturan Menyebabkan Hasil Berbeda

Permainan yang sama, aturan berbeda bisa menghasilkan hasil berbeda:
- Perbedaan penilaian area vs teritori
- Penanganan area seki
- Dampak langkah kosong (pass)

Aturan Mana yang Dipilih?

SkenarioAturan yang Disarankan
PemulaChinese (intuitif, tanpa sengketa)
Pertandingan onlineDefault platform (biasanya Chinese)
Nihon Ki-inJapanese
Implementasi programTromp-Taylor (paling ringkas)
Pertandingan profesional TiongkokChinese

Apakah Model Perlu Dilatih untuk Aturan Tertentu?

Model multi-aturan KataGo sudah sangat kuat. Tetapi jika hanya menggunakan satu aturan, bisa dipertimbangkan:

# Pelatihan aturan tetap (mungkin sedikit meningkatkan kekuatan untuk aturan tertentu)
rules = chinese

Bacaan Lanjutan