Skip to content
Cara Kami Menyeimbangkan Bot Catur Cina (Xiangqi)

Cara Kami Menyeimbangkan Bot Catur Cina (Xiangqi)

Dari satu masukan pengguna sampai 50.000 partai simulasi: rekayasa di balik penyeimbangan bot yang adil

Thomas Gerbouin6 min

Semuanya bermula dari sebuah surel

Suatu pagi kami menerima surel yang terperinci dari seorang pemain yang sedang menguji bot kami. Temuannya membuka mata: bot yang dilabeli setara pemain klub ternyata bermain pada tingkat Candidate Master, jauh di atas yang disiratkan tingkat kesulitannya. Bot di tingkat Apprentice semestinya tidak menggilas pemain klub yang berpengalaman. Di platform seperti Chess.com, pemain memakai bot sebagai patokan kemajuan pribadi. Kalau tingkat kesulitan kami keliru, pemain salah menakar tingkatnya sendiri, dan pemula digilas lawan yang mereka kira masih terjangkau. Kami memutuskan menangani ini di dua sisi: pertama, mengalibrasi ulang setiap bot supaya kenaikan kesulitannya mulus dan urutannya benar, dan kedua, menghapus sepenuhnya rating Elo dari antarmuka aplikasi. Menampilkan angka seperti 1500 mengundang perbandingan langsung dengan platform lain, padahal rentang rating Xiangqi berbeda jauh antarsitus. Sebagai gantinya, kami menata bot ke dalam tingkatan kesulitan yang jelas supaya pemain bisa berfokus mencari tantangan yang pas tanpa mencemaskan angka yang mungkin tidak berarti seperti yang mereka kira.

Kenapa Pikafish membuat kalibrasi jadi sulit

Xiangqi One memakai Pikafish, mesin Xiangqi sumber terbuka terkuat, sebagai otak di balik setiap bot. Pikafish luar biasa perkasa, tetapi kekuatan itu bermata dua. Bahkan pada setelan pencarian yang sangat rendah, Pikafish bermain jauh di atas tingkat pemula. Kekuatannya tumbuh secara eksponensial mengikuti kedalaman pencarian, bukan secara linear. Naik dari kedalaman 1 ke kedalaman 3 tidak melipattigakan kekuatannya, melainkan bisa melipatgandakannya sepuluh kali. Artinya kamu tidak bisa begitu saja memetakan kedalaman mesin ke skala Elo yang linear lalu menganggapnya selesai. Tiap bot di Xiangqi One bukan sekadar mesin mentah. Ia adalah kepribadian yang dibangun dari beberapa parameter: kedalaman pencarian, berapa banyak langkah kandidat yang dipertimbangkan (MultiPV), berapa banyak kesalahan yang sengaja dibuat, ragam pada tingkat kesalahannya, dan apakah bot memilih kandidat terbaik atau memilih secara lebih acak. Menyetel semua tuas itu dengan tepat untuk 22 bot yang berbeda, membentang dari pemula murni sampai nyaris setingkat grandmaster, itulah inti tantangan kalibrasinya.

Membangun prasarana turnamennya

Untuk mengukur kekuatan bot yang sebenarnya, kami perlu bot saling bermain dalam skala besar — bukan puluhan partai, melainkan puluhan ribu. Kami membangun sistem turnamen yang menjadwalkan pertemuan antara tiap pasangan bot yang berdekatan tingkatnya, menukar warna supaya kedua pihak sama-sama bermain sebagai Merah dan Hitam, lalu menyimpan setiap hasil partai ke dalam basis data. Tiap putaran turnamen menghasilkan sekitar 400 partai per pasangan bot, dan itu memberi kami hasil yang bermakna secara statistik. Setelah semua partai selesai, kami mengekspor hasilnya sebagai berkas PGN dan memasukkannya ke Ordo, sistem rating Bradley-Terry yang menghitung rating Elo dari hasil pertandingan. Ordo adalah perkakas yang sama yang dipakai komunitas catur komputer untuk mengukur kekuatan mesin. Ia mengeluarkan rating untuk tiap bot beserta margin galatnya, sehingga kami memperoleh gambaran yang presisi tentang kekuatan relatif yang sesungguhnya.

Hasil pertama: seberapa jauh kami meleset

Hasil turnamen pertama benar-benar mengagetkan. Profil bot awal kami, yang disetel dengan rating dari 280 sampai 2500, ternyata kacau kalibrasinya. Grafik di bawah memperlihatkan keadaan awalnya: tiap titik adalah satu bot, sumbu X adalah rating yang tersetel di kode kami, dan sumbu Y adalah Elo yang terukur dari turnamen.

Catatan penting: Elo yang terukur bersifat relatif terhadap kumpulan bot itu sendiri (Ordo menambatkan rata-ratanya di 1000), jadi angka mutlaknya tidak harus sama dengan rating yang tersetel. Yang penting adalah botnya terurut dengan benar dan jaraknya merata.

Rating Elo tersetel dibanding terukur pada tahap awal

