Mesin XiangQi (Catur Cina) untuk XQWizard dengan AI yang Kuat
Program permainan catur Cina ElephantEye (Elephant Eye) versi: 3.15
Jaringan Ensiklopedia Xiangqi* Maret 2008
(*Email: [email protected])
1. Pendahuluan
ElephantEye adalah program catur Tiongkok gratis. Berdasarkan premis mengikuti Lisensi Publik Umum Kecil GNU, penggemar dan pemrogram catur dapat dengan bebas menggunakan ElephantEye dan program sumbernya.
Nama Cina dari ElephantEye adalah "Mata Gajah", yang bersama dengan "kaki kuda" dan "kerangka meriam" merupakan "dimensi ketiga di papan catur" catur Tiongkok. ElephantEye biasanya digunakan bersama dengan ElephantBoard, sebuah software pengedit catatan catur yang artinya memiliki rencana yang jelas (Board dalam bahasa Inggris berarti "papan"). (Catatan: ElephantBoard kini telah berganti nama menjadi "Chess Wizard".)
2. Perjanjian Mesin
ElephantEye mendukung UCCI 3.0. Pengguna Xiangqi Merah Muda dapat memanggil mesin ElephantEye melalui adaptor mesin UCCI (UCCI2QH).
(1) Perintah UCCI yang didukung adalah:
ucci
pilihan set...
posisi {fen <fen_str> |. startpos} [bergerak <move_list>]
larangan bergerak <move_list>
pergi [merenungkan |. menggambar] ...
renungkan [menggambar] |.berhenti
selidiki {fen <fen_str> |. startpos} [bergerak <move_list>]
berhenti
(2) Informasi UCCI yang dapat dikembalikan adalah:
id {nama <nama_mesin> |.versi <nama_versi> |. hak cipta <info_hak cipta> |. penulis <nama_penulis> |.
pilihan...
ucciok
informasi...
{nobestmove |. bestmove <best_move> [merenungkan <ponder_move>] [mengundurkan diri |.
pophash [gerakan terbaik <gerakan_terbaik>] [batas bawah <nilai> kedalaman <kedalaman>] [batas atas <nilai> kedalaman <kedalaman>]
selamat tinggal
3. Pengaturan parameter
Sebagai mesin UCCI, ElephantEye memiliki beberapa parameter yang dapat diatur (dapat diatur langsung di <Chess Wizard>).
(1) Perpustakaan awal:
Pustaka pembuka default adalah BOOK.DAT di direktori program ElephantEye saat ini (ELEEYE.EXE), yang berisi 10.000 posisi simetris.
(2) Waktu berpikir:
Membatasi kedalaman berpikir biasanya bukan pilihan yang baik. Disarankan untuk menetapkan batas waktu dan membiarkan program mengalokasikan waktu secara otomatis. Saat menyelesaikan permainan mematikan atau menganalisis situasi, program dapat berpikir tanpa batas dan dapat berhenti berpikir kapan saja.
(3) Ukuran meja pengganti:
Meskipun ukuran tabel pengganti berdampak kecil pada kecepatan berjalan program, dan pengaturan default 16MB sudah cukup, ElephantEye tetap menyediakan fungsi pengaturan ukuran tabel pengganti. Jika memori memungkinkan, Anda dapat menambah ukuran tabel substitusi dengan tepat saat bermain catur lambat, namun disarankan untuk tidak melebihi setengah dari memori fisik.
(3) Tingkat penjahitan:
Untuk mempercepat pengoperasian program, ElephantEye menggunakan kliping kosong secara default, dan kemungkinan efek negatifnya minimal. Hanya level terendah yang menonaktifkan pemotongan kosong.
(4) Jumlah pengetahuan:
Jumlah pengetahuan terkait dengan keakuratan evaluasi situasi. Di antara tingkat pengetahuan ElephantEye, hanya tingkat terendah yang tidak menggunakan fungsi evaluasi situasi (hanya nilai sub-kekuatan yang dipertimbangkan). pada pengetahuan review untuk menganalisis posisi, dll. Dalam situasi ini, Anda dapat mencoba pengaturan ini.
(5) Keacakan:
ElephantEye menampilkan 4 tingkat keacakan. Semakin besar keacakannya, semakin besar kemungkinan program akan menghasilkan langkah yang menurutnya bukan langkah terbaik, namun "bukan langkah terbaik" bukannya tanpa manfaat apa pun, terutama bila perpustakaan pembuka tidak diaktifkan, sehingga meningkatkan jumlah keacakan dapat dihindari. Program melakukan gerakan yang sama dalam situasi yang sama.
4. Aturan
Mulai dari versi 2.0, ElephantEye tidak hanya mendukung aturan "keputusan jangka panjang sepihak untuk kalah", tetapi juga mendukung "keputusan jangka panjang untuk kalah". Karena keterbatasan kompleksitas program, hanya tiga situasi berikut yang dikenali sebagai "catch":
A. Kuda dan kereta atau artileri (pion) yang mempunyai akar;
B. Gerobak dan pasukan artileri kuda (pion) yang mempunyai akar;
C. Cannon menangkap kereta atau kavaleri berakar (pion).
Meskipun ElephantEye mungkin tidak dapat mengidentifikasi gerakan panjang dengan benar dalam situasi yang kompleks, karena ia mendukung perintah UCCI banmoves..., setelah pengguna mengira bahwa mesin telah melarang "gerakan panjang", mereka dapat menggunakan fungsi "setel larangan" dari <Chess Wizard> Biarkan mesin berubah secara paksa.
5. Algoritma Permainan
ElephantEye adalah program catur brute force yang menggunakan algoritma permainan yang ketat dan efektif:
(1) Pindahkan generator menggunakan baris bit dan kolom bit:
Baris bit (BitRanks) dan kolom bit (BitFiles) kondusif untuk pembuatan gerakan bidak catur geser (mobil dan meriam) (terutama gerakan penangkapan). Baris bit dan kolom bit dapat menggunakan tabel pencarian alih-alih loop pada Operasi sinar. Pada ElephantEye, teknologi bit baris dan bit kolom tidak hanya digunakan pada move generator saja, namun juga pada penentuan pinning.
(2) Pencarian situasi statis:
Saat melakukan pencarian statis, ElephantEye mencari jurus untuk menangkap atau menyingkirkan jenderal. Saat mencari jurus untuk ditangkap, ElephantEye menyaring tangkapan yang tidak penting, seperti pion yang tidak dapat merebut sungai, atau tentara yang menangkap uskup yang tidak dalam posisi bertahan. Metode menunggu tidak berada dalam cakupan pencarian statis.
(3) Pergerakan siklus dan deteksi jarak jauh:
ElephantEye dapat mengidentifikasi gerakan looping. Ketika gerakan looping terjadi, ia dapat menentukan pihak mana yang memimpin, dan akan memanfaatkan aturan yang melarang kapten.
(4) Tabel pengganti:
ElephantEye mengacu pada ide desain program catur Tiongkok "Running Horses", menggunakan tabel penggantian lapisan ganda yang mengutamakan kedalaman dan selalu tertutup, dan mengadopsi strategi pembaruan tabel penggantian koreksi batas low-out (high-out).
(5) Pemotongan blanko dengan pemeriksaan:
ElephantEye menggunakan kliping kosong dengan R=2 dan menggunakan kliping kosong yang dicentang di tahap akhir permainan.
(6) Pendalaman berulang/gerakan makan anak/gerakan mematikan/inspirasi tabel sejarah:
Penyortiran gerakan ElephantEye sangat sederhana dan jelas, diikuti dengan gerakan pendalaman berulang, gerakan penangkapan yang baik, gerakan mematikan, dan gerakan generatif yang diurutkan berdasarkan tabel riwayat.
(7) Umum/tunggal menyampaikan:
Untuk ekstensi selektif, ElephantEye menggunakan ekstensi umum dan hanya umum.
(8) Pencarian varian utama Alfa-Beta:
ElephantEye menggunakan penelusuran varian utama Alfa-Beta rekursif tradisional.
(9) Perpustakaan awal:
Perpustakaan pembukaan ElephantEye berisi total 10.000 gerakan simetris, diambil dari 8.000 permainan teratas dalam kompetisi catur individu nasional, kompetisi tim, Piala Wuyang, liga, dan permainan lainnya dari tahun 1990 hingga 2005.
(10) Pemikiran di belakang panggung dan strategi alokasi waktu:
ElephantEye mendukung fungsi pemikiran latar belakang, dan menyediakan dua strategi alokasi waktu, berbasis periode dan lembur, yang secara otomatis akan mengalokasikan waktu secara wajar.
6. Membuka perpustakaan
Perpustakaan pembuka ElephantEye dapat diproduksi oleh "Pembuat Perpustakaan Pembuka ElephantEye". Setelah menjalankan alat produksi, Anda harus memilih terlebih dahulu folder tempat rekaman permainan PGN berada, lalu menyimpannya sebagai file perpustakaan pembuka (biasanya BOOK.DAT). Secara umum, semakin banyak jumlah catatan catur yang digunakan untuk menghasilkan perpustakaan pembuka, semakin besar pula file perpustakaan pembuka yang dihasilkan.
Agar perpustakaan pembuka yang dihasilkan efektif untuk ElephantEye, Anda hanya perlu mengganti BOOK.DAT di direktori ElephantEye dengan file perpustakaan pembuka yang dihasilkan. Anda juga dapat menentukan file perpustakaan pembuka di kotak dialog "Pengaturan Mesin" <Chess Penyihir>.
7. Perpustakaan fungsi evaluasi situasi
ElephantEye Mulai dari versi 2.1, bagian pencarian dan bagian evaluasi situasi dari program telah dipisahkan. Bagian pencarian digabungkan dengan bagian evaluasi situasi dengan memanggil fungsi API.
Pemrogram catur lain dapat bermain lebih bebas berdasarkan ElephantEye. Menurut perjanjian LGPL, dua bagian pencarian dan evaluasi situasi diperlakukan sebagai perpustakaan program independen. Untuk menggunakan bagian mana pun, Anda hanya perlu mengungkapkan program sumber dari bagian tersebut. Dengan kata lain, jika bagian evaluasi situasi tidak menggunakan kode terbuka apa pun, maka pemrogram tidak berkewajiban untuk mengungkapkan program sumber bagian tersebut, dan hal yang sama juga berlaku untuk bagian pencarian.
Antarmuka fungsi API evaluasi situasi ElephantEye didefinisikan sebagai berikut:
A. Nama mesin evaluasi situasi: const char *GetEngineName(void);
B. Antarmuka fungsi pra-evaluasi posisi: void PreEvaluate(PositionStruct *lppos, PreEvalStruct *lpPreEval);
C. Antarmuka fungsi evaluasi posisi: int Evaluate(const PositionStruct *lppos, int vlAlpha, int vlBeta);
Diantaranya, PositionStruct dan PreEvalStruct harus sesuai dengan struktur yang ditentukan masing-masing di position.h dan pregen.h.
8. Sumber program
Program sumber ElephantEye mencakup 9 modul, isinya kira-kira sebagai berikut:
(1) ucci.h/ucci.cpp
Modul interpretasi perintah UCCI, termasuk program penerima input baris di Windows dan Unix;
(2) pregen.h/pregen.cpp
Modul untuk menghasilkan array Zobrist dan memindahkan tabel preset. Tabel prasetel ElephantEye dibagi menjadi dua bagian. Satu adalah tabel prasetel untuk menggeser bidak catur (termasuk tanpa bidak, benteng, meriam, dan setiap bidak lainnya). Ini mengimplementasikan teknologi baris posisi dan kolom posisi bidak catur lainnya, yang menghindari penilaian batas yang rumit saat menghasilkan gerakan.
(3) posisi.h/posisi.cpp
Terutama menggambarkan struktur data dan fungsi gerakan dan situasi. Pemrosesan situasi adalah fokus dari modul ini. Konten pemrosesan meliputi inisialisasi situasi, impor string FEN, pergerakan bidak catur, penilaian rasionalitas gerakan pembunuh, penilaian umum, deteksi pemimpin dan siklus, penyesuaian nilai bidak, dll. Ini juga mencakup 5 tabel nilai posisi Sub-kekuatan.
(4)genmoves.cpp
Generator gerakan mencakup dua jenis yang menghasilkan gerakan yang menangkap bidak dan gerakan yang tidak menangkap bidak, tetapi tidak hanya dapat menghasilkan gerakan yang menghilangkan jenderal. Saat menghasilkan gerakan makan anak, setiap gerakan diberi nilai MVV (LVA) (atau quasi-SEE) yang sesuai. Modul ini juga memiliki fungsi yang secara khusus menentukan apakah bidak catur dilindungi untuk menghitung nilai MVV (LVA). Untuk bidak catur yang dilindungi, hitung nilai MVV-LVA (tidak dihitung jika kurang dari nol). , hanya menghitung nilai MVV. Oleh karena itu, program untuk menentukan apakah suatu bidak catur mempunyai root juga disertakan dalam modul ini.
(5) hash.h/hash.cpp
Tabel substitusi, tabel riwayat, dan modul manajemen daftar perpindahan mencakup alokasi dan akses tabel substitusi, perolehan variasi utama, dan operasi lainnya.
(6) buku.h/buku.cpp
Membuka modul membaca perpustakaan.
(7) movesort.h/movesort.cpp
Pindahkan modul pengurutan daftar.
(8) pencarian.h/search.cpp
Selain tiga proses utama pencarian statis, pencarian lengkap, dan pencarian simpul akar, modul pencarian juga mencakup kontrol pendalaman berulang, pemikiran latar belakang, alokasi waktu, statistik parameter pencarian, dan keluaran informasi pencarian. Modul ini merupakan modul inti dari keseluruhan program.
(9) eleeye.cpp
Program utama (yaitu fungsi utama).
(10) preeval.h/preeval.cpp
Pra-generator susunan posisi sub-kekuatan, ElephantEye secara linier menyesuaikan susunan posisi sub-kekuatan berdasarkan dua parameter "ofensif/pertahanan" dan "permainan pembuka/tengah/permainan akhir".
(11) evaluasi.cpp
Sedangkan untuk fungsi evaluasi situasi, ElephantEye mengadopsi mekanisme evaluasi malas empat tingkat. Tingkat paling kasar hanya mengevaluasi pola catur khusus, tingkat selanjutnya mengevaluasi penahanan, tingkat selanjutnya mengevaluasi fleksibilitas benteng, dan tingkat tertinggi juga mengevaluasi penghalang. dari ksatria.
9. Kinerja program
Desain ElephantEye berfokus pada algoritma pencarian, namun pengetahuannya relatif kurang. Pada prosesor 2.8GHz, sekitar 1.000.000 node dapat dicari per detik (termasuk pencarian reguler dan pencarian statis), dan sekitar 11 lapisan dapat dicari dalam situasi permainan tengah pada umumnya dalam waktu 1 menit.
Dalam hal kekuatan catur, ElephantEye berada pada level yang sama dengan program seperti "Qiyin" dan SaoLa (Chess Challenger). Namun, karena kelemahan dalam fungsi evaluasi posisi, ElephantEye jauh dari perangkat lunak catur komersial teratas (Xie Master, Keluarga Xiangqi, Xiangqi Qibing, Qi).
ElephantEye telah diuji di website permainan catur seperti Lianzhong dan Yitian. Diukur dari poin nilai, rekor Lianzhong.com sekitar 2.500 poin, rekor catur cepat Yitian sekitar 2.000 poin, dan catur lambat sekitar 1.500 poin.
Pada bulan September 2005, dengan bantuan Tuan Shi Jinshan, seorang penggemar perangkat lunak catur Taiwan, ElephantEye berpartisipasi dalam kompetisi grup catur Tiongkok pada Olimpiade Komputer ICGA ke-10 yang diadakan di Taipei, dengan rekor 7 kemenangan, 5 kekalahan, dan 14 kekalahan. 14 program. Peringkat 11; Agustus 2006 ElephantEye Mengikuti kejuaraan permainan komputer nasional pertama yang diadakan di Beijing, dengan rekor 7 kali menang, 2 kali kalah dan 11 kali kalah, menduduki peringkat ke-7 dari 18 program.
10. Sumber daya terkait
Program sumber ElephantEye dirilis dalam proyek XiangQi Wizard dari SourceForge, dan halamannya adalah:
http://sourceforge.net/projects/xqwizard/
Peningkatan versi ElephantEye dirilis secara serentak secara real time di situs SourceForge SVN Alamat aksesnya adalah:
https://xqwizard.svn.sourceforge.net/svnroot/xqwizard/
Anda dapat menggunakan program klien SVN seperti TortoiseSVN untuk mendapatkan kode terbaru (disinkronkan sepenuhnya dengan pengembang). Alamat pengenalan dan pengunduhan TortoiseSVN adalah:
http://sourceforge.net/projects/tortoisesvn/
ElephantEye harus dijalankan pada program catur yang mendukung UCCI (seperti <Chess Wizard>). Program instalasi <Chess Wizard> berisi ElephantEye versi terbaru.
<Chess Wizard> dapat diunduh dari situs web berikut:
http://www.skycn.com/soft/24665.html (Stasiun Perangkat Lunak Sky)
http://www.onlinedown.net/soft/38287.htm (Taman Perangkat Lunak Huajun)
Selain program sumber ElephantEye itu sendiri, paket program sumber ElephantEye juga mencakup modul tambahan berikut:
(1) Kode dasar (base): Memberikan instruksi perakitan, panggilan fungsi sistem dan fungsi lainnya;
(2) Modul aturan catur Cina (akses): menyediakan antarmuka bagi perangkat lunak lain untuk menggunakan kode ElephantEye;
(3) Modul produksi perpustakaan pembuka (BOOK): kode untuk membuat perpustakaan pembuka BOOK.DAT;
(4) UCCI Engine League Simulator (LEAGUE): Menyediakan platform pencocokan batch otomatis untuk pengujian dan kompetisi mesin UCCI;
(5) UCCI Engine Search Tree Analyzer (TREE): alat analisis rute pencarian untuk mesin UCCI (mendukung UCCI 2.2+);
(6) Alat Rekor Catur XQF (XQFTOOLS): Menyediakan alat untuk mengkonversi XQF dan Rekor catur lainnya menjadi PGN;
(7) Adaptor Catur Merah Muda (UCCI2QH): Menyediakan antarmuka untuk Catur Merah Muda untuk memanggil mesin UCCI;
(8) Mesin catur merah muda mendukung adaptor UCCI (QH2UCCI): menyediakan antarmuka untuk catur merah muda "Telur Impian" untuk bergabung dengan pengujian mesin UCCI;
(9) BBS Chess (BBSCHESS): Alat pengaturan posisi catur yang dibuat dengan Visual Basic, yang dapat menempelkan posisi catur berwarna pada BBS berbagai universitas;
(10) Generator gambar papan catur (FEN2BMP): alat praktis yang dapat mengubah file FEN catur dan catur Cina menjadi file BMP;
(11) Konversi pengkodean (codec), termasuk transcoding Sederhana dan Tradisional, transcoding teks UNIX, transcoding Base64, dll.;
(12) Alat lain (MISC): termasuk komunikasi jaringan sederhana, pengujian saluran pipa, dan alat lainnya;
(13) Dokumen Dokumentasi (DOC): yaitu seri “Eksplorasi Pemrograman Catur Tiongkok”;
(14) Rekor catur yang berpartisipasi (CCGC): Semua rekor catur ElephantEye yang berpartisipasi dalam Kejuaraan Permainan Komputer Nasional (CCGC) pertama.
Jika Anda ingin mendapatkan informasi lebih detail tentang ElephantEye, Anda dapat login ke website Xiangqi Encyclopedia:
http://www.xqbase.com/