Motor Çalışması · Bot Performansı

Open Sage'in eXtreme Gammon ile Kıyaslanması

Backgammon Sage Pro'ya güç veren Open Sage değerlendirme motorunun, eXtreme Gammon'ın bot motoru (XG) ile nicel bir karşılaştırması.

Özet

Open Sage bot motorunu eXtreme Gammon (XG) ile eşleşen değerlendirme seviyelerinde karşılaştırıyoruz — doğrudan sinir ağı değerlendirmesi, çok katmanlı (multi-ply) arama ve kesilmiş rollout'lar. XG programatik bir arayüz sunmadığı için onu Batch Analysis özelliği üzerinden puanlıyoruz. Birbirini tamamlayan üç yöntem kullanıyoruz. Birincisi katmanlı bir referans değerlendirme kümesi kurar — seçim net olduğunda hızlı değerlendirmelere güvenir, yakın kararları tam rollout'lara yükseltir — ve her motoru bu referansa karşı bir Performance Rating (PR) ile puanlar; 500 sınırsız oyun (17.535 karar) ve 130 beş sayılık maç (18.292 karar) üzerinden. Sınırsız oyunlar için ardından aynı karşılaştırmanın tamamını XG'nin kendi kademeli analizini referans alarak yeniden kuruyoruz — tam bir ayna görüntüsü. İkinci yöntem, Sage 3T ile XG Roller++'ın gerçekten ayrıldığı sınırsız oyun pozisyonlarını ayırır ve her birini iki motorun tam rollout'larına karşı değerlendirir. Aynı referans ve puanlama yöntemi, backgame, containment ve snake ailelerinden on üç benchmark'a uygulanır — motorların tarihsel olarak en kötü oynadığı pozisyonlar. Güç çalışmalarında iki motor birbirine yakındır: Sage'in referansına göre puanlandığında Sage, çoğu kullanıcının dayandığı kesilmiş rollout seviyelerinde öndedir; XG'ninkine göre puanlandığında ise XG öndedir ya da başabaştır. Üçüncü yöntem soruyu tersine çevirir: XG'de zaten analiz edilmiş 290 gerçek turnuva maçını Sage'de yeniden analiz eder ve iki motorun her oyuncuya verdiği Performance Rating'i karşılaştırırız. İki derece birbirini çok yakından izler: 580 oyuncu derecesinde iki derece arasında %98'lik bir korelasyon vardır ve ortalama fark yalnızca +0,002 PR olup istatistiksel olarak sıfırdan ayırt edilemez.

01
Giriş

Neden XG ile ölçüyoruz?

eXtreme Gammon (XG), bilgisayarla tavla analizinde standart bir referanstır ve değerlendirme motoru mevcut en güçlü motorlardan biri olarak kabul edilir. Ciddiye alınmak isteyen her yeni motorun basit bir soruyu yanıtlaması gerekir: XG ile karşılaştırıldığında nerede duruyor? Bu çalışma, Backgammon Sage Pro'nun arkasındaki sinir ağı motoru Open Sage için bu soruyu nicel olarak yanıtlamayı amaçlıyor.

Amacımız, Open Sage'in değerlendirmelerini XG'ninkilerle benzer çaba seviyelerinde karşılaştırmaktı. En doğal deney — motorları milyonlarca oyunda karşı karşıya getirip sonucu saymak — pratik değil: XG masaüstü uygulaması programatik bir arayüz sunmuyor, bu yüzden pozisyonları ve hamleleri iki motor arasında taşımak elle, tıklaya tıklaya yürütülen bir süreç. İki güçlü motor arasındaki küçük farkları ayırt edecek büyüklükte bir örnekleme ulaşmak çok uzun sürerdi.

Bunun yerine, yüzlerce kayda geçirilmiş oyunu tek bir gözetimsiz geçişte puanlayabilen XG'nin Toplu Analiz (Batch Analysis) özelliğini kullanıyoruz. Open Sage çok sayıda oyunda iki tarafı da oynuyor; her oyun XG'nin içe aktarabildiği standart bir metin biçiminde dışa aktarılıyor; XG hepsini analiz ediyor; biz de kararlarını geri ayrıştırıyoruz. Bu ortak temelin üzerine, Bölüm 3 ve Bölüm 4'te anlatılan iki ayrı yöntem uyguluyoruz.

Üçüncü bir çalışma (Bölüm 5) simülasyonları tamamen bir kenara bırakıp XG'de analiz edilmiş gerçek turnuva maçlarından yola çıkıyor. Amacı farklı: hangi motorun daha güçlü olduğunu sormak yerine, bir maçı Sage'de analiz eden bir oyuncunun XG'nin vereceği Performance Rating'in aynısını alıp almadığını soruyor — böylece XG'de bir PR'ın ne anlama geldiğine dair yıllar içinde oluşmuş sezgi doğrudan Sage'e taşınabiliyor.

02
Arka Plan

Değerlendirme seviyeleri

Her iki motor da bir pozisyonu, doğruluktan hız adına ödün vererek çeşitli derinliklerde değerlendirebilir. Sonuçları okumak için bu seviyeleri anlamak şarttır, çünkü karşılaştırma her zaman iki motorun eşleştirilmiş seviyeleri arasında yapılır.