Hasilnya menyingkap masalah yang serius. Bot papan atas (Elena, Jun-so, Katya) berhimpit pada kekuatan yang nyaris sama padahal setelannya terpaut ratusan angka. Beberapa bot bahkan sama sekali salah urutan, dengan bot yang seharusnya lebih lemah justru mengalahkan yang seharusnya lebih kuat. Grafik kenaikannya membuat masalah ini makin kentara. Alih-alih tangga kesulitan yang menanjak mulus, yang ada adalah gerombolan besar tempat beberapa bot bermain pada kekuatan nyaris identik, diselingi jurang lebar tempat kesulitannya melonjak mendadak.

Kenaikan bot pada tahap awal, memperlihatkan gerombolan dan jurang

Pemain yang naik dari Erik (680) ke Ông Minh (760) nyaris tak merasakan bedanya, tetapi melompat dari Dewi ke Xinping terasa seperti membentur tembok. Bukan pengalaman semacam itu yang kami inginkan.

Proses penyetelan: empat putaran turnamen

Memperbaiki kalibrasinya menuntut beberapa putaran penyesuaian. Setelah tiap turnamen, kami menganalisis hasilnya, menandai yang paling meleset, menyetel ulang profil mesinnya, lalu menjalankan turnamen berikutnya. Pada putaran pertama, kami menyesuaikan rating yang tersetel agar lebih mendekati kekuatan terukur dan menandai bot mana yang paling butuh perombakan profil. Satu pola yang berulang dan kami temukan adalah bahwa bot bergaya bertahan secara konsisten tampil di atas profilnya. Bot dengan gaya bermain bertahan bisa terukur ratusan angka Elo di atas bot agresif dengan setelan serupa. Kami harus melemahkan beberapa bot bertahan secara signifikan, terutama Nour dan Vo Nguyen Giap. Pada turnamen keempat, semua bot sudah menghormati hierarki yang kami maksudkan, dengan jarak antartingkat kesulitan yang cukup merata. Perubahan individual terbesar mencakup menaikkan Sun Tzu lebih dari 200 angka Elo (memberinya pencarian yang lebih dalam dan permainan yang lebih akurat), melemahkan Jun-so sebanyak 270 angka (ia jauh terlalu kuat untuk tingkatannya), dan merombak total empat bot terbawah demi menciptakan perkenalan yang lebih lembut bagi pemain baru. Tangga kesulitan itulah yang kamu telusuri sekarang saat menjajal tiap tingkatnya melawan bot AI.

Sebelum dan sesudah: mengukur perbaikannya

Untuk memastikan perubahan kami benar-benar berhasil, kami menjalankan turnamen pembanding khusus: ke-22 bot dalam setelan aslinya (v1) bermain melawan ke-22 bot dalam setelan yang sudah disetel (v2) pada skala Elo yang sama. Ini memberi kami pengukuran yang langsung dan setara tentang seberapa besar tiap bot berubah.

Perbandingan sebelum dan sesudah, memperlihatkan perubahan Elo tiap bot

Anak panahnya menunjukkan arah dan besarnya perubahan tiap bot. Panah biru ke kanan berarti botnya menjadi lebih kuat; panah merah ke kiri berarti kami berhasil melemahkannya. Pelemahan terbesar mengenai bot yang penampilannya paling jauh melampaui profilnya: Vo Nguyen Giap turun 374 angka Elo, Jun-so turun 270, dan Jules Cesar turun 234. Di sisi lain, Sun Tzu naik 202 angka untuk menempati posisinya yang semestinya di antara bot historis terkuat.

Tampilan gabungan di bawah menghubungkan tiap bot di kedua versi, memperlihatkan persis bagaimana kalibrasinya bergeser.

Perbandingan kalibrasi gabungan v1 dan v2

Grafik kalibrasi akhirnya menegaskan bahwa setelah disetel, botnya terurut dengan benar tanpa satu pun pembalikan, dan jarak antartingkat kesulitannya jauh lebih merata.

Kalibrasi akhir: tersetel dibanding terukur

Apa berikutnya: mengubah partai menjadi teka-teki

Puluhan ribu partai yang dihasilkan sistem turnamen kami tidak hanya berguna untuk kalibrasi. Tiap partai adalah tambang emas berisi pola taktis dan posisional. Langkah kami berikutnya adalah menambang partai-partai itu untuk bahan teka-teki. Penjalan turnamennya sudah menyimpan penilaian mesin posisi demi posisi untuk setiap partai. Dengan mencari posisi tempat penilaiannya berayun tajam — ketika satu pemain punya langkah yang menang tetapi lawannya melewatkannya — kami bisa mengekstraksi calon teka-teki secara otomatis. Pendekatan ini memberi kami pasokan teka-teki baru yang nyaris tak terbatas dan sudah berperingkat, diambil dari partai dengan posisi yang realistis, bukan dari komposisi babak akhir buatan. Nantikan artikel kami berikutnya. Kalau kamu lebih ingin tahu cara memilih tingkat dan memakai bot untuk berkembang, panduan kami tentang bermain catur Cina melawan komputer membahas sisi praktisnya.

Lanjut membaca