محرك الشطرنج UCI مكتوب بلغة Rust، خليفة Proxima b وProxima b 2.0 وCosette. تتم كتابة المشروع بعد ساعات، بهدف الوصول إلى قوة 3000 إيلو. مثالية كشريك في السجال لمحركات الشطرنج الأخرى، حيث تم اختبارها بشكل مكثف باستخدام ألعاب سريعة جدًا. يدعم قواعد طاولات Syzygy وMultiPV والتأمل والترابط المتعدد.
القوة الحالية : 3000 إيلو (01-11-2024)
التوثيق : https://tearth.dev/Inanis/
إصدار | تاريخ الافراج عنه | إيلو | التغييرات الرئيسية |
---|---|---|---|
1.5.0 | 01-11-2024 | 3000 | نوافذ الطموح، وتحسين الأداء وتعدد الخيوط |
1.4.0 | 03-08-2024 | 2950 | تحقق من الامتدادات، وتوقيت المحيط الهادئ النسبي، وارشادات التحرك المضاد |
1.3.0 | 14-06-2024 | 2900 | موالف النسب المتدرج، تحسين الرؤية والتقييم |
1.2.1 | 04-09-2023 | 2850 | يتم تنفيذ الأوامر مباشرة من سطر الأوامر، بشكل مثالي في وضع UCI |
1.2.0 | 15-01-2023 | 2850 | تحسين دعم Syzygy والأداء العام وتحسين الاستقرار |
1.1.1 | 14-08-2022 | 2800 | مجموعة من الإصلاحات للمشكلات المبلغ عنها وتحسين الاستقرار |
1.1.0 | 31-07-2022 | 2800 | قواعد طاولات Syzygy، MultiPV، التقييم المعدل |
1.0.1 | 05-04-2022 | 2750 | مجموعة من الإصلاحات للمشكلات المبلغ عنها وتحسين الاستقرار |
1.0.0 | 02-04-2022 | 2750 | الإصدار الأولي |
يحتوي كل إصدار على مجموعة من الثنائيات لمنصات مختلفة: Linux (x86، x86-64، ARM، AArch64) وWindows (x86، x86-64). تم أيضًا تجميع كل من Linux x86-64 وWindows x86-64 مع متغيرين إضافيين لمجموعة التعليمات: POPCNT وPOPCNT + BMI1 + BMI2 - للحصول على أفضل أداء، يرجى محاولة تشغيل الأمر benchmark
باستخدام متغيرات المحرك المختلفة واختيار الخيار الذي يناسبك. لم يُرجع خطأً ويحتوي على التعليمات الأكثر تقدمًا.
شكرا جزيلا لجميع المختبرين وجهودهم! يرجى ملاحظة أن Elo في القوائم أعلاه يمكن أن يختلف قليلاً عن تقديرات المؤلف بسبب اختلاف مجموعات المحركات والتحكم في الوقت المستخدم في الاختبارات.
لدى Inanis حساب Lichess رسمي، حيث يمكنك محاولة تحدي المحرك: https://lichess.org/@/InanisBot. يرجى ملاحظة أن التقييمات هناك أقل من قيمتها الحقيقية ولا يمكن مقارنتها بتقييمات CCRL. يقبل لعبة الشطرنج القياسية باستخدام الرصاصة والهجوم الخاطف والتحكم السريع والكلاسيكي في الوقت.
Hash
(الافتراضي: 2 ميجابايت) - الحجم الإجمالي (بالميجابايت) لجدول النقل وقابلية تجزئة البيدقMove Overhead
(الافتراضي: 10 مللي ثانية) - مقدار الوقت (بالمللي ثانية) الذي يجب حجزه أثناء البحث لبعض التأخيرات غير المتوقعة (مثل بطء واجهة المستخدم الرسومية أو تأخر الشبكة)MultiPV
(الافتراضي: 1 خط PV) - عدد الخطوط الكهروضوئية التي يجب عرضها أثناء البحثThreads
(الافتراضي: موضوع واحد) - عدد المواضيع المستخدمة أثناء البحث (يجب أن يكون أقل من عدد نوى المعالج للحصول على أفضل أداء)SyzygyPath
(الافتراضي: <empty>) - موقع قواعد جداول Syzygy الاختياريةSyzygyProbeLimit
(الافتراضي: 8 قطع) - الحد الأقصى لعدد القطع التي يجب تنفيذ مسبار قاعدة الطاولة لهاSyzygyProbeDepth
(الافتراضي: 6) - الحد الأدنى من العمق الذي يجب عنده تنفيذ مسبار قاعدة الطاولةPonder
(افتراضي: خطأ) - يسمح للمحرك بالتفكير أثناء وقت الخصمCrash Files
(الافتراضي: خطأ) - عند تمكينها، يتم حفظ رسائل الأعطال في دليل ./crash افتراضيًا، سيؤدي استدعاء cargo build
أو cargo build --release
إلى بناء المحرك دون دعم قواعد جداول Syzygy (لكنها ستظل تعمل بكامل طاقتها). لتضمينه، يرجى إضافة --features syzygy,bindgen
والتأكد من تثبيت clang عند العمل على Windows (لا يدعم MSVC بعض عناصر C11، لذلك لا يمكن استخدامه).
يحتوي Inanis على موالف مدمج، والذي يسمح بتحسين جميع معلمات التقييم باستخدام طريقة ضبط Texel المعروفة. كمخرجات، هناك ملفات مصدر Rust تم إنشاؤها بطريقة تسمح بلصقها مباشرة في الكود المصدري للمحرك.
مثال لملف الإدخال:
r2qkr2/p1pp1ppp/1pn1pn2/2P5/3Pb3/2N1P3/PP3PPP/R1B1KB1R b KQq - c9 "0-1";
r4rk1/3bppb1/p3q1p1/1p1p3p/2pPn3/P1P1PN1P/1PB1QPPB/1R3RK1 b - - c9 "1/2-1/2";
4Q3/8/8/8/6k1/4K2p/3N4/5q2 b - - c9 "0-1";
r4rk1/1Qpbq1bp/p1n2np1/3p1p2/3P1P2/P1NBPN1P/1P1B2P1/R4RK1 b - - c9 "0-1";
أمثلة على تشغيل الموالف:
tuner ./input/quiet.epd ./output/ true 0.007 0.75 1
- قم بتشغيل الضبط المفرد للمواضع المخزنة في quiet.epd
، بدءًا من القيم العشوائية، مع ثابت القياس 0.007، ونسبة WDL 0.75 وحفظ النتيجة في ملف دليل output
tuner ./input/quiet.epd ./output/ false None 1.0 4
- قم بتشغيل الضبط باستخدام 4 خيوط للمواضع المخزنة في quiet.epd
، بدءًا من القيم المحددة بالفعل في المحرك، مع تحديد ثابت القياس قبل الضبط، نسبة WDL 1.0 وحفظ النتيجة في دليل output
منذ الإصدار 1.1.0، لدى Inanis أيضًا أمر لإنشاء ملفات epd بمواضع هادئة، استنادًا إلى مدخلات PGN المتوفرة:
dataset ./input/games.pgn ./output/quiet.epd 16 250 50 3 0.5
- قم بإنشاء ملف quiet.epd
جديد.epd، عن طريق تحليل games.pgn
وأخذ 3 مواضع عشوائية من كل لعبة، وتجاهلها بطبقة أقل من 16، ودرجة التقييم أكبر من 250، والفرق بين درجة التقييم ودرجة البحث الهادئ أكبر من 50. اللعبة المتوسطة المرحلة 0.5 تعني أن المراكز ستكون متوازنة (> 0.5 = قرب الافتتاح، <0.5 = قرب النهاية) يمكن إجراء اختبار أداء التقييم الاستراتيجي باستخدام أمر test
، الذي يقوم بإجراء بحث ثابت العمق عن المواضع المخزنة في ملف EPD.
مثال لملف مجموعة الاختبار:
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
أمثلة على إجراء الاختبارات:
testset ./input/STS1.epd 16 64 4
- قم بتشغيل بحث ثابت العمق (16 في هذه الحالة) عن جميع المواضع المخزنة في ملف STS1.epd
، باستخدام جدول تبديل بحجم 64 ميجابايت و4 خيوط. لتصنيف الاختبار على أنه ناجح، يجب أن يُرجع التكرار الأخير أفضل حركة صحيحة. بناء التبعيات
تبعيات التطوير
المكتبات الخارجية
نظرًا لأن Inanis هو مشروع مفضل، فإن طلبات السحب غير مقبولة حاليًا - وقد يتغير هذا أو لا يتغير في المستقبل، اعتمادًا على الطريقة التي سيسير بها المشروع. ومع ذلك، لا تتردد في طرح القضايا أو الاقتراحات، فهي محل تقدير كبير.
يمكن تنفيذ جميع الأوامر المذكورة أدناه في الوضع التفاعلي ومباشرة من سطر الأوامر، على سبيل المثال inanis.exe perft 5
. الإدخالات التي تحمل علامة [DEV] متاحة فقط عندما يتم تجميع المحرك باستخدام ميزة dev
.
=== General ===
benchmark - run test for a set of positions
evaluate [fen] - show score for the position
uci - run Universal Chess Interface
quit - close the application
=== Development ===
[DEV] dataset [pgn] [output] [min_ply] [max_score] [max_diff] [density] - dataset generator
[DEV] magic - generate magic numbers
[DEV] testset [epd] [depth] [ttable_size] [threads_count] - run test of positions
[DEV] tuner [epd] [output] [randomize] [k] [wdl_ratio] [threads_count] - run tuning
=== Perft ===
perft [depth]
perft [depth] fen [fen]
perft [depth] moves [moves]
=== Divided Perft ===
dperft [depth]
dperft [depth] fen [fen]
dperft [depth] moves [moves]
=== Quick Perft ===
qperft [depth] [threads_count] [hashtable_size_mb]
qperft [depth] [threads_count] [hashtable_size_mb] fen [fen]
qperft [depth] [threads_count] [hashtable_size_mb] moves [moves]