Doğrudan değerlendirme (1-ply). Sinir ağının bir pozisyon için ürettiği ham çıktı; ileri bakış yok. En hızlı ayar budur ve daha derin her seviye bunun üzerine kurulur. (1-ply'ın ham ağ değerlendirmesini ifade ettiği XG geleneğini izliyoruz.)

Çok-ply ileri bakış (2-, 3-, 4-ply). Motor birkaç tur ilerisine bakar; rakibin yanıtlarını hesaba katar, her adımda olası zar atışları üzerinden ortalama alır ve her varyantın sonunda ham bir ağ değerlendirmesi yapar. Her ek ply daha doğru ve belirgin biçimde daha maliyetlidir.

Kısaltılmış rollout'lar (1T, 2T, 3T). Motor sabit bir derinliğe kadar aramak yerine çok sayıda kısa simüle oyun oynar, bunları birkaç tur sonra keser ve ortaya çıkan pozisyonu çok-ply ileri bakışla değerlendirir. Varyans azaltma, örneklenen zarlardaki şansın büyük kısmını dengeler. Bunlar XG'nin “Roller” ayarlarıdır; sabit derinlikli aramadan daha güçlüdür ve tam rollout'tan çok daha ucuz kalır.

Tam rollout. Çok sayıda simüle oyunun sonuna kadar oynanması. Yeterli hacimde ve varyans azaltmayla çalıştırıldığında tam rollout, bir tavla motorunun üretebileceği gerçeğe en yakın şeydir; bu çalışma boyunca referans ölçüt olarak onu kullanıyoruz.

Eşleştirilmiş seviyeler: Sage ve XG

Tür Sage XG karşılığı Ne yapar
Doğrudan 1-ply 1-ply (ham değerlendirme) Pozisyonun tek bir sinir ağı değerlendirmesi — ileri bakış yok.
Çok-ply 2P · 3P · 4P 2-ply · 3-ply · 4-ply Rakibin yanıtlarını birkaç tur derinliğinde arar, zarlar üzerinden ortalama alır.
Kısaltılmış rollout 1T · 2T · 3T Roller · Roller+ · Roller++ Çok sayıda kısa simüle oyun; 5–7 tur sonra kesilip çok-ply ile değerlendirilir, varyans azaltma uygulanır. 3T/Roller++ 3-ply kararlar kullanır; 2T/Roller+ 2-ply; 1T/Roller 1-ply.
Tam rollout Rollout Rollout Sonuna kadar oynanan simüle oyunlar — bu çalışmadaki referans “gerçek”.
Performans Derecesi (PR). Çalışma boyunca bir motorun doğruluğu PR olarak özetlenir — rollout ile oluşturulmuş referansa göre ölçülen, karar başına ortalama equity hatasının 500 ile çarpımı. 0 PR gerçekle tam uyum demektir; düşük olan daha iyidir.
03
Birinci Yöntem

Rollout PR

İlk yöntem, her motoru “gerçek” en iyi oyununu olabildiğince doğru biçimde belirlediğimiz sabit bir karar kümesine göre puanlar. XG'yi bir dizi başka botla karşılaştıran, iyi bilinen 2012 XG çalışmasında kullanılan yaklaşımın aynısını izler.

Sage 3P'nin kendi kendine oynadığı 500 sınırsız oyun simüle ederek başladık. 3P gibi orta-güçlü bir seviye her oyun planında — yarış, saldırı, blok, çıpa — gerçekçi bir pozisyon dağılımı üretir; test etmek istediğimiz çeşitlilik tam da budur. Ardından tüm çalışmayı, tahtadaki skorun her kararın değerini değiştirdiği 130 beş puanlık maç için ikinci kez yürüttük; her iki kümenin sonuçları aşağıdadır.

Referansın oluşturulması

Her karar için gerçek en iyi oyunu tam rollout ile belirlemek çok pahalı olurdu — ve gereksiz, çünkü kararların çoğu yakın değildir. Bu yüzden referansı, rollout çabasını yalnızca seçimin gerçekten şüpheli olduğu yerlere harcayarak kademeli üç geçişte kuruyoruz. Aynı reçete iki veri kümesine de uygulanır; her geçiş güvenle çözebildiği kararları karara bağlar, kalanını bir sonrakine devreder:

1. Geçiş · Sage 3P

Seçim açıkken 3-ply'a güven

Her karar 3-ply'da değerlendirilir. En iyi hamlenin bir sonrakini 0,05 equity'den fazla geçtiği yerlerde 3P kararı gerçek kabul edilir ve karar kapanır.

0.05
karar için equity farkı
Daha yakın kararlar (0,05 içinde) 2. Geçiş'e devredilir
2. Geçiş · Sage 3T

Yakın kararları kısaltılmış rollout ile yeniden kontrol et

Kalan kararlar 3T'de yeniden değerlendirilir. Farkın artık 0,02 equity'den geniş olduğu yerlerde 3T kararı gerçek kabul edilir.

0.02
karar için equity farkı
Hâlâ 0,02 içinde kalanlar 3. Geçiş'e devredilir
3. Geçiş · Tam rollout

En zor kararlar için rollout yap

Hâlâ 0,02 içinde kalan her şey tam bir Sage rollout'uyla karara bağlanır: hem pul oyunu hem küp aksiyonları için 3P kararlar; equity üzerindeki %95 güven aralığı 0,005'in altına düşene — ya da 20.736 yol (16 × 1.296) tavanına ulaşılana — kadar 1.296'lık yol partileri hâlinde çalıştırılır. En yavaş geri oyun pozisyonları tek tek bir saatten çok daha uzun sürdü.

0.005
hedef %95 aralık

Sonuç, her kararın tam olarak zorluğunun gerektirdiği derinlikte çözüldüğü katmanlı bir referanstır. Aynı üç geçişli reçeteyi iki veri kümesi üzerinde de yürüttük — 500 sınırsız oyun ve 130 beş puanlık maç — ve ortaya çıkan kademe bileşimleri aşağıda her kümenin sonuçlarının yanında gösteriliyor.

Bir motorun puanlanması

Elde katmanlı bir güvenilir değerlendirme kümesi olunca herhangi bir motoru puanlamak basittir: her kıyaslama kararını motora sunar, seçtiği hamlenin ya da küp aksiyonunun gerçeğe göre equity hatasını kaydeder ve ortalama hata × 500 değerini PR olarak raporlarız. Aynı toplam, pul oyunu ve küp PR'larına, ayrıca oyun planına göre ayrıştırılır.

XG'yi puanlamak, girişte anlatılan ek adımı gerektirdi. XG'nin API'si olmadığından, Toplu Analizini 500 sınırsız oyun ve 130 maç transkripti üzerinde özel bir seviyeyle — 3-ply kararlar, anlaşmazlık olan her yerde test edilen seviyeye yükseltme — çalıştırdık ve XG'nin her pozisyon için tercih ettiği kararı, ürettiği .xg dosyalarından ayrıştırıp aynı referans equity'lere göre puanladık.

Sınırsız oyunlar — referans bileşimi

500 sınırsız oyun boyunca üç geçiş 16.889 pozisyonu (17.535 karar) şöyle çözdü:

3P'de çözüldü  7.652 3T'de çözüldü  3.260 Rollout yapıldı  5.977 Sınırsız oyunlar  16.889 pozisyon · 17.535 karar

Sınırsız oyunlar — karşı karşıya

Beş eşleştirilmiş seviye, bu 17.535 karar üzerinden puanlandı. Düşük PR daha iyidir; her çiftte daha güçlü motor vurgulanmıştır.

Sage 3T
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
0.23
vs
0.34
XG Roller++
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
Sage 3T 0,11 PR önde
Sage 2T
Kısaltılmış rollout · 2-ply kararlar
0.27
vs
0.41
XG Roller+
Kısaltılmış rollout · 2-ply kararlar
Sage 2T 0,14 PR önde
Sage 1T
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 72 yol
0.49
vs
0.53
XG Roller
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 42 yol
Sage 1T 0,04 PR önde
Sage 4P
4-ply ileri bakış araması
0.43
vs
0.47
XG 4-ply
4-ply ileri bakış araması
Sage 4P 0,04 PR önde
Sage 3P
3-ply ileri bakış araması
0.60
vs
0.57
XG 3-ply
3-ply ileri bakış araması
Fiilen berabere — XG 3-ply 0,03 PR önde

Sınırsız oyunlar — tam döküm

Test edilen her motor ve seviye için PR; karar türüne ve oyun planına göre ayrıştırılmış. Düşük olan daha iyidir.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.230.200.410.020.250.200.320.32
XG Roller++ 0.340.330.380.040.440.250.410.48
Sage 2T 0.270.240.430.020.320.200.400.36
XG Roller+ 0.410.410.390.050.600.310.470.54
Sage 1T 0.490.500.430.040.580.430.620.64
XG Roller 0.530.540.480.050.640.450.710.67
Sage 4P 0.430.420.520.080.540.390.450.60
XG 4-ply 0.470.460.520.060.590.400.570.59
Sage 3P 0.600.600.610.130.780.530.670.75
XG 3-ply 0.570.570.580.050.720.480.730.72
Sage 2P 1.681.442.910.401.841.861.871.77
Sage 1P 2.552.423.240.422.712.793.132.74
Open Sage eXtreme Gammon Sage 2P ve 1P'nin bu çalışmada XG karşılığı yoktur; referans için gösterilmiştir.
Sage'in değerlendirmeleri, XG'nin 0,03 PR ile kıl payı öne geçtiği 3-ply dışında her eşleştirilmiş seviyede XG'nin eşdeğer değerlendirmesinden daha güçlüdür — gürültünün içinde kalan bir fark. İki motor birbirine yakındır ve çoğu kullanıcının güvendiği kısaltılmış rollout seviyelerinde Sage belirgin bir üstünlük taşır: 0,23'e karşı Roller++'ın 0,34'ü ve 0,27'ye karşı Roller+'ın 0,41'i.

Sınırsız oyunlar — XG'nin kendi referansına göre puanlama

Yukarıdaki her sayı motorları Sage'in kademeli referansına göre notlar. Akla gelen ilk itiraz ev sahibi avantajıdır — Sage kendi rollout'larına göre ölçülüyor. Bu yüzden tam ayna görüntüsünü kurduk: aynı 500 oyun ve aynı kararlar, ama her kademede gerçek olarak XG'nin kendi analizi. 3P kademesindeki kararları XG 3-ply, 3T kademesindekileri XG Roller++, rollout yapılan kararları ise XG'nin kendi tam rollout'u karara bağlar — Sage referansının kademe kademe XG karşılığı. Ardından her motor buna göre yeniden puanlanır.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.280.260.410.020.400.230.310.37
XG Roller++ 0.210.200.230.010.300.180.220.25
Sage 2T 0.300.290.360.020.390.280.360.38
XG Roller+ 0.300.320.230.010.480.250.260.40
Sage 1T 0.460.470.420.030.610.420.500.57
XG Roller 0.400.410.350.030.530.340.530.45
Sage 4P 0.390.380.430.060.550.360.420.42
XG 4-ply 0.340.330.400.030.460.330.410.36
Sage 3P 0.500.490.560.080.670.470.560.56
XG 3-ply 0.410.410.400.030.540.360.520.46
Sage 2P 1.381.172.440.301.571.501.551.45
Sage 1P 2.192.072.810.362.272.442.712.30
Open Sage eXtreme Gammon Referans: XG 3-ply (3P kademesi) · XG Roller++ (3T kademesi) · XG tam rollout (rollout kademesi).
XG'nin kendi referansına göre sıralama tersine döner: XG, Sage 2T ile XG Roller+'ın 0,30'da başabaş olduğu 2T dışında her eşleştirilmiş seviyede öndedir ve XG Roller++, Sage 3T'nin 0,28'ine karşı 0,21 alır. Her iki tablo da aynı yapısal eğilimi taşır. Kararların yaklaşık üçte ikisini referansın kendi 3-ply'ı ya da kısaltılmış rollout'u karara bağlar ve bir kademeyi karara bağlayan seviye orada neredeyse hiç hata almaz — burada XG 3-ply ve XG Roller++, yukarıdaki tabloda ise Sage 3P ve Sage 3T. Rollout yapılan kararlar daha adil testtir, çünkü orada hakem test edilen seviyelerden biri değil, tam bir rollout'tur: XG'nin rollout'u Roller++'ı Sage 3T'nin kıl payı önüne koyar (0,56'ya karşı 0,60), Sage'in rollout'u ise Sage 3T'yi açık farkla öne çıkarır (0,51'e karşı 0,76).
İki referans, iki hüküm. Sage'in referansına göre Sage 3T, XG Roller++'ın 0,34'üne karşı 0,23 ile önde; XG'ninkine göre ise Roller++, 0,28'e karşı 0,21 ile önde. En üst seviyede her motor kendi analizine göre önde çıkıyor — tartışmalı pozisyon çalışmasının (Bölüm 4) iki motorun açıkça ayrıldığı yerlerde bulduğu örüntünün aynısı. İki motor birbirine çok yakın ve hangisinin önde olduğu, kimin analizinin gerçek kabul edildiğine bağlı.

Maç oyunu — referans bileşimi

Maç kümesi aynı üç geçişi tek bir eklemeyle yürütür: her oyuncunun kala skoru ve Crawford bayrağı her değerlendirmeye işlenir, böylece gerçek, doğru skora göre maç equity'si (MWC) uzayında hesaplanır. 130 beş puanlık maç boyunca geçişler 17.892 pozisyonu (18.292 karar) şöyle çözdü:

3P'de çözüldü  7.522 3T'de çözüldü  3.460 Rollout yapıldı  6.910 Maç oyunu  17.892 pozisyon · 18.292 karar

Maç oyunu — karşı karşıya

Beş eşleştirilmiş seviye, bu 18.292 karar üzerinden puanlandı. Düşük PR daha iyidir; her çiftte daha güçlü motor vurgulanmıştır.

Sage 3T
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
0.23
vs
0.36
XG Roller++
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
Sage 3T 0,13 PR önde
Sage 2T
Kısaltılmış rollout · 2-ply kararlar
0.26
vs
0.44
XG Roller+
Kısaltılmış rollout · 2-ply kararlar
Sage 2T 0,18 PR önde
Sage 1T
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 72 yol
0.47
vs
0.51
XG Roller
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 42 yol
Sage 1T 0,04 PR önde
Sage 4P
4-ply ileri bakış araması
0.41
vs
0.46
XG 4-ply
4-ply ileri bakış araması
Sage 4P 0,05 PR önde
Sage 3P
3-ply ileri bakış araması
0.56
vs
0.54
XG 3-ply
3-ply ileri bakış araması
Fiilen berabere — XG 3-ply 0,02 PR önde

Maç oyunu — tam döküm

5 puanlık maç kümesinde test edilen her motor ve seviye için PR; karar türüne ve oyun planına göre ayrıştırılmış. Düşük olan daha iyidir.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.230.200.460.070.220.200.280.31
XG Roller++ 0.360.350.440.080.440.320.330.49
Sage 2T 0.260.240.400.020.350.180.310.35
XG Roller+ 0.440.440.440.090.540.440.390.55
Sage 1T 0.470.470.470.060.550.450.550.56
XG Roller 0.510.510.560.090.630.490.500.65
Sage 4P 0.410.410.470.050.500.370.440.53
XG 4-ply 0.460.450.580.090.590.440.420.60
Sage 3P 0.560.540.710.050.730.550.590.63
XG 3-ply 0.540.530.620.090.680.530.520.68
Sage 2P 1.271.231.580.391.461.241.491.39
Sage 1P 2.222.212.350.382.432.412.442.47
Open Sage eXtreme Gammon Sage 2P ve 1P'nin bu çalışmada XG karşılığı yoktur; referans için gösterilmiştir.
Maç sonuçları sınırsız oyun çalışmasını yankılıyor: Sage, XG'nin 0,02 PR ile kıl payı öne geçtiği 3-ply dışında her eşleştirilmiş seviyede XG'nin eşdeğer değerlendirmesinden daha güçlü — bu da gürültünün tam içinde. Sage'in en belirgin üstünlüğü yine çoğu kullanıcının güvendiği kısaltılmış rollout seviyelerinde (3T ve 2T): 0,23'e karşı Roller++'ın 0,36'sı ve 0,26'ya karşı Roller+'ın 0,44'ü.

Geri oyunlar, hapsetme oyunları ve snake

Motorun kendi kendine oynadığı sıradan oyunlar nadiren derin bir geri oyun, bir hapsetme oyunu ya da tek bir geride kalmış pulu tutan bir uzak taraf bloğu üretir; bu yüzden sınırsız oyun ve maç kümeleri bir motorun bunları nasıl oynadığı hakkında pek az şey söyler — oysa bunlar motorların tarihsel olarak en zayıf olduğu pozisyonlardır. On üç pozisyon ailesi kıyaslama kümesi bunları doğrudan ölçer; her biri sınırsız oyun kıyaslama kümesi gibi kurulmuştur — her biri rollout kalitesinde bir referans taşıyan gerçek kararlar — ama kararlar ailenin içinden alınır:

  • On klasik geri oyun; geri oyunu oynayan tarafın rakibin evinde tuttuğu iki kapıyla adlandırılır — 2‑1 geri oyunu rakibin 2 ve 1 kapılarını, 5‑4 ise 5 ve 4 kapılarını tutar ve böyle devam eder. Her biri yaklaşık 1.000 karar içerir; bunlar yalnızca iki çıpa da hâlâ tutulurken ve tutan taraf yarışta gerideyken kaydedilmiştir.
  • Hapsetme oyunları; bunları kaçan taraf tanımlar: bir taraf birkaç pul toplamıştır ve kırılmış, tüm tahtayı geçip eve dönmesi gereken bir ila üç pulu vardır; yarışı kaybetmiş diğer taraf ise elinde ne kaldıysa onları kırmaya devam edecek biçimde düzenler.
  • Masif geri oyunlar — rakibin evinde üç ya da daha fazla çıpa, ya da geride yedi ya da daha fazla pulla iki çıpa.
  • Snake — tahtanın rakip yarısında art arda dört ya da daha fazla alınmış kapıdan oluşan, rakibin diğer pulları evde yığılmışken tek bir geride kalmış pulu hapseden bir dizi. Bir geri oyundan çok bir blok oyunudur ve tavlada oynanması en zor şekillerden biridir.

Her aile küçük bir tohum pozisyon kümesinden başlar. Sage bu tohumlardan kendine karşı 3-ply'da sınırsız oyunlar oynar, pozisyon hâlâ aileye aitken ortaya çıkan her karar kaydedilir ve kaydedilen her karar için referansını üretmek üzere rollout yapılır — sonuna kadar oynanan 5.184 yol, ilk üç yarım hamlede 3-ply pul ve küp kararlarıyla, sonrasında 2-ply, varyans azaltma açık. Aday tamamlama geçişleri, test edilen bir motorun fiilen seçtiği her hamle için rollout yaptı; böylece aşağıdaki her puan rollout kalitesinde bir adaya göredir. Küpün rakibe ait olduğu bir küp pozisyonu sıradaki oyuncu için bir karar değildir ve puanlanmaz.

Kıyaslama kümesi Karar 2-ply 3-ply 4-ply 1T / Roller 2T / Roller+ 3T / Roller++
SageXG SageXG SageXG SageXG SageXG SageXG
2-1 geri oyunu1,0002.262.841.011.641.031.220.611.670.410.980.380.93
3-1 geri oyunu1,0012.222.220.880.950.670.720.660.910.340.590.320.48
3-2 geri oyunu1,0082.072.390.911.310.780.990.650.950.440.610.250.51
4-1 geri oyunu1,0011.771.830.780.820.600.530.550.690.240.470.190.45
4-2 geri oyunu1,0002.161.960.731.050.690.550.630.790.360.610.270.43
5-1 geri oyunu1,0031.321.770.660.760.460.640.490.600.260.410.230.32
5-2 geri oyunu1,0021.531.600.490.820.480.630.530.630.330.410.240.30
4-3 geri oyunu1,0021.692.130.740.800.550.580.520.760.240.550.190.44
5-3 geri oyunu1,0031.862.131.020.890.580.630.680.810.350.460.210.44
5-4 geri oyunu1,0012.452.740.931.150.730.780.760.970.470.550.300.49
Hapsetme3,2704.7314.622.5411.252.0510.372.297.761.307.851.056.16
Snake97821.0039.9221.4236.6423.5336.1711.1932.998.4232.385.8532.24
Masif geri oyun2,1034.335.762.564.442.173.681.913.141.392.751.092.64
Open Sage eXtreme Gammon Her ailenin rollout referansına karşı PR; düşük olan daha iyidir; her çiftin daha iyi motoru vurgulanmıştır.
On klasik backgame bir araya getirildiğinde (10.021 karar), Sage'in PR'ı 2-ply'de 1.93, 3-ply'de 0.82 ve 3T'de 0.26 olur; ağır hatalar 28'den sıfıra iner. Containment oyunları ve devasa backgame'ler her seviyede üç ila dört kat daha zordur — 3T'de 1.05 ve 1.09 — ve snake başlı başına bir sınıftır: 2-ply'de 21.00, 3T'de hâlâ 5.85. Ayrıca ply eklemenin güvenilir biçimde yardımcı olmadığı, buna karşılık kesilmiş rollout seviyelerinin yardımcı olduğu tek ailedir; bir "tut ya da bırak" karar ailesi tam olarak böyle görünür: seçim, uzun bir containment'in nasıl sonuçlanacağına bağlıdır ve buna yalnızca simülasyon ulaşır. Snake satırını, Sage'in seviyelerinin bir sıralaması olarak değil, bu pozisyon ailesinin çözülmekten ne kadar uzak olduğunun ölçüsü olarak okuyun.
Bu benchmark'larda XG. Sage on üç ailenin tamamında ve toplulaştırılmış her seviyede öndedir: on backgame'de 2-ply'de 1.93'e karşı 2.16, 3T'de 0.26'ya karşı 0.48. Fark, ailenin zorluğuyla birlikte açılır — 3T'de containment 1.05'e karşı 6.16, devasa backgame'ler 1.09'a karşı 2.64 ve snake 5.85'e karşı 32.24. 78 hücreden yalnızca dördü ters yöndedir; hepsi 2-ply ile 4-ply arasındaki tekil backgame'lerdir ve orada iki motor da zaten 1.1'in altındadır. XG'nin programatik arayüzü yoktur; kararları bu nedenle yerel dışa aktarımlardan Batch Analyze ile yeniden oynatılır .xg dışa aktarımları (bkz. Ek).
04
İkinci Yöntem

Tartışmalı pozisyonlar

Rollout PR yöntemi iki motoru ortak bir referansa göre puanlar. Daha keskin, daha doğrudan soru şu: gerçekçi oyunda iki motor en iyi hamle konusunda nerede gerçekten ayrışıyor — ve ayrıştıklarında hangisi haklı?

Bunu Birinci Yöntem'deki en zor sınırsız oyun kararları üzerinde yanıtlıyoruz — rollout yapılan pozisyonlar; bunların her biri artık hem tam bir Sage rollout'u hem de tam bir XG rollout'u taşıyor. Aralarında Sage 3T ile XG Roller++'ın farklı seçim yaptığı her kararı bulup her rollout'un hangi seçimi tercih ettiğini soruyoruz. İki rollout'a birden sahip olmak işin özü: her anlaşmazlık Sage'in rollout'una ve XG'nin kendi rollout'una göre yargılanır, böylece yanıt hiçbir zaman tek bir motorun gerçeğine güvenmeye dayanmaz.

  • Rollout yapılmış sınırsız oyun kıyaslama kümesinden başlayın — her biri tam bir Sage rollout'uyla karara bağlanmış en zor kararlar.
  • Aynı pozisyonların kendi tam rollout'unu XG'ye yaptırın (Toplu Rollout özelliğiyle) — bağımsız ikinci bir referans.
  • Sage 3T ile XG Roller++'ın ayrıştığı kararları tutun ve her motorun seçimini her rollout'un en iyi hamlesine ya da küp aksiyonuna göre puanlayın.
  • Ortak küme üzerinden raporlayın — iki motorun seçiminin de iki rollout tarafından da değerlendirildiği anlaşmazlıklar — böylece iki karşılaştırma birebir aynı pozisyonları kapsar.

Sonuçlar

Rollout yapılan sınırsız oyun pozisyonlarında — çalışmanın en zor kararları — iki motor 1.286 pul oyununda ve 80 küp kararında ayrışıyor. Her panel, her motorun rollout'un en iyi kararıyla ne sıklıkla örtüştüğünü gösteriyor — sırasıyla XG'nin kendi rollout'una ve Sage'in rollout'una göre puanlanmış.

Pul oyunu

Sage 3T ile XG Roller++'ın farklı hamle seçtiği yerler
5,687
rollout yapılan pul kararı
1,286
anlaşmazlık
1,139
puanlanan (ortak küme)
En iyi hamleyle örtüşme — XG'nin kendi rollout'una göre
Ort. equity hatası — Sage 3T 0,0030 · XG Roller++ 0,0030  (PR 1,51 vs 1,49)
En iyi hamleyle örtüşme — Sage'in rollout'una göre
Ort. equity hatası — Sage 3T 0,0023 · XG Roller++ 0,0040  (PR 1,14 vs 1,98)
Sage 3T XG Roller++ Hiçbiri

Küp kararları

Sage 3T ile XG Roller++'ın farklı küp aksiyonu seçtiği yerler
282
rollout yapılan küp kararı
80
anlaşmazlık
En iyi aksiyonla örtüşme — XG'nin kendi rollout'una göre
Ort. equity hatası — Sage 3T 0,0110 · XG Roller++ 0,0074  (PR 5,50 vs 3,69)
En iyi aksiyonla örtüşme — Sage'in rollout'una göre
Ort. equity hatası — Sage 3T 0,0058 · XG Roller++ 0,0102  (PR 2,88 vs 5,08)
Sage 3T XG Roller++
Toplamda yalnızca 80 küp anlaşmazlığı var — küçük bir örneklem; bu paneli kesin değil, yol gösterici olarak okuyun.
Pul oyununda — anlaşmazlıkların büyük çoğunluğu — her rollout, hangi hamlenin en iyi olduğu konusunda kendi motorunun tarafını tutuyor: XG'nin rollout'una göre XG Roller++ en iyi hamleyi daha sık buluyor (%52,2 ile %37,7), Sage'in rollout'una göre ise Sage 3T (%50,0 ile %38,1). Tartışmalı bir seçimin ne kadar equity kaybettirdiğiyle ölçüldüğünde ikisi XG'nin rollout'una göre başa baş (her biri 0,0030), Sage'inkine göre ise Sage 3T daha yakın (0,0023 ile 0,0040). Küp anlaşmazlıkları çok daha seyrek ve karışık: Sage 3T rollout yapılan küp aksiyonunu iki rollout'a göre de daha sık buluyor, ama XG'nin rollout'una göre kaçırdıkları daha pahalıya mal oluyor.
Neden iki rollout önemli. Tek referansa dayanan bir sonuç her zaman "kimin doğrusu?" sorusunu davet eder. Burada iki rollout bağımsız motorlardan gelir ve iki güçlü motorun ayrıldığı pozisyonlarda onlar da ayrılır; her biri kendisini üreten motora meyleder. Tartışmalı pozisyonlar Sage 3T ile XG Roller++'ı birbirinden ayırmaz.
05
Üçüncü Yöntem

Gerçek maçlarda uyum

İlk iki yöntem hangi motorun daha güçlü olduğunu sorar. Kendi oyununu incelemek için motor kullanan herkes için üçüncü bir soru da bir o kadar önemlidir: gerçek bir maçı XG'de analiz edip performans derecenizi not ettikten sonra aynı maçı Sage'de analiz ederseniz — iki derece birbirine ne kadar yakın çıkar? XG'de belirli bir PR'ın ne anlama geldiğine dair yıllarca sezgi geliştirmiş bir oyuncu, Sage'den de esasen aynı sayıyı almalıdır.

Bunu doğrudan sınamak için XG'de zaten analiz edilmiş geniş bir gerçek turnuva maçı koleksiyonu aldık, her birini Sage'de sıfırdan yeniden analiz ettik ve iki motorun her oyuncuya verdiği performans derecesini karşılaştırdık.

Maçlar

Maç dosyaları 2026'daki üç turnuvadan geliyor; hepsi 7 puanlık maçlar ve Máté Fehér tarafından cömertçe sağlandı — rekabetçi bir oyuncunun kendi oyunlarını inceleyeceği gibi, eXtreme Gammon'da zaten analiz edilmiş hâlde.

UBC Texas 2026
100
maç analiz edildi
UBC İstanbul 2026
146
maç analiz edildi
UBC Japonya 2026
44
maç analiz edildi

Toplamda 290 maç ve 580 bireysel oyuncu derecesi. Bir maç daha bozuk transkripsiyon nedeniyle dışarıda bırakıldı.

Eşleştirilmiş değerlendirme ayarları

Her maç Sage'de 3-ply temel seviyede yeniden analiz edildi; oyuncunun gerçek hamlesinin 3-ply en iyisinden ayrıştığı kararlara ise uzman 3T geçişi — 360 yollu bir kısaltılmış rollout — uygulandı. Bu, güçlü bir XG analizini (açık kararlar için temel bir ply, yakın olanlar için kısaltılmış rollout'a yükseltme) eşleştirilmiş güçte yansıtır: Sage 3P ≈ XG 3-ply ve Sage 3T ≈ XG Roller++ (bkz. Bölüm 2). Ardından her motor kendi değerlendirmelerinden oyuncu başına bir PR hesaplar — kullanıcının her uygulamada gördüğü sayı.

Sonuçlar

580 oyuncu derecesinin tamamı bir araya getirildiğinde iki motor neredeyse birebir uyuşuyor. Ortalama fark istatistiksel olarak sıfırdan ayırt edilemez ve bu farkın yayılımı, PR'ın kendi yayılımının yanında küçük kalıyor.

+0.002
Ortalama fark (PR)
İstatistiksel olarak sıfırdan ayırt edilemez — %95 güven aralığı ±0,03, p = 0,90.
0.37
Farkın std. sapması
PR'ın kendi 2,08'lik yayılımının yanında küçük — tek bir derecedeki uyuşmazlık, PR'ın ne kadar değiştiğine kıyasla önemsiz.
0.98
Derece korelasyonu (r)
Sage ve XG aynı oyuncuları neredeyse birebir aynı derecelendiriyor.
Oyuncu başına performans derecesi XG Sage FarkSage − XG
Ortalama 4.36 4.36 +0.002
Standart sapma 2.08 2.10 0.37
%95 aralık 1.52 – 9.36 1.44 – 9.67 −0.76 – +0.74
Pratikte, bir maçı Sage'de analiz eden oyuncu — vakaların büyük çoğunluğunda — XG'nin vereceğiyle esasen aynı performans derecesini görecektir. Bir maçın ne kadar iyi oynandığının ölçüsü olarak iki motor birbirinin yerine geçebilir.
06
Sonuç

İki güçlü motor, birbirine çok yakın

Güç çalışmalarında Open Sage 3T ve XG Roller++, mevcut en güçlü tavla değerlendirmelerinden ikisidir ve birbirlerine yakındır. Rollout PR çalışması — hem sınırsız oyun hem de 5 sayılık maçlar için yürütülmüştür — Sage'i 3-ply dışında her eşleşen seviyede daha güçlü bulur; 3-ply'de iki motor gürültü sınırları içindedir ve en net üstünlük kesilmiş rollout seviyelerindedir. Çalışma sınırsız oyunlar için XG'nin kendi analizi referans alınarak yeniden kurulduğunda sıralama tersine döner: XG, iki motorun başabaş olduğu 2T dışında her eşleşen seviyede öndedir. İki motorun en güçlü değerlendirme seviyesinde ayrıldığı pozisyonları alıp bunları her iki motorun rollout'larına karşı puanlayan tartışmalı pozisyon çalışması, pul oyununda başabaştır — her rollout kendisini üreten motoru kayırır — küp anlaşmazlıkları ise karar vermek için fazla seyrek ve fazla bölünmüştür.

Dürüst özet şu: iki motor çok benzer ve çok yüksek bir seviyede oynuyor ve her biri kendi analizine göre en iyi sonucu alıyor. Sage'in referansına göre kesilmiş rollout'ları, XG'nin Roller seviyelerinin kaçırdığı kararları doğru bulur; XG'ninkine göre ise tersi geçerlidir; iki motorun açıkça ayrıldığı pozisyonlarda da hiçbir motorun rollout'u diğerini belirgin biçimde geride bırakmaz. İki motorun ayrıştığı yer aile benchmark'larıdır — backgame'ler, containment oyunları ve snake: aynı ölçütle ve her eşleşen seviyede Sage on üçünün tamamında öndedir ve containment oyunlarıyla snake'te üç kat veya daha fazla farkla.

Üçüncü çalışma ise bir Sage kullanıcısının gerçekten karşılaştığı soruyu yanıtlıyor: XG'nin zaten derecelendirdiği 290 gerçek turnuva maçında Sage esasen aynı performans derecesini üretiyor — bir oyuncunun Sage ve XG dereceleri arasındaki ortalama fark istatistiksel olarak sıfırdan ayırt edilemez ve bu farkın yayılımı PR'ın kendi yayılımının yanında küçük. İster rollout ile oluşturulmuş bir gerçeğe karşı güç, ister gerçek bir oyunun nasıl oynandığı konusunda basit bir uyum sınansın, Open Sage ile XG aynı yere varıyor.

Backgammon Sage Pro'yu Deneyin Ana sayfaya dön
A
Ek

Bu sonuçları yeniden üretme

Open Sage açık kaynak olarak yayımlanır ve iki yöntemin arkasındaki eksiksiz işlem hattı motorun deposuyla birlikte gelir. Aşağıdaki her şey yalnızca bgsage paketine ve motorunun yerel bir derlemesine dayanır — harici hizmet, veri kümesi ya da altyapı gerekmez. Elle yürütülen tek bağımlılık, XG sütunlarını yeniden üretmek için kullanılan eXtreme Gammon'ın kendisidir, çünkü XG'nin programatik arayüzü yoktur.

github.com/markbgsage/bgsage Open Sage motoru · MPL-2.0 · tüm betikleri depo kökünden çalıştırın
Ön koşullar. bgsage motorunu (yani bgbot_cpp uzantısını) platformunuza uygun depo yönergelerini izleyerek derleyin. Herhangi bir XG sütununu yeniden üretmek, Toplu Analiz adımı için ayrıca eXtreme Gammon (Windows) gerektirir. Her betik yollarını deponun içinde çözer; bu yüzden betikleri bgsage/ kökünden çalıştırın.

Claude Code ile yeniden üretme

İşlem hattını elle sürmek zorunda değilsiniz. Anthropic'in komut satırında çalışan ajan tabanlı kodlama aracı Claude Code, motoru derleyip kıyaslamaları sizin için çalıştırabilir. Onu deponun bir kopyasına yöneltin ve ne istediğinizi anlatın; aşağıda ayrıntıları verilen adımların aynısını yürütür:

›“Bu motoru derle, sonra Sage 3T ve Sage 3P'yi birlikte gelen kıyaslama kümesine göre puanla ve her biri için PR, pul PR'ı ve küp PR'ını göster.”
›“Rollout PR tablosunu yeniden üret: her Sage seviyesini — 1-ply'dan 4-ply'a, artı 1T, 2T ve 3T — data/money_benchmark/benchmark.json.gz dosyasına göre puanla ve çalışmayla karşılaştırabileceğim bir tablo olarak yazdır.”
›“Referans kıyaslama kümesini üç oluşturma geçişiyle sıfırdan yeniden kur, sonra Sage 3T'yi ona göre puanla.”
›“Kendi botum ./mybot dizininde — birlikte gelen kıyaslama kümesindeki her kararı botumla değerlendir ve referans equity'lere göre PR'ını hesapla.”

Birinci Yöntem — Rollout PR

Kıyaslama kümesi — katmanlı güvenilir değerlendirme kümesi — tek bir betik tarafından kurulur ve puanlanır: scripts/benchmark_money.py. İki giriş yolu vardır.

A

Birlikte gelen veri kümesine göre puanlayın

Yeniden kurmadan · tabloyu doğrulayın ya da yeni bir motoru puanlayın

Depo, derlenmiş kıyaslama kümesini data/money_benchmark/benchmark.json.gz olarak sunar (sıkıştırılmamış JSON GitHub'ın dosya boyutu sınırını aşar; betikler gzip'i şeffaf biçimde okur). Herhangi bir Sage seviyesini puanlamak, Bölüm 3 tablosundaki satırını yeniden üretir:

# lower PR is better
python scripts/benchmark_money.py score --level 3ply        # Sage 3P
python scripts/benchmark_money.py score --level truncated3  # Sage 3T
# --level: 1ply 2ply 3ply 4ply | truncated1/2/3 | rollout

Tamamen farklı bir motoru puanlamak için betiğin içeride kullandığı kuralın aynısını uygulayın: veri kümesindeki her karar için motorunuzun seçimini alın ve equity'sini kayıtlı referans (“rollout”) equity'siyle karşılaştırın — ortalama hata × 500 o motorun PR'ıdır.

B

Referansı sıfırdan yeniden kurun

Her kararı yeniden türetin · tohumlanmış, dolayısıyla yeniden üretilebilir

Üç uyarlamalı geçiş veri kümesini yeniden oluşturur. Oyunlar tohumlanmıştır (tohum 1'den 500 oyun), dolayısıyla kararlar ve referans equity'ler aynı çıkar:

# 1. simulate 500 Sage-3P self-play games (+ XG transcripts)
python scripts/benchmark_money.py build --stages pass1 --n-games 500 --workers 6
# 2. re-evaluate every decision within 0.05 at 3T
python scripts/benchmark_money.py build --stages pass2 --n-threads 16
# 3. roll out every decision still within 0.02
python scripts/benchmark_money.py build --stages pass3 --n-threads 16

3. Geçiş şunu yazar: data/money_benchmark/benchmark.json (ve onun .gzdosyasını); tam olarak A Seçeneği'ndeki gibi puanlayın. --stages verilmezse üç geçişin tümü sırayla çalışır.

XG sütunlarını yeniden üretme

XG'nin API'si yoktur, dolayısıyla sonuçları XG'nin Toplu Analizinden gelir. 1. Geçiş, XG'ye aktarılacak transkriptleri şuraya yazar: data/money_benchmark/xg/ — bunlar depoyla birlikte gelmez, bu yüzden yalnızca veri kümesinden başladıysanız 1. geçişle yeniden üretin.

  1. XG'de, xg/ klasörünü özel bir seviyeyle — 3-ply kararlar, anlaşmazlıklarda test edilen seviyeye yükseltme — ve Save Games after analyze işaretli olarak Toplu Analiz edin. XG oyun başına bir .xg yazar.
  2. Çalıştırın: python scripts/benchmark_pr_xg_levels_all.py --benchmark money, bu betik XG'nin pozisyon başına en üst kararını analiz edilen her seviye için .xg dosyalarından okur, aynı referans equity'lere göre puanlar, aynı PR dökümünü yazdırır ve XG'nin seçimlerini yanına kaydeder.

Bölüm 3'teki XG referanslı sınırsız oyun tablosu — ve tartışmalı pozisyon çalışması — ise en zor pozisyonların XG rollout'larını gerektirir. XG'nin Batch Rollout özelliğini bu pozisyonlar üzerinde çalıştırın (Save Games işaretli); python scripts/xg_benchmark_report.py bunları ayrıştırır. XG referanslı tablo ardından her seviyeyi, her puanlama betiğinin kaydettiği seçimlerden yeniden puanlar. Aşağıdaki İkinci Yöntem'e bakın.

# XG-reference table: harvest XG Roller++ (the 3T tier), then re-score every level;
# Sage's picks come from benchmark_money.py score --level <level> --model stage11
python scripts/xg_harvest_results.py --benchmark money --set rollerpp
python scripts/benchmark_pr_xg_reference_all.py --sage-suffix stage11

Maç oyunu

5 puanlık maç çalışması aynı şekilde scripts/benchmark_match.pyile yeniden üretilir — benchmark_money.py betiğinin maç oyunu ikizi; maç uzunluğu ve maç sayısı argüman olarak verilir ve maç skoru her değerlendirmeye işlenir. Referansı şu dosyayla birlikte gelir: data/match_benchmark/5pt/benchmark.json.gz.

# score against the shipped match dataset (no rebuild)
python scripts/benchmark_match.py score --match-length 5 --level truncated3
# or rebuild: 130 seeded 5-pt matches, three adaptive passes
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass1 --workers 6
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass2 --n-threads 16
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass3 --n-threads 16
# XG columns: batch-analyze data/match_benchmark/5pt/xg/ per level, then
python scripts/benchmark_pr_xg_levels_all.py --benchmark match --match-length 5

İkinci Yöntem — Tartışmalı Pozisyonlar

Anlaşmazlık çalışması, Birinci Yöntem için kurulan aynı sınırsız oyun kıyaslama kümesinden beslenir; en zor pozisyonlar XG'nin kendi tam rollout'uyla çapraz referanslanır. Elle yürütülen tek bağımlılık XG'nin Toplu Rollout'udur; gerisini tek bir betik yapar.

Sınırsız oyunlar

  1. Sınırsız oyun kıyaslama kümesini kurun (Birinci Yöntem, B Seçeneği). 1. Geçiş, XG'ye aktarılacak transkriptleri de şuraya yazar: data/money_benchmark/xg/.
  2. XG'de o pozisyonlara Save Games after analyze işaretli olarak Toplu Rollout uygulayın; böylece rollout yapılan her karar için XG'nin kendi rollout equity'lerini taşıyan bir çıktı oluşur: ortaya çıkan .xg dosyaları.
  3. Toplayın ve raporlayın:
python scripts/xg_benchmark_report.py
python scripts/xg_dispute_analysis.py --sage-picks data/money_benchmark/scores/sage_truncated3.picks.jsonl

İlki XG'nin rollout'larını data/money_benchmark/xg_results/rollout.jsonldosyasına ayrıştırır; ikincisi ise Sage 3T'nin kayıtlı seçimlerinden tartışmalı pozisyon raporunu — her anlaşmazlık sırasıyla Sage ve XG rollout'larına göre puanlanmış — yazdırır.

Maç oyunu henüz bu yöntemle kapsanmıyor: maç pozisyonlarının XG tam rollout'u gerekiyor ve bunu çalıştırmadık. Maç gücü bunun yerine Rollout PR çalışması (Bölüm 3) ve gerçek maç uyum çalışması (Bölüm 5) ile kapsanıyor.

Doğrudan oyunlar

Sage ve XG doğrudan birbirlerine karşı da oynayabilir; XG'nin hamleleri kendi analizinden alınır. Sage sınırsız bir oyunun her iki tarafını oynar; döküm XG'de toplu olarak analiz edilir; rakibin XG'nin en iyi seçiminden farklı olan ilk kararı XG'nin hamlesiyle değiştirilir ve oyun oradan yeni zarlarla yeniden oynanır; ta ki rakibin her hamlesi XG'nin yapacağı hamle olana dek. Çalıştırıcı böyle bir dizi oyun oynar (tohumlar şuradan devam eder: logs/sage_vs_xg.txt) ve oyun başına ortalama puanı standart hatasıyla birlikte yazdırır:

python scripts/run_sage_vs_xg_games.py 100 --level 3P   # Sage 3P vs XG; levels 1P-4P, 1T-3T
python scripts/play_sage_vs_xg.py 3P --seed 7             # one game, iterations under logs/play_sage_vs_xg/

XG'nin Windows masaüstünde çalışıyor olması gerekir: her yineleme, Batch Analyze penceresini şunun aracılığıyla sürer: scripts/xg_batch_analyze.py, bir Anthropic Computer Use aracısı (şunu ayarlayın: ANTHROPIC_API_KEY), yineleme başına yaklaşık bir dakika boyunca fareyi ve klavyeyi devralır. Bir oyun birkaç yinelemede yakınsar; XG'nin "too good to double" kararı, çift yok olarak sayılır.

Geri oyunlar, hapsetme oyunları ve snake

On üç aile kıyaslama kümesi şurada yer alır: backgame_ref_positions/benchmark/ — her biri için bir <family> starting.txt tohum pozisyonu dosyası ve bir <family> rollout.jsonl referansı — ve şununla puanlanır: scripts/score_backgame_pr.py; bu betik PR'ı, rollout kalitesindeki seçimlerin payıyla birlikte raporlar.

python scripts/score_backgame_pr.py --category "21 backgame" --level truncated3
python scripts/score_backgame_pr.py --category containment --level 3ply
# XG: export every decision as a one-decision native .xg game, then per level (XG running): analyse, wait, score
python scripts/export_folder_benchmark_xg.py generate
python scripts/xg_folder_batch.py stamp
python scripts/xg_folder_batch.py analyze --level xg3ply   # drives XG's Batch Analyze dialog (pywinauto)
python scripts/xg_folder_batch.py wait --level xg3ply
python scripts/xg_folder_batch.py score --level xg3ply
Open Sage MPL-2.0 lisansı altındadır. Birlikte gelen benchmark'lar, Bölüm 3 tablolarının arkasındaki referansların ta kendisidir; hem XG referanslı karşılaştırma hem de tartışmalı pozisyon sonuçları bunlardan yeniden üretilebilir — gereken tek şey XG'nin Batch Rollout'unun ürettiği ilgili .xg dosyaları.