المخاطر هي لعبة مجلس الإستراتيجية للدبلوماسية والصراع والفتح لاعبان إلى ستة لاعبين. يدور بدوره بين اللاعبين الذين يسيطرون على الجيوش من لعب القطع التي يحاولون التقاط الأراضي من لاعبين آخرين ، مع نتائج تحددها لفات الزهر. الهدف من اللعبة هو شغل كل إقليم على السبورة وبذلك ، والقضاء على اللاعبين الآخرين. يتكون كل منعطف من إجراءين:
كان الغرض من هذا المشروع هو تنفيذ لعبة المخاطر مع بعض التغييرات التي تم إجراؤها في القواعد وتصميم وكيل ذكي مصطنع قادر على لعب اللعبة بشكل صحيح ولديه فرصة كبيرة للغاية للفوز عند مواجهة خصوم آخرين بما في ذلك كلا الإنسان الفعليين اللاعبون أو لاعبي الوكلاء الآخرين.
يتم تنفيذ اللعبة باستخدام لغة برمجة Java. التحكم في المنعطفات ، وإجراء إجراءات لاعب طلب ، وتحديث خريطة اللعبة ، والتحقق مما إذا كان كل شيء يحدث وفقًا للقواعد ، وما إلى ذلك ، هي الأشياء التي يفعلها هذا الجزء من الرمز. تم تصميم واجهة مستخدم اللعبة أيضًا من خلال ملفات .fxml التي ترسم الخريطة وهي النظام الأساسي الذي يربط المشغل بمنطق اللعبة.
يركز هذا القسم على تنفيذ وتقييم الاستدلال الذي يؤدي إلى منظمة العفو الدولية القوية لمخاطر اللعبة.
يعتمد التنفيذ على خوارزمية تقليم Alpha-Beta Minimax. يقوم اللاعب ببناء شجرة التنبؤ بناءً على خوارزمية DFS.
كلما حان دور الوكيل للعب ، يتم صنع شجرة. عقد الأشجار هي حالات اللعبة (خريطة اللعبة في تلك الحالة) وكل حافة هي هجوم محتمل من الحالة الحالية إلى حالة الهجوم للخريطة. يتكون الإجراء الهجوم من إحداثيات الأراضي البدء والاستهداف وعدد الوحدات المختارة لتكون في الجيش المهاجم. عقدة الجذر هي الحالة الحالية للخريطة التي يتعين على اللاعب اختيارها. على الرغم من أن الشجرة لا يمكن أن تتنبأ حتى حالة نهاية اللعبة بسبب عدد كبير من التحركات الممكنة التي يمكن أن تسمح بها اللاعب في كل ولاية لا تسمح بها الذاكرة والزمن. لذلك ، يمكن للاعب بناء الشجرة فقط لعمق معين حددناه في الكود. هناك أيضًا بعض التبسيط المطبقة على أجزاء معينة من استراتيجية ألعاب الوكيل التي سيتم شرحها جميعًا في الأقسام التالية. من أجل اتخاذ أفضل استدلال قرار ممكن يتم تعريفه على أعمق العقد الممكنة (أوراق الأشجار) التي تقيّم مقدار الوصول إلى تلك الحالة يمكن أن يكون مفيدًا للاعب. سيتم شرح الاستدلال المذكور في التقرير. عندما يتم تحديد قيم الأوراق ، سيتم تمرير الشجرة إلى تقليم Minimax Alpha-Beta وستجد هذه الخوارزمية المعروفة أفضل سلسلة من الإجراءات التي يمكن أن يتمتع بها اللاعب.
يمكن أن يكون توفير الوحدات للأقاليم مهمة صعبة ؛ بمعنى أننا نريد تحسين قوتنا الهجومية ولكن أيضًا نتأكد من وجود قوة دفاعية كافية في المناطق التي تتعرض لخطر التعرض للهجوم. يمكن أن يكون نشر الوحدات في البلدان المجاورة لأقاليم العدو وسيلة ذكية للحفاظ على التوازن بين هذين الهدفين.
مسودة التبسيط:
إن التنبؤ وإدراج جميع السيناريوهات الممكنة في شجرة التنبؤ سيؤدي إلى شجرة معقدة تواجه المشكلات المذكورة من قبل ؛ لذلك ، فإن إحدى التبسيطات التي تم إجراؤها هي أننا نستخدم عملية تجشير الصياغة والتي ثبت دائمًا أن لدينا أفضل نتيجة ممكنة والتنبؤ بأن المعارضين يخذون هذا النهج في الصياغة أيضًا ؛ بمعنى آخر ، نقوم بإزالة نتائج الصياغة حيث تشكل الاحتمالات شجرة التنبؤ وتغييرها إلى سيناريوهات مسودة نهائية.
من أجل القيام بذلك ، نتخذ الخطوات التالية:
مشروع مجريات الأمور:
الخطوة 1:
إن Aking لتلخيص جميع الوحدات في بلدان العدو المتاخمة للبلد X سوف يعطي تدبيرًا نسميه تهديد أمن الحدود (BST) في X.
الخطوة 2:
يعطي تقسيم هذا BST على الوحدات الموجودة في X نسبة أمن الحدود (BSR) والتي يمكن مقارنتها بين جميع البلدان الحدودية.
من المرجح أن يتم غزو الدول التي لديها BSR عالية من قبل لاعب عدو ، لأن عدد وحدات العدو في بلدان العدو المجاورة أعلى نسبيًا من عدد الوحدات في البلاد نفسها. سيؤدي اختيار البلدان ذات BSR عالية إلى زيادة قوتها الدفاعية عن طريق خفض BSR. إن تزويد الوحدات بالبلدان مع انخفاض BSR ، مما يعني أن لديهم بالفعل موقف دفاعي أفضل ، سيزيد من قوتها الهجومية ، مما يثير فرص هجوم ناجح من هذه البلدان.
الخطوة 3:
إن تطبيع BSR عن طريق تقسيمه على مجموع جميع BSRs من البلدان ، الذي يملكه اللاعب ، سيعطي قياسًا مباشرًا يمكن لشخص ما ترتيب الوحدات. يتم حساب نسبة أمن الحدود الطبيعية (NBSR) بواسطة:
إنه يعطي نسبة مباشرة عن كيفية توزيع الوحدات بين البلدان. في هذه المرحلة ، يمكننا أن نرى أنه ستكون هناك مشكلة في هذه النسب لأن بعض البيانات غير ذات صلة ، ولا نريد إضافة وحدات إلى جميع أراضينا ، لذلك قمنا بتعيين عتبة بين الخطوات الثانية والثالثة عن طريق فرز بيانات BSRX في أمر تنازلي (نركز أكثر على جعل قوة الدفاع أقوى) ، وقسم البيانات من الوسط وضبط الأرقام في النصف السفلي إلى الصفر.
الخطوة 4:
ستستمر الخطوة 4 حتى لا تترك الوحدات المتاحة للإضافة.
هناك بعض التبسيط المطبقة في مرحلة الهجوم من أجل جعل الشجرة أقل تعقيدًا حتى نتمكن من التنبؤ في مستويات أعمق منه. يمكن القيام بذلك عن طريق التحقق من سيناريوهات الهجوم التي لديها فرصة أكبر للفوز بالمعركة وإدراجها فقط في الشجرة.
من أجل تقييم مدى فائدة ورقة الأشجار لهذا اللاعب المحدد ؛ لقد حددنا أربع ميزات إرشادية تم العثور عليها أفضل أوزان ممكنة أثناء تعلم الإرشادات التي سيتم شرحها لاحقًا. تُرجع جميع الميزات إلى نتيجة من الصفر إلى واحد لأنه عندما يتم تقدير الميزات بنسب وثيقة لبعضها البعض ، سيكون التعلم وتعيين الوزن أكثر دقة.
الميزات هي:
يساعد إعطاء الوزن لكل من الاستدلال في الجزء السابق في تقييم مدى أهمية وتأثير كل منهم على أن يفوز وكيل اللعبة. عملية العثور على هذه الأوزان من خلال الوراثة والتعلم. كل جين هو مجموعة من أربعة أوزان لتلك الميزات الأربع. نبدأ بإنشاء 100 مجموعة من الأوزان العشوائية في المدى [0،10]. بعد ذلك ، ستحدث 10 بطولات. لكل بطولة ، سيتم اختيار 10 جينات من السكان الأولية بشكل عشوائي. ستلعب كل أزواج محتملة من الجينات ضد بعضها البعض وسيتم توثيق نتيجة كل لعبة في كل بطولة. يتم تعريف وظيفة اللياقة على أنها (عدد الانتصارات / عدد الألعاب) لكل جين. سيتم اختيار الجينات الثلاثة الأولى في كل بطولة (استنادًا إلى وظيفة اللياقة) ، لذا لدينا الآن 30 جينًا مختارًا. من بين هذه ، نختار 12 زوجًا عشوائيًا ، ولكل زوج يقوم بالتقاطع الذي يخلق جينًا جديدًا عن طريق حساب متوسط وزن زوج الجينات. لذلك ، لدينا الآن 12 جينًا جديدًا من هذا التقاطع. من ناحية أخرى ، يتم اختيار 3 جينات بشكل عشوائي داخل الجينات 30 التي كان لدينا وتشويهها عن طريق تغيير وزن عشوائي واحد لكل من وزن عشوائي آخر في المدى [0،10]. بعد كل هذا ، لدينا الآن 15 جينًا جديدًا تم وضعه في السكان الأساسيين ، لتحل محل الجينات الخمسة عشر الأقل جودة التي كان لدينا بالفعل هناك. في هذه المرحلة يتم إنشاء الجيل الثاني من الجينات. ستستمر هذه العملية في التكرار حتى يتم إنشاء الجيل 4 من الجينات. سيتم اختيار الجين الأعلى في تلك الفئة من السكان كأوزاننا لأوزاننا لميزات الاستدلال الذي سيستخدمه الوكيل للعب.