القواعد المخصصة والمتغيرات
يقدم هذا المقال قواعد الغو المختلفة المدعومة في KataGo، ومتغيرات حجم اللوحة، وكيفية تخصيص إعدادات القواعد.
نظرة عامة على مجموعات القواعد
مقارنة القواعد الرئيسية
| مجموعة القواعد | طريقة الحساب | Komi | الانتحار | إرجاع الكو |
|---|---|---|---|---|
| Chinese | عد الأحجار | 7.5 | محظور | محظور |
| Japanese | عد المنطقة | 6.5 | محظور | محظور |
| Korean | عد المنطقة | 6.5 | محظور | محظور |
| AGA | مختلط | 7.5 | محظور | محظور |
| New Zealand | عد الأحجار | 7 | مسموح | محظور |
| Tromp-Taylor | عد الأحجار | 7.5 | مسموح | محظور |
إعدادات KataGo
# config.cfg
rules = chinese # مجموعة القواعد
komi = 7.5 # Komi
boardXSize = 19 # عرض اللوحة
boardYSize = 19 # ارتفاع اللوحة
القواعد الصينية (Chinese)
الخصائص
طريقة الحساب: عد الأحجار (الأحجار والمنطقة معاً)
Komi: 7.5 نقطة
الانتحار: محظور
إرجاع الكو: محظور (قواعد مبسطة)
شرح عد الأحجار
النقاط النهائية = عدد أحجارنا + عدد نقاطنا الفارغة
مثال:
أحجار سوداء 120 + مساحة سوداء 65 = 185 نقطة
أحجار بيضاء 100 + مساحة بيضاء 75 + Komi 7.5 = 182.5 نقطة
الأسود يفوز بـ 2.5 نقطة
إعدادات KataGo
rules = chinese
komi = 7.5
القواعد اليابانية (Japanese)
الخصائص
طريقة الحساب: عد المنطقة (النقاط الفارغة فقط)
Komi: 6.5 نقطة
الانتحار: محظور
إرجاع الكو: محظور
يتطلب تحديد الأحجار الميتة
شرح عد المنطقة
النقاط النهائية = نقاطنا الفارغة + الأحجار المأسورة من الخصم
مثال:
مساحة سوداء 65 + أسر 10 = 75 نقطة
مساحة بيضاء 75 + أسر 5 + Komi 6.5 = 86.5 نقطة
الأبيض يفوز بـ 11.5 نقطة
تحديد الأحجار الميتة
القواعد اليابانية تتطلب اتفاق الطرفين على الأحجار الميتة:
def is_dead_by_japanese_rules(group, game_state):
"""تحديد الأحجار الميتة حسب القواعد اليابانية"""
# يتطلب إثبات أن السلسلة لا يمكنها عمل عينين
# هذا هو تعقيد القواعد اليابانية
pass
إعدادات KataGo
rules = japanese
komi = 6.5
قواعد AGA
الخصائص
قواعد جمعية الغو الأمريكية (AGA) تجمع بين مزايا القواعد الصينية واليابانية:
طريقة الحساب: مختلطة (عد الأحجار أو المنطقة، النتيجة متساوية)
Komi: 7.5 نقطة
الانتحار: محظور
الأبيض يجب أن يضع حجراً عند التمرير
قاعدة التمرير
الأسود يمرر: لا يحتاج لوضع حجر
الأبيض يمرر: يجب تسليم حجر للأسود
هذا يجعل نتيجة عد الأحجار وعد المنطقة متساوية
إعدادات KataGo
rules = aga
komi = 7.5
قواعد Tromp-Taylor
الخصائص
أبسط قواعد الغو، مناسبة للتنفيذ البرمجي:
طريقة الحساب: عد الأحجار
Komi: 7.5 نقطة
الانتحار: مسموح
إرجاع الكو: Super Ko (منع أي تكرار للوضع)
لا حاجة لتحديد الأحجار الميتة
Super Ko
def is_superko_violation(new_state, history):
"""التحقق من انتهاك Super Ko"""
for past_state in history:
if new_state == past_state:
return True
return False
تحديد نهاية اللعبة
لا حاجة لاتفاق الطرفين على الأحجار الميتة
اللعبة تستمر حتى:
1. كلا الطرفين يمرران متتاليين
2. ثم استخدام البحث أو اللعب الفعلي لتحديد المنطقة
إعدادات KataGo
rules = tromp-taylor
komi = 7.5
متغيرات حجم اللوحة
الأحجام المدعومة
يدعم KataGo أحجام لوحات متعددة:
| الحجم | الخصائص | الاستخدام المقترح |
|---|---|---|
| 9×9 | ~81 نقطة | للمبتدئين، اللعب السريع |
| 13×13 | ~169 نقطة | التعلم المتقدم |
| 19×19 | 361 نقطة | المباريات القياسية |
| مخصص | أي حجم | البحث، الاختبار |
طريقة الإعداد
# لوحة 9×9
boardXSize = 9
boardYSize = 9
komi = 5.5
# لوحة 13×13
boardXSize = 13
boardYSize = 13
komi = 6.5
# لوحة غير مربعة
boardXSize = 19
boardYSize = 9
اقتراحات Komi
| الحجم | القواعد الصينية | القواعد اليابانية |
|---|---|---|
| 9×9 | 5.5 | 5.5 |
| 13×13 | 6.5 | 6.5 |
| 19×19 | 7.5 | 6.5 |
إعدادات الهانديكاب
مباريات الهانديكاب
الهانديكاب هو طريقة لتعديل فرق قوة اللعب:
# هانديكاب 2 حجر
handicap = 2
# هانديكاب 9 أحجار
handicap = 9
مواقع الهانديكاب
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 أحجار تستخدم نقاط النجمة + التينجن
}
Komi مع الهانديكاب
# تقليدي: بدون Komi أو نصف نقطة مع الهانديكاب
komi = 0.5
# حديث: ضبط حسب عدد أحجار الهانديكاب
# كل حجر يعادل ~10-15 نقطة
إعدادات القواعد في وضع التحليل
أوامر GTP
# إعداد القواعد
kata-set-rules chinese
# إعداد Komi
komi 7.5
# إعداد حجم اللوحة
boardsize 19
Analysis API
{
"id": "query1",
"moves": [["B", "Q4"], ["W", "D4"]],
"rules": "chinese",
"komi": 7.5,
"boardXSize": 19,
"boardYSize": 19,
"overrideSettings": {
"maxVisits": 1000
}
}
خيارات القواعد المتقدمة
إعداد الانتحار
# منع الانتحار (افتراضي)
allowSuicide = false
# السماح بالانتحار (نمط Tromp-Taylor)
allowSuicide = true
قواعد الكو
# Simple Ko (منع الإرجاع الفوري فقط)
koRule = SIMPLE
# Positional Super Ko (منع تكرار أي وضع، بغض النظر عمن يلعب)
koRule = POSITIONAL
# Situational Super Ko (منع تكرار وضع نفس الجانب)
koRule = SITUATIONAL
قواعد الحساب
# عد الأحجار (صيني، AGA)
scoringRule = AREA
# عد المنطقة (ياباني، كوري)
scoringRule = TERRITORY
قواعد الضرائب
بعض القواعد لها حساب خاص لمناطق السيكي:
# بدون ضرائب
taxRule = NONE
# السيكي بدون نقاط
taxRule = SEKI
# جميع العيون بدون نقاط
taxRule = ALL
التدريب متعدد القواعد
ميزة KataGo
يستخدم KataGo نموذج واحد يدعم قواعد متعددة:
def encode_rules(rules):
"""ترميز القواعد كمدخل للشبكة العصبية"""
features = np.zeros(RULE_FEATURE_SIZE)
# طريقة الحساب
features[0] = 1.0 if rules.scoring == 'area' else 0.0
# الانتحار
features[1] = 1.0 if rules.allow_suicide else 0.0
# قواعد الكو
features[2:5] = encode_ko_rule(rules.ko)
# Komi (مطبع)
features[5] = rules.komi / 15.0
return features
الإدخال الواعي بالقواعد
مدخل الشبكة العصبية يشمل:
- حالة اللوحة (19×19×N)
- متجه ميزات القواعد (K بُعد)
هذا يتيح لنفس النموذج فهم قواعد مختلفة
مثال تبديل القواعد
كود Python
from katago import KataGo
engine = KataGo(model_path="kata.bin.gz")
# تحليل بالقواعد الصينية
result_cn = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="chinese",
komi=7.5
)
# تحليل بالقواعد اليابانية (نفس الوضع)
result_jp = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="japanese",
komi=6.5
)
# مقارنة الفروقات
print(f"معدل فوز الأسود بالقواعد الصينية: {result_cn['winrate']:.1%}")
print(f"معدل فوز الأسود بالقواعد اليابانية: {result_jp['winrate']:.1%}")
تحليل تأثير القواعد
def compare_rules_impact(position, rules_list):
"""مقارنة تأثير القواعد المختلفة على تقييم الوضع"""
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
الأسئلة الشائعة
اختلاف الفوز/الخسارة بسبب اختلاف القواعد
نفس المباراة، قواعد مختلفة قد تؤدي لنتائج مختلفة:
- فرق حساب عد الأحجار مقابل عد المنطقة
- معالجة مناطق السيكي
- تأثير التمرير (pass)
أي قواعد تختار؟
| السيناريو | القواعد المقترحة |
|---|---|
| المبتدئين | Chinese (بديهية، بدون نزاع) |
| المباريات عبر الإنترنت | الافتراضي للمنصة (عادة Chinese) |
| اتحاد الغو الياباني | Japanese |
| التنفيذ البرمجي | Tromp-Taylor (الأبسط) |
| المباريات الاحترافية الصينية | Chinese |
هل يحتاج النموذج للتدريب على قواعد محددة؟
نموذج KataGo متعدد القواعد قوي بالفعل. لكن إذا كنت تستخدم قواعد واحدة فقط، يمكنك التفكير في:
# تدريب بقواعد ثابتة (قد يحسن قليلاً قوة اللعب لقواعد محددة)
rules = chinese
قراءات إضافية
- تحليل آلية تدريب KataGo — تنفيذ التدريب متعدد القواعد
- التكامل مع مشروعك — أمثلة استخدام API
- التقييم والاختبار المعياري — اختبار قوة اللعب بقواعد مختلفة