مونتي كارلو مع فترات الثقة
نماذج المحاكاة عشوائية بطبيعتها، مما يعني أنه في كل مرة تقوم فيها بتشغيل نموذج محاكاة ستحصل على نتائج مختلفة، إذا استخدمت بذورًا مختلفة. من أجل إيصال هذه النتائج المتنوعة إلى أصحاب المصلحة، تحتاج إلى استخدام أداة إحصائية تُسمى فترات الثقة. ببساطة، ستخبرك هذه الأداة بمدى ثقتك في أن نتائجك تقع ضمن فترة معينة. للقيام بذلك، تحتاج إلى تشغيل محاكاة مونتي كارلو، وهي ببساطة تشغيل المحاكاة بعدد المرات اللازمة حتى تحصل فترة الثقة على أصغر خطأ ترغب في السماح به أو قبوله.
بناءً على الوصف أعلاه، تتيح لك هذه الأداة من Noorjax إجراء محاكاة مونتي كارلو وتوفر لك فترة الثقة بناءً على مستوى الثقة المختار.
يمكنك مشاهدة هذه المكتبة أثناء العمل عبر الرابط التالي: https://cloud.anylogic.com/model/6cbfd17d-3e39-4293-b881-8c4476f37291
كيفية التحميل
يمكنك تحميل المكتبة من الرابط التالي:
https://github.com/noorjax/optimizationWithMontecarlo
هذه المكتبة جزء من حزمة التحسين. مجانية الاستخدام.
مكتبة محاكاة مونتي كارلو
تم اختبار هذه المكتبة مع AnyLogic 8.9.1. قد لا تعمل الإصدارات السابقة.
كيفية تثبيت واستخدام المكتبة
قم بتحميل المكتبة وحفظها في مكان آمن.
داخل AnyLogic، أضف المكتبة إلى لوحة الأدوات الخاصة بك باستخدام زر + في تبويب اللوحة، وابحث عن ملف .jar الذي قمت بتحميله. احتفظ دائمًا بملف .jar هذا في نفس الموقع، وإلا ستواجه مشاكل.
التوثيق
اسحب وأسقط تجربة مونتي كارلو وقم بتهيئة المعلمات كما هو موضح أدناه:
وكيل المنطق:
نوع الوكيل: نوع الوكيل من المستوى الأعلى. هذا عادةً هو الوكيل الذي يتضمن المنطق الرئيسي في النموذج بالإضافة إلى العناصر أو المتغيرات اللازمة لتحديد التعبير (الموضح لاحقًا). اكتب اسم نوع الوكيل متبوعًا بـ “.class”. مثال: MyAgent.class
وقت النموذج:
- وحدات وقت النموذج: وحدات وقت النموذج
التوقف: شرط التوقف للنموذج. اختر الخيار المطلوب من القائمة المنسدلة. يمكن أن يكون وقتًا بوحدات وقت النموذج (التوقف عند وقت محدد) أو تاريخًا (التوقف عند تاريخ محدد). الخيار الثالث هو أبدًا. استخدم هذا الخيار عندما يكون لديك شرط توقف مضاف بالفعل في منطق النموذج الخاص بك، مثل حدث ينهي المحاكاة على سبيل المثال.
ملاحظة: عندما تضيف شرط توقف في منطق النموذج الخاص بك، استخدم finishSimulation() بدلاً من stopSimulation().
-
وقت البدء: الوقت الأولي بوحدات وقت النموذج لأفق زمن المحاكاة.
-
تاريخ البدء: التاريخ التقويمي الأولي لأفق زمن المحاكاة.
-
وقت التوقف: يُفعّل فقط عند اختيار خيار “التوقف عند وقت محدد” لمعلمة التوقف وهو الوقت لإيقاف تشغيل النموذج بوحدات وقت النموذج.
-
تاريخ التوقف: يُفعّل فقط عند اختيار خيار “التوقف عند تاريخ محدد” لمعلمة التوقف وهو التاريخ التقويمي لإيقاف تشغيل النموذج.
ستُطبّق معلمات الوقت أعلاه على جميع عمليات التكرار.
التكرارات:
-
الحد الأدنى للتكرارات: الحد الأدنى لعدد عمليات تشغيل المحاكاة التي ستُجرى في التجربة.
-
الحد الأقصى للتكرارات: الحد الأقصى لعدد عمليات تشغيل المحاكاة التي ستُجرى في التجربة. ستستمر التجربة في تكرار العمليات حتى تتقارب النتائج. إذا لم تتقارب، فهذا هو الحد الأقصى لعدد العمليات التي ستُجرى. إذا تم الوصول إلى هذا العدد من العمليات عند تشغيل التجربة، فمن الجيد زيادة هذا العدد وتشغيل التجربة مرة أخرى.
-
مستوى الثقة: يمكنك الاختيار من الخيارات المحددة لمستوى الثقة الذي يجب أن تضمنه التجربة عند إيجاد فترة الثقة.
-
نسبة الخطأ: نسبة التباين حول متوسط التعبير المطلوب. يجب أن تكون قيمة بين 0 و 1.
-
التعبير: هذه هي القيمة التي تبحث عنها من النموذج. عند تعريف هذا التعبير، للوصول إلى وكيل المستوى الأعلى الذي حددته في نوع الوكيل، تحتاج إلى استخدام root ولكن أيضًا تحويله إلى نوع ذلك الوكيل. مثال: ((MyAgent)root).variable.
تصدير النتائج:
- إظهار زر التصدير: إذا تم اختيار هذا الخيار، سيظهر زر في نهاية التجربة يتيح لك تصدير النتائج.
عندما يتم تهيئة جميع المعلمات بشكل صحيح، قم بتشغيل النموذج واضغط على START لبدء التجربة.
كيفية استخدام المكتبة
على الرغم من أن هذه المكتبة يمكن استخدامها بعدة طرق، ننصحك باستخدام الإعداد التالي للتجربة في نموذجك كأفضل ممارسة. لنفترض أن وكيل المستوى الأعلى يُسمى Main (وهو ما تستخدمه معظم النماذج)
-
أضف نوع وكيل جديد في نموذجك، سمّه كما تريد، مثلاً MyMonteCarlo.
-
أنشئ تجربة محاكاة جديدة تحتوي على MyMonteCarlo كوكيل المستوى الأعلى.
-
اسحب وأسقط كائن “Monte Carlo Experiment” المتاح من لوحة أدوات المكتبة إلى وكيل MyMonteCarlo وقم بتهيئة المعلمات كما هو موضح في القسم السابق.
-
في كائن MonteCarloExperiment، ستكون معلمة نوع الوكيل Main.class
لاحظ أن الإعداد الموصوف أعلاه مُفضّل ولكنه ليس إلزاميًا. يمكنك استخدام “Monte Carlo Experiment” في أي وكيل، ومع ذلك تأكد من أن وكيل المستوى الأعلى لتجربة المحاكاة التي تشغلها هو الوكيل الذي يحتوي على كائن “Monte Carlo Experiment” أو أنه وكيل يحتوي على الوكيل الذي يحتوي على الكائن.
عندما تشغل تجربة المحاكاة، سترى زر START يمكنك النقر عليه لبدء تجربة مونتي كارلو.
النتائج
عند تشغيل التجربة، سترى رسمين بيانيين يتقدمان مع عمليات تشغيل المحاكاة أو التكرارات. يُظهر الرسم البياني الأول كيف تتغير نسبة الخطأ مع عدد العمليات. يُظهر الرسم البياني الثاني كيف تتغير القيم الثلاث التي تمثل فترة الثقة مع عدد العمليات. هذه القيم الثلاث هي: متوسط التعبير، والحد الأدنى للتعبير، والحد الأعلى للتعبير. عندما تتوقف التجربة، يعني ذلك أن نسبة الخطأ المطلوبة مع مستوى الثقة المحدد قد تم تحقيقها. بعد ذلك، يمكنك قراءة القيم النهائية للحد الأدنى والحد الأعلى والمتوسط عند آخر تكرار أو عملية تشغيل محاكاة. علاوة على ذلك، عندما تتوقف التجربة، سيظهر زر يتيح لك تصدير نتائج الرسوم البيانية إلى ملف csv. عند الضغط على الزر، سيظهر مجلد جديد باسم “exports” في مجلد النموذج الخاص بك، وداخل هذا المجلد ستجد صفحات النتائج المُصدّرة. الصفحة الأولى المسماة “error percent” تُظهر النتائج المتعلقة برسم نسبة الخطأ مع العمود الأول الذي يُظهر رقم التكرار والعمود الثاني الذي يُظهر نسبة الخطأ. الصفحة الثانية المسماة “ranges” تُظهر النتائج المتعلقة برسم فترة الثقة. يُظهر العمود الأول رقم التكرار ثم نرى الحد الأدنى والمتوسط والحد الأعلى لفترة الثقة.
الأسئلة الشائعة
هل سأحصل على نفس النتائج في كل مرة أشغل فيها التجربة؟
يعتمد ذلك على البذرة المختارة لتجربة المحاكاة. إذا اخترت بذرة ثابتة، فستحصل على نفس النتائج في كل مرة تشغل فيها التجربة. إذا اخترت بذرة عشوائية فستكون النتائج مختلفة في كل مرة تشغل فيها التجربة. لاحظ مع ذلك أن النتائج لن تتباين بشكل كبير، مما يعني أن النطاق النهائي يجب أن يكون قريبًا في جميع عمليات تشغيل التجربة.
لماذا لا يمكنني استخدام تجربة مونتي كارلو من AnyLogic التي تأتي مع AnyLogic؟
تلك التجربة، على الرغم من أنها تُظهر خيارًا لاختيار فترة ثقة وهامش خطأ لتشغيل أكبر عدد ممكن من المحاكاة اللازمة للوصول إلى فترة الثقة تلك، إلا أنها لا تعمل. هذه المشكلة (التي تم تأكيد أنها خلل برمجي) تم إبلاغها في عام 2020 لدعم AnyLogic ومرة أخرى في عام 2023، وحتى سبتمبر 2024 لم يتم إصلاحها. كل شيء آخر في تلك التجربة يعمل بشكل رائع، لذلك إذا لم تكن بحاجة لاستخدام فترات الثقة أو تريد حسابها بنفسك، فلن تحتاج إلى هذا. لكن، إذا كنت تستخدم PLE، فليس لديك وصول إلى تجربة مونتي كارلو. الآن سيكون لديك وصول لأن هذا يعمل مع إصدار PLE من AnyLogic.
هل يعمل التصدير على السحابة؟
حاليًا لا يعمل.
ما هي فترات الثقة؟
لمزيد من المعلومات حول الخلفية النظرية لفترات الثقة وتعريفات المصطلحات التقنية المستخدمة في المكتبة، يرجى الرجوع إلى هذه الفيديوهات:
