محرك XiangQi (الشطرنج الصيني) لـ XQWizard مع الذكاء الاصطناعي القوي
برنامج لعبة الشطرنج الصينية ElephantEye (عين الفيل) الإصدار : 3.15
شبكة موسوعة Xiangqi* مارس 2008
(* البريد الإلكتروني: [email protected])
1. مقدمة
ElephantEye هو برنامج شطرنج صيني مجاني بموجب فرضية اتباع رخصة GNU الصغرى العامة، يمكن لعشاق الشطرنج والمبرمجين استخدام ElephantEye وبرنامجه المصدر بحرية.
الاسم الصيني لـElephantEye هو "عين الفيل"، والتي تشكل مع "أرجل الحصان" و"إطار المدفع" "البعد الثالث على رقعة الشطرنج" للشطرنج الصيني. عادةً ما يتم استخدام ElephantEye جنبًا إلى جنب مع ElephantBoard، وهو برنامج لتحرير سجلات الشطرنج، مما يعني وجود خطة واضحة (Board تعني "لوحة" باللغة الإنجليزية). (ملاحظة: تمت إعادة تسمية ElephantBoard الآن إلى "Chess Wizard".)
2. اتفاقية المحرك
يدعم ElephantEye UCCI 3.0 ويمكن لمستخدمي Light Red Xiangqi الاتصال بمحرك ElephantEye من خلال محول محرك UCCI (UCCI2QH).
(1) أوامر UCCI المدعومة هي:
UCCI
خيار الاعداد...
الموضع {fen <fen_str> |.
عمليات الحظر <move_list>
اذهب [تأمل | ارسم] ...
بوندرهيت [رسم] |
مسبار {fen <fen_str> |.
يترك
(2) معلومات UCCI التي يمكن إرجاعها هي:
المعرف {اسم <engine_name> | الإصدار <version_name> | حقوق الطبع والنشر <copyright_info> |.
خيار...
ucciok
معلومات...
{nobestmove |.bestmove <best_move> [يتأمل <ponder_move>] [يرسم استقالة]}
بوبهاش [bestmove <best_move>] [عمق <القيمة> السفلي <عمق>] [عمق <قيمة> العلوي <عمق>]
الوداع
3. إعدادات المعلمة
باعتباره محرك UCCI، يحتوي ElephantEye على العديد من المعلمات التي يمكن تعيينها (يمكن ضبطها مباشرة في <Chess Wizard>).
(1) افتتاح المكتبة:
مكتبة الفتح الافتراضية هي BOOK.DAT في الدليل الحالي لبرنامج ElephantEye (ELEEYE.EXE)، والذي يحتوي على 10000 موضع متماثل.
(2) وقت التفكير:
عادةً لا يكون تحديد عمق التفكير خيارًا جيدًا. يوصى بتعيين حد زمني والسماح للبرنامج بتخصيص الوقت تلقائيًا. عند حل لعبة قتل أو تحليل موقف ما، يستطيع البرنامج التفكير بلا حدود ويمكنه التوقف عن التفكير في أي وقت.
(3) حجم الجدول البديل:
على الرغم من أن حجم جدول الاستبدال له تأثير ضئيل على سرعة تشغيل البرنامج، وأن الإعداد الافتراضي البالغ 16 ميجابايت كافٍ، إلا أن ElephantEye لا يزال يوفر وظيفة تحديد حجم جدول الاستبدال. إذا سمحت الذاكرة، يمكنك زيادة حجم طاولة الاستبدال بشكل مناسب عند لعب الشطرنج البطيء، ولكن يوصى بعدم تجاوز نصف الذاكرة الفعلية.
(3) درجة الخياطة:
لتسريع عمليات البرنامج، يستخدم ElephantEye قصاصات فارغة بشكل افتراضي، وتكون احتمالية حدوث تأثيرات سلبية ضئيلة. المستوى الأدنى فقط يعطل الاقتصاص الفارغ.
(4) مقدار المعرفة:
يرتبط مقدار المعرفة بدقة تقييم الموقف. من بين مستويات المعرفة في ElephantEye، لا يستخدم المستوى الأدنى فقط وظيفة تقييم الموقف (يتم أخذ قيمة القوة الفرعية فقط في الاعتبار). على معرفة المراجعة لتحليل الموقف، وما إلى ذلك. في هذه الحالة، يمكنك تجربة هذا الإعداد.
(5) العشوائية:
يتميز ElephantEye بأربعة مستويات من العشوائية. كلما زادت العشوائية، زاد احتمال أن يأتي البرنامج بخطوة يعتقد أنها ليست الحركة الأفضل، لكن "ليست الحركة الأفضل" لا تخلو من أي فوائد، خاصة عندما لا يتم تمكين المكتبة المفتوحة، مما يزيد بشكل مناسب من يمكن تجنب العشوائية حيث يقوم البرنامج بنفس الحركة في نفس الموقف.
4. القواعد
بدءًا من الإصدار 2.0، لا يدعم ElephantEye قاعدة "القرار الأحادي طويل المدى بالخسارة" فحسب، بل يدعم أيضًا "القرار طويل المدى بالخسارة" الذي يتضمن "التحقق" و"التقاط". نظرًا للقيود المفروضة على تعقيد البرنامج، يتم التعرف على المواقف الثلاثة التالية فقط على أنها حالات "التقاط":
أ. الخيول والمركبات أو المدفعية (البيادق) ذات الجذور؛
ب. عربات ومدفعية الخيول (بيادق) ذات جذور؛
ج. يلتقط المدفع العربات أو الفرسان المتجذرين (البيادق).
على الرغم من أن ElephantEye قد لا يكون قادرًا على تحديد التحركات الطويلة بشكل صحيح في المواقف المعقدة، لأنه يدعم أمر UCCI banmoves...، بمجرد أن يعتقد المستخدم أن المحرك قد حظر "التحركات الطويلة"، فيمكنه استخدام وظيفة "ضبط الحظر" الخاصة بـ <معالج الشطرنج> دع المحرك يتغير بقوة.
5. خوارزمية اللعبة
ElephantEye هو برنامج شطرنج قوي يستخدم خوارزميات لعب صارمة وفعالة:
(1) انقل المولد باستخدام صفوف البت وأعمدة البت:
تساعد صفوف البت (BitRanks) وأعمدة البت (BitFiles) على إنشاء حركات قطع الشطرنج المنزلقة (السيارات والمدافع) (خاصة حركات الالتقاط). يمكن لصفوف البت وأعمدة البت استخدام جداول البحث بدلاً من الحلقات على الأشعة. في ElephantEye، لا يتم استخدام تقنية صفوف البتات وأعمدة البتات في مولد الحركة فحسب، بل أيضًا في تحديد التثبيت.
(2) البحث عن الوضع الثابت:
عند إجراء بحث ثابت، بحثت ElephantEye عن الحركات للقبض على الجنرالات أو إزالتها. عند البحث عن الحركات للقبض عليها، قامت ElephantEye بتصفية عمليات الالتقاط غير المهمة، مثل البيادق التي لا يمكنها الاستيلاء على النهر، أو الجنود الذين يأسرون الأسقف الذي ليس في حالة دفاع. طرق الانتظار ليست ضمن نطاق البحث الثابت.
(3) تحركات الدورة والكشف بعيد المدى:
يمكن لـ ElephantEye تحديد الحركات المتكررة عند حدوث حركات متكررة، يمكنها تحديد الجانب الذي هو القائد، وسوف تستفيد من القواعد التي تحظر القادة. ومع ذلك، لا تستطيع ElephantEye حاليًا تحديد عمليات الاستيلاء الطويلة.
(4) جدول الاستبدال:
يشير ElephantEye إلى فكرة تصميم برنامج الشطرنج الصيني "Running Horses"، ويستخدم جداول الاستبدال ذات الطبقة المزدوجة ذات العمق الأول والمغطاة دائمًا، ويعتمد استراتيجية تحديث جدول استبدال تصحيح الحدود المنخفضة (العلوية).
(5) القطع الفارغ مع التفتيش:
يستخدم ElephantEye القطع الفارغ مع R = 2 ويستخدم القطع الفارغ المحدد في مرحلة نهاية اللعبة.
(6) التعميق التكراري/حركات أكل الأطفال/التحركات القاتلة/إلهام جدول التاريخ:
يعد فرز حركات ElephantEye بسيطًا وواضحًا للغاية، تليها حركات تعميق متكررة، وحركات التقاط جيدة، وحركات قاتلة وحركات توليدية مرتبة حسب جدول التاريخ.
(7) يمتد العام/الوحيد إلى:
بالنسبة للامتدادات الانتقائية، يستخدم ElephantEye الامتدادات العامة والعامة فقط.
(8) بحث البديل الرئيسي لـ Alpha-Beta:
يستخدم ElephantEye بحث المتغير الأساسي Alpha-Beta العودي التقليدي.
(9) افتتاح المكتبة:
تحتوي مكتبة ElephantEye الافتتاحية على إجمالي 10000 حركة متناظرة، مستخرجة من 8000 مباراة من أفضل المباريات في مسابقات الشطرنج الوطنية الفردية، ومسابقات الفرق، وكأس ويانغ، والبطولات وغيرها من الألعاب من عام 1990 إلى عام 2005.
(10) التفكير وراء الكواليس واستراتيجيات تخصيص الوقت:
يدعم ElephantEye وظيفة التفكير في الخلفية، ويوفر استراتيجيتين لتخصيص الوقت، على أساس الفترة والعمل الإضافي، والتي ستخصص الوقت تلقائيًا بشكل معقول.
6. فتح المكتبة
يمكن إنتاج مكتبة ElephantEye الافتتاحية بواسطة "ElephantEye Open Library Maker". بعد تشغيل أداة الإنتاج، يجب عليك أولاً تحديد المجلد الذي يوجد به سجل لعبة PGN، ثم حفظه كملف مكتبة مفتوح (عادةً BOOK.DAT). بشكل عام، كلما زاد عدد سجلات الشطرنج المستخدمة لإنشاء المكتبة الافتتاحية، زاد حجم ملف المكتبة الافتتاحية الذي تم إنشاؤه.
من أجل جعل المكتبة المفتوحة التي تم إنتاجها فعالة لـ ElephantEye، ما عليك سوى استبدال BOOK.DAT في دليل ElephantEye بملف المكتبة المفتوحة الذي تم إنشاؤه. يمكنك أيضًا تحديد ملف المكتبة المفتوحة في مربع الحوار "إعدادات المحرك" في <Chess معالج>.
7. مكتبة وظيفة تقييم الوضع
ElephantEye بدءًا من الإصدار 2.1، تم فصل جزء البحث وجزء تقييم الموقف في البرنامج، ويقترن جزء البحث بجزء تقييم الموقف عن طريق استدعاء وظائف API.
يمكن لمبرمجي الشطرنج الآخرين اللعب بحرية أكبر على أساس ElephantEye. وفقًا لاتفاقية LGPL، يتم التعامل مع جزأين البحث وتقييم الحالة كمكتبات برامج مستقلة لاستخدام أي جزء منه، ما عليك سوى الكشف عن البرنامج المصدر لذلك الجزء. بمعنى آخر، إذا كان جزء تقييم الموقف لا يستخدم أي كود مفتوح، فلن يكون المبرمج ملزمًا بالكشف عن البرنامج المصدر لهذا الجزء، وينطبق الشيء نفسه على جزء البحث.
يتم تعريف واجهة وظيفة واجهة برمجة التطبيقات (API) لتقييم الموقف الخاصة بـ ElephantEye على النحو التالي:
A. اسم محرك تقييم الموقف: const char *GetEngineName(void);
ب. واجهة وظيفة التقييم المسبق للموضع: void PreEvaluate(PositionStruct *lppos, PreEvalStruct *lpPreEval);
C. واجهة وظيفة تقييم الموضع: int Evaluate(const PositionStruct *lppos, int vlAlpha, int vlBeta);
من بينها، PositionStruct وPreEvalStruct يجب أن يتوافقا مع الهياكل المحددة في Position.h وpregen.h على التوالي.
8. برنامج المصدر
يتضمن البرنامج المصدر لـElephantEye 9 وحدات، والمحتويات تقريبًا كما يلي:
(1) ucci.h/ucci.cpp
وحدة تفسير أوامر UCCI، بما في ذلك برامج استقبال إدخال الخط ضمن Windows وUnix؛
(2) pregen.h/pregen.cpp
وحدة لتوليد صفائف Zobrist ونقل الجداول المعدة مسبقًا. ينقسم الجدول المحدد مسبقًا في ElephantEye إلى جزأين. أحدهما هو الجدول المحدد مسبقًا لقطع الشطرنج المنزلقة (بما في ذلك عدم وجود قطع، والرخ، والمدافع وكل قطعة أخرى). قطع الشطرنج الأخرى، والتي تتجنب الأحكام الحدودية المرهقة عند توليد التحركات.
(3) موقف.h/position.cpp
يصف بشكل أساسي بنية البيانات ووظائف التحركات والمواقف. معالجة الموقف هي محور هذه الوحدة. يتضمن محتوى المعالجة تهيئة الموقف، واستيراد سلسلة FEN، وحركة قطع الشطرنج، والحكم العقلاني على حركة القاتل، والحكم العام، واكتشاف القائد والدورة، وتعديل قيمة القطع، إلخ. ويتضمن أيضًا جدول قيمة موضع القوة الفرعية الخمسة.
(4)genmoves.cpp
يتضمن منشئ الحركة نوعين يقومان بإنشاء حركات تلتقط القطع وحركات لا تلتقط القطع، ولكن لا يمكنها فقط إنشاء حركات تزيل الجنرالات. أثناء إنشاء حركات أكل الأطفال، يتم تعيين قيمة MVV (LVA) (أو شبه SEE) لكل حركة. تحتوي هذه الوحدة أيضًا على وظيفة تحدد على وجه التحديد ما إذا كانت قطع الشطرنج محمية لحساب قيمة MVV (LVA) بالنسبة لقطع الشطرنج المحمية، احسب قيمة MVV-LVA (لا يتم احتسابها إذا كانت أقل من الصفر) بالنسبة لقطع الشطرنج غير المحمية ، احسب قيمة MVV فقط. لذلك، تم أيضًا تضمين برنامج تحديد ما إذا كانت قطعة الشطرنج لها جذر في هذه الوحدة.
(5) hash.h/hash.cpp
تتضمن وحدة إدارة جدول الاستبدال وجدول التاريخ وقائمة النقل تخصيص جداول الاستبدال والوصول إليها والحصول على الاختلافات الرئيسية والعمليات الأخرى.
(6) book.h/book.cpp
فتح وحدة القراءة بالمكتبة.
(7) movesort.h/movesort.cpp
نقل وحدة فرز القائمة.
(8) search.h/search.cpp
بالإضافة إلى العمليات الرئيسية الثلاث للبحث الثابت والبحث الكامل والبحث عن عقدة الجذر، تتضمن وحدة البحث أيضًا التحكم في التعميق التكراري والتفكير في الخلفية وتخصيص الوقت وإحصائيات معلمات البحث ومخرجات معلومات البحث. هذه الوحدة هي الوحدة الأساسية للبرنامج بأكمله.
(9) eleeye.cpp
البرنامج الرئيسي (أي الوظيفة الرئيسية).
(10) بريفال.h/preeval.cpp
المولد المسبق لمصفوفة الطاقة الفرعية، ElephantEye يضبط خطيًا مصفوفة موضع الطاقة الفرعية بناءً على معلمتين "الهجوم/الدفاع" و"اللعبة الافتتاحية/الوسطى/نهاية اللعبة".
(11) تقييم.cpp
أما بالنسبة لوظيفة تقييم الموقف، فإن ElephantEye يعتمد آلية تقييم كسولة مكونة من أربعة مستويات، المستوى الأقسى يقيم فقط أنماط الشطرنج الخاصة، والمستوى الآخر يقيم الاحتواء، والمستوى الآخر يقيم مرونة الرخ، والمستوى الأعلى يقيم أيضًا العرقلة. من الفارس.
9. أداء البرنامج
يركز تصميم ElephantEye على خوارزميات البحث، لكنه يفتقر نسبيًا إلى المعرفة. باستخدام معالج بسرعة 2.8 جيجا هرتز، يمكن البحث في حوالي 1,000,000 عقدة في الثانية (بما في ذلك البحث العادي والبحث الثابت)، ويمكن البحث في 11 طبقة تقريبًا في حالة وسط اللعبة النموذجية خلال دقيقة واحدة.
من حيث قوة الشطرنج، فإن ElephantEye على نفس مستوى برامج مثل "Qiyin" وSaoLa (Chess Challenger)، ومع ذلك، نظرًا للعيوب في وظيفة تقييم الموضع، فإن ElephantEye بعيدًا عن أفضل برامج الشطرنج التجارية (Xie Master،). عائلة Xiangqi، Xiangqi Qibing، Qi). لا تزال هناك فجوة معينة.
تم اختبار ElephantEye على مواقع ألعاب الشطرنج مثل Lianzhong وYitian، حيث يبلغ سجل Lianzhong.com حوالي 2500 نقطة، ويبلغ سجل Yitian في الشطرنج السريع حوالي 2000 نقطة، والشطرنج البطيء حوالي 1500 نقطة.
في سبتمبر 2005، بمساعدة السيد شي جين شان، أحد عشاق برامج الشطرنج التايوانية، شاركت ElephantEye في مسابقة مجموعة الشطرنج الصينية في أولمبياد الكمبيوتر العاشر ICGA الذي أقيم في تايبيه، مع سجل 7 انتصارات و 5 خسائر و 14 خسارة بين 14 برنامجًا في المرتبة 11 أغسطس 2006 شارك في البطولة الوطنية الأولى لألعاب الكمبيوتر التي أقيمت في بكين، محققًا 7 انتصارات و2 خسارتين و11 خسارة، ليحتل المركز السابع بين 18 برنامجًا.
10. الموارد ذات الصلة
تم إصدار البرنامج المصدر لـ ElephantEye في مشروع XiangQi Wizard التابع لـ SourceForge، وصفحته هي:
http://sourceforge.net/projects/xqwizard/
يتم إصدار تحسين إصدار ElephantEye بشكل متزامن في الوقت الفعلي على موقع SourceForge SVN. عنوان الوصول هو:
https://xqwizard.svn.sourceforge.net/svnroot/xqwizard/
يمكنك استخدام برامج عميل SVN مثل TortoiseSVN للحصول على أحدث التعليمات البرمجية (متزامنة بالكامل مع المطورين). عنوان التقديم والتنزيل لـ TortoiseSVN هو:
http://sourceforge.net/projects/tortoisesvn/
يجب تشغيل ElephantEye ضمن برنامج شطرنج يدعم UCCI (مثل <Chess Wizard>). يحتوي برنامج التثبيت <Chess Wizard> على أحدث إصدار من ElephantEye.
يمكن تنزيل <Chess Wizard> من الموقع التالي:
http://www.skycn.com/soft/24665.html (محطة برامج سكاي)
http://www.onlinedown.net/soft/38287.htm (مجمع برامج هواجون)
بالإضافة إلى البرنامج المصدر لـ ElephantEye نفسه، تتضمن حزمة البرنامج المصدر لـ ElephantEye أيضًا الوحدات الإضافية التالية:
(1) الكود الأساسي (الأساسي): يوفر تعليمات التجميع واستدعاءات وظائف النظام ووظائف أخرى؛
(2) وحدة قواعد الشطرنج الصينية (الوصول): توفر واجهة للبرامج الأخرى لاستخدام كود ElephantEye؛
(3) وحدة إنتاج المكتبة المفتوحة (BOOK): رمز إنشاء المكتبة المفتوحة BOOK.DAT؛
(4) UCCI Engine League Simulator (LEAGUE): يوفر منصة مطابقة الدفعات التلقائية لاختبار محركات UCCI والمنافسة؛
(5) محلل شجرة بحث محرك UCCI (TREE): أداة تحليل مسار البحث لمحرك UCCI (يدعم UCCI 2.2+)؛
(6) أدوات تسجيل الشطرنج XQF (XQFTOOLS): توفر أدوات لتحويل XQF وسجلات الشطرنج الأخرى إلى PGN؛
(7) محول الشطرنج الأحمر الفاتح (UCCI2QH): يوفر واجهة للشطرنج الأحمر الفاتح لاستدعاء محرك UCCI؛
(8) يدعم محرك الشطرنج الأحمر الفاتح محول UCCI (QH2UCCI): يوفر واجهة للشطرنج الأحمر الفاتح "Dream Egg" للانضمام إلى اختبار محرك UCCI؛
(9) BBS Chess (BBSCHESS): أداة لتحديد موضع الشطرنج مصنوعة باستخدام Visual Basic، والتي يمكنها لصق مواضع الشطرنج الملونة على BBS للجامعات المختلفة؛
(10) مولد صور رقعة الشطرنج (FEN2BMP): أداة عملية يمكنها تحويل ملفات FEN للشطرنج والشطرنج الصيني إلى ملفات BMP؛
(11) تحويل الترميز (برنامج الترميز)، بما في ذلك تحويل الترميز المبسط والتقليدي، وتحويل ترميز نص UNIX، وتحويل ترميز Base64، وما إلى ذلك؛
(12) أدوات أخرى (MISC): بما في ذلك اتصالات الشبكة البسيطة واختبار خطوط الأنابيب وأدوات أخرى؛
(13) وثيقة التوثيق (DOC): وهي سلسلة "استكشاف برمجة الشطرنج الصينية"؛
(14) سجلات الشطرنج المشاركة (CCGC): جميع سجلات الشطرنج الخاصة بـ ElephantEye المشاركة في البطولة الوطنية الأولى لألعاب الكمبيوتر (CCGC).
إذا كنت ترغب في الحصول على معلومات أكثر تفصيلاً حول ElephantEye، يمكنك تسجيل الدخول إلى موقع موسوعة Xiangqi:
http://www.xqbase.com/