You are on page 1of 133

‫اﻟﻣﺣﺎﻛﺎة واﻟﻧﻣذﺟﺔ‬

‫اﻟدﻛﺗور رﻧد اﻟﻘوﺗﻠﻲ‬

‫‪Books‬‬
‫المحاكاة والنمذجة‬
‫الدكتور رند القوتلي‬

‫من منشورات الجامعة االفتراضية السورية‬


‫الجمهورية العربية السورية ‪2018‬‬

‫هذا الكتاب منشور تحت رخصة المشاع المبدع – النسب للمؤلف – حظر االشتقاق (‪)CC– BY– ND 4.0‬‬

‫‪https://creativecommons.org/licenses/by-nd/4.0/legalcode.ar‬‬

‫يحق للمستخدم بموجب هذه الرخصة نسخ هذا الكتاب ومشاركته وإعادة نشره أو توزيعه بأية صيغة وبأية وسيلة للنشر وألية غاية تجارية‬
‫أو غير تجارية‪ ،‬وذلك شريطة عدم التعديل على الكتاب وعدم االشتقاق منه وعلى أن ينسب للمؤلف األصلي على الشكل اآلتي حصرا‪:‬‬
‫رند القوتلي‪ ،‬المحاكاة والنمذجة‪ ،‬من منشورات الجامعة االفتراضية السورية‪ ،‬الجمهورية العربية السورية‪2018 ،‬‬

‫متوفر للتحميل من موسوعة الجامعة ‪https://pedia.svuonline.org/‬‬

‫‪Simulation and Modeling‬‬


‫‪Rand Al Kouatly‬‬

‫)‪Publications of the Syrian Virtual University (SVU‬‬

‫‪Syrian Arab Republic, 2018‬‬

‫‪Published under the license:‬‬

‫‪Creative Commons Attributions- NoDerivatives 4.0‬‬

‫)‪International (CC-BY-ND 4.0‬‬

‫‪https://creativecommons.org/licenses/by-nd/4.0/legalcode‬‬

‫‪Available for download at: https://pedia.svuonline.org/‬‬


‫الفهرس‬
‫المدخل إلى المحاكاة ‪1 ....................................................................‬‬
‫ما المحاكاة؟‪1 .............................................................................‬‬
‫النظام‪ ،‬النموذج‪ ،‬والمحاكاة ‪2 ............................................................‬‬
‫نمذجة الحدث المتقطع ‪2 ........................... Discrete Event Simulation‬‬
‫تقنية زيادة الزمن ‪4 ............................. Time Advance Mechanism‬‬
‫مكونات نمذجة الحدث المتقطع ‪Components of Discrete Event‬‬
‫‪7 ........................................................................ Simulation‬‬
‫بناء نموذج محاكاة‪7 ....................................................................‬‬
‫منهجية المحاكاة‪9 .......................................................................‬‬
‫ملحقات‪15 ................................................................................‬‬
‫التمارين ‪21 ...............................................................................‬‬
‫مسائل ‪22 .................................................................................‬‬
‫المدخل إلى االحتماالت واإلحصاء ‪23 ..................................................‬‬
‫مقدمة ‪23 ..................................................................................‬‬
‫المتحوالت العشوائية وخصائصها‪24 ...................................................‬‬
‫تابع توزع الكثافة االحتمال ‪24 ................ Probability Density Function‬‬
‫توليد األعداد اﻟﻌﺷواﺋﯾﺔ ‪25 .................. Generating Random Numbers‬‬
‫األعداد العشوائية الزائفة ‪25 ....................Pseudo Random Numbers‬‬
‫الطرق التطابقية ‪26 .................................. Congruential Methods‬‬
‫طرق أخرى ‪26 ........................................................................‬‬
‫الطريقة التطابقية العامة ‪27 ............ General Congruential Method‬‬
‫المولد التركيبي ‪27 ..................................Composite Generator‬‬
‫مولد توسورث ‪28 .................................Tausworthe Generator‬‬
‫طرق اختبار األعداد العشوائية الزائفة ‪28 ..............................................‬‬
‫اختبارات التشغيل ‪29 ..................................................Runs Tests‬‬
‫اختبار ‪30 .............................................................. Chi Square‬‬
‫ملحقات ‪31.................................................................................‬‬
‫تمارين‪35 .................................................................................‬‬
‫مسائل ‪36 .................................................................................‬‬
‫توليد األعداد العشوائية ‪37 ...............................................................‬‬
‫مقدمة ‪37 ..................................................................................‬‬
‫طريقة التحويل العكسي ‪37 ................ The Inverse Transform Method‬‬
‫توليد األعداد العشوائية من توابع االحتمالية المستمرة ‪38 .............................‬‬
‫توليد األعداد العشوائية من تابع توزع منتظم ‪39 ....................................‬‬
‫توليد األعداد العشوائية من تابع توزع أسي ‪40 ......................................‬‬
‫توليد األعداد العشوائية من تابع إيرالنغ ‪41 ................................ Erlang‬‬
‫توليد األعداد العشوائية من تابع توزع الطبيعي ‪42 ..................................‬‬
‫توليد األعداد العشوائية من توابع االحتمالية المتقطعة‪43 ..............................‬‬
‫توليد األعداد العشوائية من تابع توزع الهندسي ‪44 ..................................‬‬
‫توليد األعداد العشوائية من تابع توزع الثنائي‪45 ....................................‬‬
‫توليد األعداد العشوائية من تابع توزع بويسن‪45 ....................................‬‬
‫توليد األعداد العشوائية من توابع االحتمالية التجريبية ‪46 .............................‬‬
‫توليد األعداد العشوائية التجريبية من توابع االحتمالية المتقطعة ‪46 ................‬‬
‫توليد األعداد العشوائية التجريبية من توابع االحتمالية المستمرة ‪48 ................‬‬
‫طريقة الرفض ‪50 ........................................... Rejection Methods‬‬
‫طريقة مونتيكارلو ‪52 .................................... Monte Carlo Method‬‬
‫ملحقات ‪53 ................................................................................‬‬
‫مسائل ‪55 .................................................................................‬‬
‫تصميم المحاكاة ‪56 .......................................................................‬‬
‫مقدمة ‪56 ..................................................................................‬‬
‫طريقة تقدم الحدث ‪56 ...................................Event Advance Design‬‬
‫قائمة األحداث المستقبلية ‪58 ....................................Future Event List‬‬
‫طريقة المصفوفة التسلسلية ‪59 .................. Sequential Array Method‬‬
‫طريقة القوائم المترابطة ‪60.............................. Linked Lists Method‬‬
‫تحقيق القوائم المترابطة ‪63 ............. Implementation Of Linked Lists‬‬
‫القوائم المترابطة الزوجية ‪67 ............................ Double Linked Lists‬‬
‫طريقة تقدم واحدة الزمن ‪67 ............................. Unit Time Advanced‬‬
‫اختيار واحدة الزمن ‪71 ................................. Selecting Unit Time‬‬
‫استخدامات طريقة تقدم واحدة الزمن‪ ،‬وطريقة تقدم الحدث ‪71 ....................‬‬
‫طريقة محاكاة النشاط ‪72 ............... Activity Based Simulation Design‬‬
‫أمثلة ‪75 ................................................................... Examples‬‬
‫نظام جرد مستودع ‪75 ..................................... Inventory System‬‬
‫نظام الصف الدائري ‪80 ................................Round Robin Queue‬‬
‫ملحقات ‪85 ...............................................................................‬‬
‫التمارين ‪88 ..............................................................................‬‬
‫مسائل ‪89 ................................................................................‬‬
‫تقنيات التقييم لمخرجات نظم المحاكاة ‪90 ..............................................‬‬
‫مقدمة ‪90 .................................................................................‬‬
‫تحصيل المخرجات ‪90 ......... Collecting endogenously created data‬‬
‫الحاالت المستقرة والعابرة ‪Transient states steady states simulation‬‬
‫‪91 .......................................................................................‬‬
‫الحاالت العابرة في المحاكاة ‪92 ............. Transient states simulation‬‬
‫الحاالت المستقرة في المحاكاة ‪92 ................ Steady state simulation‬‬
‫ﺗﻘﻧﯾﺎت ﺗﻘﯾﯾم اﻟﺣﺎﻻت اﻟﻣﺳﺗﻘرة‪93 ..........Estimating techniques for SS‬‬
‫تقييم مجال الثقة لمتوسط المتحول العشوائي‪93 .....................................‬‬
‫التقييمات األخرى للمتحول العشوائي ‪102 ............................................‬‬
‫طرق تقييم الحاالت العابرة ‪Estimation techniques for transient state‬‬
‫‪105 .......................................................................................‬‬
‫التجارب األولية ‪106 ........................................... Pilot experiments‬‬
‫ملحقات ‪110 ...............................................................................‬‬
‫مسائل ‪161 ................................................................................‬‬
‫لغات المحاكاة ‪162 ........................................................................‬‬
‫مقدمة ‪163 .................................................................................‬‬
‫مقارنة بين الحزم البرمجية ولغات البرمجة ‪164 .......................................‬‬
‫تصنيف الحزم البرمجية‪166 .............................................................‬‬
‫مقارنة بين الحزم البرمجية ألغراض عامة أو لتطبيقات خاصة ‪167 ...............‬‬
‫العوامل المشتركة بين الحزم البرمجية ‪168 ..........................................‬‬
‫مواصفات لغات البرمجة ‪169 ............................................................‬‬
‫الحزم البرمجية عامة التوجه ‪175 General purpose Simulation packages‬‬
‫حزمة ‪176 .....................................................................Arena‬‬
‫حزمة ‪184 .............................................................. Extendsim‬‬
‫الحزم البرمجية غرضية التوجه ‪Application oriented simulation‬‬
‫‪189 .......................................................................... packeges‬‬
‫ملحقات ‪190 ...............................................................................‬‬
‫المدخل إلى المحاكاة‬
‫‪Introduction to Simulation‬‬

‫‪ .1‬ﻣا المحاكاة؟‬
‫‪ o‬تھدف المحاكاة باستخدام الحاسب إلى محاكاة ‪ Simulate‬أو تقليد ‪ Imitate‬نظم ‪Systems‬‬
‫موجودة ومستخدم ة في الواقع‪.‬‬
‫‪ o‬لدراسة ھذه النظم يجب وضع فرضيات حول طريقة عملھا‪ ،‬ھذه الفرضيات تؤدي عادة إلى‬
‫الحصول على معادالت رياضية ومنطقية‪ .‬تشكل ھذه المعادالت والفرضيات نموذج النظام‬
‫‪.Model of the system‬‬
‫‪ o‬عندما تكون العالقات التي تشكل النموذج قليلة التعقيد‪ ،‬بحيث يمكن للمعادالت الرياضية أن‬
‫تعبر بشكل تام عن النظام يدعى النموذج عندھا بالنموذج التحليلي ‪.Analytical Model‬‬ ‫عند وضع الفأرة‬
‫على المحاكاة‬
‫‪ o‬عندما يكون النظام معقد ) كما في الحياة العملية(‪ ،‬يمكن عندھا دراسة النظام فقط باستخدام‬
‫] ‪ 1‬إيضاح[‬
‫المحاكاة ‪.Simulation‬‬
‫‪ o‬تستخدم المحاكاة ‪ Simulation‬باستخدام الحواسب االلكترونية لجمع المعلومات والمعطيات‬
‫وذلك لتوقع طبيعة النظام الحقيقية ‪ 1 ] .‬إيضاح[‬

‫‪1‬‬
‫عند وضع الفأرة‬ ‫عند وضع الفأرة‬
‫على مكونات‬ ‫على المكونات‬
‫] ‪ 2‬إيضاح[‬ ‫] ‪ 2‬إيضاح[‬

‫‪ .2‬النظام‪ ،‬النموذج‪ ،‬المحاكاة‬


‫‪ o‬يمكن أن يعرف النظام ‪ System‬بأنه عبارة عن مجموعة مكونات تتفاعل مع بعضھا‬
‫البعض لتكون الھدف منھا‪.‬‬
‫‪ o‬في الحياة العملية يتعلق وصف النظام بالھدف الذي يدرس من اجله‪ ،‬فمثال يمكن أن تشكل‬
‫مجموعة المكونات نظاما ً من اجل دراسة معينة‪ ،‬و يمكن أن يشكل نظاما ً جزئياً‬
‫‪ Subsystem‬لنظام أكبر‪ 1 ] .‬مثال[‬
‫‪ o‬يمكن تقسيم النظام إلى صنفين‪ ،‬مستمر ‪ Continuous‬و متقطع ‪:Discrete‬‬
‫• في النظام المتقطع تتغير معامالت النظام عند فترات زمنية متفاوتة وغير ثابتة‪.‬‬
‫] ‪ 2‬مثال[‪.‬‬
‫• في النظام المستمر تتغير معامالت النظام بشكل مستمر مع الزمن‪ 3 ] .‬مثال[‪.‬‬
‫‪ o‬في معظم األنظمة فانه من الضروري تجربة النظام من اجل الحصول على رؤية معمقة عن‬
‫معامالت النظام‪ ،‬كما يمثل الشكل‪.1 -‬‬

‫النظام‬ ‫عند وضع الماوس‬


‫‪System‬‬ ‫فوق المنطقة‬
‫المنقطة يظھر‬
‫اإليضاح ‪.3‬‬
‫تجربة‬ ‫تجربة‬
‫حقيقية للنظام‬ ‫بنموذج للنظام‬
‫عند وضع الماوس‬
‫فوق المنطقة‬
‫المنقطة يظھر‬
‫نموذج فيزيائي‬ ‫نموذج رياضي‬
‫‪Physical Model‬‬
‫اإليضاح ‪.4‬‬
‫‪Math Model‬‬

‫عند وضع الماوس‬


‫حل تحليلي‬ ‫محاكاة‬
‫‪Analytical Solution‬‬ ‫‪Simulation‬‬ ‫فوق المنطقة‬
‫المنقطة يظھر‬
‫اإليضاح ‪.5‬‬
‫الشكل ‪ :1 -‬لماذا ندرس النظام‬

‫‪2‬‬
‫للقيام بمحاكاة نظام ما باستخدام النموذج الرياضي‪ ،‬يجب استخدام وسائل خاصة لتحقيق ذلك‪ ،‬إذا من‬
‫المفيد تصنيف نماذج المحاكاة إلى ثالثة أصناف‪:‬‬
‫‪ o‬النموذج الستاتيكي ‪ Static‬أو الديناﻣيكي ‪ :Dynamic‬نموذج المحاكاة الستاتيكي ھو‬
‫تعبير عن نظام ما عند وقت محدد ] ‪ 4‬مثال[‪ .‬أما النموذج الديناميكي فھو تعبير عن نظام ما‬
‫خالل فترات زمنية محددة‪ 5 ] .‬مثال[‬
‫‪ o‬النموذج المحدد ‪ Deterministic‬أو العشوائي ‪ :Stochastic‬النموذج المحدد ھو‬
‫النموذج الذي ال يحتوي على أي محددات عشوائية ] ‪ 6‬مثال[‪ .‬أما النموذج العشوائي فھو‬
‫النموذج الذي يحتوي على األقل محدد واحد عشوائي‪ 7 ] .‬مثال[‬
‫‪ o‬النموذج المستمر والمتقطع‪ :‬في النظام المتقطع تتغير معامالت النظام عند فترات زمنية‬
‫متفاوتة وغير ثابتة‪ .‬بينما في النظام المستمر تتغير معامالت النظام بشكل مستمر مع‬
‫الزمن‪ ،‬كما بينا سابقا‪.‬‬

‫‪ .3‬ﻧمذجة الحدث المتقطع ‪Discrete Time Simulation‬‬


‫‪ o‬إن نمذجة الحدث المتقطع ھو نمذجة النظام بالنسبة لتغيراته بالزمن‪ ،‬حيث يتم تمثيل‬
‫التغيرات الدائمة لمتحوالت النظام بالنسبة للزمن‪ 6 ] ،‬إيضاح[‪.‬‬
‫‪ o‬تعرف التغيرات في متحوالت النظام التي تحدث عند نقاط محددة بالزمن بالحدث ‪.event‬‬
‫‪ o‬بالرغم انه يمكن نمذجة نظام الحدث المتقطع يدوياً إال انه في الحياة العملية ال يمكن التعامل‬
‫مع كمية المعلومات الضخمة التي يتعامل معھا النظام لذلك تستخدم الحواسب االلكترونية‪.‬‬
‫] ‪ 8‬مثال[‬

‫‪3‬‬
‫‪ .1.3‬تقنية زيادة الزﻣن ‪Time- Advance Mechanism‬‬
‫‪ o‬بسبب الطبيعة الدينامكية لنمذجة الحدث المتقطع فانه من الضروري تعقب بدقة تغيرات‬
‫الزمن المستخدم في المحاكاة‪ ،‬وكذلك يجب تحديد آلية لزيادة الزمن خالل التغيرات من حدث‬
‫إلى حدث آخر‪.‬‬
‫‪ o‬يدعى المتحول المستخدم لنمذجة تغيرات الزمن في نظام محاكاة ساعة المحاكي‬
‫‪.Simulation Clock‬‬
‫‪ o‬إن وحدة الزمن المستخدمة لساعة المحاكي غير محددة تماما ً وذلك عند تصميم برنامج‬
‫المحاكاة بلغات برمجة عالية المستوى ] ‪ 7‬إيضاح[‪ ،‬ويمكن اعتبار وحدة الزمن مساوية إلى‬
‫تغيرات مدخالت النظام‪ 8 ] .‬إيضاح[‬
‫‪ o‬توجد طريقتان لتحديد آلية لزيادة الزمن خالل المحاكاة‪:‬‬
‫• آلية الحدث القادم ‪ :Next even time Advanced‬وتستخدم في معظم نظم‬
‫المحاكاة‪ ،‬حيث يزاد ساعة المحاكي عند ظھور حدث جديد‪.‬‬
‫• آلية زيادة الزمن الثابت ‪ :Fixed increment time advance‬حيث يزاد متحول‬
‫ساعة المحاكي بصورة ثابتة مع مرور الزمن‪ .‬وتعتبر حالة خاصة من النوع األول‪.‬‬

‫‪ o‬عند استخدام آلية الحدث القادم يتم في البداية جعل قيمة متحول ساعة المحاكي مساوياً إلى‬
‫الصفر‪ ،‬ويتم بعد ذلك تحديد األزمان المتوقعة لألحداث القادمة‪.‬‬
‫‪ o‬عند ظھور أول حدث يتم تحديث متحوالت النظام ويتم تحديد قيمة ساعة المحاكي عند قيمة‬
‫أول زمن بدقة‪ ،‬يتم كذلك تحديث قيم األزمنة المتوقعة لألحداث القادمة‪.‬‬
‫‪ o‬عند ظھور الحدث التالي‪ ،‬يتم أيضا تحديث متحوالت النظام ويتم تحديد قيمة ساعة المحاكي‬
‫عند قيمة ثاني زمن بدقة‪ ،‬يتم كذلك تحديث قيم األزمنة المتوقعة لألحداث القادمة‪ ،‬وھكذا‬
‫تستمر العملية حتى ظھور شرط التوقف‪.‬‬
‫] ‪ 9‬مثال[‬

‫‪4‬‬
‫‪ .2.3‬ﻣكوﻧات ﻧمذجة الحدث المتقطع ‪Components of Discrete Event‬‬
‫‪Simulation‬‬
‫‪ o‬بالرغم من تنوع نظم المحاكاة باستخدام نمذجة الحدث المتقطع إال أنھا تشترك جميعھا بعدد‬
‫من المكونات‪ ،‬بحيث يمكن أن تنظم ھذه المكونات لتساعد المبرمجين في تعديل البرمجيات‬
‫الحقا ً وكشف األخطاء‪.‬‬
‫‪ o‬حالة النظام ‪ :System state‬ويمثل مجموعة المتحوالت المستخدمة في معرفة‬
‫حالة النظام عند زمن محدد‪.‬‬
‫‪ o‬ساعة المحاكي ‪ :Simulation Clock‬ويمثل متحول يحتفظ بالقيمة الحالية للزمن‬
‫في المحاكاة‪.‬‬
‫‪ o‬قائمة الحدث ‪ :Event list‬وھي قائمة تحتوي على طبيعة الحدث القادم‪.‬‬
‫‪ o‬عدادات إحصائية ‪ :Statistical counters‬وھي عبارة عن متحوالت تحفظ قيم‬
‫اإلحصائية عن أداء النظام‪.‬‬
‫‪ o‬برنامج ابتدائي ‪ :Initialization routine‬برنامج جزئي يستخدم إلعطاء القيم‬
‫االبتدائية لجميع المتحوالت عند البدء بالمحاكاة )أي عند الزمن ‪.(0‬‬
‫‪ o‬برنامج التوقيت ‪ :Timing routine‬برنامج جزئي يستخدم قائمة الحدث لمعرفة‬
‫الحدث القادم ومن ثم تحديث قيمة متحول ساعة المحاكي لتصبح مساوية لزمن‬
‫حدوث الحدث الجديد‪.‬‬
‫‪ o‬برنامج الحدث ‪ :Event routine‬برنامج جزئي يحدث قيم متحوالت النظام عند‬
‫قدوم حدث ما )في أي نظام محاكاة يوجد برنامج جزئي واحد لكل حدث(‪.‬‬
‫‪ o‬برامج المكتبة ‪ :Library routines‬وھي عبارة عن مجموعة برامج جزئية تقوم‬
‫بتوليد قيم عشوائية المطلوبة لنظام المحاكاة‪.‬‬
‫‪ o‬مولد التقارير ‪ :Report generator‬وھو عن برنامج جزئي يستخدم العدادات‬
‫اإلحصائية لكتابة التقارير عن نظام المحاكاة‪.‬‬
‫‪ o‬البرنامج الرئيسي ‪ :Main program‬وھو البرنامج الجزئي المسؤول عن إدارة‬
‫نظام المحاكاة‪ ،‬ومن ثم إظھار التقارير وإنھاء المحاكاة‪.‬‬

‫‪5‬‬
.‫ لنظام نمذجة الحدث المتقطع‬Flow control ‫ الشكل التالي يبين المخطط االنسيابي‬o

Start

Initialization Routing Main Program Timing Routing


1. Set simulation 0. Invoke the initialization routing. 1. Determine the next
Clock = 0 0 1 event type, say, i.

2. Initialize system state 2. Advanced the


and counters 1. Invoke the timing routing. i
simulation clock.
3. Initialize event list 2. Invoke event routing. Repeatedly

2
Event Routing i
Library Routing
1. Update system state.
2. Update statistical counters. Generate random
3. Generate future events and add to variable
event list.

is
simulation No
over?

Report generator
1. Compute estimate of interest.
2. Write report.

Stop

.‫ نظام نمذجة الحدث المتقطع‬:2 - ‫الشكل‬

6
‫‪ .4‬بناء ﻧموذج ﻣحاكاة ‪Building a simulation model‬‬
‫‪ o‬يتصف أي نظام بالخصائص التالية‪:‬‬
‫• البيئة ‪ :Environment‬أي نظام يمكن إن يرى عبارة عن نظام جزئي من نظام‬
‫أوسع‪.‬‬
‫• االعتمادية ‪ :Interdependency‬ال يمكن ألي فاعلية أن تكون مستقلة عن غيرھا‪.‬‬
‫• النظام الجزئي ‪ :Sub-system‬يمكن ألي نظام أن يقسم إلى أنظمة جزئية‪.‬‬
‫• التنظيم ‪ :Organization‬كل األنظمة عبارة عن مجموعة مكونات منظمة بشكل‬
‫كبير بحيث تتفاعل مع بعضھا البعض لتكون النظام‪.‬‬
‫‪ o‬عند بناء نظام نمذجة لمحاكاة نظام في حقيقي‪ ،‬فان ذلك يتم عن طريق محاكاة نظم جزئية‬
‫عند مستويات وتفاصيل مختلفة ومن ثم تجميع ھذه النظم الجزئية لتكوين النظام الكلي‪.‬‬
‫‪ o‬يبين الشكل التالي كيف يتم نمذجة أنظمة جزئية مختلفة عند مستويات مختلفة‪ ،‬لتشكل‬
‫بمجموعھا النظام الكامل‪.‬‬

‫مستويات‬
‫التفاصيل‬

‫الشكل ‪ :3 -‬ھرم إدارة بريد‬

‫‪7‬‬
‫‪ o‬إن الخطوات األساسية المتبعة لبناء مبينة في الشكل التالي‪:‬‬

‫تعريف المشكلة‬

‫تحليل المعطيات‬ ‫‪A‬‬

‫تحديد النماذج الجزئية‬ ‫تصميم تجارب‬


‫النموذج‬
‫تجميع النماذج الجزئية‬
‫تشغيل النموذج‬
‫تجميع المعطيات‬
‫تحليل النتائج‬
‫كتابة البرنامج الجزئي‬
‫تحقيق النتائج‬
‫تحديد األخطاء‬

‫التحقق من النموذج‬

‫‪A‬‬

‫الشكل ‪ :4-‬الخطوات األساسية المتبعة لبناء نظام محاكاة‬

‫‪8‬‬
‫‪ .5‬ﻣنھجية المحاكاة ‪Simulation methodology‬‬
‫سنبين في ھذه الفقرة المنھجية المتبعة في بناء نظام محاكاة عبر عرض مثال بسيط ومشھور‪ ،‬وھو‬
‫نظام خدمة الزبون لمخدم وحيد ‪.Single Server Queuing‬‬

‫المسألة‪:‬‬
‫لنفترض أﻧنا ﻧريد بناء نظام محاكاة لنظام مخدم وحيد بعدد زبائن محدود‪ .‬لنفترض انه لدينا‬
‫مصنع تعمل فيه آالت تساوي ‪ ،M‬لنفترض أن كل اله تعمل لفترة زمنية محددة ثم تتعطل‬
‫وتتوقف عن العمل‪ .‬ولنفترض أيضا انه يوجد لدينا عامل إصالح واحد فقط مسؤول عن‬
‫إصالح اآلالت المعطلة وبحيث تبقى اآللة معطلة حتى يتم إصالحھا من قبل العامل‪ .‬ويتم‬
‫اإلصالح وفق مبدأ المتعطل أوالً يخدم أوالً ‪ ،FIFO‬بحيث تبقى اآلالت المعطلة تنتظر في‬
‫الصف حتى يأتي دورھا في اإلصالح‪.‬‬
‫وبالتالي كل آلة من اآلالت المصنع سوف تتبع دورة العمل التالية‪:‬‬

‫اآللة تعمل بشكل طبيعي‬ ‫اآللة معطلة‬

‫اآللة في‬ ‫اآللة في‬


‫الصف‬ ‫اإلصالح‬

‫الشكل ‪ :5-‬دورة عمل اآللة األساسي‪.‬‬

‫المطلوب‬
‫بناء نظام محاكاة لتحديد زمن توقف اآلالت عن العمل‪.‬‬

‫‪9‬‬
‫الحل‪:‬‬
‫• لمعرفة زمن توقف اآللة يجب معرفة الزمن الالزم إلصالح آلة وانتظار اآللة في‬
‫الصف‪.‬‬
‫• يمكن تشبيه عمل عامل اإلصالح بنظام بمخدم وحيد بعدد زبائن محدود‪.‬‬

‫عامل اإلصالح‬
‫عدد محدد من‬
‫اآلالت‬

‫الشكل ‪ :6-‬مشكلة تعطل اآللة‪.‬‬

‫• لنفترض أن زمن عمل اآللة بشكل طبيعي ھو عشر وحدات زمنية ‪،Unit time‬‬
‫ولنفترض أن زمن إصالح اآللة أيضا ً ثابت ويساوي خمس وحدات زمنية‪.‬‬
‫] ‪ 10‬إيضاح[‬

‫‪10‬‬
‫• الخطوة األولى تتم بتحديد األحداث ‪ events‬المھمة والتي يؤدي ظھورھا إلى تغير‬
‫أحداث في النظام‪.‬‬
‫يمكن تمثيل األحداث بالنظام باستخدام مخططات األحداث ‪event-grave‬‬
‫حيث يمثل كل حدث عبارة عن عقدة تتصل بالعقد األخرى بواسطة أسھم تشير إلى‬
‫انتقال األحداث في النظام‪.‬‬
‫] ‪ 10‬مثال[‬

‫• الخطوة الثالثة تتم بتحديد متحوالت التي تصف األحداث المتغيرة للنظام‪.‬‬
‫• الخطوة الثالثة ھي تحديد أداء النظام الذي يمكن أن يغير متحوالت النظام السابق‬
‫الذكر‪.‬‬
‫] ‪ 11‬إيضاح[‬

‫يمكن تحديد حدثين مھمين‪:‬‬


‫‪ -1‬تعطل اآللة ودخولھا في صف االنتظار‪ 12 ] .‬إيضاح[‬
‫‪ -2‬إصالح اآللة وخروجھا من صف االنتظار‪ 13 ] .‬إيضاح[‬

‫‪11‬‬
‫• لتحديد بدقة الحدثين السابقين يجب إضافة مجموعة متحوالت جديدة‪ ،‬تعرف‬
‫بمتحوالت الساعة‪ ،‬والذي يالحق مسار تغيرات وقت حدوث وانتھاء األحداث‬
‫السابقة‪.‬‬
‫• سوف يتم استخدام متحول ساعة لكل آلة‪ ،‬حيث سوف يبين ھذا المتحول اللحظة‬
‫الزمنية التي تتعطل فيھا اآللة وتدخل في صف اإلصالح‪.‬‬
‫• كما سوف يستخدم متحول ساعة آخر ليحدد الزمن التي يتم فيھا إصالح اآللة‪.‬‬
‫• إي إذا كان لدينا ‪ m‬آلة فانه نحتاج إلى ‪ m+1‬متحول ساعة بحيث يستخدم ‪m‬‬
‫متحول ليصف زمن تعطل كل آلة من اآلالت بينما نستخدم متحول واحد ليحدد زمن‬
‫إصالح أية آلة‪.‬‬
‫• كذلك يجب استخدام متحول ساعة عام ‪ master clock‬ليالحق مسار متغيرات‬
‫نظام المحاكاة‪.‬‬

‫‪12‬‬
‫لنفترض إننا نرغب بإجراء محاكاة لثالث آالت في المعمل‪:‬‬
‫• لنفترض أن متحوالت الساعة لآلالت الثالث ھي ‪ CL2 ،CL1‬و ‪ CL3‬والتي‬
‫تصف زمن تعطل اآلالت الثالث‪.‬‬
‫• لنفترض أن المتحول الذي يصف إصالح الحد اآلالت السابقة ھو ‪.CL4‬‬
‫• وان متحول الساعة العام ھو ‪.MC‬‬
‫• وان المتحول ‪ R‬يصف ما إذا كان العامل يقوم باإلصالح أم في حالة راحة‪.‬‬
‫• لنفترض أن الشروط االبتدائية والتي يحدث خاللھا األعطال ھي‪،CL1=1 :‬‬
‫‪ CL2=4,‬و ‪ ،CL3=9‬وان زمن إصالح اآللة الواحدة ھو خمس وحدات زمنية‬
‫وان زمن عمل اآللة ھو عشر وحدات زمنية كما بينا سابقا‪.‬‬

‫الجدول‪ :١.‬محاكاة النظام يدويا ً‪.‬‬


‫حالة العاﻣل‬ ‫‪MC‬‬ ‫‪CL4‬‬ ‫‪CL3‬‬ ‫‪CL2‬‬ ‫‪CL1‬‬ ‫‪n‬‬

‫راحة‬ ‫‪0‬‬ ‫‪-‬‬ ‫‪9‬‬ ‫‪4‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫مشغول‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪9‬‬ ‫‪4‬‬ ‫‪-‬‬ ‫‪1‬‬ ‫‪2‬‬

‫مشغول‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪9‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪2‬‬ ‫‪3‬‬

‫مشغول‬ ‫‪6‬‬ ‫‪11‬‬ ‫‪9‬‬ ‫‪-‬‬ ‫‪16‬‬ ‫‪1‬‬ ‫‪4‬‬

‫مشغول‬ ‫‪9‬‬ ‫‪11‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪16‬‬ ‫‪2‬‬ ‫‪5‬‬

‫مشغول‬ ‫‪11‬‬ ‫‪16‬‬ ‫‪-‬‬ ‫‪21‬‬ ‫‪16‬‬ ‫‪1‬‬ ‫‪6‬‬

‫مشغول‬ ‫‪16‬‬ ‫‪21‬‬ ‫‪26‬‬ ‫‪21‬‬ ‫‪-‬‬ ‫‪1‬‬ ‫‪7‬‬

‫] ‪ 14‬إيضاح[‪ 15 ]،‬إيضاح[‪.‬‬

‫‪13‬‬
‫يتم تحقيق محاكاة النظام السابق باستخدام لغة برمجة عالية المستوى‪ ،‬يبين الشكل التالي‬
‫المخطط التدفق لبرنامج المحاكاة السابق‪.‬‬

‫الشكل ‪ :7 -‬مخطط التدفق لمحاكاة نظام إصالح اآلالت في مصنع‪.‬‬

‫] ‪ 16‬إيضاح[‬

‫‪14‬‬
‫ﻣلحقات‬
‫] ‪ 1‬إيضاح[‬
‫كمثال على استخدام المحاكاة‪ ،‬لنفترض أن مدير مصنعا ً يريد يقيم دراسة لتوسيع مصنعه وذلك عن‬
‫طريق بناء قسم إضافي‪ .‬ولكن مجلس إدارة المصنع غير متأكد من أن التوسع سوف يعطي المردود‬
‫االقتصادي الذي يغطي تكاليف اإلنشاء‪ ،‬فمن غير المعقول بناء التوسع ومن ثم ھدمه إذا لم يغطي‬
‫تكاليفه االقتصادية‪) .‬يمكن الحصول على االيجابة باستخدام المحاكاة لدراسة المردود االقتصادي‬
‫للتوسع(‪.‬‬

‫] ‪ 2‬إيضاح[‬
‫أشخاص أو آالت‪.‬‬

‫] ‪ 1‬مثال[‬
‫فمثالً لدراسة نظام خدمة الزبائن في مصرف وذلك لتحديد عدد العاملين المفترض توظيفھم للحصول‬
‫على خدمة جيدة في صرف أو تحصيل الشيكات‪ .‬فالنظام ھو عبارة عن نظام جزئي يدرس العالقة‬
‫بين الموظفين و الزبائن المنتظرين في الصف لتخديمھم‪.‬‬

‫] ‪ 2‬مثال[‬
‫نظام خدمة الزبائن في مصرف يعتبر نظام متقطع حيث يتغير عدد الزبائن في الصف عند قدوم‬
‫زبون جديد أو عند االنتھاء من تخديم زبون‪.‬‬

‫] ‪ 3‬مثال[‬
‫نظام الطائرة يعتبر نظام مستمر حيث يتغير معامالت النظام )كارتفاع وموقع الطائرة( بشكل مستمر‬
‫مع الزمن‪.‬‬

‫] ‪ 3‬إيضاح[‬
‫للمقارنة بين نتائج التجربة العملية للنظام ونتائج والنتائج العملية في حال تغير الشروط عندھا نحصل‬
‫على نتائج دقيقة للنظام‪ .‬إال ان ھذه الطريقة مكلفة اقتصاديا ً‪.‬‬

‫] ‪ 4‬إيضاح[‬
‫وھي مقارنة بين نموذج فيزيائي )مثال دراسة تأثير حركة الھواء مولد بواسطة مراوح ضمن غرفة(‪،‬‬
‫وبين النموذج الرياضي المقابل‪.‬‬

‫‪15‬‬
‫] ‪ 5‬إيضاح[‬
‫لدراسة مدى وثوقية النموذج الرياضي‪ ،‬وذلك بتحليل النتائج الرياضية يدويا‪ ،‬أو باستخدام المحاكاة‬
‫عندما يكون التحليل الرياضي معقدا‪.‬‬

‫] ‪ 4‬مثال[‬
‫نموذج مونتي كارلو ‪.Monte Carlo‬‬

‫] ‪ 5‬مثال[‬
‫نظام التغليف في مصنع‪.‬‬

‫] ‪ 6‬مثال[‬
‫نظام المحاكاة لتفاعل الكيماوي‪.‬‬

‫] ‪ 7‬مثال[‬
‫نظام خدمة الزبائن في مصرف‪.‬‬

‫] ‪ 6‬إيضاح[‬
‫عمليا تتغير متحوالت النظام بالنسبة لنقاط زمنية بعدد محدد تقريبا ً‪.‬‬

‫] ‪ 8‬مثال[‬
‫لنفرض إننا نريد محاكاة نظام خدمة الزبائن في متجر للحالقة حيث يقوم حالق واحد بخدمة الزبائن‬
‫المنتظرين‪ ،‬وبحيث يراد حساب الزمن الذي يستغرقه الزبون في االنتظار )الفارق الزمني بين قدوم‬
‫الزبون إلى المتجر والزمن الذي يبدأ فيه بالحالقة(‪ .‬ويمكن تحديد متحوالت النظام بـ‪:‬‬
‫‪ -‬حالة الحالق )المخدم( ھل ھو مشغول ‪ ،idle‬أم غير مشغول ‪ .busy‬ويفيد المتحول في‬
‫معرفة ھل الزبون الجديد سوف يخدم مباشرتا ً )عندما يكون الحالق غير مشغول( أو ينتظر‬
‫في الصف )عندما يكون الحالق مشغوالً(‪.‬‬
‫‪ -‬عدد الزبائن المنتظرين في الصف‪ .‬ويفيد المتحول في معرفة ما إذا كان المخدم سوف يصبح‬
‫غير مشغول‪ ،‬أي يخدم أول زبون منتظر في الصف‪.‬‬
‫‪ -‬زمن قدوم الزبون إلى متجر الحالقة‪ .‬ويفيد ھذا المتحول في معرفة زمن انتظار الزبون في‬
‫الصف‪.‬‬
‫يوجد حدثين لھذا النظام‪ ،‬وھما قدوم الزبون إلى متجر الحالقة‪ ،‬واالنتھاء من تخديم الزبون‪.‬‬

‫‪16‬‬
‫] ‪ 7‬إيضاح[‬
‫كلغة ‪ C‬مثال‪.‬‬

‫] ‪ 8‬إيضاح[‬
‫في معظم الحاالت ال توجد عالقة بين زمن المحاكاة وبين الزمن الحقيقي الذي يستغرقه برنامج‬
‫المحاكاة أثناء تنفيذه على الحاسب‪.‬‬

‫] ‪ 9‬إيضاح[‬
‫سوف نستخدم الطريقة األولى )آلية الحدث القادم ‪ (Next even time Advanced‬في جميع نظم‬
‫المحاكة التي سوف نتحدث عنھا في ھذا المقرر‪.‬‬

‫] ‪ 9‬مثال[‬
‫لنحدد اآلن متحوالت النظام لنظام محاكاة لمتجر حالق المبين في ] ‪ ٨‬مثال[‪:‬‬
‫• ‪ :ti‬يمثل زمن قدوم الزبون رقم ‪ i‬إلى محل الحالقة‪.‬‬
‫• ‪ :Ai=ti-ti-1‬يمثل فرق الزمن بين قدوم الزبون رقم ‪ i‬و الزبون رقم ‪ i-1‬إلى محل الحالقة‪.‬‬
‫• ‪ :Si‬الزمن الذي يستغرقه الحالق لخدمة الزبون رقم ‪) i‬بدون زمن االنتظار(‪.‬‬
‫• ‪ :Di‬الزمن الذي ينتظره الزبون ذو الرقم ‪ i‬في الصف )زمن التأخير( حتى يتم تخديمه‪.‬‬
‫• ‪ :ci=ti+Di+Si‬الزمن الالزم النتھاء من تخديم الزبون ذي الرقم ‪) i‬زمن رحيل الزبون(‪.‬‬
‫• ‪ :ei‬زمن ظھور الحدث ‪.i‬‬
‫يبين الشكل التالي مثاال على دخول ثالثة زبائن إلى متجر الحالقة‪ ،‬يخدم الزبون األول فور قدومه‬
‫إلى متجر الحالقة بسبب كون الحالق غير مشغول‪ .‬يأتي الزبون الثاني عند الزمن ‪ t1‬وينتظر في‬
‫الصف كون الحالق مشغول في تخديم الزبون األول‪ ،‬ثم يأتي الزبون الثاني عند الزمن ‪ t2‬وينتظر في‬
‫الصف كون الحالق مشغول في تخديم الزبون األول‪ .‬عند الزمن ‪ c1‬يغادر الزبون األول ويبدأ بتخديم‬
‫الزبون الثاني فيكون زمن انتظار الزبون الثاني في الصف ھو ‪ ،A1‬وھكذا‪...‬‬
‫‪e0‬‬ ‫‪e1‬‬ ‫‪e2‬‬ ‫‪e3‬‬ ‫‪e4‬‬ ‫‪e5‬‬

‫‪0‬‬ ‫‪t1‬‬ ‫‪t2‬‬ ‫‪c1‬‬ ‫‪t3‬‬ ‫‪c2‬‬ ‫‪Time‬‬

‫‪A1‬‬ ‫‪A2‬‬ ‫‪A3‬‬

‫‪S1‬‬ ‫‪S2‬‬

‫‪17‬‬
‫] ‪ 10‬إيضاح[‬
‫يمكن أن ندرس المسالة بتعقيد اكبر وذلك بافتراض ان زمن عمل وإصالح اآلالت غير متساوي‬
‫وغير ثابت وإنما يتغير بشكل عوائي‪.‬‬

‫] ‪ 10‬مثال[‬
‫يمكن أن نمثل مخطط األحداث لنظام محاكاة صف وفق الشكل التالي‪:‬‬

‫‪Arrival‬‬ ‫‪Departure‬‬

‫] ‪ 11‬إيضاح[‬
‫في مثالنا‪:‬‬
‫إن الحدث المھم المالحظ في ھذا النظام ھو تعطل اآللة‪.‬‬
‫أما متحول النظام التي تصف الحدث السابق ھو عدد اآلالت المعطلة ‪.n‬‬
‫• إذا كان ‪ n=0‬فان عدد اآلالت المعطلة مساويا للصفر إي ال يوجد آالت تنتظر في الصف‪،‬‬
‫وعامل اإلصالح في حالة راحة‪.‬‬
‫• إذا كان ‪ n=1‬فانه توجد آله واحدة معطلة وال توجد اآلالت تنتظر في الصف‪ ،‬ولكن عامل‬
‫اإلصالح يعمل بإصالح اآللة‪.‬‬
‫• في حالة ‪ n>1‬فانه توجد ‪ n-1‬اله تنتظر بالصف لحين إصالحھا وعامل اإلصالح يقوم‬
‫بإصالح اآللة األولى المعطلة‪.‬‬

‫‪18‬‬
‫] ‪ 12‬إيضاح[‬
‫يوصف ھذا الحدث وفق المخطط االنسيابي التالي‪:‬‬

‫تعطل اآللة‬

‫عامل‬ ‫نعم‬
‫دخول اآللة‬
‫اإلصالح‬ ‫في الصف‬
‫مشغول‬

‫عامل اإلصالح‬
‫أصبح مشغول‬

‫دورة اإلصالح‬

‫] ‪ 13‬إيضاح[‬
‫يوصف ھذا الحدث وفق المخطط االنسيابي التالي‪:‬‬

‫اآللة أصلحت‬

‫ھل توجد‬ ‫ال‬


‫العامل في‬
‫اآلالت في‬ ‫حالة راحة‬
‫الصف‬

‫دورة إصالح‬
‫جديدة‬

‫] ‪ 14‬إيضاح[‬
‫نالحظ من الحل اليديوي للنظام السابق أن األحداث تحدث خالل أزمنة ثابتة ‪،٦ ،4 ،1 ،0‬‬
‫‪ .....،16 ،11 ،٩‬بين ھذه األحداث يكون النظام مستقراً‪ .‬أي يكفي لمراقب النظام التحقق من‬
‫النظام في ھذه األوقات فقط‪.‬‬

‫‪19‬‬
‫] ‪ 15‬إيضاح[‬
‫يمكن أن يوصف النظام بطريقة أوضح وفق المخطط الزمني التالي‪:‬‬
‫‪n‬‬
‫اآللة األولى‬
‫اآللة الثانية‬
‫‪3‬‬
‫اآللة الثالثة‬

‫‪2‬‬

‫‪1‬‬

‫‪0‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪t‬‬

‫‪CL1=1‬‬ ‫‪CL2=4‬‬ ‫‪CL3=9‬‬


‫‪CL4=6‬‬ ‫‪CL4=6‬‬

‫] ‪ 16‬إيضاح[‬
‫على الطالب القيام بكتابة برنامج يحقق المخطط السابق ويقوم بتنفيذه ومالحظة النتائج عن‬
‫قيم مختلفة من المتحوالت والشروط االبتدائية‪.‬‬

‫‪20‬‬
‫التمارين‬

‫‪ -1‬ھل تعتقد أن نظام المحاكي في مسألة إصالح اآلالت في مصنع قد أخذ بعين االعتبار أن‬
‫زمن إصالح اآللة متغير‪.‬‬
‫‪ (A‬نعم أخذ بعين االعتبار‪.‬‬
‫‪ (B‬ال لم يأخذ بعين االعتبار‪.‬‬

‫‪ -2‬ھل تعتقد أن نظام المحاكي في مسألة إصالح اآلالت في مصنع قد أخذ بعين االعتبار أن‬
‫زمن عمل اآللة ثابت‪.‬‬
‫‪ (A‬نعم أخذ بعين االعتبار‬
‫‪ (B‬ال لم يأخذ بعين االعتبار‪.‬‬

‫‪ -3‬ما ھو عدد عمال اإلصالح في نظام المحاكاة في مسألة إصالح اآلالت في مصنع‪.‬‬
‫‪ (A‬ثالث عمال‪.‬‬
‫‪ (B‬عاملين‪.‬‬
‫‪ (C‬عامل واحد‪.‬‬
‫‪ (D‬متغير حسب عدد اآلالت المعطلة‪.‬‬

‫‪ -4‬ماھو النظام المعتمد في في إصالح اآلالت في مصنع‪.‬‬


‫‪ (A‬القادم أوالً يخدم أوالً ‪.FIFO‬‬
‫‪ (B‬يخدم اآللة التي تحتاج إلى وقت أصغر في اإلصالح‪.‬‬
‫‪ (C‬القادم أوالً يخدم أخراً ‪.LIFO‬‬
‫‪ (D‬بشكل عشوائي‪.‬‬

‫‪21‬‬
‫ﻣسائل‬

‫‪ -1‬أكتب برنامجا يقوم بإجراء محاكاة لنظام مخدم زبون وحيد إلصالح اآلالت في مصنع‪،‬‬
‫بحيث يقوم البرنامج بطباعة المخرجات التالية عند ظھور كل حدث‪ ،‬وكرر التنفيذ حتى‬
‫الوصول إلى القيمة ‪ 20‬للساعة الرئيسية ‪ .Master clock‬ثم تأكد من أن نظام المحاكاة التي‬
‫قمت بتنفيذه صحيحا ً عن طريق المحاكاة اليديوية‪.‬‬

‫‪ -2‬قم بتنفيذ نظام محاكاة يدوية لنظام مخدم زبون في مصرف بحيث أن عدد المخدمين‬
‫المستخدمين واحد‪ ،‬ثم قم بكتابة البرنامج للنظام وقم بتنفيذه كما في السؤال السابق‪.‬‬

‫‪ -3‬كرر السؤال السابق عندما يكون لدينا مخدمين يقومان بتخديم الزبائن‪.‬‬

‫‪22‬‬
‫المدخل إلى االحتماالت و اإلحصاء‬
‫‪Basic Probability and Statistics‬‬
‫‪ .1‬ﻣقدﻣة‬
‫‪ o‬ال يكفي فقط لتحقيق أية نظام محاكاة بشكل صحيحي إلى استنتاج مخطط التدفق النظام ومن‬
‫ثم تحقيق المخطط باستخدام برامج حاسوبية عالية المستوى‪ ،‬وإنما يحتاج نظام المحاكاة إلى‬
‫مجموعة من متحوالت عشوائية و إحصائية ليكون اقرب إلى الواقع‪.‬‬
‫ال يتم استخدام االحتماالت واإلحصاءات لمحاكاة التصرف العشوائي للنظام‪ ،‬ومن ثم‬ ‫‪ o‬فمث ً‬
‫للتحقق من جودته وكفاءته‪،‬‬
‫‪ o‬أو يتم استخدام االحتماالت واإلحصاءات الختيار تابع التوزيع االحتمالي لمتحوالت الدخل‪،‬‬
‫او لتوليد متحوالت عشوائية تحاكي ھذا التوزيع‪ ،‬أو لتحليل نتائج النظام و تصميم التجربة‬
‫العملية الكاملة لنظام المحاكاة‪.‬‬
‫سوف نستعرض في ھذا الدرس بعض األفكار األساسية عن االحتماالت واألعداد العشوائية والمتعلقة‬
‫بنظام المحاكاة‪.‬‬

‫‪ .2‬المتحوالت العشوائية وخصائصھا‬


‫‪ o‬تعرف التجربة ‪ experiment‬بأنھا عملية أو إجرائية تكون نتائجھا غير محددة و غير‬
‫معروفة تماماً‪.‬‬
‫‪ o‬تشكل مجموعة النتائج المحتملة للتجربة بالفضاء البسيط ‪ Sample Space‬ويرمز لھا بـ ‪،S‬‬
‫بينما تسمى بعض نتائج التجربة بالنقاط البسيطة‪ 1 ] .‬مثال[ ] ‪ 2‬مثال[‪.‬‬
‫‪ o‬يعرف المتحول العشوائي ‪ Random Variable‬بأنه عبارة عن تابع أو قانون مھمته‬
‫تخصيص أي رقم حقيقي محصور بين ‪ ∞-‬و ∞‪ +‬بنقطة من الفضاء البسيط ‪ 3 ] .S‬مثال[‪،‬‬
‫] ‪ 1‬إيضاح[‪.‬‬
‫‪ o‬يعرف تابع توزع االحتمالي )‪ distribution function F(x‬للمتحول العشوائي ‪ X‬وللقيم‬
‫الحقيقية ‪ x‬كما يلي‪:‬‬
‫)‪F ( x) = P ( X ≤ x‬‬ ‫∞ < ‪for - ∞ < x‬‬
‫حيث )‪ P(X≤x‬ھو احتمال مرتبط بالحدث }‪ 2 ] .{X≤x‬إيضاح[‪.‬‬

‫‪23‬‬
‫‪ o‬يعرف المتحول العشوائي المتقطع ‪ Discreet Random Variable‬بأنه عبارة عن‬
‫مجموعة من األرقام العشوائية ‪ 4 ] ...،x2 ،x1‬مثال[ التي تأخذ قيم محددة‪.‬‬
‫‪ o‬يعطى تابع االحتمال لمتحول العشوائي المتقطع بالعالقة‪:‬‬
‫∞‬
‫) ‪p ( xi ) = P ( X ≤ xi‬‬ ‫‪for i = 1,2,... ⇒ ∑ p ( xi ) = 1‬‬
‫‪i =1‬‬

‫‪ o‬ليكن لدينا المجموعة ]‪ I=[a,b‬حيث ‪ a‬و ‪ b‬أعداد حقيقية تحقق ‪ ،a≤b‬فان‪:‬‬


‫= ) ‪P( X ∈ I‬‬ ‫) ‪∑ p( x‬‬
‫‪a≤ xi ≤ b‬‬
‫‪i‬‬

‫حيث ∋ تدل على االحتواء‪ .‬أي احتمال أن المتحول ‪ X‬ينتمي إلى المجموعة ‪ I‬يساوي إلى‬
‫مجموع احتمال )‪ p(xi‬لجميع قيم ‪ xi‬المحصورة ضمن المجال ‪.a≤xi≤b‬‬
‫‪ o‬إن تابع التوزع االحتمال للمتحول العشوائي المتقطع يعطى‪:‬‬
‫= )‪F ( x‬‬ ‫) ‪∑ p( x‬‬
‫‪xi i ≤ x‬‬
‫‪i‬‬ ‫∞ < ‪for all − ∞ < x‬‬

‫‪ .3‬تابع توزع الكثافة االحتمال ‪Probability Density Function‬‬


‫‪ o‬لنفترض انه لدينا متحول عشوائي يمكن أن يأخذ عدد النھائي من القيم ] ‪ 5‬مثال [ ‪ ،‬يقال عن‬
‫العدد العشوائي ‪ X‬المنتمي للمجموعة السابقة بأنه مستمر ‪ Continuous‬إذا وجد تابع )‪f (x‬‬
‫وألي رقم حقيقي ‪ B‬يحقق ‪:‬‬
‫∞‬
‫‪P( X ∈ B ) = ∫ f ( x )dx‬‬ ‫‪and‬‬ ‫‪∫ f ( x )dx = 1‬‬
‫‪B‬‬ ‫‪−‬‬

‫∞‬

‫‪ o‬يسمى التابع )‪ f (x‬بتابع توزع الكثافة االحتمالي والذي يعبر عن جميع احتماالت الممكنة‬
‫للمتحول العشوائي المستمر ‪ 3 ] .X‬إيضاح[‬

‫)‪f(x‬‬
‫)]‪P(X∈[x,x+∆x‬‬

‫]‪P(X∈[x 1,x1 +∆x1‬‬


‫)‬

‫‪x‬‬ ‫‪x+∆x‬‬ ‫‪x 1 x1 +∆x1‬‬ ‫‪x‬‬

‫‪24‬‬
‫] ‪ 6‬مثال[‬
‫‪ .4‬توليد األعداد العشوائية ‪Generating Random Numbers‬‬
‫‪ o‬تستخدم األعداد العشوائية في كثير من التطبيقات‪ ،‬فمث ً‬
‫ال‪:‬‬
‫‪ o‬يمكن استخدام األعداد العشوائية في حساب التكامالت المعقدة‪.‬‬
‫‪ o‬يمكن استخدام األعداد العشوائية في التحقق من كفاءة الخوارزميات‪.‬‬
‫‪ o‬في المحاكاة تستخدم األعداد العشوائية لمحاكاة الحاالت الحقيقية والتأكد من أداء‬
‫النظام‪.‬‬
‫‪ o‬لقد استعرضنا في الفصل السابق مثاالً على إصالح آالت في المعمل بوجود عامل إصالح‬
‫واحد‪ ،‬وذلك بافتراض أن زمن عمل اآللة ثابت وزمن اإلصالح أيضا ً ثابت‪ ،‬ولكن في الحياة‬
‫العملية زمن اإلصالح أو زمن العمل متغير تبعا ً لنوع وطبيعة العطل‪ ،‬إذاً من اجل محاكاة‬
‫المصنع بشكل واقعي يجب على نظام المحاكاة استخدام أعداد عشوائية‪.‬‬
‫‪ o‬الستخدام األعداد العشوائية في نظام محاكاة بحيث تتبع تابع توزع احتمال مطلوب يجب أوال‬
‫التعرف على طرق توليد األعداد العشوائية المنتظمة باستخدام الحاسب‪.‬‬

‫‪ .1.4‬األعداد العشوائية الزائفة ‪Pseudo-Random Numbers‬‬


‫‪ o‬ال يوجد في الحقيقة عدد عشوائي واحد وإنما سلسلة من األعداد العشوائية والتي تتبع توزع‬
‫احتمال ما‪ .‬في ھذا التوزع نحصل على العدد العشوائي بمحض الصدفة مثالً وھذا العدد ليس‬
‫له عالقة باألعداد األخرى ضمن السلسلة‪ ،‬بحيث أن أي عدد مولد له احتمال ما يقع ضمن‬
‫المجال المحدد‪.‬‬
‫‪ o‬تسمى األعداد العشوائية التي تتبع تابع توزع منتظم والمحصورة بين ‪ ٠‬و الـ ‪ 1‬باألعداد‬
‫العشوائية ‪ ،Random Numbers‬بينما تسمى األعداد العشوائية والتي تتبع أي توزع أخر‬
‫باألعداد العشوائية المتغيرة ‪.Random Variates‬‬
‫‪ o‬يمكن اعتماد طريقة قديمة في توليد األعداد العشوائية‪ ،‬وھي طريقة التربيع لفون نيومن‪،‬‬
‫حيث تعتمد على حساب مربع العدد العشوائي المولد سابقاً و من ثم اختيار الخانات الوسطى‬
‫من الناتج لتوليد العدد الجديد‪ 7 ] .‬مثال[ ‪ 4 ]،‬إيضاح[ ‪.‬‬
‫‪ o‬إن معظم الحواسب اليوم تستخدم طريق تعتمد على طريقة التطابقية ‪Congruntial‬‬
‫‪ Method‬حيث تظھر اإلحصاءات أن األعداد المولدة نتيجة لھذه البرامج تظھر بأنھا‬
‫عشوائية تقريبا لذلك تدعى باألعداد العشوائية الزائفة ‪.‬‬

‫‪25‬‬
‫‪ .2 .4‬الطرق التطابقيه ‪Congruential methods‬‬
‫‪ o‬تعتمد الطرق التطابقية على توليد األعداد بطريقة محددة وثابتة‪ ،‬أي باستخدام معادالت‬
‫محددة مسبقا لتوليد سلسلة من األعداد محددة ومعروفة مسبقاً ] ‪ 5‬إيضاح[ ‪.‬‬
‫‪ o‬في الحقيقة سلسلة ھذه األعداد غير عشوائية ولكن يمكن اعتبارھا عشوائية إذا اجتازت‬
‫اختبارات خاصة مصممة لفحص األعداد العشوائية ] ‪ 6‬إيضاح [ ‪.‬‬
‫‪ o‬تعتمد ھذه الطريقة على العالقة التكرارية التالية‪:‬‬
‫)‪x i +1 = ax i + c(mod m‬‬
‫حيث ‪ ،m ، c ،a ،xi‬ھي أعداد موجبة ‪ 7 ] .‬إيضاح[ ‪ 8 ] .‬مثال[ ‪.‬‬
‫‪ o‬نالحظ من المثال السابق ] ‪ 8‬مثال[ أن األعداد المولدة ھي شبه عشوائية وليست عشوائية‬
‫تماما الن األعداد تتكرر بعد عدد مرات محددة وان دورة التكرار ] ‪ 8‬إيضاح[ يمكن آن‬
‫تتغير عن اختيار قيم مختلفة للثوابت ‪ 9 ] .‬إيضاح[ ‪.‬‬
‫‪ o‬لتبسيط الطريقة السابقة يمكن تعديل العالقة التكرارية إلى‪:‬‬
‫)‪x i+1 = axi (mod m‬‬
‫حيث ‪ ، m ،a ،xi‬ھي أعداد موجبة‪ 10 ] .‬إيضاح[ ‪.‬‬

‫‪ o‬إذا كان دور التكرار ] ‪ 8‬إيضاح [ يساوي إلى ‪ m‬فان مولد المتحوالت العشوائية له دور‬
‫يسمى الدور بالدور الكامل ‪ .Full Period‬و كلما كانت قيمة ‪ m‬كبيرة كان الدور كبيرا ً‪.‬‬
‫‪ o‬للحصول على الدور الكامل يجب أن نحقق الشروط التالية‪:‬‬
‫• ‪ m‬و ‪ c‬يجب أن ال يكون لھما عامل مشترك ‪.‬‬
‫• ) ‪ a=1(mod r‬حيث ‪ r‬عدد أولي للعدد ‪ m‬أي يقبل القسمة على نفسه أو ‪.1‬‬
‫• )‪ a=1(mod 4‬إذا كانت ‪ m‬من مضاعفات ‪.4‬‬
‫• يمكن اختيار أية قيمة االبتدائية ‪ ، x0‬حيث ال تؤثر على عمل توليد السلسلة‪.‬‬
‫] ‪ 9‬مثال[‬
‫‪ o‬ويجب االنتباه إلى تجنب حدوث طفح في سجالت المعالج عندما تستخدم عمليات الضرب‬
‫عند حساب العدد العشوائي الجديد‪ ،‬حيث يمكن أن يؤدي ذلك إلى توقف البرنامج آو إھمال‬
‫البيت األكثر أھمية في أثناء إجراء العمليات الحسابية‪ ،‬مما يؤدي إلى الحصول على نتائج‬
‫خاطئة تماما ً‪.‬‬

‫‪ .3.4‬طرق أخرى‬
‫بالرغم من أن الطريقة التطابقية ھي األكثر استخداماً لتوليد سلسلة األعداد العشوائية إال انه تم‬
‫تطوير طرق أخرى لتحسين أدائھا من حيث زيادة دور التكرار‪ ،‬وتحسين خصائصھا من ھذه‬
‫الطرق‪:‬‬
‫• الطريقة التطابقية العامة ‪.General congruential method‬‬
‫• المولد التركيبي ‪.Composite generator‬‬
‫• مولد توسورث ‪.Tausworthe generator‬‬
‫‪26‬‬
‫‪ 1.3.4‬الطريقة التطابقية العاﻣة ‪General congruential method‬‬
‫‪ o‬ھذه الطريقة تستخدم معادلة التوليد التالية‪:‬‬
‫)‪xi +1 = f ( xi , xi −1 , xi − 2 ,....)(mod m‬‬
‫حيث )‪ f(x‬تابع ما يستخدم لتوليد الرقم ‪ xi‬من مجموعة من األعداد العشوائية المولدة سابقا ً‪.‬‬
‫‪ o‬من التوابع الشھيرة التابع التربيعي والذي يأخذ الشكل التالي‪:‬‬
‫‪2‬‬
‫‪xi +1 = a1 xi + a 2 xi −1 + c‬‬
‫حيث ‪ a1, a2, c‬ثوابت‪.‬‬

‫‪ o‬عند جعل القيم ‪ a1=a2=1‬و ‪ c=0‬فإننا نحصل على طريقة متوسط التربيع ] ‪ 7‬مثال[‬
‫‪ o‬الحالة الخاصة الثانية تدعى الطريقة التطابقية التجميعية والتي تعتمد على العالقة‪:‬‬
‫‪f ( xi , xi −1 , xi − 2 ,...., xi − k ) = a1 xi + a 2 xi −1 + L + a k xi − k‬‬

‫حيث تعتبر الطريقة التي تعتمد على‪ f ( xi , xi −1 ) = xi + xi −1 :‬من أھم حالتھا‪.‬‬

‫‪ 2 .3.4‬المولد التركيبي ‪Composite generator‬‬


‫‪ o‬تعتمد ھذه الطريقة على الجمع بين طريقتين ] ‪ 9‬إيضاح [ وذلك لتحسين أداء سلسلة األعداد‬
‫العشوائية الناتجة ‪.‬‬
‫‪ o‬تعتمد ھذه الطريقة مثالً على استخدام مولدين تربيعين‪ .‬يستخدم األول لتوليد مجموعة من ‪k‬‬
‫عدد عشوائي‪ ،‬تستخدم ھذه األعداد باستخدام المعادلة الثانية لتوليد ‪ r‬عدد عشوائي‪ ،‬ھذه‬
‫األعداد تستخدم بد ورھا لتوليد ‪ k‬رقم جديد من األعداد العشوائية باستخدام المعادلة األولى‪،‬‬
‫وھكذا تكرر العملية‪.‬‬
‫‪ o‬يمكن التحقق من أن ھذه ال طريقة يمكن أن تعطي نتائج مرضية حتى ولو أن المولدين‬
‫المستخدمين غير جيدين ‪.‬‬

‫‪27‬‬
‫‪ 3 .3.4‬ﻣولد توسورث ‪Tausworthe generator‬‬
‫‪ o‬تعتمد ھذه الطريقة على الطريقة التطابقية التجميعية عندما يكون ‪.m=2‬‬
‫)‪xi +1 = f ( xi , xi −1 , xi − 2 ,....)(mod 2‬‬
‫حيث‬
‫‪f ( xi , xi −1 , xi − 2 ,...., xi − k ) = a1 xi + a 2 xi −1 + L + a k xi − k‬‬
‫أي‪:‬‬
‫‪xi +1 = ( a1 xi + a 2 xi −1 + L + a k xi − k ) mod 2‬‬
‫حيث ‪ xi‬تأخذ احد القيمتين ‪ 0‬آو ‪ 11 ] .1‬إيضاح[‬
‫‪ o‬يمكن تبسيط الطريقة باستخدام العالقة المنطقية ‪ 12 ] EX-OR‬إيضاح[ حيث تستخدم‬
‫مجموعة البيتات المولدة لتكوين سلسلة من ‪ n-bits‬تشكل الرقم العشوائي المحصور بين‬
‫القيمة ‪ 0‬و ‪.2n-1‬‬

‫‪ .5‬طرق اختبار األعداد العشوائية الزائفة‬


‫‪ o‬إن معظم الطرق المستخدمة لتوليد األعداد العشوائية الزائفة ‪Pseudo-random‬‬
‫‪ numbers‬ھي طرق محددة أي أن األعداد التي تولد عنھا ليست عشوائية ‪ .‬ولكن يمكن‬
‫اعتبار ھذه األعداد عشوائية طالما أنھا اجتازت عدد من االختبارات اإلحصائية‪.‬‬
‫‪ o‬يمكن اعتبار سلسلة أعداد بأنھا عشوائية إذا كانت تحقق الشرطين التاليين‪:‬‬
‫• إذا كانت موزعة بشكل منتظم ‪.Uniformly distributed‬‬
‫• وكانت مستقلة عن بعضھا البعض ‪.‬‬
‫‪ o‬سوف ن شرح طريقتين أساسيتين الختبار األعداد العشوائية‪:‬‬
‫ اختبارات التشغيل ‪.Runs test‬‬
‫ اختبار ‪. Chi-Square‬‬

‫‪28‬‬
‫‪ 1.5‬اختبارات التشغيل ‪Runs Test‬‬
‫‪ o‬يستخدم ھذا االختبار لمعرفة ما إذا كانت سلسلة األعداد العشوائية الزائفة مستقلة‬
‫‪ independent‬أم ال‬
‫‪.‬‬

‫‪ o‬تعتمد ھذه الطريقة على ال خطوات التالية‪:‬‬


‫‪.‬‬
‫‪ 1‬نأخذ سلسلة من األعداد العشوائية بين ‪ ٠‬والـ ‪1‬‬ ‫‪.‬‬

‫مثال السلسلة‪0.8, 0.7, 0.75, 0.55, 0.6, 0.7, 0.3, 0.4, 0.5 :‬‬
‫‪ . 2‬سوف نقسم ھذه السلسلة إلى مجموعات من السالسل صغيرة ‪ run up‬يمكن أن يكون‬
‫طول الواحدة منھا عدد واحد‪ ،‬وبحيث تكون األعداد العشوائية فيھا تتزايد بشكل‬
‫تصاعدي مثال‪:‬‬ ‫‪.‬‬

‫‪ 0.8‬السلسلة الجزئية األولى بطول ‪.1‬‬ ‫‪-‬‬


‫‪ 0.7, 0.75‬السلسلة الجزئية الثانية بطول ‪.2‬‬ ‫‪-‬‬

‫‪ 0.55, 0.6, 0.7‬السلسلة الجزئية الثالثة بطول ‪.3‬‬ ‫‪-‬‬

‫‪ 0.3, 0.4, 0.5‬السلسلة الجزئية الرابعة بطول ‪.3‬‬ ‫‪-‬‬

‫‪ . 3‬ترمز السالسل الجزئية ‪ run up‬المتساوية الطول بالرمز ‪ ri‬حيث ‪ i‬ط ول السلسلة‬
‫وبحيث تجمع جميع السالسل ‪ i≥ 6‬مع بعضھا البعض ‪.‬‬
‫مثال‪.r1=1, r2=1, r3 =2 :‬‬

‫‪ . 4‬تستخدم رموز السالسل الجزئية ‪ ri‬بعد ذلك لحساب العالقة‪:‬‬


‫‪1‬‬
‫∑≤ ‪n 1‬‬
‫=‪R‬‬ ‫‪(ri nb i )(r j‬‬
‫‪−‬‬ ‫‪−‬‬

‫‪nbj )a ij ,‬‬ ‫‪1≤ i ≤ 6 , 1 ≤ j ≤ 6‬‬


‫‪i, j ≤6‬‬

‫حيث ‪ n‬عدد العينات المستخدمة و ‪ b i‬مجموعة من الثوابت تعطى بالمصفوفة التالية‪:‬‬


‫‪1 5 11 19 29‬‬ ‫‪1‬‬
‫‪(b1 , b2 ,‬‬ ‫‪L‬‬

‫‪, b6 ) = ( , ,‬‬ ‫‪,‬‬ ‫‪,‬‬ ‫‪,‬‬ ‫)‬


‫‪6 24 120 720 5040 840‬‬

‫و ‪ aij‬ثوابت تعطى بالمصفوفة الثنائية التالية‪:‬‬


‫‪ 4529.4 9044.9 13568‬‬ ‫‪18091‬‬ ‫‪22615‬‬ ‫‪27892 ‬‬
‫‪‬‬ ‫‪‬‬
‫‪9044.9 18097 27139‬‬ ‫‪36187‬‬ ‫‪45234‬‬ ‫‪55789‬‬
‫‪‬‬ ‫‪‬‬
‫‪ 13568‬‬ ‫‪27139‬‬ ‫‪40721‬‬ ‫‪54281‬‬ ‫‪67852‬‬ ‫‪83685 ‬‬
‫‪ 18091‬‬ ‫‪36187‬‬ ‫‪54281‬‬ ‫‪90470‬‬
‫‪‬‬
‫‪111580 ‬‬
‫‪‬‬ ‫‪72414‬‬
‫‪ 22615‬‬ ‫‪45234‬‬ ‫‪67852 90470 113262 139476 ‬‬
‫‪‬‬ ‫‪‬‬
‫‪ 27892‬‬ ‫‪55789‬‬ ‫‪83685 111580 139476 172860 ‬‬

‫إذا عند قيمة لـ ‪ R ≥4000‬ف إن تابع التوزيع االحتمالي للعدد العشوائي سيكون بشكل‬
‫‪ Chi-square‬بدرجة حرية تساوي ‪.6‬‬

‫‪29‬‬
‫‪ 2.5‬اختبار ‪Chi-Square‬‬
‫‪ o‬الخطوة التالية الختبار استقاللية المتحوالت المنطقية‪ ،‬ھي باختبار توزع المنتظم‬
‫للمتحوالت المنطقية العشوائية‪.‬‬
‫‪ o‬يتم اختبار ‪ chi-square‬بإتباع الخطوات التالية‪:‬‬
‫‪ .1‬ليكن لدينا سلسلة األعداد العشوائية المحصورة بين ‪ 0‬و ‪.1‬‬
‫‪ .2‬يتم تقسيم ھذه السلسلة إلى ‪ k‬سلسله جزئية بطول متساوي‪ ،‬حيث ‪.k>100‬‬
‫‪ .3‬عدد األرقام العشوائية ضمن السلسلة الجزئية ذات الترتيب ‪ i‬يساوي ‪ fi‬بحيث‬
‫يجب أن يكون ‪ 13 ] .fi>5‬إيضاح[‬
‫‪ .4‬إذا كانت األرقام العشوائية ضمن السلسلة الجزئية موزعة بشكل منتظم تماماً‪،‬‬
‫يتم حساب متوسط األرقام العشوائية ضمن السلسلة الجزئية‪ n/k ،‬حيث ‪ n‬عدد‬
‫العينات‪.‬‬
‫] ‪ 14‬إيضاح[‬
‫‪ .5‬يتم بعد ذلك حساب العالقة التالية‪:‬‬
‫‪k k‬‬ ‫‪n‬‬
‫‪χ = ∑ ( fi − )2‬‬
‫‪2‬‬

‫‪n i =1‬‬ ‫‪k‬‬


‫والتي لھا ‪ k-1‬درجة حرية‪.‬‬
‫‪ .6‬يتم مقارنة النتيجة مع قيمة محددة مسبقا ً ضمن جداول محددة فإذا كانت القيمة‬
‫‪ χ2‬اكبر من القيمة المفترضة في الجداول ترفض النتيجة ويعتبر التوزيع غير‬
‫منتظم‪.‬‬
‫] ‪ 15‬إيضاح[‬

‫‪30‬‬
‫ﻣلحقات‬
‫] ‪ 1‬مثال[‬
‫عند رمي قطعة نقدية فإننا نحصل على الفضاء ‪ S‬على احد النتيجتين )‪ H‬الصورة( أو )‪ T‬النقش(‪:‬‬
‫}‪S = {H, T‬‬

‫حيث تمثل }{ بمجموعة تحتوي على ‪ T‬أو ‪.H‬‬

‫] ‪ 2‬مثال[‬
‫عند رمي النرد فإننا نحصل على الفضاء ‪ S‬على احد النتائج التالية‪:‬‬
‫}‪S = {1,2,3,4,5,6‬‬
‫] ‪ 3‬مثال[‬
‫عند رمي نردين في أن واحد فإننا نحصل على الفضاء التالي‪:‬‬
‫})‪S = {(1,1), (1,2), (1,3),...., (6,6‬‬
‫حيث يمثل الرقم األول ‪ i‬في المجموعة )‪ (i, j‬بالرقم الناتج من النرد األول و ‪ j‬بالرقم الناتج من النرد‬
‫الثاني‪ .‬ويمثل المتحول العشوائي ‪ X‬ھو ناتج جمع قمتي النردين‪.‬‬

‫] ‪ 1‬إيضاح[‬
‫سوف نرمز للمتحول العشوائي بالحرف الالتيني الكبير ‪ Z،Y،X‬بينما لقيم المتحول العشوائي‬
‫بالحرف الصغير ‪.x,y,z‬‬

‫] ‪ 2‬إيضاح[‬
‫يتميز تابع توزع االحتمالي بالخصائص التالية‪:‬‬
‫ ‪ 0≤F(x)≤1‬من اجل كل قيم ‪.x‬‬
‫ إن التابع )‪ F(x‬غير متناقص أي إذا كان ‪ x1<x2‬فان )‪.F(x1)≤F(x2‬‬
‫‪. xlim‬‬ ‫ دوما ً ‪ lim F ( x) = 1‬و ‪F ( x) = 0‬‬
‫∞‪→ −‬‬ ‫∞→ ‪x‬‬

‫سوف نرمز للمتحول العشوائي بالحرف الالتيني الكبير ‪ Z،Y،X‬بينما لقيم المتحول العشوائي‬
‫بالحرف الصغير ‪.x,y,z‬‬

‫‪31‬‬
‫] ‪ 3‬مثال[‬
‫نظام الطائرة يعتبر نظام مستمر حيث تتغير معامالت النظام )كتغير علو الطائرة( بشكل مستمر مع‬
‫الزمن‪.‬‬

‫] ‪ 4‬مثال[‬
‫األعداد الحقيقية المحصورة بين ‪ ٠‬و ‪.1‬‬

‫] ‪ 5‬مثال[‬
‫األعداد الحقيقية الموجبة‪.‬‬

‫] ‪ 3‬إيضاح[‬
‫يعبر تابع الكثافة االحتمالي للمتحول العشوائي ‪ X‬بأنه عدد مرات تكرار العدد العشوائي ‪.xi‬‬

‫] ‪ 6‬مثال[‬
‫المتحول العشوائي المنتظم بين المجال ]‪ [0, 1‬له تابع كثافة االحتمالي التالي‪:‬‬
‫)‪f(x‬‬

‫‪1‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪x‬‬

‫] ‪ 7‬مثال[‬
‫لنفترض أن العدد العشوائي القديم ھو ‪ 5772156649‬إذا بحساب المربع نجد النتيجة‬
‫‪ 33317 7923805949 09201‬أي أن الرقم العشوائي الجديد ھو‪.7923805949 :‬‬

‫‪32‬‬
‫] ‪ 4‬إيضاح[‬
‫من المھم معرفة ما إذا كانت ھذه الطريقة تولد سلسلة من األعداد العشوائية صحيحة بحيث ال يوجد‬
‫ترابط بين ھذه األعداد‪ ،‬في الحقيقة ال يمكن مالحظة أن ھذه الطريقة ال تولد سلسلة من األعداد‬
‫العشوائية‪.‬‬

‫] ‪ 5‬إيضاح[‬
‫أي انك تستطيع معرفة قيمة العدد العشوائي مثال الخامس قبل توليد السلسة أصال‪.‬‬

‫] ‪ 6‬إيضاح[‬
‫يتم اختبار انتظام سلسلة األعداد وعدم ارتباط ھذه األعداد مع بعضھا البعض‪.‬‬

‫] ‪ 7‬إيضاح[‬
‫يتم حساب الرقم العشوائي الجديد ‪ xi+1‬من العدد القديم ‪ xi‬وذلك بضربه أوالً بالثابت ‪ a‬وجمع الناتج‬
‫مع الثابت ‪ c‬ومن ثم تقسيم الناتج على ‪ m‬واختيار باقي القسمة فقط‪.‬‬

‫] ‪ 8‬مثال[‬
‫مثالً ‪ x0=a=c=7‬و ‪ m=10‬إذاً نحصل على‪:‬‬
‫‪x1=mod((7*7+7)/10)=mod(56/10)=mod(5.6)=6,‬‬
‫‪x2=mod((6*7+7)/10)=mod(49/10)=mod(4.9)=9,‬‬
‫‪x3=mod((9*7+7)/10)=mod(70/10)=mod(7.0)=0,‬‬
‫‪x4=mod((0*7+7)/10)=mod(7/10)=mod(0.7)=7,‬‬
‫‪x5=mod((7*7+7)/10)=mod(56/10)=mod(5.6)=6,‬‬
‫‪x6=mod((6*7+7)/10)=mod(49/10)=mod(4.9)=9,‬‬
‫…‬

‫] ‪ 8‬إيضاح[‬
‫ويعرف دور التكرار بعدد األرقام العشوائية )المسافة( التي تولدھا الخوارزمية )المعادلة( قبل أن‬
‫تتكرر مره أخرى‪.‬‬

‫‪33‬‬
‫] ‪ 9‬إيضاح [‬
‫قم باختيار قيم أخرى للثوابت ‪ m ، c ، a‬واحسب السلسلة وحاول آن تجد التكرار ‪.‬‬

‫] ‪ 10‬إيضاح [‬
‫نالحظ أن سلسلة األعداد المولدة محصورة بين ‪ ٠‬و ‪ m-1‬ويمكن الحصول بسھولة على سلسلة‬
‫األعداد العشوائية محصورة بين ‪ 0‬و ‪ 1‬بتقسيم ‪. xi/m‬‬

‫] ‪ 9‬مثال[‬
‫إن القيم المثالية المستخدمة في توليد سلسلة األعداد العشوائية ھي‪:‬‬
‫‪a =314, 159, 269, c=453, 806, 245, m =231‬‬

‫] ‪ 11‬إيضاح [‬
‫يمكن نالحظ أن ھذه الطريقة تولد سلسلة من البيت } ‪ ،{bi‬وذلك عند افتراض أن ‪ ai‬ذات قيم ثنائية‬
‫أيضاً‬
‫‪.‬‬

‫] ‪ 12‬إيضاح [‬
‫إن عالقة ‪ EX-OR‬تعطى وفق جدول الحقيقة التالي‪:‬‬
‫‪A‬‬ ‫‪B‬‬ ‫‪A⊕B‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫] ‪ 13‬إيضاح [‬
‫تسمى ‪ f i‬بالمراقب ‪.observed‬‬

‫] ‪ 14‬إيضاح [‬
‫تعتمد فكرة اختبار ‪ chi-square‬على حساب تغيرات الفرق بين القيمة المالحظة من القياس الحقيقي‬
‫) األعداد المولدة( وبين القيمة النظرية والمفترض الحصول عليھا‪.‬‬

‫] ‪ 15‬إيضاح [‬
‫يمكن للطالب تحميل الملف المرفق ‪ chi-square.pdf‬الذي يحتوي على جداول ‪.χ 2‬‬

‫‪34‬‬
‫التمارين‬

‫‪ -5‬أستخدم الطريقة التطابقية لتوليد سلسلة من األعداد العشوائية يدويا ً عندما تكون ‪ m=10‬و‬
‫‪ c=7‬و ‪ a=1‬ومن ثم احسب دور التكرار‪.‬‬

‫‪ -6‬أستخدم الطريقة التطابقية لتوليد سلسلة من األعداد العشوائية يدويا ً عندما تكون ‪ m=7‬و‬
‫‪ c=5‬و ‪ a=3‬ومن ثم احسب دور التكرار‪.‬‬

‫‪ -7‬أستخدم الطريقة التطابقية لتوليد سلسلة من األعداد العشوائية يدويا ً عندما تكون ‪ m=36‬و‬
‫‪ c=5‬و ‪ a=3‬ومن ثم احسب دور التكرار‪ ،‬ھل حققت الدور الكامل‪.‬‬

‫‪ -8‬أستخدم الطريقة التطابقية العامة لتوليد سلسلة من األعداد العشوائية يدويا ً عندما تكون ‪a3=7‬‬
‫و ‪ a2=5‬و ‪ a1=3‬و ‪ ، c=4‬وابتدأ من القيمة االبتدائية الواحد‪ .‬من ثم احسب دور التكرار‪.‬‬

‫‪ -9‬أستخدم الطريقة التطابقية العامة التجميعية لتوليد سلسلة من األعداد العشوائية يدويا ً عندما‬
‫تكون القيمة االبتدائية الواحد‪.‬‬

‫استخدم طريقة التوسورث لتوليد سلسلة من األعداد العشوائية يدويا ً عندما تكون‬ ‫‪-10‬‬
‫‪ a3=7‬و ‪ a2=5‬و ‪ ، a1=3‬من ثم احسب دور التكرار‪.‬‬

‫‪35‬‬
‫ﻣسائل‬

‫‪ -4‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين األول‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪ -5‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين الثاني‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪ -6‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين الثالث‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪ -7‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين الرابع‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪ -8‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين الخامس‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪ -9‬أكتب برنامجا يقوم بإجراء بتوليد األعداد العشوائية وفق نفس الشروط في التمرين السادس‬
‫السابق‪ ،‬ثم ارسم الـ ‪ Histogram‬باستخدام برنامج ‪ Excel‬ثم تأكد من النتائج باستخدام‬
‫‪ Run test‬و ‪.Chi-test‬‬

‫‪36‬‬
‫توليد األعداد العشوائية‬
‫‪Generating Stochastic Varieties‬‬
‫‪ .1‬ﻣقدﻣة‬
‫‪ o‬لقد استعرضنا في الفصل السابق طرق توليد األعداد العشوائية المحددة )الزائفة(‬
‫والموزعة بشكل منتظم ‪.random numbers‬‬
‫‪ o‬في ھذا الفصل سوف ندرس طرق توليد األعداد العشوائية الغير محددة والتي‬
‫تسمى ‪ random variates‬أو ‪.stochastic variates‬‬
‫‪ o‬حيث تلعب األعداد العشوائية المحددة دوراً مھماً في توليد األعداد العشوائية‬
‫الغير محددة‪.‬‬

‫‪ .2‬طريقة التحويل العكسي ‪The inverse transform method‬‬


‫‪ o‬تستخدم ھذه الطريقة فقط عندما يكون حساب معكوس تابع توزيع الكثافة االحتمال ممكن من‬
‫الناحية العملية‪.‬‬
‫‪ o‬لنفترض أننا نرغب بتوليد أعداد عشوائية غير محددة لھا تابع كثافة احتمالي ‪Probability‬‬
‫)‪ Density Function (pdf‬مساوياً )‪ .f(x‬ولنفترض أن تابع تراكم الكثافة االحتمالي‬
‫‪ Cumulative density function‬يساوي )‪ F(x‬ومحصور ضمن المجال ‪ 0‬و ‪.1‬‬
‫‪ o‬نقوم أوال بتوليد رقم عشوائي ‪ r‬بحيث‪:‬‬
‫‪F ( x) = r‬‬
‫‪ o‬ثم نقوم بالحصول على العدد العشوائي المطلوب ‪ x‬بحساب مقلوب ‪ F‬أي‪:‬‬
‫‪1‬‬
‫)‪x = F ( r‬‬
‫‪−‬‬

‫‪ o‬حيث )‪ F-1( r‬مقلوب التابع ‪.F‬‬

‫‪37‬‬
‫مثال‪:‬‬
‫‪ o‬لنفترض أننا نريد توليد أرقام عشوائية غير محددة لھا تابع الكثافة االحتمالي التالي‪:‬‬

‫‪2‬‬
‫‪f ( x ) = 2 x,‬‬ ‫‪0 ≤ x ≤1‬‬

‫)‪f(x‬‬

‫‪ o‬نقوم أوال بحساب تابع الكثافة التراكمي )‪ F(x‬باستخدام العالقة‪:‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪x‬‬
‫‪b‬‬
‫‪F ( x) = ∫ f (t )dt‬‬
‫‪a‬‬

‫أي‪:‬‬
‫‪١‬‬
‫‪x‬‬
‫)‪F(x‬‬ ‫‪F ( x) = ∫ 2tdt = x 2‬‬ ‫‪0 ≤ x ≤1‬‬
‫‪r‬‬ ‫‪0‬‬

‫‪ o‬أي أن األعداد العشوائية المطلوبة تساوي‪:‬‬


‫‪r = x2‬‬ ‫‪⇒ x= r‬‬

‫‪0‬‬ ‫‪x‬‬ ‫‪1‬‬

‫‪ .3‬توليد األعداد العشوائية ﻣن توابع االحتمالية المستمرة‬


‫‪ o‬في ھذه الفقرة سوف نستخدم طريقة التحويل العكسي لتوليد األعداد العشوائية الغير محددة‬
‫من مجموعة من توابع توزيع كثافة احتمالية مختلفة وھي‪:‬‬
‫• من تابع توزع منتظم ‪.uniform distribution‬‬
‫• تابع توزع أسي ‪.exponential distribution‬‬
‫• تابع توزع إي رالنغ ‪.Erlang distribution‬‬
‫• تابع توزع طبيعي ‪.Normal distribution‬‬

‫‪38‬‬
‫‪ 1.3‬توليد األعداد العشوائية ﻣن تابع توزع ﻣنتظم‬
‫‪ o‬إن تابع الكثافة االحتمالي للتوزع المنتظم يعطى بالعالقة‪:‬‬
‫‪ 1‬‬
‫‪‬‬ ‫‪a≤ x≤b‬‬
‫‪f ( x) =  b − a‬‬ ‫‪,‬‬
‫‪ 0‬‬ ‫‪otherwise‬‬
‫)‪f(x‬‬

‫)‪1/(b-a‬‬

‫‪0‬‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪x‬‬

‫‪ o‬نقوم بحساب تابع الكثافة التراكمي )‪ F(x‬باستخدام العالقة‪:‬‬


‫‪x‬‬ ‫‪x‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪x−a‬‬
‫∫ = )‪F ( x‬‬ ‫= ‪dt‬‬ ‫∫‬ ‫= ‪dt‬‬
‫‪a‬‬
‫‪b−a‬‬ ‫‪b−aa‬‬ ‫‪b−a‬‬
‫‪ o‬إن القيمة المتوقعة ‪) expectation‬المتوسط المتوقع( واالنحراف ‪ variance‬يعطيان‬
‫بالعالقتين‪:‬‬
‫‪b‬‬ ‫‪b‬‬
‫‪1‬‬ ‫‪b+a‬‬
‫= ‪E ( x) = ∫ f ( x) xdx‬‬ ‫∫‬ ‫= ‪xdx‬‬
‫‪a‬‬
‫‪b−aa‬‬ ‫‪2‬‬
‫‪b‬‬
‫‪(b − a) 2‬‬
‫= ‪Var ( x) = ∫ ( x − E ( x)) 2 F ( x)dx‬‬
‫‪a‬‬
‫‪12‬‬
‫‪ o‬بحساب معكوس التابع )‪ F(x‬نحصل على‪:‬‬
‫‪x−a‬‬
‫= )‪r = F ( x‬‬ ‫‪⇒ x = a + (b − a) r‬‬
‫‪b−a‬‬

‫‪39‬‬
‫‪ 2 .3‬توليد األعداد العشوائية ﻣن تابع توزع أسي‬
‫‪ o‬إن تابع الكثافة االحتمالي للتوزع األسي يعطى بالعالقة‪:‬‬
‫)‪f(x‬‬ ‫‪f ( x) = ae − ax ,‬‬ ‫‪a > 0, x ≥ 0‬‬

‫‪ae-a2‬‬

‫‪0‬‬ ‫‪a‬‬ ‫‪x‬‬

‫‪ o‬نقوم بحساب تابع الكثافة التراكمي )‪ F(x‬باستخدام العالقة‪:‬‬


‫‪x‬‬ ‫‪x‬‬
‫‪F ( x) = ∫ f (t )dt = ∫ ae −at tdt = 1 − e −ax‬‬
‫‪0‬‬ ‫‪0‬‬

‫‪ o‬إن القيمة المتوقعة ‪ expectation‬واالنحراف ‪ variance‬يعطيان بالعالقتين‪:‬‬


‫∞‬
‫‪1‬‬
‫= ‪E ( x) = ∫ aet −at tdtdt‬‬
‫‪0‬‬
‫‪a‬‬
‫∞‬
‫‪1‬‬
‫= ‪Var ( x) = ∫ (t − E ( x)) 2 e −at tdtdt‬‬
‫‪0‬‬ ‫‪a2‬‬
‫‪ o‬بحساب معكوس التابع )‪ F(x‬نحصل على‪:‬‬
‫‪r = F ( x) = 1 − e − ax‬‬ ‫‪⇒ 1 − r = e − ax‬‬
‫‪1‬‬
‫) ‪x = − log(1 − r ) = − E ( x) log(1 − r‬‬
‫‪a‬‬
‫‪ o‬باعتبار أن )‪ F(x‬موزعة بشكل منتظم بين ‪ 0‬و ‪ 1‬نجد‪:‬‬
‫‪1‬‬
‫‪r = e −ax‬‬ ‫‪⇒ x = − log r‬‬
‫‪a‬‬

‫‪40‬‬
‫‪ 3 .3‬توليد األعداد العشوائية ﻣن تابع إيرالﻧغ ‪Erlang‬‬
‫‪ o‬يستخدم في معظم نظم المحاكاة األعداد العشوائية الغير محددة والتي تتبع تابع توزع‬
‫االحتمالي األسي ولكنھا ال تغطي الحالة الواقعية لتغير متحوالت دخل نظام المحاكاة‪.‬‬
‫‪ o‬بينما تتبع الحاالت الواقعية تغيرات متحوالت بتوزع احتمالي يساوي إلى مجموع توابع أسية‬
‫تتابع تسلسليا ً‪.‬‬
‫‪ o‬عندما يكون متوسط ‪ mean‬ھذه التوابع األسيه واحد تقريبا ً‪ ،‬فان تابع التوزيع الكلي الناتج‬
‫يساوي إلى تابع توزيع إيرالنغ ‪.Erlang‬‬

‫‪1/a‬‬ ‫‪1/a‬‬ ‫‪1/a‬‬

‫‪ o‬إن تابع الكثافة االحتمالي للتوزع إيرالنغ ھو عبارة عن جداء طي لـ ‪ k‬تابع توزع أسي له‬
‫متوسط ‪ mean‬يساوي إلى ‪.1/a‬‬
‫‪ o‬إذا القيمة المتوقعة ‪ expectation‬واالنحراف ‪ variance‬عبارة عن تكرار القيمة المتوقعة‬
‫واالنحراف المعياري بعدد ‪ k‬مرة أي‪:‬‬
‫‪k‬‬
‫= )‪E ( x‬‬
‫‪a‬‬
‫‪k‬‬
‫= ) ‪Var ( x‬‬ ‫‪2‬‬
‫‪a‬‬
‫‪ o‬يتم حساب العدد العشوائي المطلوب من تابع توزيع األسي وذلك عن طريق حساب مجموع‬
‫لـ ‪ k‬متحول عشوائي ذو تابع توزيع أسي أي‪:‬‬
‫‪k‬‬
‫‪1 k‬‬ ‫‪1‬‬ ‫‪k‬‬
‫‪‬‬
‫‪x = ∑ xi = −‬‬ ‫∑‬ ‫‪log‬‬ ‫‪r‬‬‫‪i‬‬ ‫=‬ ‫‪−‬‬ ‫‪‬‬ ‫‪log‬‬ ‫∑‬ ‫‪ri ‬‬
‫‪i= 1‬‬ ‫‪a i =1‬‬ ‫‪a‬‬ ‫‪i =1‬‬ ‫‪‬‬

‫‪41‬‬
‫‪ 4 .3‬توليد األعداد العشوائية ﻣن تابع توزع الطبيعي‬
‫‪ o‬إن تابع الكثافة االحتمالي للتوزع الطبيعي يعطى بالعالقة‪:‬‬
‫‪1 ( x−µ ) 2‬‬
‫‪1‬‬ ‫‪−‬‬
‫= )‪f ( x‬‬ ‫‪e 2‬‬ ‫‪σ2‬‬
‫‪,‬‬ ‫∞‪− ∞ < x < +‬‬
‫‪σ 2π‬‬
‫حيث أن القيمة المتوقعة تساوي ‪ µ‬واالنحراف يساوي ‪.σ2‬‬
‫] ‪ 1‬إيضاح[ ‪.‬‬

‫‪ o‬لتوليد أعداد عشوائية ذات تابع كثافة احتمالي طبيعي يجب استخدام نظرية المركز المحدد‬
‫] ‪ 2‬إيضاح[‬
‫‪ o‬إذا بتوليد ‪ k‬عدد عشوائي منتظم ‪ rk …. ،r2 ،r1‬محصورة بين ‪ 0‬و ‪ ،1‬نحصل على‪:‬‬
‫‪a+b 1‬‬
‫= ) ‪E ( ri‬‬ ‫=‬
‫‪2‬‬ ‫‪2‬‬
‫‪(b − a ) 2 1‬‬
‫= ) ‪Var (ri‬‬ ‫=‬
‫‪12‬‬ ‫‪12‬‬

‫‪42‬‬
‫‪ o‬بتطبيق نظرية المركز المحدد ] ‪ 2‬إيضاح[ نحصل على‪:‬‬
‫‪k k‬‬
‫‪∑r‬‬ ‫‪i‬‬ ‫‪≈ N( ,‬‬
‫‪2 12‬‬
‫)‬

‫حيث ‪ N‬ترمز للتوزع المنتظم‪ ،‬وبالتالي تصبح العالقة‪:‬‬


‫)‪∑ r − k / 2 ≈ N (0,1‬‬
‫‪i‬‬

‫‪k / 12‬‬
‫‪ o‬لنفترض أن ‪ x‬توزع طبيعي فان‪:‬‬
‫‪x−µ‬‬
‫⟹ )‪≈ N (0,1‬‬
‫‪x−µ‬‬
‫=‬
‫‪∑r − k / 2‬‬
‫‪i‬‬

‫‪σ‬‬ ‫‪σ‬‬ ‫‪k / 12‬‬


‫أي‪:‬‬
‫‪12 ‬‬ ‫‪k‬‬
‫‪x =σ‬‬ ‫‪ ∑ ri −  + µ‬‬
‫‪k ‬‬ ‫‪2‬‬
‫] ‪ 3‬إيضاح[ ‪ 4 ] ،‬إيضاح[ ‪.‬‬

‫‪ .4‬توليد األعداد العشوائية ﻣن توابع االحتمالية المتقطعة‬


‫‪ o‬في ھذه الفقرة سوف نستخدم طريقة التحويل العكسي لتوليد األعداد العشوائية الغير محددة‬
‫من توابع توزيع مختلفة وھي‪:‬‬
‫• من تابع توزع الھندسي ‪.geometric distribution‬‬
‫• من تابع توزع الثنائي ‪. binomial distribution‬‬
‫• تابع توزع بويسن ‪.poisson distribution‬‬

‫‪43‬‬
‫‪ .1.4‬توليد األعداد العشوائية ﻣن تابع توزع الھندسي‬
‫‪ o‬ليكن لدينا سلسلة من مجموعة من التجارب نتيجتھا أما نجاح أو فشل )صح أو خطأ(‪.‬‬
‫‪ o‬لنرمز الحتمال النجاح بـ ‪ p‬و الحتمال الخطأ بـ ‪ q‬على الترتيب و بحيث ‪ .p+q=1‬إن‬
‫المتحول العشوائي لتتابع األخطاء يتبعھا نجاح واحد يتبع تابع توزع احتمالي ھندسي‪.‬‬
‫‪ o‬إن تابع الكثافة االحتمالي للتوزع الھندسي يعطى بالعالقة‪:‬‬
‫‪p(n) = pq n ,‬‬ ‫‪n = 0,1,2,3,....‬‬
‫اي ان تابع الكثافة التراكمي )‪ F(n‬باستخدام العالقة‪:‬‬
‫‪n‬‬
‫‪F (n) = ∑ pq s ,‬‬ ‫‪n = 0,1,2,3,...‬‬
‫‪s =0‬‬

‫‪ o‬إن القيمة المتوقعة ‪ expectation‬واالنحراف ‪ variance‬يعطيان بالعالقتين‪:‬‬


‫‪p‬‬
‫= )‪E ( x‬‬
‫‪q‬‬
‫‪p‬‬
‫= )‪Var ( x‬‬
‫‪q2‬‬

‫‪ o‬بحساب معكوس التابع )‪ F(n‬نحصل على‪:‬‬


‫‪n‬‬ ‫‪n‬‬
‫‪1 q n+ 1‬‬
‫‪F (n ) = ∑ pq = p ∑ q = p‬‬
‫‪s‬‬ ‫‪s‬‬
‫‪−‬‬

‫‪s= 0‬‬ ‫‪s= 0‬‬ ‫‪1− q‬‬


‫وبما أن ‪ p=1- q‬أي‪:‬‬
‫‪F (n ) = 1− q n+ 1 ⇒ 1 − F (n ) = q n+ 1‬‬
‫أي‪:‬‬
‫‪log r‬‬
‫= ‪r = q n +1 ⇒ log r = (n + 1) log q ⇒ n‬‬ ‫‪1‬‬ ‫‪−‬‬

‫‪log q‬‬
‫‪n‬‬
‫‪ o‬وباعتبار أن ‪ ،(1- F(n))/q=q‬و ‪ (1-F(n))/q‬يتغير بين ‪ 0‬و ‪ 1‬نحصل على‪:‬‬
‫‪log r‬‬
‫=‪r= q ⇒ n‬‬
‫‪n‬‬

‫‪log q‬‬

‫‪44‬‬
‫‪ .2.4‬توليد األعداد العشوائية ﻣن تابع توزع الثنائي‬
‫‪ o‬ليكن لدينا سلسلة من مجموعة من التجارب نتيجتھا إما نجاح أو فشل )صح أو خطأ(‪.‬‬
‫‪ o‬لنرمز الحتمال النجاح بـ ‪ p‬و والحتمال الخطأ بـ ‪ q‬على الترتيب و بحيث ‪.p+q=1‬‬
‫ولنفترض أن المتحول العشوائي ‪ X‬ھو متحول لتتابع ظھور حاالت النجاح‪ ،‬إذا فالمتحول‬
‫العشوائي ‪ X‬يتبع تابع توزع احتمالي الثنائي‪.‬‬
‫‪ o‬إن تابع الكثافة االحتمالي للتوزع الثنائي يعطى بالعالقة‪:‬‬
‫‪n‬‬
‫‪p (k ) =   p k q n −k ,‬‬ ‫‪k = 0,1,2,3,....‬‬
‫‪k ‬‬
‫‪ o‬إن القيمة المتوقعة ‪ expectation‬واالنحراف ‪ variance‬يعطيان بالعالقتين‪:‬‬
‫‪E ( x) = np‬‬
‫‪Var ( x) = npq‬‬
‫‪ o‬لتوليد المتحول العشوائي ‪ X‬المطلوب يتم عن توليد ‪ n‬رقم عشوائي بجعل ‪ k0=0‬ثم يتم‬
‫زيادة المتحول ‪ ki‬حسب العالقة‪:‬‬
‫‪k + 1 if ri < p‬‬
‫‪k i =  i −1‬‬
‫‪ k i −1‬‬ ‫‪if ri > p‬‬
‫إن المتحول الناتج ‪ kn‬ھو المتحول العشوائي المطلوب‪.‬‬

‫‪ . 3.4‬توليد األعداد العشوائية ﻣن تابع توزع بويسن‬


‫‪ o‬لنفرض أن ‪ λ‬متوسط عدد مرات الظھور خالل فترة محددة من الزمن‪ ،‬إذا عدد مرات‬
‫الظھور ‪ x‬خالل فترة واحدة الزمن يتبع تابع الكثافة االحتمالي لتوزع بويسن التالي ‪:‬‬
‫‪p( n) = e λ (λ n / n!),‬‬ ‫‪n = 0,1,2,3 ,....‬‬
‫‪−‬‬

‫] ‪ 5‬إيضاح[‬
‫‪ o‬إن الط ريقة المتبعة لتوليد عدد عشوائي بتابع توزع كثافة احتمالي بتوزع بويسن تتم بتوليد‬
‫متحو الت عشوائية بتابع توزع أسي بقيمة متوقعة ‪ 1/λ‬ضمن فترة زمنية محددة ثم جمع‬
‫المتحوالت ضمن واحدة الزمن ‪:‬‬
‫‪n‬‬ ‫‪n +1‬‬
‫<‪∑ ti < 1‬‬
‫‪i=1‬‬
‫‪∑t‬‬ ‫‪i= 1‬‬
‫‪i‬‬

‫‪45‬‬
‫‪ .5‬توليد األعداد العشوائية ﻣن توابع االحتمالية التجريبية‬
‫‪ o‬في كثير من األحيان األعداد العشوائية المولدة ليس لھا تابع توزع احتمالي معروف‪ ،‬في ھذه‬
‫الحالة يتطلب من نظام المحاكاة توليد أعداد عشوائية تتبع توابع احتمالية ذات توزيع مطابق‬
‫للقيم للتجريبية‪.‬‬
‫‪ o‬في ھذا القسم سوف نستعرض طريقتين لتوليد األعداد العشوائية ذات تابع توزيع تجريبي‬
‫وذلك من توابع احتمالية مستمرة أو متقطعة‪.‬‬

‫‪ 1.5‬توليد األعداد العشوائية التجريبية ﻣن توابع االحتمالية المتقطعة‬


‫‪ o‬ليكن لدينا المتحول العشوائي ‪ ،X‬و ‪ p(X =i)=p i‬حيث ‪ pi‬تحسب من معلومات تجريبية وجد‬
‫‪.‬‬

‫انه يمكن توليد العدد العشوائي التجريبي بإتباع القاعدة التالية‪:‬‬


‫‪ o‬ليكن لدينا ‪ r‬عدد عشوائي ما يقع بين ‪ p3‬و ‪ p2‬إذا فان الرقم العشوائي ‪ x‬يساوي إلى ‪.3‬‬
‫] ‪ 6‬إيضاح[‬

‫‪1‬‬
‫‪.‬‬

‫‪.‬‬

‫‪P3‬‬
‫‪r‬‬
‫‪P2‬‬

‫‪P1‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪….‬‬ ‫‪n‬‬

‫‪x‬‬

‫‪46‬‬
‫مثال‪:‬‬
‫‪ o‬ليكن لدينا المتحول العشوائي ‪ X‬والتي تمثل أعداد الصحف التي توزع يومياً‪ ،‬حيث وجدد أن‬
‫توزع توزيع الصحف على النحو التالي‪:‬‬

‫األحد‬ ‫االثنين‬ ‫الخميس األربعاء الثالثاء‬

‫‪X‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬

‫)‪f(x‬‬ ‫‪0.20‬‬ ‫‪0.20‬‬ ‫‪0.30‬‬ ‫‪0.15‬‬ ‫‪0.15‬‬

‫‪ o‬إذا فان تابع التوزيع التراكمي يساوي ] ‪ 7‬إيضاح[ ‪:‬‬


‫‪X‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬

‫)‪f(x‬‬ ‫‪0.20‬‬ ‫‪0.40‬‬ ‫‪0.70‬‬ ‫‪0.85‬‬ ‫‪1.0‬‬

‫‪ o‬إن العدد العشوائي التجريبي ‪ r‬والذي يتبع التوزيع السابق يساوي إلى نھاية المجال المحدد‬
‫تجريبيا ً كما يلي‪:‬‬
‫• ‪If 0.85<r≤1.00 then x=5‬‬
‫• ‪If 0.70<r≤0.85 then x=4‬‬
‫• ‪If 0.40<r≤0.70 then x=3‬‬
‫• ‪If 0.20<r≤0.40 then x=2‬‬
‫• ‪Otherwise x=1‬‬

‫‪47‬‬
‫‪ 2.5‬توليد األعداد العشوائية التجريبية ﻣن توابع االحتمالية المستمرة‬
‫‪ o‬ليكن لدينا المتحول العشوائي ‪ ،X‬والذي يمكن التعبير عنه بالھيستوغرام ‪Histogram‬‬
‫التالي‪:‬‬
‫)‪f (x3‬‬
‫)‪f (x2‬‬
‫)‪f (x4‬‬

‫)‪f (x1‬‬ ‫)‪f (x5‬‬

‫)‪f (x6‬‬
‫)‪f (x7‬‬

‫‪x1‬‬ ‫‪x2‬‬ ‫‪x3‬‬ ‫‪x4‬‬ ‫‪x5‬‬ ‫‪x6‬‬ ‫‪x7‬‬

‫حيث تمثل النقطة ‪ xi‬منتصف المجال ‪ ،i‬ويمثل )‪ f(xi‬مطال المجال ‪.i‬‬


‫‪ o‬باستخدام القيم السابقة يمكن بسھولة الحصول على تابع التوزع التراكمي ] ‪ ٧‬إيضاح[ حيث‬
‫افترضنا إن تابع التوزيع التراكمي تصاعديا ً‪ .‬إن تابع التوزع التراكمي السابق يبين وفق‬
‫الشكل التالي‪:‬‬
‫)‪f(x7‬‬
‫)‪f(x6‬‬
‫)‪f(x5‬‬
‫)‪f(x4‬‬
‫)‪f(x3‬‬
‫)‪f(x2‬‬

‫)‪f(x1‬‬

‫‪x1‬‬ ‫‪x2‬‬ ‫‪x3‬‬ ‫‪x4‬‬ ‫‪x5‬‬ ‫‪x6‬‬ ‫‪x7‬‬

‫‪48‬‬
‫‪ o‬ليكن لدينا اآلن العدد العشوائي ‪ ،r‬ولتفترض أن )‪ f(xi-1)<r<f(xi‬وباستخدام اإلقحام الخطي‬
‫‪ ،linear interpolation‬فان المتحول العشوائي ‪ x‬نحصل عليه باستخدام العالقة‪:‬‬
‫) ‪r − f ( xi −1‬‬
‫) ‪x = xi −1 + ( xi − xi −1‬‬
‫) ‪f ( xi ) − f ( xi −1‬‬
‫حيث ‪ xi‬القيمة العظمى من المجال‪.‬‬

‫)‪f(x2‬‬
‫)‪f(x3‬‬
‫)‪f (x‬‬
‫)‪f(x1‬‬ ‫)‪f(x4‬‬
‫)‪f(xn‬‬

‫‪x1‬‬ ‫‪x2‬‬ ‫‪x3‬‬ ‫……… … ‪x4‬‬ ‫‪xn‬‬

‫‪49‬‬
‫‪ 6‬طريقة الرفض ‪Rejection methods‬‬
‫‪ .٥‬يمكن استخدام طريقة الرفض في توليد متحول عشوائي ‪ x‬بتابع توزع مطلوب )‪ f(x‬وذلك‬
‫بإتباع الخطوات التالية‪:‬‬
‫ ليكن المتحول ‪ x‬محصور ضمن المجال ‪.a≤x≤b‬‬
‫ يتم تحديد قيمة )‪ f(x‬بحيث أن معامل ضرب ‪ c‬يجعل قيمة التابع‪:‬‬
‫‪cf(x)≤1, .a≤x≤b‬‬
‫ لنحدد المتحول ‪ x‬كتابع خطي لـ ‪ r‬بحيث يكون ‪ ،x=a+(b-a)r‬حيث ‪ r‬عدد‬
‫عشوائي‪.‬‬
‫ نقوم بتوليد أزواج من األعداد العشوائية )‪.(r2،r1‬‬
‫ بعد ذلك نقوم باختبار أزواج األعداد العشوائية باستخدام المعادلة ‪x=a+(b-a)r1‬‬
‫ونقوم باختيار األعداد التي توافق العالقة )‪ r2≤cf(a+(b-a)r1‬والتي تقع تحت‬
‫المنحني المبين في الشكل‪.‬‬

‫)‪cf (x‬‬

‫‪a‬‬ ‫…… …‬ ‫‪b‬‬

‫‪50‬‬
‫مثال‪:1 -‬‬
‫استخدم طريقة الرفض لتوليد متحول عشوائي ‪ x‬له تابع توزع كثافة احتمالي يساوي ‪f(x)=2x,‬‬
‫‪0≤x≤1‬‬
‫الحل‪:‬‬
‫‪ .١‬يتم اختيار قيمة معامل ضرب ‪ c‬بحيث ‪ cf(x)≤1, .0≤x≤1‬أي ‪.c=0.5‬‬
‫‪ .٢‬نقوم بتوليد العدد العشوائي ‪ r1‬ونجعل ‪.x=r1‬‬
‫‪ .٣‬نقوم بتوليد العدد العشوائي ‪ r2‬إذا كان‪ r2≤cf(r1)=0.5(2r1)=r1 :‬نقوم بقبول ‪r2‬‬
‫وإال نقوم برفضھا ونعود للخطوة ‪.2‬‬

‫مثال ‪: 2‬‬
‫‪-‬‬

‫استخدم طريقة الرفض لحساب مساحة دائرة ذات قطر واحدي ‪.‬‬
‫الحل‪:‬‬
‫‪ .1‬إن قيمة العددين العشوائيين ‪.r 12+r2 2 =1‬‬
‫‪ .2‬نقوم بتوليد العددين العشوائيين ‪ r1‬و‪.r2‬‬
‫‪ 3‬إذا كان‪ r2≤f (r1) :‬حيث ‪ f ( r1) = 1 r12‬إذا فان ‪ r2‬تحت )أو على( المنحني‬
‫‪−‬‬

‫‪.‬‬

‫وبالتالي يتم قبول الزوجين ‪ r1‬و ‪ r2‬وإال نقوم برفضھا ونعود للخطوة ‪.2‬‬
‫‪ .4‬ويتم حساب المساحة باستخدام المعادلة‪:‬‬
‫‪total number of acceptable pairs‬‬
‫= ‪area‬‬
‫‪total number of generated pairs‬‬
‫] ‪ 8‬إيضاح[‬

‫‪51‬‬
‫‪ 7‬طريقة ﻣوﻧتيكارلو ‪Monte Carlo Method‬‬
‫‪ o‬تعتبر طريقة مونتيكارلو كجزء من الطريقة التجريبية حيث تركز على توليد األعداد‬
‫العشوائية التجريبية‪.‬‬
‫‪ o‬تعتبر طريقة مونتيكارلو من أكثر الطرق استخداما ً عندما تكون النتائج تجريبية أو‬
‫تستخدم في حال الرغبة في توقع ھذه النتائج‪.‬‬
‫‪ o‬في الفقرة السابقة وجدنا أن طريقة الرفض قد استخدمت في حساب قيمة تكامل ما عن‬
‫طريق حساب احتمال النقاط الموجودة تحت منحني التكامل‪ .‬ھذه الطريقة تعتبر احد‬
‫تطبيقات مونتيكارلو أيضا ً‪.‬‬
‫‪ o‬ويمكن استخدام مونتيكارلو أيضا في حساب التكامل باستخدام طريقة مختلفة‪ .‬فلنفترض‬
‫أننا نريد حساب التكامل التالي‪:‬‬
‫‪1‬‬
‫‪θ = ∫ f ( x ) dx‬‬
‫‪0‬‬

‫‪ o‬ولنفترض أن ‪ ξn ……ξ٢ ، ξ1‬أعداد عشوائية بين ‪ 0‬و ‪ ،1‬إذا ً التوابع ‪ f(ξi)=fi‬عبارة‬


‫عن متحوالت عشوائية مستقلة بتوقع ‪ θ‬إذاً‪:‬‬
‫‪1 n‬‬
‫= ‪f‬‬ ‫‪∑ fi‬‬
‫‪n i =1‬‬
‫توقع الكلي لألعداد العشوائية‪.‬‬

‫‪ o‬إن توقع االنحراف يساوي إلى ‪:‬‬


‫‪1 n‬‬
‫∑ ‪n −1‬‬
‫= ‪s2‬‬ ‫‪(fi‬‬ ‫‪−‬‬

‫‪f )2‬‬
‫‪i =1‬‬

‫‪ o‬اذا كان لدينا في الحالة العامة المتحول العشوائي ‪ X‬يأخذ القيم ]‪ [0, 1‬وتابع المتحول‬
‫العشوائي ھو )‪ f(x‬فان ‪:‬‬
‫‪1‬‬

‫‪E ( f ( x)) = ∫ f ( x)g ( x)dx‬‬


‫‪0‬‬

‫‪ o‬حيث )‪ g(x‬تابع الكثافة للمتحول ‪ ،X‬وبافتراض أ ن ‪ X‬ذو تابع بتوزع منتظم فان‬
‫‪ g(x)=1‬أي نحصل ‪:‬‬
‫‪1‬‬

‫‪E ( f ( x)) = ∫ f ( x)dx‬‬


‫‪0‬‬

‫أي أن‪:‬‬
‫‪E( f ( x)) = f‬‬

‫‪52‬‬
‫ﻣلحقات‬

‫] ‪ 1‬إيضاح[‬
‫عندما يكون ‪ µ=0‬و ‪ σ =1‬فان تابع التوزيع يسمى تابع كثافة التوزيع الطبيعي القياسي ويعطى‬
‫بالعالقة‪:‬‬
‫‪1‬‬
‫‪1‬‬ ‫‪− x2‬‬
‫= )‪f ( x‬‬ ‫‪e‬‬ ‫‪2‬‬
‫‪,‬‬ ‫∞‪− ∞ < x < +‬‬
‫‪2π‬‬

‫] ‪ 2‬إيضاح[‬
‫تعتمد نظرية المركز المحدد على انه إذا كان لدينا ‪ xn،…. ،x2 ،x1‬متحول عشوائي مستقل وجميعھا‬
‫لھا تابع توزيع واحد بتوقع ‪ E(xi)=μ‬و انحراف ‪ Var(x)=σ2‬إذا فالمجموع‪:‬‬
‫‪∑x‬‬ ‫‪i‬‬ ‫‪= x1 + x2 + K + xn‬‬

‫ھو تقريبا متحول عشوائي بتوزع كثافة احتمالي طبيعي‪ ،‬ويقترب تابع التوزع إلى الطبيعي أكثر كلما‬
‫زادت ‪ .n‬عندھا فان التوقع و االنحراف للمتحول الناتج يساوي إلى‪:‬‬

‫‪E ( ∑ xi ) = nµ‬‬

‫‪Var ( ∑ xi ) = nσ 2‬‬

‫] ‪ 3‬إيضاح[‬
‫ھذه المعادلة تستخدم لتوليد األعداد العشوائية الغير محددة بتابع توزع كثافة احتمال طبيعي‪.‬‬

‫] ‪ 4‬إيضاح[‬
‫إن قيمة ‪ k‬يجب أن تكون كبيرة حتى تكون الدقة اكبر‪ ،‬وقد وجد أن اقل قيمة يمكن استخدامھا ھي‬
‫‪.k=12‬‬

‫] ‪ 5‬إيضاح[‬
‫يمكن مالحظة أن النافذة الزمنية التي تتداخل فيھا فترات النجاح تساوي إلى تابع توزع احتمالي بشكل‬
‫أسي و أن قيمة المتوسط تساوي ‪.1/λ‬‬

‫‪53‬‬
‫] ‪ 6‬إيضاح[‬
‫في الحالة العامة إذا كان ‪ pi-1<r<pi‬فان ‪x=i‬‬

‫] ‪ 7‬إيضاح[‬
‫تابع التوزع التراكمي يمكن الحصول عليه من العالقة‪:‬‬
‫= ) ‪F ( xi‬‬ ‫‪∑ f (x‬‬
‫‪1≤ k ≤ n‬‬
‫‪k‬‬ ‫)‬

‫] ‪ 8‬إيضاح[‬
‫إن طريقة الرفض غير دقيقة في توليد العدد العشوائي وخصوصا ً عند )‪ c(b-a‬ذات قيم كبيرة‬

‫‪54‬‬
‫ﻣسائل‬

‫قم بكتابة برنامج بلغة عالية المستوى لتوليد األعداد العشوائية الغير محددة المذكورة‬ ‫‪-11‬‬
‫في ھذا الفصل‪.‬‬

‫قم باختبار األعداد العشوائية الغير محددة المولدة باستخدام الطرق المذكورة في ھذا‬ ‫‪-12‬‬
‫الفصل‪.‬‬

‫أستخدم البرنامج الذي قمت بتصميمه في الفصل األول لمحاكاة نظام إصالح اآلالت‬ ‫‪-13‬‬
‫في مصنع‪ ،‬وقم بتعديل زمن اإلصالح و زمن العمل متحول عشوائي غير محدد بتوزيع‬
‫احتمالي أسي‪.‬ثم نفذ المحاكاة وأطبع النتائج‪.‬‬

‫‪55‬‬
‫تصميم المحاكاة‬
‫‪Simulation Design‬‬

‫‪ .1‬ﻣقدﻣة‬
‫‪ o‬في ھذا الفصل سوف نستعرض ثالث طرق تستخدم في بناء محاكي‬
‫‪ o‬الطريقة األولى تسمى تقدم الحدث ‪ ،event-advance‬والثانية تسمى تقدم واحدة‬
‫الزمن ‪ ،unit-time advance‬و تعتمدان على تغير حدث المحاكاة ولكنھما‬
‫تختلفان في طريقة حساب تغيرات الزمن‪.‬‬
‫‪ o‬تعتمد الطريقة الثالثة على أسس األنشطة ‪ activities based‬حيث تعتبر من‬
‫أشھر طرق المحاكاة المستخدمة‪.‬‬

‫‪ . 2‬طريقة تقدم الحدث ‪Event-advance design‬‬


‫‪ o‬تعتمد ھذه الطريقة على تحديد ومراقبة األحداث التي تتغير مع الزمن ] ‪ 1‬إيضاح[ ‪.‬‬
‫‪ o‬الفكرة األساسية من ھذه الطريقة تعتمد على تغير حالة النظام ‪ status‬كل مرة يتغير فيھا‬
‫حدث ما في النظام‪ ،‬وبحيث تبقى حالة النظام ثابتة بين حدثين متتابعين ‪ 2 ] .‬إيضاح[‬
‫‪ o‬لتحقيق ذلك يتم استخدام عداد ساعة ‪ clock‬لكل حدث في النظام‪ ،‬حيث يشير عداد الساعة‬
‫إلى وقت ظھور الحدث التالي‬
‫‪.‬‬

‫‪ o‬ويقوم نظام المحاكي عند االنتھاء من تنفيذ حدث ما )مثالً ‪:(t 1‬‬
‫‪ 1‬بتجميع األ حداث الممكن ظھورھا بالمستقبل‪،‬‬
‫‪.‬‬

‫‪ 2‬يقوم بترتيب ھذه األحداث تبعاً لزمن الحدوث ] ‪ 3‬إيضاح [‬ ‫‪.‬‬

‫ً‬

‫‪.‬‬
‫‪ 3‬ثم يبدأ بالحدث األقل زمنا‪.‬‬
‫‪ 4‬يقوم بتقديم عداد الساعة الرئيسي ‪ Master clock‬إلى زمن يساوي زمن ظھور‬ ‫‪.‬‬

‫الحدث الجديد األقرب )مث ًال ‪، (t2‬‬


‫‪ 5‬ثم يقوم بتكرار العملية إلى الحدث األقرب التالي )الزمن ‪ ( t3‬وھكذا ‪.‬‬ ‫‪.‬‬
‫] ‪ 4‬إيضاح [ ] ‪ 1‬مثال[‬

‫‪56‬‬
‫ مثال[ أن يؤدي إلى نشوء أحداث‬1 ] primary events ‫ يمكن لظھور األحداث الرئيسية‬o
. [‫ مثال‬2 ] conditional events ‫جديدة تسمى أحداث شرطية‬
:‫ يبين المخطط التدفقي التالي الخطوات األساسية لطريقة تقدم الحدث‬o

Find next Future


event event
list

Advance
time

Take appropriate
action depending on
the type of event

Any
A Conditional
events?

Future
Create a new event
event(s)
list

[‫ إيضاح‬5 ]

57
‫‪ .3‬قائمة األحداث المستقبلية ‪Future event list‬‬
‫‪ o‬تعرف قائمة األحداث المستقبلية ‪ Future event list‬بأنھا القائمة التي تحتوي على جدول‬
‫لجميع األحداث التي سوف تحدث في المستقبل )أي بعد الزمن ‪.(t‬‬
‫‪ o‬أي أن القائمة سوف تحتوي على‪:‬‬
‫‪ o‬الزمن الذي يحدث فيه الحدث ‪.Time of occurrence‬‬
‫‪ o‬طبيعة الحدث ‪ 6 ] Type of event‬إيضاح[ ‪.‬‬
‫] ‪ 3‬مثال[‬

‫‪ o‬يجب أن ترتب القائمة األحداث المستقبلية بحيث ت قلل عدد العمليات الحسابية التي يمكن أن‬
‫يجريھا المحاكي للبحث عن الحدث القادم‪ ،‬أي يجب أن تحقق‪:‬‬
‫‪ o‬يجب أن تبين زمن الحدث الجديد )القادم ( و طبيعة الحدث ‪.‬‬
‫‪ o‬مسح المعلومات الخاصة باألحداث التي انتھت )نفذت(‪.‬‬
‫‪ o‬تتمكن من إضافة حدث جديد إلى القائمة ) عند ظھور حدث شرطي مثالً( أو تعديل‬
‫في القائمة ‪.‬‬
‫‪ o‬سوف نبين في الفقرة القادمة طريقتين مستخدمتين في تحقيق قائمة األحداث المستقبلية ‪:‬‬
‫• طريقة المصفوفة التسلسلية ‪.Sequential array method‬‬
‫‪.‬‬

‫• طريقة القوائم المترا بطة ‪Linked lists method‬‬

‫‪58‬‬
‫‪ 1.3‬طريقة المصفوفة التسلسلية ‪Sequential array method‬‬
‫‪ o‬تستخدم المصفوفة التسلسلية لتخزين أوقات حدوث األحداث بشكل تسلسلي في المصفوفة‪.‬‬
‫‪ o‬إن أسھل طريقة لتحقيق ذلك ھي بتخصيص كل حدث برقم ‪ i‬يعبر عن موقع التخزين في‬
‫المصفوفة‪ ،‬بينما يخزن في الموقع نفسه زمن حدوث الموقع‪.‬‬
‫‪ o‬الشكل التالي يبين مثاالً على طريقة تخزين المعلومات باستخدام المصفوفة‪ ،‬حيث يستخدم‬
‫الموقع األول في المصفوفة لتخزين زمن الحدث األول ‪ CL1‬وزمن الحدث الثاني في الموقع‬
‫الثاني ويساوي ‪ CL2‬وھكذا‪.‬‬
‫‪CL1‬‬ ‫‪CL2‬‬ ‫‪CL3‬‬ ‫‪.....‬‬ ‫‪CLn‬‬

‫‪ o‬إن تحديد الحدث التالي الممكن حدوثه يتم بسھولة عن طريق تحديد موقع المصفوفة التي‬
‫تحتوي على أقل زمن‪ .‬يتم ذلك باستخدام خوارزمية بسيطة التالية‪:‬‬
‫‪num =1‬‬
‫)‪time = A(1‬‬
‫‪for i = 1 to n then‬‬
‫‪if time > A(i) then‬‬
‫)‪time = A(i‬‬
‫‪num = i‬‬

‫وبالتالي فان المتحول ‪ num‬سوف يحتوي على موقع الحدث التالي والذي يحتوي على اقل‬
‫زمن‪.‬‬

‫‪ o‬المشكلة أن ھذه الطريقة ال تحذف األحداث التي تم تنفيذھا‪ ،‬ويتم حل المشكلة بتغيير قيمة‬
‫الزمن المخزن في المصفوفة للحدث المنفذ بقيمة كبيرة بحيث ال تؤدي إ لى اختيار الحدث‬
‫المنفذ مرة أخرى‪ .‬ويتم أيضاً إضافة حدث جديد ‪ j‬إلى القائمة عن طريق تغيير الزمن )‪. A(j‬‬
‫‪ o‬تتميز ھذه الطريقة بسھولتھا وذلك عند إضافة أو حذف أية حدث‪.‬‬
‫‪ o‬إن من أھم مساؤئھا تكمن بدرجة تعقيدھا العالي في البحث عن الحدث التالي‪ ،‬حيث يحتاج‬
‫ذلك إلى البحث عن أصغر عنصر في المصفوفة‪ ،‬وتكون المشكلة أكبر عندما يكون عدد‬
‫عناصر المصفوفة كبير ًا‪ .‬لذلك يتم استخدام القوائم المترابطة ‪.‬‬

‫‪59‬‬
‫‪ 2 .3‬طريقة القوائم المترابطة ‪Linked lists method‬‬
‫‪ o‬تعتمد طريقة القوائم المترابطة على تخزين المعلومات عشوائيا ً ضمن أجزاء مختلفة في‬
‫الذاكرة وعلى شكل عقد ‪ nodes‬بحيث تحتوي العقدة على جزئين األول يحتوي على‬
‫المعلومات المراد تخزينھا‪ ،‬ويحتوي الجزء الثاني )المؤشر ‪ (pointer‬على موقع العقدة‬
‫التالية‪.‬‬

‫‪F‬‬ ‫‪a1‬‬ ‫‪a2‬‬ ‫‪a3‬‬ ‫‪an‬‬ ‫‪0‬‬

‫] ‪ 7‬إيضاح[‬
‫‪ o‬يمكن لھذه القائمة أن تستخدم كقائمة األحداث المستقبلية‪ ،‬حيث يقسم جزء المعلومات إلى‬
‫قسمين األول لتخزين الزمن ‪ Clock‬ويستخدم الثاني للحدث‪.‬‬

‫‪F‬‬ ‫‪CLi‬‬ ‫‪i‬‬ ‫‪CLj‬‬ ‫‪j‬‬ ‫‪CLn‬‬ ‫‪n‬‬ ‫‪0‬‬

‫مثال ‪:‬‬

‫‪ o‬لنفترض أننا نرغب في ترتيب مجموعة أرقام تصاعدياً والمخزنة بطريقة عشوائية ضمن‬
‫مصفوفة ‪.T‬‬
‫‪ o‬لتحقيق ذلك فإننا نحتاج إلى مصفوفة جديدة ‪ P‬لھا نفس الطول بحيث أن تسلسل الموقع التالي‬
‫في ‪ T‬يجب أن يحدد في ‪ P‬وبحيث يتم ترتيب المصفوفة تصاعديا ‪ .‬فمثالً ‪ P(1)=7‬أي أن‬
‫الرقم التالي األكبر يقع في الموقع السابع في ‪.T‬‬

‫تظھر مجموعة‬ ‫‪T‬‬ ‫‪P‬‬


‫الحمراء عند‬ ‫تظھر المصفوفة ‪ P‬عند‬
‫الضغط الفأرة ) ‪(2‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫الضغط على فأرة وعندھا‬
‫تظھر الفقرة ا لثانية )‪( 1‬‬
‫تظھر مجموعة‬
‫‪4‬‬ ‫‪1‬‬
‫الخضراء عند‬
‫الضغط الفأرة ) ‪(3‬‬ ‫‪F‬‬ ‫‪12‬‬ ‫‪8‬‬
‫‪1‬‬ ‫‪3‬‬
‫تظھر مجموعة‬
‫الزرقاء عند‬
‫) ‪(4‬‬ ‫الفأرة‬ ‫الضغط‬ ‫‪10‬‬ ‫‪4‬‬

‫تظھر مجموعة‬ ‫‪13‬‬ ‫‪0‬‬


‫الصفراء عند‬
‫الضغط الفأرة ) (‬
‫‪5‬‬

‫‪60‬‬
‫‪ o‬إن عملية اإلضافة أو الحذف من القوائم المترابطة سھل جداً‪.‬‬
‫‪ o‬لنفترض أننا نرغب في حذف الرقم ‪ ،10‬نقوم أوال بفحص أول موقع ))‪ (T(5), P(5‬والذي‬
‫يشير إلى موقع النقطة التالية ))‪.(T(3), P(3‬‬
‫‪ o‬الموقع )‪ P(3‬يدل على موقع النقطة التالية ))‪ ،(T(1), P(1‬حيث يشير الموقع )‪ P(1‬إلى‬
‫النقطة التالية ))‪ .(T(7), P(7‬فالقيمة المراد إضافتھا يجب أن تقع بين المركزين )‪ P(1‬و‬
‫)‪.P(8‬‬
‫تظھر مجموعة‬ ‫‪T‬‬ ‫‪P‬‬
‫الحمراء عند‬
‫الضغط الفأرة )‪(1‬‬ ‫‪5‬‬ ‫‪7‬‬

‫تظھر مجموعة‬
‫‪4‬‬ ‫‪1‬‬
‫الخضراء عند‬
‫الضغط الفأرة )‪(2‬‬ ‫‪12‬‬ ‫‪8‬‬
‫‪F‬‬ ‫يظھر الشكل عند‬
‫‪1‬‬ ‫‪3‬‬ ‫الضغط الفأرة )‪(5‬‬
‫تظھر مجموعة‬
‫الزرقاء عند‬
‫الضغط الفأرة )‪(3‬‬ ‫‪10‬‬ ‫‪4‬‬
‫‪13‬‬ ‫‪0‬‬
‫تظھر مجموعة‬
‫الصفراء عند‬
‫الضغط الفأرة )‪(4‬‬

‫‪F‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪0‬‬

‫‪61‬‬
‫‪ o‬لنفترض أننا نرغب في إضافة الرقم ‪ ،6‬نقوم أوال بتحديد موقع العقدتين المتتاليتين والتي‬
‫تحتويان على قيمتين أكبر وأصغر من القيمة ‪.6‬‬
‫‪ o‬ثم نقوم بفحص أول موقع ))‪ (T(5), P(5‬والذي يشير إلى موقع النقطة التالية ‪(T(3),‬‬
‫))‪ .P(3‬الموقع )‪ P(3‬يدل على موقع النقطة التالية ))‪ ،(T(1), P(1‬حيث يشير الموقع )‪P(1‬‬
‫إلى القيمة المطلوبة ‪.10‬‬
‫‪ o‬لحذف العقدة ‪ 10‬يتم فقط تغيير قيمة المؤشر للعقدة السابقة‪ ،‬ووضع قيمة العقدة التالية‪ ،‬أي أن‬
‫‪ P(1)=7‬تصبح ‪ ،P(1)=4‬عندھا سوف تصبح العقدة ‪ 10‬كأنھا غير موجودة أو تم مسحھا‪.‬‬
‫تظھر مجموعة‬ ‫‪T‬‬ ‫‪P‬‬ ‫تظھر مجموعة‬
‫الحمراء عند‬ ‫الكحلي عند‬
‫الضغط الفأرة )‪(1‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫الضغط الفأرة )‪(5‬‬
‫‪6‬‬ ‫‪8‬‬
‫تظھر مجموعة‬ ‫تظھر مجموعة‬
‫‪4‬‬ ‫‪1‬‬
‫الخضراء عند‬ ‫السوداء عند‬
‫الضغط الفأرة )‪(2‬‬ ‫‪F‬‬
‫‪12‬‬ ‫‪8‬‬ ‫الضغط الفأرة )‪(6‬‬ ‫يظھر الشكل عند‬
‫‪1‬‬ ‫‪3‬‬ ‫الضغط الفأرة )‪(7‬‬
‫تظھر مجموعة‬
‫الزرقاء عند‬
‫الضغط الفأرة )‪(3‬‬ ‫‪10‬‬ ‫‪4‬‬
‫‪13‬‬ ‫‪0‬‬
‫تظھر مجموعة‬
‫الصفراء عند‬
‫الضغط الفأرة )‪(4‬‬

‫‪F‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪0‬‬

‫‪6٦‬‬

‫‪62‬‬
‫‪ 3.3‬تحقيق القوائم المترابطة ‪Implementation of Linked lists‬‬
‫‪ o‬إن تحقيق القوائم المترابطة برمجيا ً يجب أن يضمن تحقيق ثالثة عمليات أساسية‪:‬‬
‫ ترتيب المعلومات ضمن عقد‪.‬‬
‫ الوصول إلى أية عقدة بالداللة إلى مؤشرھا‪.‬‬
‫ خلق عقدة جديدة أو حذف عقدة غير مستخدمة‪.‬‬
‫‪ o‬تحتوي لغات البرمجة على تعليمات يمكن أن تحقق العمليات الثالث السابقة‪ ،‬ولكن إذا كانت‬
‫ھذه التعليمات غير متوفرة فانه يجب تصميم برامج جزئية تحققھا‪.‬‬
‫‪ o‬على المصمم أن يفكر أيضا ً بالطريقة المناسبة لتخزين المعلومات‪ ،‬ويمكن في كثير من‬
‫األحيان استخدام مصفوفات‪ ،‬فإذا كانت لدينا ‪ k‬معلومة لكل حدث فإن المحاكي يحتاج إلى‬
‫مصفوفة بطول ‪ k+1‬لكل حدث‪ ،‬وإذا افترضنا أنه نحتاج إلى ‪ n‬حدث لتصميم نظام المحاكاة‪،‬‬
‫فان حجم التخزين يحتاج إلى ‪ n‬مصفوفة بطول ‪.k+1‬‬
‫‪ o‬لتحقيق القوائم المترابطة بسھولة سوف نعتبر أن كل عقدة تتألف من حقلين فقط‪ :‬األول‬
‫لتخزين المعلومات ‪ ،Data‬والثاني لتخزين قيمة المؤشر ‪ 8 ] .Link‬إيضاح[‬
‫‪ o‬سوف نستخدم برنامجين جزئيين للتحكم بفضاء التخزين وھما ‪:‬‬
‫ )‪ Getnode(X‬سوف ي ضيف العقدة إلى القائمة المترابطة عند الموقع ‪.X‬‬
‫ )‪ Ret(X‬والذي يعيد العقدة ذات القيمة ‪ X‬إلى الحالة االبتدائية ‪ ،‬أي إلى فضاء‬
‫التخزين‬
‫] ‪ 9‬إيضاح [‬

‫‪63‬‬
‫‪ o‬سوف نشرح أربع خوارزميات تستخدم لتحقيق القوائم المترابطة‪:‬‬
‫‪ .A‬خوارزمية إنشاء قوائم مترابطة ‪.Create linked lists‬‬
‫‪ .B‬خوارزمية حذف عقدة ‪.Deleting of a node‬‬
‫‪ .C‬خوارزمية إضافة عقدة جديدة ‪.Inserting of a new node‬‬
‫‪ .D‬خوارزمية التحكم بفضاء التخزين ‪.Managing the storage‬‬
‫‪ – A‬خوارزمية إنشاء قوائم مترابطة‬
‫‪ o‬تقوم الخوارزمية التالية بإنشاء قائمة مترابطة مكونة من عقدتين تحتويان الرقمان ‪ 1‬و ‪، 4‬‬
‫حيث يشير المتحول ‪ F‬إلى المؤشر ألول عقدة و ‪ I‬الموقع المحتمل للعقدة الثانية‪.‬‬
‫)‪Procedure Create (F‬‬

‫)‪call Getnode (F‬‬


‫‪Data(F)=1,‬‬
‫)‪call Getnode (I‬‬
‫‪Link(F)=I‬‬
‫‪Data(I)=4‬‬
‫‪Link(I)=0‬‬

‫‪End Create‬‬
‫‪ – B‬خوارزمية حذف عقدة‬
‫‪ o‬تقوم الخوارزمية التالية بحذف عقدة تحتوي على القيمة ‪ 10‬من القائمة المترابطة المبينة في‬
‫الفقرة السابقة حيث نفترض أن القيمة ‪ 10‬تظھر مرة واحدة في القائمة‪ ،‬وباعتبار أن المتحول‬
‫‪ F‬يمثل المؤشر ألول عقدة و ‪ C=10‬الموقع المحتمل للعقدة ال تي تحتوي على القيمة‬
‫المطلوبة‪.‬‬
‫)‪Procedure Delete (F,C‬‬

‫‪If F=0 then error the list is empty‬‬


‫‪I=J=F‬‬
‫{ ‪Do‬‬

‫{ ‪If Data(I)=C Then‬‬


‫)‪Link(J)=Link(I‬‬
‫)‪Ret(I‬‬
‫‪exit‬‬
‫}‬

‫{ ‪Else‬‬
‫‪J=+I‬‬
‫)‪I= Link(I‬‬
‫}‬
‫}‬

‫‪End Delete‬‬ ‫‪64‬‬


‫ – خوارزمية إضافة عقدة جديدة‬C
F ‫ وباعتبار أن المتحول‬،C ‫ تقوم الخوارزمية التالية بإضافة عقدة جديدة تحتوي على القيمة‬o
.‫ يحتوي على موقع التخزين الفارغ المقترح‬G ‫ والمتحول‬،‫يمثل المؤشر ألول عقدة‬
Procedure Insert(F,G)

If F=0 then {
Getnode(G)
Data(G)=C
Link(G)=0
exit
}
If Data(F)≥C then {
Getnode(G)
Data(G)=C
Link(G)=F
F=G
exit
}
J=F
I=Link(J)

do {
if Data(I)≥C then {
Getnode(G)
Data(G)=C
Link(G)=Link(I)
Link(J)=X
exit
}
else {
J=I
I=Link(I)
}
}
End Insert

65
‫‪ – D‬خوارزميات التحكم بفضاء التخزين‬
‫‪ o‬تقوم الخوارزمية التالية بتھيئ فضاء التخزين لتحديد عدد العقد الالزمة لتحقيق القائمة‬
‫المترابطة‪ ،‬حيث يمثل المتحول ‪ n‬عدد العقد المفترض استخدامھا في القائمة‪ ،‬ويمثل المتحول‬
‫‪ v‬مؤشر أول عقدة‪.‬‬
‫)‪Procedure Init(n‬‬

‫{ ‪For i=0 to n-1 do‬‬


‫‪Link(i)=i+1‬‬
‫}‬
‫‪Link(n)=0‬‬
‫‪v=1‬‬
‫‪End Init‬‬

‫‪ o‬تقوم الخوارزمية )‪ getnode(x‬بإزالة العقدة من فضاء التخزين‪ ،‬أي تقوم بتھيئ عقدة‬
‫جديدة‪ ،‬حيث يشير ‪ x‬إلى المؤشر المستخدم في القائمة‪.‬‬
‫)‪Procedure Getnode(x‬‬

‫‪If v=0 then error: no more nodes‬‬


‫{ ‪else‬‬
‫‪x=v‬‬
‫)‪v=Link(v‬‬
‫}‬
‫‪End Getnode‬‬

‫‪ o‬تقوم الخوارزمية )‪ Ret(x‬بإضافة عقدة فارغة إلى فضاء التخزين‪ ،‬أي تقوم بحذف عقدة من‬
‫القائمة‪ ،‬حيث يشير ‪ x‬إلى المؤشر المستخدم في القائمة‪.‬‬
‫)‪Procedure Ret(x‬‬

‫‪Link(x)=v‬‬
‫‪v=x‬‬
‫‪End Ret‬‬

‫‪66‬‬
‫‪ 4.3‬القوائم المترابطة الزوجية ‪Double linked lists‬‬
‫‪ o‬تعتمد طريقة القوائم المترابطة الزوجية على تخزين المعلومات عشوائيا ً ضمن أجزاء‬
‫مختلفة في الذاكرة وعلى شكل عقد ‪ nodes‬كما ھو الحال في القوائم المترابطة‪ ،‬ولكن يتم‬
‫عملية االرتباط بين العقد في اتجاھين مختلفين‪.‬‬
‫‪ o‬حيث تحتوي القائمة على مؤشرين عوضا ً عن مؤشر واحد‪ ،‬يخصص كل واحد منھما‬
‫لإلشارة إلى اتجاه مختلف‪.‬‬

‫‪F‬‬ ‫‪a1‬‬ ‫‪a2‬‬ ‫‪an‬‬

‫‪ o‬تتميز ھذه الطريقة بأنھا تعطي مرونة أكبر عند تصميم نظام المحاكاة‪.‬‬

‫‪ .4‬طريقة تقدم واحدة الزﻣن ‪Unit time advanced‬‬


‫‪ o‬تعتمد ھذه الطريقة بشكل عام على زيادة الساعة الرئيسية ‪ Master Clock‬بقيمة ثابتة‬
‫تساوي إلى واحدة الزمن ‪ . one unit time‬وتعتمد على الخطوات التالية‪:‬‬
‫‪ . 1‬في كل مرة تزاد فيھا الساعة الرئيسية لمرة واحدة بمقدار واحدة الزمن‪.‬‬
‫‪ . 2‬يتم اختبار جميع أزمان األحداث المستقبلية ‪.future event clocks‬‬
‫‪ 3‬عند تساوي الساعة الرئيسية مع أحد أزمان األحداث المستقبلية لحدث ما ينفذ‬ ‫‪.‬‬

‫الحدث‪ ،‬و من ثم نعود إلى الخطوة األولى‪.‬‬


‫‪ . 4‬عند عدم التساوي نعود إلى الخطوة األولى ويتم تكرار البحث‪.‬‬
‫‪.‬‬

‫‪ o‬الشكل التالي يبين كيفية زيادة الساعة الرئيسية بواحدة الزمن‬

‫‪Time unit‬‬

‫‪E1‬‬ ‫‪E2‬‬ ‫‪E3‬‬ ‫‪En‬‬ ‫‪t‬‬


‫‪Master Clock‬‬

‫‪67‬‬
.‫ يبين الشكل التالي المخطط التدفقي لھذه الطريقة‬o

Master clock is
increased by unit-time

is
any future No
event clock A
=MC?

Yes

An event has
occurred

Take appropriate
action

Any No
Conditional A
events?
Yes

Schedule
new event(j)

68
‫‪ o‬نالحظ من المخطط انه لتحقيق المحاكاة بشكل صحيح يجب أن تتوفر لدينا مسبقا جميع‬
‫أوقات حدوث األحداث المستقبلية ‪ ،future event clocks‬ولكن ال يمكن تحقيق ذلك من‬
‫الناحية العملية بشكل دقيق‪ ،‬مثالً ال يمكن توقع زمن إصالح اآللة بشكل دقيق قبل البدء‬
‫بإصالحھا‪ ،‬لذلك يجب اعتماد طريقة معدلة‪.‬‬
‫ال من وقت ظھور‬ ‫‪ o‬الطريقة المعدلة تعتمد على الفترة الزمنية الالزمة الستمرار الحدث بد ً‬
‫الحدث )زمن صالح اآللة عوضا ً عن وقت حدوث اإلصالح(‪.‬‬
‫‪ o‬في ھذه الحالة تعدل الخوارزمية بحيث تصبح كالتالي‪:‬‬
‫‪ .1‬في كل مرة تزاد فيھا الساعة الرئيسية لمرة واحدة بمقدار واحدة الزمن‪.‬‬
‫‪ .2‬يتم إنقاص جميع أوقات األحداث المستقبلية ‪ ،future event clocks‬بمقدار قيمة‬
‫واحدة الزمن‪.‬‬
‫‪ .3‬عند تساوي أحد أوقات األحداث المستقبلية إلى الصفر ينفذ الحدث‪ ،‬ومن ثم نعود إلى‬
‫الخطوة األولى‪.‬‬
‫‪ .4‬عند عدم المساواة نعود للخطوة األولى ويتم تكرار البحث‪.‬‬

‫‪69‬‬
‫ يبين الشكل التالي المخطط التدفقي للطريقة المعدلة وذلك عند محاكاة نظام المخدم في‬o
.‫المصنع‬

Master clock is
increased by unit-time

>1 Service =1
Time (ST)

ST=ST-1 ST=ST-1

End of Services
Take appropriate
action

>1 Arrival =1
Time (AT)

AT=AT-1 AT=AT-1

Arrival has occurred


Take appropriate
action

70
‫‪ .1.4‬اختيار واحدة الزﻣن ‪Selecting unit time‬‬
‫‪ o‬عند اختيار قيمة واحدة الزمن يجب في البداية أن نحقق الشرط بان جميع األحداث الممكن‬
‫حصولھا يجب أن تغطى بھذه القيمة‪ ،‬فمثالً تحدث المشكلة عندما يكون زمن حدوث الحدث‬
‫رقم حقيقي )كسري(‪ ،‬بينما تكون واحدة الزمن رقما صحيحاً‪ ،‬عندھا سوف يظھر الحدث بين‬
‫تغيرين زمنين )أي محصور ضمن مجال(‪.‬‬
‫‪Time unit‬‬

‫‪i‬‬ ‫‪i+1‬‬ ‫‪i+2‬‬ ‫‪i+3‬‬ ‫‪i+4‬‬ ‫‪i+5‬‬ ‫‪i+6‬‬ ‫‪i+n-1‬‬ ‫‪i+n‬‬ ‫‪t‬‬
‫‪Master Clock‬‬
‫‪E1‬‬ ‫‪E2‬‬ ‫‪E3‬‬ ‫‪Ej‬‬

‫‪ o‬لتفادي ھذه المشكلة نستخدم إحدى الطرق التالية‪:‬‬


‫ األولى‪ :‬نستخدم قيمة واحدة زمن صغيرة جداً بحيث تغطي كل األحداث التي تظھر‪.‬‬
‫ھذه الطريقة سوف تؤدي إلى أن برنامج المحاكاة سوف يستغرق وقتا ً طويالً في‬
‫البحث عن الحدث‪.‬‬
‫ الثانية‪ :‬بجعل قيمة واحدة الزمن نصف قيمة أقل متحول العشوائي مولد في نظام‬
‫المحاكاة‪.‬‬
‫ الثالثة‪ :‬بتنفيذ المحاكاة عددت مرات مختلفة بقيم مختلفة لواحدة الزمن‪ ،‬مثالً بالبدء‬
‫بقيمة صغيرة ومن ثم زيادتھا خطوة فخطوة بحيث يتم التحقق من أن جميع األحداث‬
‫قد تم تغطيتھا‪.‬‬

‫‪ .2.4‬استخداﻣات طريقة تقدم واحدة الزﻣن‪ ،‬وطريقة تقدم الحدث‬


‫‪ o‬يتم استخدام طريقة التقدم بواحدة الزمن عندما يكون نظام المحاكاة يتألف من عدد كبير من‬
‫األحداث المتقاربة من بعضھا البعض‪ ،‬في ھذه الحالة يتم اختيار األحداث بسرعة و بسھولة‬
‫عاليين‪ ،‬وتكون بأفضل حالتھا عندما تكون األحداث متباعدة عن بعضھا البعض بقيمة تساوي‬
‫واحدة الزمن‪.‬‬
‫‪ o‬بينما يتم استخدام طريقة الحدث المتقدم عندما يحتوي نظام المحاكاة على عدد قليل من‬
‫األحداث المتباعدة عن بعضھا البعض‪ ،‬حيث أن طريقة الزمن المتقدم سوف تأخذ وقتا طويالً‬
‫في البحث عن الحدث التالي‪.‬‬

‫‪71‬‬
‫‪ .5‬طريقة ﻣحاكاة النشاط ‪Activity based simulation design‬‬
‫‪ o‬تعتمد ھذه الطريقة في المحاكاة على مراقبة النشاط ‪ activity‬الذي يحدث أثناء المحاكاة بدالً‬
‫من مراقبة الحدث‪.‬‬
‫‪ o‬وتستخدم ھذه الطريقة بكثرة في محاكاة األنظمة المعقدة ‪ complex systems‬حيث يصعب‬
‫في ھذه األنظمة تحديد األحداث المتالحقة‪.‬‬
‫‪ o‬على سبيل المثال في نظام المخدم في المصنع يوجد حدثين )تعطل اآللة أو إصالحھا(‪ ،‬بينما‬
‫يمكن لھذا النظام اعتباره مجموعة من األنشطة أو العمليات التالية‪:‬‬
‫‪ (a‬الدخول إلى الصف ‪) inter arriving‬التعطل(‪.‬‬
‫‪ (b‬الخروج من الصف ‪) being served‬اإلصالح(‬
‫‪ (c‬االنتظار في الصف ‪.waiting for services‬‬
‫‪ o‬المھم معرفة بداية ونھاية كل نشاط من األنشطة‪.‬‬

‫‪ o‬لنفترض أننا نريد أن نقوم بتصمي م نظام محاكاة بطريقة محاكاة النشاط لمخدم زبون وحيد‬
‫‪ ،single sever queuing‬إذا ‪:‬‬
‫‪ (a‬لنفترض أن زمن التخديم ‪ STi‬للزبون ‪.i‬‬
‫‪ (b‬لنفترض أن زمن اإلنتظار ‪ WTi‬للزبون ‪i‬‬
‫‪.‬‬

‫‪ (c‬لنفترض أن زمن اإلنتظار بين الزبون ‪ i‬و الزبون التالي ھو ‪.AT i+1‬‬
‫‪ (d‬لنفترض أن الزبون ‪ i‬يظھر عند الزمن ‪ ai‬ويبدأ التخديم عند الزمن ‪ s i‬وينتھي‬
‫التخديم عند الزمن ‪s i +ST i‬‬
‫‪.‬‬

‫‪ST i‬‬

‫‪WT i‬‬
‫‪AT +i 1‬‬
‫‪t‬‬

‫‪ai‬‬ ‫‪si‬‬ ‫‪ai +1‬‬ ‫‪i ST i‬‬


‫‪s+‬‬

‫‪ith‬‬ ‫‪ith‬‬ ‫‪(i+ 1) th‬‬ ‫‪ith‬‬


‫‪arrival‬‬ ‫‪arrival‬‬ ‫‪arrival‬‬ ‫‪arrival‬‬
‫‪begin its‬‬ ‫‪ends its‬‬
‫‪service‬‬ ‫‪service‬‬

‫‪72‬‬
‫‪ o‬لنفترض أننا نعرف قيم كل من ‪ WTi‬و ‪ STi‬للزبون ‪ ،i‬إذا لدينا ثالث حاالت‪:‬‬
‫‪ (a‬يظھر الزبون ‪ i+1‬خالل فترة انتظار تخديم للزبون ‪. i‬‬
‫] ‪ 10‬إيضاح[‬
‫‪ (b‬يظھر الزبون ‪ i+1‬خالل فترة تخديم للزبون ‪. i‬‬
‫] ‪ 11‬إيضاح[‬
‫‪ (c‬يظھر الزبون ‪ i+1‬خالل بعد فترة تخديم للزبون ‪. i‬‬
‫] ‪ 12‬إيضاح[‬

‫‪ o‬عندھا يمكن حساب وقت االنتظار للزبون ‪ i+1‬للحاالت الثالث السابقة على الترتيب‪:‬‬
‫‪. WTi +1 = (WTi − ATi +1 ) + STi (a‬‬
‫‪. WTi +1 = (WTi + STi ) − ATi +1 (b‬‬
‫‪WTi +1 = 0 (c‬‬
‫عند حساب ‪ WTi‬نستطيع حساب جميع قيم الزبون ‪ i+1‬ومنھا يمكن إيجاد القيم الخاصة‬
‫بالزبون التالي ‪ i+2‬وھكذا‪..‬‬

‫‪73‬‬
.‫ يبين الشكل التالي المخطط التدفقي لنظام المحاكاة باستخدام طريقة محاكاة النشاط‬o

Initial conditions

Generate AT

Next arrival occurs Next arrival


when current arrival TW>AT Compare TW≤AT occurs when
is either waiting or TW with current sever
in service AT is idle

Generate ST Generate ST

TW=ST+(TW-AT) TW=ST

A A

74
‫‪ 6‬أﻣثلة ‪Examples‬‬
‫‪ .6‬في ھذه الفقرة سوف نشرح مثالين معتمدين على طرق المحاكاة المبينة سابقا ً وھما‪:‬‬
‫ نظام جرد مستودع ‪.Inventory system‬‬
‫ نظام الصف الدائري ‪.Round robin queue‬‬

‫‪ 1.6‬ﻧظام جرد ﻣستودعات ‪Inventory system‬‬


‫‪ .7‬يھدف نظام جرد المستودعات إلى إعطاء القرار الصحيح من أجل خفض الكلفة اال قتصادية‬
‫لمنشئة صناعية أو تجارية إلى أقل كلفة ممكنة‪ ،‬ويكمن القرار الصحيح في شراء الكمية‬
‫الصحيحة من البضائع وفي الوقت المناسب‪.‬‬
‫‪ .8‬وتتعلق الكلفة االقتصادية بثالث عوامل أساسية ھي‪:‬‬
‫ كلفة تخزين البضائع‪ ،‬أي كلفة تخزين مادة واحدة في المستودع لمدة زمنية معينة‬
‫وبدون استخدام‪ .‬وتتعلق ھذه الكلفة بمجموعة عوامل منھا كلفة رأس المال المجمد‬
‫مثالً ‪ ،‬كلفة تقادم البضاعة‪ ،‬أو كلفة تلف البضاعة نفسھا مع الوقت‪.‬‬
‫ كلفة تشغيل البضائع‪ ،‬وتتعلق ھذه الكلفة مثالً بكلفة طلب البضاعة‪ ،‬وكلف الشحن‪،‬‬
‫وكلف استخدام البضائع في اإلنتاج‪.‬‬
‫ كلفة النقص في البضائع المعروضة‪ ،‬وتتعلق ھذه الكلفة مثالً بكلفة توقف اإلنتاج في‬
‫حال نقص مادة ما‪ ،‬أو الخسارة المحتملة في عدم بيع منتج الناقص‪ ،‬أو حتى في‬
‫الكلفة اإلضافية للشحن في حال طلب خاص للمادة الناقصة‪.‬‬

‫‪75‬‬
‫‪ .9‬لنفترض اآلن أن المتحول ‪ It‬يمثل كمية البضائع عند البدء أي في الزمن ‪ ،t‬وأن ‪ S‬كمية‬
‫المواد المضافة إلى النظام و ‪ D‬كمية المواد المطلوبة بين الفترة الزمنية ‪ t‬و '‪ ،t‬وبالتالي فأن‬
‫كمية البضائع عند الزمن '‪ t‬يساوي‪:‬‬
‫‪I t' = I t + S − D‬‬
‫عندما تصبح القيمة '‪ It‬تحت مستوى محدد عندھا يجب إعطاء أمر بطلب المادة الناقصة‪.‬‬
‫لنفترض أن طلب مادة )أو مواد( جديدة يتم يوميا ً وفي نھاية يوم العمل‪ ،‬وأن زمن‬ ‫‪.10‬‬
‫التأخير ‪ lead time‬وھو الزمن الالزم لوصول الكمية المطلوبة إلى مستودعات الشركة )أي‬
‫الفرق بين وقت طلب المادة و وقت وصول المادة إلى المستودع( سوف يحسب من اليوم‬
‫التالي حيث أن الطلب يتم في نھاية يوم العمل‪ .‬يمكن أن نالحظ أن تغير قيمة البضائع في‬
‫المستودع تتغير وفق الشكل التالي‪:‬‬

‫‪76‬‬
‫سوف نستخدم نظام المحاكاة بطريقة تقدم الزمن ونعتبر أن واحدة الزمن تساوي‬ ‫‪.11‬‬
‫ً‬ ‫ً‬ ‫ً‬
‫يوما وحدا حيث أن الطلب يتم يوميا وفي نھاية العمل الرسمي‪.‬‬
‫ سوف نعتبر مجموعة مدخالت إلى النظام وھي‪:‬‬
‫ النقطة التي يتم عندھا الطلب ‪.ROP‬‬
‫ كمية البضاعة المطلوبة ‪.Q‬‬
‫ كمية البضاعة عند البدء ‪.BI‬‬
‫ الزمن الكلي ‪.T‬‬
‫ الكلفة االقتصادية للتخزين والكلفة االقتصادية للطلب والكلفة االقتصادية للنقص ‪،C1‬‬
‫‪ C3 ،C2‬على الترتيب‪.‬‬
‫ الكلفة التقتصادية الكلية والمطلوب حسابھا لكل من للتخزين والطلب والنقص ‪،TC1‬‬
‫‪ TC3 ،TC2‬على الترتيب‪.‬‬
‫إن المخطط التدفقي للنظام مبين في الشكل التالي‪:‬‬ ‫‪.12‬‬

‫‪77‬‬
Initialization

Generate AT

Print
t≥AT
Yes results
No
>1 =1 End
LT
Order has
=0
arrived
LT=LT-1 no order LT=0
outstanding I=I+Q

Generate daily
demand D

78
B

I<ROP TC1=TC1+I×C1
No
Yes

No A
LT=0

Yes

Generate AT

TC2=TC2+C2

No
I<0 TC1=TC1+I×C1

Yes
TC3=TC3+I×C3
A

79
‫‪ 2.6‬ﻧظام الصف الدائري ‪Round robin queue‬‬
‫يھدف نظام الصف الدائري إلى تصميم نظام محاكاة لدراسة أداء مجموعة ‪ N‬طرفية‬ ‫‪.13‬‬
‫تتشارك جميعھا بمعالج صغري ‪ CPU‬واحد‪.‬‬

‫‪Terminal n‬‬

‫‪CPU‬‬

‫‪Terminal n-1‬‬

‫‪Terminal 1‬‬

‫‪Terminal 2‬‬
‫‪Terminal 3‬‬

‫لنفترض أن المستخدم عند كل طرفية يفكر لفترة زمنية ما ‪) Thinking‬أي يقوم‬ ‫‪.14‬‬
‫ً‬
‫بكتابة سطر مثال‪ ،‬يفكر ماذا يفعل بعد ذلك‪ ،(..‬ومن ثم يستخدم المعالج المركزي أو يقوم‬
‫بتنفيذ أمر ما عندما يقوم بالضغط على مفتاح ‪.Enter‬‬
‫لنفترض أن المستخدم يقوم بالتفكير ومن ثم استخدام ‪ CPU‬بشكل متناوب ومتكرر‪،‬‬ ‫‪.15‬‬
‫كما ھو موضح بدورة العمل في الشكل التالي‪ ،‬حيث ال يمكن للمستخدم خالل استخدام‬
‫المعالج أن يقوم بإرسال أمر آخر‪.‬‬

‫‪Think‬‬ ‫‪CPU‬‬ ‫‪Think‬‬ ‫‪CPU‬‬ ‫‪Think‬‬ ‫‪Think‬‬ ‫‪CPU‬‬

‫‪80‬‬
‫تعمل وحدة المعالجة ‪ CPU‬بالتناوب بين الطرفيات بشكل حلقة ‪،Round robin‬‬ ‫‪.16‬‬
‫بحيث تنفذ التعليمة في الطرفية األولى ومن ثم الثانية‪ ،‬إلى أن تنتھي بأخر طرفية وعندھا‬
‫تعود الطرفية األولى لتخدمھا من جديد‪.‬‬
‫يخصص المعالج ‪ CPU‬زمن التنفيذ صغيراً جدا لكل طرفية يسمى ‪،Quantum‬‬ ‫‪.17‬‬
‫وبحيث إذا لم ينتھي المعالج ‪ CPU‬من إنھاء العمل المخصص للطرفية خالل الوقت‬
‫‪ Quantum‬ينقل بقية العمل لھذه الطرفية إلى بداية الصف‪ ،‬ويتابع ‪ CPU‬تنفيذ العمل‬
‫للطرفية الالحقة‪.‬‬
‫يبين الشكل التالي الفكرة األساسية من دورة العمل لوحدة المعالجة ‪.CPU‬‬ ‫‪.18‬‬
‫‪Terminals‬‬

‫‪CPU‬‬

‫‪81‬‬
‫في الحالة العملية يكون زمن التفكير أطول بكثير من زمن التنفيذ‪ ،‬فمثالً زمن التفكير‬ ‫‪.19‬‬
‫يكون بحدود ‪ 30‬ثانية‪ ،‬ويكون زمن التنفيذ ‪ Quantum‬بحدود ‪ .1msec‬لنفترض أن تنفيذ‬
‫طلب ما يحتاج إلى ‪ 5 sec‬من وحدة المعالجة ‪ CPU‬إذا يتطلب تنفيذ ھذا العمل ‪ 5000‬دورة‬
‫ضمن الصف‪.‬‬
‫يشبه نظام المحاكاة نظام محاكاة إلصالح اآلالت في مصنع‪ ،‬حيث يشبه ‪ CPU‬عمل‬ ‫‪.20‬‬
‫عامل اإلصالح‪ ،‬ويختلفان بأن الدخول إلى الصف يتم بشكل دائري وليس بطريقة ‪.FIFO‬‬
‫ويمكن تقسيم نظام المحاكاة إلى حدثين أساسيين‪:‬‬ ‫‪.21‬‬
‫ األول‪ :‬ھو وصول العمل إلى صف االنتظار للمعالج‪ ،‬وقسم إلى قسمين‪:‬‬
‫‪ .i‬وصول عمل جديد ناتج عن طلب من أحد الطرفيات )عند الضغط‬
‫على مفتاح ‪ Enter‬مثالً(‪،‬‬
‫‪ .ii‬أو وصول من عمل غير منتھي‪.‬‬
‫الثاني‪ :‬خروج العمل من الصف‪ .‬ويقسم أيضا ً إلى قسمين‬ ‫‬
‫‪ .i‬األول عند انتھاء من تنفيذ العمل المطلوب‪،‬‬
‫‪ .ii‬والثاني ھو انتھاء الوقت المخصص ‪ Quantum‬لتنفيذه الحقا ً‪.‬‬

‫‪82‬‬
‫يمكن تصميم نظام محاكي للصف الدائري باستخدام طريقة الحدث المتقدم‪.‬‬ ‫‪.22‬‬
‫سوف تحتوي قائمة األحداث المستقبلية على حدث خروج العمل من الصف ‪CPU‬‬ ‫‪.23‬‬
‫و دخول األحداث الجديدة إلى الصف‪ ،‬وباعتبار أن زمن التنفيذ ثابت ويساوي ‪Quantum‬‬
‫فان القائمة ثابتة‪.‬‬
‫ولتصميم القائمة سوف تحتوي كل عقدة نوعين من المعلومات األول الحدث التالي‬ ‫‪.24‬‬
‫ً‬
‫‪ ،Future event‬والثاني انتھاء العمل )للداللة إذا كان العمل المراد تنفيذه قد نفذ كامال أو‬
‫يحتاج إلى إعادته إلى بداية القائمة(‪.‬‬
‫ويبين الشكل التالي قائمة األحداث المستقبلية حيث ‪ tj‬يمثل زمن دخول الحدث إلى‬ ‫‪.25‬‬
‫القائمة‪.‬‬

‫‪F‬‬ ‫‪ti1‬‬ ‫‪j1‬‬ ‫‪tj2‬‬ ‫‪j2‬‬ ‫‪tjk‬‬ ‫‪jk‬‬

‫‪83‬‬
:‫يبين الشكل التالي المخطط التدفقي لمحاكي الصف الدائري‬ .2 6

Is CPU
Yes No
MCL=tarr Queue MCL=MCL+1
Empty

A new arrival A departure


event occurs event occurs

A
No Is
A MCL=tarr

Yes

A new arrival
event occurs

84
‫ﻣلحقات‬

‫] ‪ 1‬إيضاح[‬
‫راجع مثال إصالح اآلالت في مصنع المبين في الفصل األول‪.‬‬

‫] ‪ 2‬إيضاح[‬
‫إذا يكفي مالحظة أو تسجيل تغير األحداث ‪ events‬في النظام إلجراء المحاكاة‪.‬‬

‫] ‪ 3‬إيضاح[‬
‫وذلك باستخدام المسجلة في عداد الساعة ‪ clock‬لكل حدث‪.‬‬

‫] ‪ 4‬إيضاح[‬
‫لذلك تدعى ھذه الطريقة بطريقة تقدم الحدث حيث يتم االعتماد على تغيرات الحدث في تصميم نظام‬
‫المحاكاة‪.‬‬

‫] ‪ 1‬مثال[‬
‫لقد بينا في مثال إصالح اآلالت في المصنع )راجع الفصل األول( انه يوجد حدثين فقط‪ ،‬األول دخول‬
‫اآللة إلى صف اإلصالح )أي تعطل اآللة( والثاني خروج اآللة من الصف )أي إصالحھا(‪ .‬حيث‬
‫تدعى ھذه األحداث باألحداث األولية ‪.Primary events‬‬

‫] ‪ 2‬مثال[‬
‫إن تكرار حدوث أعطال في اآلالت ودخول اآلالت إلى صف االنتظار قد يؤدي إلى حدوث حالة‬
‫جديدة ال تخرج اآلالت من صف االنتظار )إي ال تصلح( وذلك عندما يكون عامل اإلصالح بحاجة‬
‫إلى وقت للراحة ‪ idle‬حتى ولديه عدد كبير من اآلالت بحاجة إلى إصالح‪.‬‬

‫] ‪ 5‬إيضاح[‬
‫سوف نشرح قائمة األحداث المستقبلية في الفقرة التالية‪.‬‬

‫‪85‬‬
‫] ‪ 6‬إيضاح[‬
‫طبيعة الحدث يعبر عن الفعل الذي يجب اتخاذه عندما يظھر الحدث‪ ،‬أي البرنامج الجزئي المخصص‬
‫لتنفيذ ھذا الحدث‪.‬‬

‫] ‪ 3‬مثال[‬
‫لقد بينا في المثال إصالح اآلالت في المصنع )راجع الفصل األول( انه يوجد حدثين فقط‪ ،‬األول‬
‫دخول اآللة إلى صف اإلصالح )أي تعطل اآللة( والثاني خروج اآللة من الصف )أي إصالحھا(‪.‬‬
‫ولكن عند الرغبة في تصميم نظام محاكاة ألنظمة معقدة ‪ complex systems‬فان عدد األحداث‬
‫يصبح كبيراً جداً‪ ،‬وبالتالي البحث عن حدث جديد سوف يحتاج إلى خوارزميات معقدة لتحقيق ذلك‬
‫لتحقيق المطلوب بأقل عدد ممكن من العمليات الحسابية‪ .‬و يعتمد كفاءة ھذه الخوارزميات على كمية‬
‫المعلومات التي وسوف تبقى في القائمة المستقبلية وكيفية تخزين ھذه المعلومات‪.‬‬

‫] ‪ 7‬إيضاح[‬
‫نالحظ أن كل عقدة تمثل بمربعين األول يمثل المعلومات المخزنة في العقدة‪ ،‬حيث يمكن أن تكون‬
‫ھذه المعلومات متحول ما بسيط ويمكن أن تكون مجموعة مصفوفات‪ ،‬بينما يمثل المربع الثاني موقع‬
‫العقدة الثانية أو اسم العقدة الثانية في القائمة‪ .‬ونالحظ أن المؤشر ‪ F‬يشير إلى أول عقدة بينما يشير‬
‫المؤشر في العقدة األخيرة إلى القيمة ‪ 0‬مما يدل على أنه ال توجد عقدة تالية‪.‬‬

‫] ‪ 8‬إيضاح[‬
‫ويتم الولوج إلى المعلومة للعقدة ‪ i‬باستخدام )‪ Data(i‬أو )‪.Link(i‬‬

‫] ‪ 9‬إيضاح[‬
‫سوف نبين بالتفصيل ھذين البرنامجين الحقا ً‪.‬‬

‫‪86‬‬
STi [‫ إيضاح‬10 ]

WTi

ATi+1
t

ai ai+1 si si+STi

ith (i+1)th ith ith


arrival arrival arrival arrival
begin its ends its
service service

STi [‫ إيضاح‬11 ]

WTi

ATi+1
t

ai si ai+1 si+STi

ith ith (i+1)th ith


arrival arrival arrival arrival
begin its ends its
service service

STi
[‫ إيضاح‬12 ]
WTi

ATi+1
t

ai si si+STi ai+1

ith ith ith (i+1)th


arrival arrival arrival arrival
begin its ends its
service service

87
‫التمارين‬

‫ليكن لدينا األنظمة التالية‪:‬‬


‫التحصيل )صناديق المحاسبة( في سوبر ماركت‪.‬‬ ‫‪-14‬‬
‫نظام المخدم في مصرف‪.‬‬ ‫‪-15‬‬
‫نظام مصاعد في بناء‪.‬‬ ‫‪-16‬‬
‫نظام إشارات مرور عند تقاطعات طرق‪.‬‬ ‫‪-17‬‬
‫غرفة انتظار في عيادة‪.‬‬ ‫‪-18‬‬
‫محطة محروقات‪.‬‬ ‫‪-19‬‬
‫كراج طابقي النتظار السيارات‪.‬‬ ‫‪-20‬‬
‫مدرج طائرات في مطار‪.‬‬ ‫‪-21‬‬
‫نظام طاقة شمسية في منزل‪.‬‬ ‫‪-22‬‬
‫المطلوب‪:‬‬
‫أختر واحد من األمثلة السابقة‪ ،‬ثم قم بشرح مبدأ عمل النظام واضعا ً افتراضاتك وبحيث ال تؤثر على‬
‫عمل النظام‪ .‬ثم اكتب المخطط التدفقي للنظام في حال‪:‬‬
‫‪ -1‬نظام تقدم الحدث‪.‬‬
‫‪ -2‬نظام محاكاة النشاط‪.‬‬

‫‪88‬‬
‫ﻣسائل‬

‫قم بتعديل برنامج المحاكاة الذي قمت بتصميمه سابقا ً حول محاكاة مصنع‪ ،‬بحيث‬ ‫‪-10‬‬
‫تضيف قائمة مترابطة‪ ،‬وأطبع النتائج‪.‬‬

‫كرر السؤال السابق عند زيادة عدد عمال اإلصالح من ‪ ٢‬إلى ‪ ١٠‬عمال وقارن‬ ‫‪-11‬‬
‫النتائج‪.‬‬

‫قم بتنفيذ برنامج يقوم بمحاكاة نظام الصف الدائري المبين في الفقرة ‪.2.6‬‬ ‫‪-12‬‬

‫‪89‬‬
‫تقنيات التقييم لمخرجات ﻧظم المحاكاة‬
‫‪Estimation Technology For Analyzing‬‬
‫‪Endogenously Created Data‬‬

‫‪ .1‬ﻣقدﻣة‬
‫‪ o‬حتى اآلن استعرضنا في الفصول السابقة الطرق المستخدمة في بناء محاكي‪ ،‬حيث الحظنا‬
‫أن البناء يتمركز حول توليد أعداد عشوائية المرغوبة وذلك لمحاكاة ما ھو موجود في‬
‫الواقع‪.‬‬
‫مخرجات‬ ‫‪ o‬في ھذا الفصل سنبين الطرق المستخدمة لتحصيل النتائج أو‬
‫النظام ‪ ،Endogenously‬باإلضافة إلى الطرق المستخدمة لتحليل ھذه النتائج‪.‬‬

‫‪ .2‬تحصيل المخرجات ‪Collecting endogenously created data‬‬


‫‪ o‬يمكن اعتبار نظام محاكاة على أنه بناء لنظام ما تحت االختبار‪ ،‬لتحقيق ھذا االختبار يجب‬
‫على المصمم تحصيل متغيرات النظام الضرورية ليتمكن بعد ذلك من اختبار النظام‬
‫المدروس‪.‬‬
‫‪ o‬بالعودة إلى النظم المدروسة سابقا ً يمكن تسجيل تغيرات الحدث للحصول على معلومات عن‬
‫النظام وتغيراته مع الزمن‪ ،‬ولكن يجب في كثير من الحاالت مراقبة معلومات أخرى ذات‬
‫أھمية‪ 1 ] ،‬مثال[ ‪ ،‬تسمى ھذه المعلومات بالمخرجات ‪.endogenously‬‬
‫‪ o‬يمكن جمع المعلومات أو المخرجات باستخدام طرق متعددة‪ ،‬فمثال ً يمكن استخدام متحوالت‬
‫في البرنامج تستخدم كعدادات ‪ counters‬أو مسجالت لحفظ وتسجيل المخرجات‬
‫] ‪ 2‬مثال[ ‪ 1 ] .‬إيضاح[‬
‫‪ o‬من الم علومات الممكن تحصيلھا والمھمة تابع توزيع االحتمالي لآلالت المعطلة‪ ،‬والذي يمثل‬
‫فعالً عدد مرات تعطل اآللة خالل فترة العمل المدروسة )مثالً خالل عام(‪.‬‬
‫‪ o‬وبافترا ض انه لدينا ‪ n‬آلة فإننا نحتاج لتخزين المخرجات إلى مصفوفة من ‪ n+1‬عنصر‪،‬‬
‫حيث سوف يحتوي العنصر )‪ a(i‬من المصفوفة عدد مرات تعطل اآللة رقم ‪ i‬وعندما تتعطل‬
‫أية آلة فان العنصر الموافق لھا في المصفوفة سوف يزاد بمقدار واحد‪ .‬عند انتھاء المحاكاة‬
‫فان تابع التوزيع الكثافة االحتمالي )‪ p(n‬يساوي إلى‪:‬‬
‫)‪a ( i‬‬
‫= )‪p ( i‬‬ ‫‪,‬‬ ‫‪i = 0,..., n‬‬
‫‪T‬‬
‫حيث ‪ T‬زمن المحاكاة الكلي‪.‬‬

‫‪90‬‬
‫‪ o‬لنفترض أننا نريد دراسة أداء شبكة حاسوبية ‪ LAN‬عن طريق إجراء محاكاة للشبكة‪،‬‬
‫فلتحسين أداء المحاكي يضاف لكل عقدة مصفوفة مزدوجة‪ ،‬كما في الشكل التالي‪:‬‬

‫‪ o‬يخزن في العامود األول من المصفوفة زمن وصول الرزمة ‪ packet‬إلى العقدة ويخزن في‬
‫العامود الثاني زمن خروجھا‪ ،‬فعند وصول الرزمة إلى العقدة يتم تخزين زمن الوصول في‬
‫أول مكان فارغ في المصفوفة‪ ،‬وعند خروج الرزمة يتم تسجيل الزمن في المكان المقابل في‬
‫العامود الثاني‪.‬‬
‫‪ o‬إذا يمكن مراقبة حجم االزدحام ‪ congestion‬في عقدة ما بتحليل المعلومات المتوفرة في‬
‫ھذه المصفوفات‪ 2 ] .‬إيضاح[‬

‫‪ .3‬الحاالت المستقرة والعابرة ‪Transient states & steady states‬‬


‫‪simulation‬‬
‫‪ o‬يمكن في الحالة العامة يمكن تحصيل المعلومات ودراسة مخرجات نظام محاكاة في حالتين‬
‫إما في الحاالت المستقرة ‪ steady states‬أو الحاال ت العابرة ‪.transient states‬‬
‫‪ o‬لنفترض أننا نريد أن نجري إحصاء حول عدد اآلالت المعطلة في مصنع‪ ،‬يجب قبل بدء‬
‫المحاكاة تحديد الشروط االبتدائية ‪ initial condition‬مثالً نعتبر أن عدد اآلالت المعطلة‬
‫مساوية للصفر‪ 3 ] ،‬إيضاح[ ] ‪ 4‬إيضاح [ ‪.‬‬
‫‪ o‬خالل فترة الزمنية الصغيرة ‪ T‬يكون نظام المحاكاة في الحالة العابرة‪ ،‬وبعد الزمن ‪T‬‬
‫يصبح المحاكاة إنه في الحالة المستقرة‪.‬‬

‫‪91‬‬
‫‪ 1.3‬الحاالت العابرة في المحاكاة ‪Transient state simulation‬‬
‫‪ o‬تدرس الحاالت العابرة في معظم األحيان عند تغيير الشروط االبتدائية لنظام ما‪ ،‬أو عند‬
‫وضع شروط ابتدائية لنظام محاكاة جديد‪ .‬فمثالً عند دراسة حالة مصنع عند افتتاحه ألول‬
‫مرة‪.‬‬
‫‪ o‬وتدرس أيضا ً الحاالت العابرة عندما ال يكون للنظام حاالت مستقرة‪ ،‬فمثالُ عندما يكون‬
‫النظام في حالة التجارب ودائما متحوالت النظام تتغير لتحسين أداءه‪.‬‬

‫‪ 2.3‬الحاالت المستقرة في المحاكاة ‪Steady state simulation‬‬


‫‪ o‬يتم تحليل ودراسة مخرجات نظام محاكاة في معظم األحيان في الحاالت المستقرة‪ ،‬عندھا‬
‫يجب تنفيذ المحاكي لمدة زمنية طويلة كافية ليستقر خاللھا النظام‪.‬‬
‫‪ o‬يتم اعتماد طريقتين‪:‬‬
‫ األولى ھو البدء بنظام فارغ ‪ empty system‬أي ال توجد أية فعاليات قبل‬
‫البدء بالمحاكاة ‪.‬‬
‫ الثانية ھو البدء بشروط أولية تعطي حالة اقرب للحالة التي يمكن أن نحصل‬
‫عليھا عندما يستقر النظام‪.‬‬
‫] ‪ 5‬إيضاح[‬

‫‪ o‬يجب عند تحصيل المخرجات التخلص من المعلومات الخاصة بالحالة العابرة ألنھا ال تعطي‬
‫انطباعا ً صحيحا ً على النظام‪ ،‬وألنھا معتمدة على الشروط االبتدائية ‪.‬‬
‫‪ o‬للتخلص من المخرجات الخاصة بالحالة العابرة يمكن استخدام إحدى الطريقتين التاليتين‪:‬‬
‫ تشغيل المحاكي لفترة زمنية طويلة وبالتالي فان كمية المخرجات المحصلة والتي‬
‫تتعلق بالحالة العابرة سوف يكون تأثيرھا صغير جداً ومھمل‪.‬‬
‫ يتوقف تحصيل المعلومات خالل الفترة العابرة‪ ،‬ويتم ذلك بتشغيل المحاكي حتى‬
‫يصل إلى الحالة المستقرة وعندھا يبدأ بتحصيل المعلومات من النظام لفترة زمنية‬
‫بحيث تكفي لتحصيل كمية كافية من المعلومات‪.‬‬
‫‪ o‬المشكلة في الطريقة الثانية ھو في كيفية معرفة ما إذا كان النظام قد وصل إلى الحالة‬
‫المستقرة أم ال‪ .‬ويمكن ذلك بتشغيل المحاكي خالل فترات زمنية مختلفة ومتصاعدة‬
‫‪ T1>T2 >T3>,…>Ti‬ويتم مقارنة المخرجات بين كل فترة زمنية وفترة زمنية أخرى‪،‬‬
‫فعندما تصبح تغيرات المخرجات صغيرة بين فترة زمنية وأخرى يصبح النظام بحالة‬
‫االستقرار‪.‬‬

‫‪92‬‬
‫‪ .4‬تقنيات تقييم الحاالت المستقرة ‪Estimating techniques for SS‬‬
‫‪ o‬يقصد بتقييم الحاالت المستقرة‪ ،‬مجموعة القياسات التي يمكن أن تجرى على تابع التوزيع‬
‫االحتمالي لمتحول مخرجات النظام‪ ،‬حيث يتم مثالً حساب المتوسط ‪ ،mean‬االنحراف‬
‫المعياري ‪ ،standard deviation‬النسب اﻟﻣﺋوﯾﺔ للنتائج أو المخرجات‪.‬‬
‫‪ o‬فمث ً‬
‫ال المعلومة المھمة في المصنع ھو تابع التوزع االحتمالي لتعطل اآللة‪ ،‬أو تابع التوزيع‬
‫االحتمالي لتعطل اآلالت جميعھا‪ .‬كما أن نسبة اآلالت المعطلة‪ ،‬أو نسبة زمن التعطل آللة ما‬
‫بالنسبة لوقت العمل مھم جداً التخاذ قرار مناسب من مدراء المعمل‪.‬‬

‫‪ .1 .4‬تقييم ﻣجال الثقة لمتوسط المتحول العشوائي‬


‫‪ o‬ليكن لدينا تتابع المخرجات ‪ xn....،x3 ، x2 ، x 1‬نظام محاكاة‪ ،‬يتم حساب متوسط المتحول‬
‫العشوائي يعطى بالعالقة‪:‬‬
‫‪1 n‬‬
‫‪x = ∑ xi‬‬
‫‪n i =1‬‬
‫‪ o‬للحصول على مجال الثقة للمتوسط يجب أو ً‬
‫ال حساب االنحراف المعياري للمت حول العشوائي‬
‫باستخدام العالقة ‪:‬‬
‫‪1  n‬‬ ‫‪‬‬
‫= ‪s‬‬
‫‪2‬‬
‫‪d‬‬ ‫‪ ∑ ( xi − x) 2 ‬‬
‫‪n 1  i =1‬‬
‫‪−‬‬

‫‪‬‬
‫‪ o‬أو مشكل مختصر‪:‬‬
‫‪‬‬ ‫‪‬‬ ‫‪n‬‬
‫‪‬‬
‫‪2‬‬
‫‪‬‬
‫‪‬‬ ‫‪ ∑x j  ‬‬
‫‪‬‬
‫‪1  n 2  j =1  ‬‬
‫‪‬‬
‫‪2‬‬
‫= ‪sd‬‬ ‫‪ ∑ xi −‬‬ ‫‪‬‬
‫‪n −1  i= 1‬‬ ‫‪n‬‬ ‫‪‬‬
‫‪‬‬ ‫‪‬‬
‫‪‬‬ ‫‪‬‬

‫‪93‬‬
‫‪ o‬وبالتالي فان مجال الثقة يعطى بالعالقة‪:‬‬
‫‪‬‬ ‫‪s‬‬ ‫‪s ‬‬
‫‪ x − 1.96 d , x + 1.96 d ‬‬
‫‪‬‬ ‫‪n‬‬ ‫‪n‬‬
‫عند ‪ 95%‬ثقة‪ 6 ] .‬إيضاح[‬
‫‪ o‬يمكن حساب المتوسط من أجل أية قيمة لمجال الثقة‪ ،‬إن معظم القيم المستخدمة ھي ‪،99%‬‬
‫‪ ،95%‬و ‪ ،90%‬ويمكن التعبير عن مجال الثقة بأنه المجال المحصور بين القيمتين ‪ a‬و ‪b‬‬
‫في الشكل التالي‪:‬‬

‫] ‪ 7‬إيضاح[‬

‫‪ o‬يمكن أيضاً التحقق ما إذا كانت المخرجات ‪ xn....،x3 ،x2 ، x1‬مترابطة مع بعضھا البعض‪،‬‬
‫فمثالً توقف آلة ما يمكن أن يتعلق بتوقف آلة أخرى تعتمد عليھا‪.‬‬
‫‪ o‬إذا ال يمكن حساب قيمة المتوسط باستخدام المعادلة‪:‬‬
‫‪1 n‬‬
‫=‪x‬‬ ‫‪∑ xi‬‬
‫‪n i=1‬‬
‫‪ o‬إذا ً يجب التحقق من ترابط المخرجات أو ً‬
‫ال‪ ،‬ويتم ذلك سوف نستخدم الطرق التالية‪:‬‬
‫‪ (a‬حساب تابع الترابط الذاتي ‪. autocorrelation function‬‬
‫‪ (b‬متوسط الحزم ‪.batch mean‬‬
‫‪ (c‬طريقة التكرار ‪.replication‬‬
‫‪ (d‬طريقة التجديد ‪.regenerative method‬‬

‫‪94‬‬
‫‪ (a‬حساب تابع الترابط الذاتي ‪autocorrelation function‬‬
‫‪ o‬ليكن ‪ X‬و ‪ Y‬متحولين عشوائيين‪ ،‬وليكن ‪ μx‬و ‪ μy‬المتوسط المتوقع ‪ expectation‬لھما على‬
‫الترتيب‪ ،‬وليكن لدينا ‪ σ2x‬و ‪ σ2y‬تباين كل من المتحولين ‪ X‬و ‪ Y‬على الترتيب‪ .‬يمكن‬
‫حساب الترابط المتغاير‪ covariance‬باستخدام العالقة‪:‬‬
‫[‬
‫) ‪c xy = E ( X − µ x )(Y − µ y‬‬ ‫]‬
‫‪= E [ XY ] − µ x µ y‬‬

‫] ‪ 8‬إيضاح[ ‪ ،‬حيث )‪ E(X‬المتوسط المتوقع للمتحول ‪.X‬‬


‫‪ o‬وتعبر ‪ cxy‬على الترابط بين ‪ X‬و ‪ ،Y‬فإذا كانت‪:‬‬
‫ ‪ cxy =0‬فان المتحولين ‪ X‬و ‪ Y‬غير مترابطين‪،‬‬
‫ ‪ cxy >0‬فان المتحولين ‪ X‬و ‪ Y‬مترابطين بشكل موجب‪،‬‬
‫ ‪ cxy <0‬فان المتحولين ‪ X‬و ‪ Y‬مترابطين بشكل سالب‪.‬‬
‫ ‪ cxy =σx2‬فان المتحولين ‪ X‬و ‪ Y‬متطابقين‪.‬‬

‫‪95‬‬
‫‪ o‬يبين الشكل التالي حاالت الترابط الثالث‪.‬‬

‫غير مترابطين‬ ‫مترابطين بشكل موجب‬ ‫مترابطين بشكل سالب‬

‫‪ o‬لتفادي حساب قيم النھائية يمكن حساب الترابط ‪ correlation‬للمتحولين العشوائيين ‪ X‬و ‪Y‬‬
‫باستخدام العالقة‪:‬‬
‫‪c xy‬‬
‫= ‪ρ xy‬‬
‫‪σ xσ y‬‬
‫‪ o‬وتعبر ‪ ߩxy‬على االستقاللية بين ‪ X‬و ‪ ،Y‬وتكون ‪ -1 ≤ ߩxy ≤1‬فإذا كانت‪:‬‬
‫ ‪ ߩxy =0‬فان المتحولين ‪ X‬و ‪ Y‬مستقلين أي غير مترابطين‪،‬‬
‫ وإذا كانت ‪ ߩxy‬قريبة من ‪ 1‬فان المتحولين ‪ X‬و ‪ Y‬مترابطين بشكل موجب‪،‬‬
‫ وإذا كانت ‪ ߩxy‬قريبة من ‪ -1‬فان المتحولين ‪ X‬و ‪ Y‬مترابطين بشكل سالب‪،‬‬

‫‪96‬‬
‫‪ o‬ليكن لدينا المخرجات ‪ xn....،x3 ،x2 ،x1‬والتي يمكن جمعھا ضمن أزواج من النقاط‬
‫)‪ .(xn-1,xn) ….،(xi,xi+1)..... ،(x5,x6) ،(x3,x4) ،(x1,x2‬ولنعتبر زوج النقاط األول ھو‬
‫من متحوالت ‪ X‬والثاني ‪ Y‬وھكذا‪ ،...‬يسمى التابع ‪ ߩxy‬بتابع الترابط الذاتي‬
‫‪ autocorrelation function‬ويساوي إلى‪:‬‬
‫‪n −1‬‬

‫‪∑ (x‬‬
‫‪i =1‬‬
‫‪i‬‬ ‫) ‪− X )( xi +1 − Y‬‬
‫= ‪r1‬‬
‫‪n −1‬‬ ‫‪n −1‬‬

‫‪∑ ( xi − X ) 2 ∑ ( xi +1 − Y ) 2‬‬
‫‪i =1‬‬ ‫‪i =1‬‬

‫‪1 n‬‬ ‫‪1 n−1‬‬


‫= ‪Y‬‬ ‫∑ ‪ X = n − 1‬و ‪∑ xi‬‬
‫‪n − 1 i =2‬‬ ‫‪i =1‬‬
‫حيث‪xi :‬‬

‫‪ o‬من أجل القيم الكبيرة لـ ‪ n‬يمكن تقريب العالقة السابقة بحيث تصبح‪:‬‬
‫‪n −1‬‬

‫‪∑ (x‬‬
‫‪i =1‬‬
‫‪i‬‬ ‫) ‪− X )( xi +1 − X‬‬
‫= ‪r1‬‬ ‫‪n −1‬‬

‫‪∑ (x‬‬
‫‪i =1‬‬
‫‪i‬‬ ‫‪− X )2‬‬

‫‪1 n‬‬
‫= ‪X‬‬ ‫حيث ‪∑ xi‬‬
‫‪n i =1‬‬

‫‪97‬‬
‫‪ o‬يسمى تابع الترابط الذاتي ‪ r1‬تابع الترابط لخطوة واحدة ‪ 1 lag‬وھو يھتم بترابط عينتين‬
‫متجاورتين‪.‬‬
‫‪ o‬يمكن حساب تابع الترابط الذاتي للخطوة ‪ k‬باستخدام العالقة‪:‬‬
‫‪n−k‬‬

‫‪∑ (x‬‬
‫‪i =1‬‬
‫‪i‬‬ ‫) ‪− X )( xi + k − X‬‬
‫‪Rk‬‬
‫= ‪rk‬‬ ‫‪n −1‬‬
‫=‬
‫‪R0‬‬
‫‪∑(x‬‬
‫‪i =1‬‬
‫‪i‬‬ ‫‪− X )2‬‬

‫حيث ‪ Rx‬تابع الترابط المتغاير الذاتي والذي يساوي‪:‬‬


‫‪n −k‬‬
‫) ‪Rk = ∑ ( xi − X )( xi + k − X‬‬
‫‪i =1‬‬

‫‪ o‬يبين الشكل التالي قيم تابع الترابط الذاتي ‪ rk‬محسوب لقيم مختلفة للخطوة ‪:k‬‬

‫‪rk‬‬

‫‪Lag k‬‬

‫‪98‬‬
‫‪ (b‬متوسط الحزم ‪batch mean‬‬
‫‪ o‬يعتمد متوسط الحزم على تقسيم المخرجات ‪ xn....،x3 ،x2 ،x1‬إلى مجموعات بحيث تحتوي‬
‫كل مجموعة على عدد متساوي من المخرجات عددھا ‪ b‬مثالً‪ .‬أي أن المجموعة األولى‬
‫سوف تحتوي على المخرجات ‪ xb....،x3 ،x2 ،x1‬والمجموعة الثانية ‪،xb+2 ،xb+1‬‬
‫‪ ،x2b....،xb+3‬وھكذا‪ ٩ ] .‬إيضاح[‬
‫‪ o‬يتم حساب المتوسط للمجموعة ‪ X 1‬األولى‪ ،‬والثانية ‪ ، X 2‬وللمجموعة ‪ k‬بـ ‪ X k‬فانه يمكن‬
‫البرھان على أن المتوسطات غير مترابطة‪ ،‬ويعطى المتوسط الحزم بالعالقة‪:‬‬
‫‪1 k‬‬
‫= ‪X‬‬ ‫‪∑ Xi‬‬
‫‪k i =1‬‬
‫‪ o‬ويحسب االنحراف المعياري بالعالقة‪:‬‬
‫‪1 k‬‬ ‫‪‬‬
‫= ‪s d2‬‬ ‫‪ ∑ ( X i − X )2 ‬‬
‫‪k  i =1‬‬ ‫‪‬‬
‫‪ o‬من أجل القيم الكبيرة لـ ‪) k‬مثالً ‪ (k>30‬نحصل على مجال الثقة بالعالقة‪:‬‬
‫‪‬‬ ‫‪s‬‬ ‫‪s ‬‬
‫‪ X − 1.96 d , X + 1.96 d ‬‬
‫‪‬‬ ‫‪k‬‬ ‫‪k‬‬
‫] ‪ 10‬إيضاح[‬

‫‪99‬‬
‫‪ (c‬طريقة التكرار ‪replication‬‬
‫‪ o‬يمكن حساب مجال الثقة باستخدام طريقة أخرى عن طريق تكرار المحاكاة عدة مرات ومن‬
‫ثم حساب متوسط النتائج‪.‬‬
‫‪ o‬لنفترض أننا ننفذ المحاكاة عدد ‪ n‬مرة‪:‬‬
‫التكرار ‪x1m....،x13 ،x12 ،x11 :١-‬‬
‫التكرار ‪x2m....،x23 ،x22 ،x21 :٢-‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫التكرار –‪xnm....،xn3 ،xn2 ،xn1 :n‬‬

‫‪ o‬يتم حساب المتوسط لكل تكرار باستخدام العالقة‪:‬‬


‫‪1 n‬‬
‫= ‪Xi‬‬ ‫‪∑ xij‬‬
‫‪m j =1‬‬
‫‪ o‬يتم حساب المتوسط للتكرارات على اعتبار أن كل تكرار مستقل بذاته‪:‬‬
‫‪1 n‬‬
‫‪X = ∑ Xi‬‬
‫‪n i =1‬‬

‫‪ o‬ويحسب االنحراف المعياري بالعالقة‪:‬‬


‫‪1 n‬‬ ‫‪2‬‬
‫‪ ∑ (Xi‬‬
‫‪2‬‬
‫= ‪sd‬‬ ‫‪−‬‬

‫‪X) ‬‬
‫‪n  i=1‬‬ ‫‪‬‬
‫‪.‬‬

‫المشكلة تكمن في حساب طول التجربة أي قيمة ‪ ، m‬و فترة العابرة لكل تجربة‬
‫‪ o‬يتم حساب التكرار بإتباع إحدى طريقتين‪:‬‬
‫ األولى‪ :‬بتنفيذ المحاكاة بقيم ابتدائية مختلفة لكل مرة تنفيذ واالنتظار مدة كافية عند‬
‫التنفيذ حتى يستقر النظام ومن ثم تحصيل النتائج‪.‬‬
‫ الثانية‪ :‬بتنفيذ المحاكاة لمرة واحدة والبدء بتحصيل النتائج عند الوصول للحالة‬
‫المستقرة وذلك لفترة محددة ومن ثم تحصيل النتائج مرة ثانية خالل نفس الفترة‬
‫الزمنية الثانية وذلك دون التوقف عن العمل‪.‬‬

‫‪100‬‬
‫‪ (d‬طريقة التجديد ‪regenerative‬‬
‫‪ o‬الحظنا سابقا ً أن طريقتي متوسط الحزم و التكرار تعتمدان فكرة توليد مخرجات مستقلة ومن‬
‫ثم حساب متوسط ھذه المخرجات المستقلة وذلك بتنفيذ المحاكاة مرات عدة‪ ،‬بينما تعتمد‬
‫طريقة التجديد على توليد مخرجات مستقلة عن طريق تنفيذ المحاكاة لمرة واحدة‪.‬‬
‫‪ o‬لنفترض أن ‪ ... ،t2 ،t1 ،t0‬ھي األزمنة التي يصبح بھا النظام فارغاً‪ 11 ] ،‬إيضاح[ ‪ ،‬حيث‬
‫يرمز الزمن ‪ t0‬زمن دخول الزبون األول ألول مرة في النظام‪ ،‬و الزمن ‪ t1‬زمن خروج‬
‫الزبائن جميعھا من الصف فيصبح المخدم فارغ ألول مرة‪.‬‬
‫‪ o‬تسمى ھذه النقاط نقاط التجديد ‪ ،regenerative points‬وتسمى المسافة التي يقطعھا‬
‫المحاكي قبل أن يعود للحالة الفارغة بدورة التجديد ‪ ،regenerative cycle‬كما ھو مبين‬
‫في الشكل التالي‪:‬‬

‫‪ o‬لنفترض المتحول العشوائي للمخرجات ‪ X‬خالل المجال ‪ x in....، xi 3 ،x i2 ،x i1‬وخالل زمنين‬


‫الفارغين ‪ ti‬و ‪ ،ti+1‬ولنفترض أن ‪ ، ni‬عدد المخرجات خالل لمجال المذكور‪ .‬يمكن البرھان‬
‫أن ھذه المخرجات مستقلة عن المخرجات في الدورات المتجاورة‪.‬‬
‫‪ o‬ليكن ‪ Zi‬مجموع المخرجات خالل الدور ‪ i‬والذي يعطى بالعالقة ‪:‬‬
‫‪ni‬‬
‫= ‪Zi‬‬ ‫‪∑x‬‬
‫‪i =1‬‬
‫‪ij‬‬

‫‪ o‬إذا يمكن حساب المتوسط المتوقع باستخدام العالقة التالية ‪:‬‬


‫‪M‬‬
‫‪1‬‬
‫‪M‬‬
‫‪∑Z‬‬ ‫‪i= 1‬‬
‫‪i‬‬
‫= ‪Zi‬‬ ‫‪M‬‬
‫‪1‬‬
‫‪M‬‬
‫‪∑n‬‬ ‫‪i =1‬‬
‫‪i‬‬

‫حيث ‪ M‬عدد مرات دورات في المحاكاة ‪.‬‬

‫‪101‬‬
‫‪ .2.4‬التقييمات األخرى للمتحول العشوائي‬
‫‪ o‬حتى اآلن تم حساب مجال الثقة للمتحول العشوائي لمخرجات النظام‪ ،‬في ھذه الفقرة سوف‬
‫نستعرض حساب التقييمات األخرى والمفيدة أيضا ً في تحليل نظام المحاكاة وھي‪:‬‬
‫‪ (a‬احتمال وجود المتحول العشوائي ضمن مجال ثابت ‪Probability that the‬‬
‫‪.random variable lie in fixed interval‬‬
‫‪ (b‬النسبة اﻟﻣﺋوﯾﺔ للمتحول العشوائي ‪.Percentile of random variable‬‬

‫‪ (c‬تباين المتحول العشوائي ‪.Variance of the random variable‬‬

‫‪ (a‬احتمال وجود المتحول العشوائي ضمن مجال ثابت ‪Probability that the random‬‬
‫‪. variable lie in fixed interval‬‬
‫‪ o‬لتقييم ما إذا كان المتحول العشوائي يقع ضمن مجال ثابت نستخدم الطريقة نفسھا المستخدمة‬
‫لحساب المتوسط‪.‬‬
‫‪ o‬ليكن لدينا ‪ I‬المجال المطلوب‪ ،‬وليكن ‪ X‬المتحول العشوائي إذا نريد أن نحقق‪:‬‬
‫) ‪p = Pr( X ∈ I‬‬
‫‪ o‬نقوم أو ً‬
‫ال بت نفيذ المحاكاة ‪ M‬مرة‪ ،‬بحيث يتم تحصيل ‪ N‬عينة من كل تنفيذ للمتحول العشوائي‬
‫‪ ، X‬وليكن ‪ v i‬عدد المرات التي يكون فيھا المتحول العشوائي ‪ X‬يقع ضمن المجال ‪ً ، I‬‬
‫إذا فأن‬
‫‪ p i= vi /N‬ھو توقع المتحول العشوائي‪ ،‬إذا ‪:‬‬
‫‪M‬‬
‫‪1‬‬
‫=‪p‬‬
‫‪M‬‬
‫‪∑p‬‬ ‫‪i‬‬
‫‪i= 1‬‬

‫‪ o‬ويحسب االنحراف المعياري بالعالقة‪:‬‬


‫‪1 M‬‬ ‫‪‬‬
‫= ‪s2d‬‬ ‫‪ ∑( pi‬‬ ‫‪−‬‬

‫‪p )2 ‬‬
‫‪M 1  i= 1‬‬
‫‪−‬‬

‫‪‬‬
‫حيث نالحظ أن حساب ‪ p‬تتطلب ‪ M‬تكرار للمحاكاة ‪.‬‬

‫‪102‬‬
‫‪ (b‬النسبة اﻟﻣﺋوﯾﺔ للمتحول العشوائي ‪Percentile of random variable‬‬

‫‪ o‬إن حساب النسب اﻟﻣﺋوﯾﺔ للمحول العشوائي مھم جداً في تحليل النظام‪ ،‬فمثالً من غير المھم‬
‫معرفة متوسط زمن االستجابة لنظام ما‪ ،‬وإنما من المھم زمن االستجابة نفسه )أي تخديم‬
‫أكبر عدد ممكن من اآلالت في أقل وقت ممكن(‪ 12 ] .‬إيضاح[ ‪.‬‬
‫‪ o‬ليكن لدينا المتحول العشوائي ‪ X‬بتابع ذو كثافة احتمالي )‪ ،f(x‬تعرف النسبةاﻟﻣﺋوﯾﺔ ‪100βth‬‬
‫بأنھا أقل قيمة للمتحول العشوائي ‪ xβ‬بحيث ‪ f(xβ)<β‬وبحيث أن المساحة المحصورة بين‬
‫∞‪ -‬و ‪ xβ‬وتحت المنحني )‪ f(x‬أقل آو تساوي القيمة ‪ ،β‬كما ھو مبين بالشكل‪:‬‬

‫‪ o‬لنفترض انه قمنا بتكرار تنفيذ المحاكاة في كل مرة نتجت لدينا مخرجات مستقلة ‪،xi2 ، xi1‬‬
‫‪ xiN....،xi3‬عددھا ‪ . N‬لنقم بترتيب ھذه المخرجات بحيث يكون ‪ x ij<xij+1‬عندھا يتم حساب‬
‫النسبةاﻟﻣﺋوﯾﺔ ‪ 100βth‬للمتحول العشوائي ‪ x β‬عن طريق حساب المتوسط باستخدام العالقة‪:‬‬
‫‪M‬‬
‫‪1‬‬
‫= ‪xβ‬‬
‫‪M‬‬
‫‪∑ xβ‬‬
‫‪i =1‬‬
‫) ‪(i‬‬

‫‪ o‬إن تقييم النسبة اﻟﻣﺋوﯾﺔ يحتاج إلى تنفيذ المحاكاة بعدد مرات كثيرة وذلك للحصول على قيمة‬
‫غير منحازة‪ ،‬إذا لحساب النسبة اﻟﻣﺋوﯾﺔ يجب‪:‬‬
‫ تسجيل جميع المخرجات من بدء المحاكاة حتى نھاية التنفيذ‪.‬‬
‫ ترتيب جميع المخرجات تصاعدياً‪.‬‬
‫] ‪ 13‬إيضاح[‬

‫‪103‬‬
‫‪ (c‬تباين المتحول العشوائي ‪Variance of the random variable‬‬
‫‪ o‬لنفترض اننا قمنا بتنفيذ المحاكاة ‪ M‬مرة وفي كل مرة نتجت لدينا مخرجات مستقلة ‪،xi2 ،xi1‬‬
‫‪ xiN....،xi3‬عددھا ‪ .N‬يمكن حساب المتوسط في كل تنفيذ‪:‬‬
‫‪N‬‬
‫‪1‬‬
‫= ‪µi‬‬
‫‪N‬‬
‫‪∑x‬‬
‫‪j =1‬‬
‫‪ij‬‬

‫‪ o‬والمتوسط الكلي‪:‬‬
‫‪M‬‬
‫‪1‬‬
‫=‪µ‬‬
‫‪M‬‬
‫‪∑µ‬‬
‫‪i =1‬‬
‫‪i‬‬

‫‪ o‬أي أن االنحراف المعياري لكل تنفيذ يساوي‪:‬‬


‫‪1 N‬‬ ‫‪‬‬
‫= ) ‪s d2 ( i‬‬ ‫‪ ∑ ( xij − µ ) 2 ‬‬
‫‪N  j =1‬‬ ‫‪‬‬
‫‪‬‬
‫‪1 N 2‬‬ ‫‪ 1 N 2‬‬ ‫‪‬‬
‫‪s‬‬ ‫‪2‬‬
‫) ‪d (i‬‬ ‫‪=  ∑ ( x ij − 2 µ xij + µ )  =  ∑ x ij − 2 µ i µ + µ 2 ) ‬‬
‫‪‬‬ ‫‪2‬‬

‫‪N  j =1‬‬ ‫‪ N  j =1‬‬ ‫‪‬‬

‫‪ o‬إذا فان التباين الكلي ھو متوسط التباين لمجموع التنفيذ أي‪:‬‬


‫‪1M 2 ‬‬
‫= ‪σ2‬‬ ‫‪ ∑ sd ( i) ‬‬
‫‪M  i =1‬‬ ‫‪‬‬

‫‪1‬‬ ‫‪M‬‬ ‫‪1‬‬ ‫‪N‬‬ ‫‪ 1 2‬‬ ‫‪M‬‬


‫‪2‬‬
‫= ‪σ2‬‬
‫‪M‬‬
‫∑‬ ‫‪‬‬
‫‪‬‬
‫‪i =1  N‬‬
‫‪∑=1 x 2ij  − M N‬‬ ‫‪∑µ µ + M µ‬‬ ‫‪i‬‬
‫‪2‬‬

‫‪j‬‬ ‫‪‬‬ ‫‪i =1‬‬

‫‪1‬‬ ‫‪M‬‬ ‫‪1‬‬ ‫‪N‬‬ ‫‪‬‬


‫= ‪σ2‬‬
‫‪M‬‬
‫∑‬ ‫‪‬‬
‫‪‬‬
‫‪i 1  N‬‬
‫‪∑x‬‬ ‫‪2‬‬
‫‪ij‬‬ ‫‪ µ2‬‬
‫‪‬‬
‫‪−‬‬

‫=‬ ‫‪j =1‬‬ ‫‪‬‬

‫‪ o‬ويمكن حساب التباين بتنفيذ المحاكاة لمرة واحدة‪ ،‬حيث يتم اعتبار في دورات أن المخرجات‬
‫مستقلة ويتم من خاللھا حساب قيم المتوسط‪.‬‬

‫‪104‬‬
‫‪ .5‬طرق تقييم الحاالت العابرة ‪Estimation techniques for transient state‬‬
‫‪ o‬تعتمد الحالة العابرة لنظام المحاكاة على الشروط االبتدائية‪ ،‬فللحصول على متحول عشوائي‬
‫للحاالت العابرة يجب تنفيذ المحاكاة مرات عدة‪ ،‬مع العودة للحالة االبتدائية في كل مرة‬
‫وتنفيذ المحاكاة بنفس الشروط االبتدائية ومن ثم تسجيل المخرجات قبل أن يستقر النظام‪.‬‬
‫‪ o‬لتحقيق ذلك يجب أن يكون مصمم النظام على دراية كافية بطول الفترة العابرة‪ ،‬باإلضافة‬
‫لذلك يجب أن يتم استخدام مولد عشوائية ذو استقاللية تامة عن بقية مرات التنفيذ األخرى‪.‬‬

‫‪ 6‬التجارب األولية ‪Pilot experiments‬‬


‫حتى اآلن بينا استعرضن ا طرق عدة لحساب مجال الثقة ‪ ،‬حيث الحظنا أن مجال الثقة‬ ‫‪. 27‬‬
‫ً‬
‫يتناسب عكسا مع عدد مرات تكرار التنفيذ ‪ ، N‬فكلما كثرت مرات التنفيذ كلما صغر مجال‬
‫الثقة المطلوب‪.‬‬
‫فوجد أن النسبة تساوي ‪ 1 / N‬فلتخفيض مجال الثقة إلى النصف تحتاج إلى زيادة‬ ‫‪. 28‬‬
‫عدد مرات التكرار أربع أضعاف ) ‪ 1 / 4N = 0.5(1 / N‬و كلما صغر مجال الثقة‬
‫‪.‬‬

‫كلما زادت الدقة للنظام ‪.‬‬


‫في معظم األحيان ال يملك مصمم النظام أية فكرة على عدد مرات التكرار ‪N‬‬ ‫‪.29‬‬
‫قيمة دقة مطلوبة‪ ،‬لذلك يتم في كثير من األحيان إجراء‬ ‫على‬ ‫للحصول‬ ‫وذلك‬ ‫تطبيقه‬ ‫الواجب‬
‫تجارب أولية إلعطاء مصمم النظام القيمة المتوقعة لـ ‪ N‬عن طريق حساب مجال الثقة‬
‫للتجربة‪.‬‬

‫‪105‬‬
‫ﻣلحقات‬

‫] ‪ 1‬مثال[‬
‫ال معرفة عدد مرات تكرار تعطل آلة ما في مصنع‪ ،‬أو زمن إصالح اآللة ما عند وجود عامل‬‫مث ً‬
‫معين ‪. ...‬‬

‫] ‪ 2‬مثال[‬
‫مثالً يمكن حساب زمن تعطل آلة بأنه مجموع األوقات التي بقية فيه اآللة في فترة انتظار اإلصالح‬
‫باإلضافة إلى زمن اإلصالح‪.‬‬

‫] ‪ 1‬إيضاح[‬
‫في مثال إصالح اآلالت في مصنع يمكن حساب زمن تعطل آلة باستخدام المعلومات التالية‪:‬‬
‫• زمن وصول اآللة إلى صف االنتظار )وقت التعطل(‪.‬‬
‫• زمن خروج اآللة من اإلصالح )وقت اإلصالح(‪.‬‬
‫يمكن حفظ ھذه المعلومات في مصفوفة‪ ،‬وعند انتھاء المحاكاة تستخدم ھذه المصفوفة في حساب زمن‬
‫توقف اآلالت‪ ،‬وحساب معلومات إحصائية أخرى مثل متوسط زمن التوقف ‪ mean‬و االنحراف‬
‫المعياري ‪ standard deviation‬و نسب التعطل‪.‬‬

‫] ‪ 2‬إيضاح[‬
‫يمكن االكتفاء باستخدام مصفوفة أحادية حيث يتم تخزين زمن الوصول عند وصول الرزمة إلى‬
‫العقدة‪ ،‬وعند مغادرة الرزمة للعقدة يتم طرح زمن الخروج من الزمن المخزن أصالً في المصفوفة‬
‫والذي يعبر عن زمن الوصول وتخزين الناتج في المصفوفة لنحصل على زمن بقاء الرزمة في‬
‫المصفوفة‪.‬‬

‫] ‪ 3‬إيضاح[‬
‫طبعا ً يتغير أداء المحاكاة في كثير من األحيان مع تغير الشروط االبتدائية‪.‬‬

‫] ‪ 4‬إيضاح[‬
‫إذا تمت المحاكاة خالل فترة طويلة فان أداء النظام يكون مستقال عن الشرط االبتدائية‪ ،‬ويكون التأثر‬
‫في حال أجريت المحاكاة خالل فترة زمنية صغيرة محددة ‪.T‬‬

‫‪106‬‬
‫] ‪ 5‬إيضاح[‬
‫إذا لمعرفة الشروط األولية بدقة يجب أن يكون لدى مصمم النظام خبرة دقيقة بالنظام من حيث‬
‫مدخالته ومخرجاته وتوقع أداء عمله‪.‬‬

‫] ‪ 1‬مثال[‬
‫لقد بينا في المثال إصالح اآلالت في المصنع )راجع الفصل األول( انه يوجد حدثين فقط‪ ،‬األول‬
‫دخول اآللة إلى صف اإلصالح )أي تعطل اآللة( والثاني خروج اآللة من الصف )أي إصالحھا(‪.‬‬
‫حيث تدعى ھذه األحداث باألحداث األولية ‪.Primary events‬‬

‫] ‪ 2‬مثال[‬
‫إن تكرار حدوث أعطال في اآلالت ودخول اآلالت إلى صف االنتظار قد يؤدي إلى حدوث حالة‬
‫جديدة ال تخرج اآلالت من صف االنتظار )إي ال تصلح( وذلك عندما يكون عامل اإلصالح بحاجة‬
‫إلى وقت للراحة ‪ idle‬حتى ولديه عدد كبير من اآلالت بحاجة إلى إصالح‪.‬‬

‫] ‪ 5‬إيضاح[‬
‫سوف نشرح قائمة األحداث المستقبلية في الفقرة التالية‪.‬‬

‫] ‪ 6‬إيضاح[‬
‫يعكس مجال الثقة قيمة الخطأ الممكن حدوثه عند حساب المتوسط‪ .‬أي انه عند تنفيذ التجربة لمئة مرة‬
‫فأن ‪ 95%‬من ھذه التجارب سوف تكون ضمن المجال الصحيح‪.‬‬

‫] ‪ 7‬إيضاح[‬
‫يمكن حساب أية نقطة من نقاط المنحني باستخدام جدول التوزع القياسي المبين‪:‬‬

‫‪107‬‬
0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
0.0 0.0000 0.0040 0.0080 0.0120 0.0160 0.0199 0.0239 0.0279 0.0319 0.0359
0.1 0.0398 0.0438 0.0478 0.0517 0.0557 0.0596 0.0636 0.0675 0.0714 0.0753
0.2 0.0793 0.0832 0.0871 0.0910 0.0948 0.0987 0.1026 0.1064 0.1103 0.1141
0.3 0.1179 0.1217 0.1255 0.1293 0.1331 0.1368 0.1406 0.1443 0.1480 0.1517
0.4 0.1554 0.1591 0.1628 0.1664 0.1700 0.1736 0.1772 0.1808 0.1844 0.1879
0.5 0.1915 0.1950 0.1985 0.2019 0.2054 0.2088 0.2123 0.2157 0.2190 0.2224
0.6 0.2257 0.2291 0.2324 0.2357 0.2389 0.2422 0.2454 0.2486 0.2517 0.2549
0.7 0.2580 0.2611 0.2642 0.2673 0.2704 0.2734 0.2764 0.2794 0.2823 0.2852
0.8 0.2881 0.2910 0.2939 0.2967 0.2995 0.3023 0.3051 0.3078 0.3106 0.3133
0.9 0.3159 0.3186 0.3212 0.3238 0.3264 0.3289 0.3315 0.3340 0.3365 0.3389
1.0 0.3413 0.3438 0.3461 0.3485 0.3508 0.3531 0.3554 0.3577 0.3599 0.3621
1.1 0.3643 0.3665 0.3686 0.3708 0.3729 0.3749 0.3770 0.3790 0.3810 0.3830
1.2 0.3849 0.3869 0.3888 0.3907 0.3925 0.3944 0.3962 0.3980 0.3997 0.4015
1.3 0.4032 0.4049 0.4066 0.4082 0.4099 0.4115 0.4131 0.4147 0.4162 0.4177
1.4 0.4192 0.4207 0.4222 0.4236 0.4251 0.4265 0.4279 0.4292 0.4306 0.4319
1.5 0.4332 0.4345 0.4357 0.4370 0.4382 0.4394 0.4406 0.4418 0.4429 0.4441
1.6 0.4452 0.4463 0.4474 0.4484 0.4495 0.4505 0.4515 0.4525 0.4535 0.4545
1.7 0.4554 0.4564 0.4573 0.4582 0.4591 0.4599 0.4608 0.4616 0.4625 0.4633
1.8 0.4641 0.4649 0.4656 0.4664 0.4671 0.4678 0.4686 0.4693 0.4699 0.4706
1.9 0.4713 0.4719 0.4726 0.4732 0.4738 0.4744 0.4750 0.4756 0.4761 0.4767
2.0 0.4772 0.4778 0.4783 0.4788 0.4793 0.4798 0.4803 0.4808 0.4812 0.4817
2.1 0.4821 0.4826 0.4830 0.4834 0.4838 0.4842 0.4846 0.4850 0.4854 0.4857
2.2 0.4861 0.4864 0.4868 0.4871 0.4875 0.4878 0.4881 0.4884 0.4887 0.4890
2.3 0.4893 0.4896 0.4898 0.4901 0.4904 0.4906 0.4909 0.4911 0.4913 0.4916
2.4 0.4918 0.4920 0.4922 0.4925 0.4927 0.4929 0.4931 0.4932 0.4934 0.4936
2.5 0.4938 0.4940 0.4941 0.4943 0.4945 0.4946 0.4948 0.4949 0.4951 0.4952
2.6 0.4953 0.4955 0.4956 0.4957 0.4959 0.4960 0.4961 0.4962 0.4963 0.4964
2.7 0.4965 0.4966 0.4967 0.4968 0.4969 0.4970 0.4971 0.4972 0.4973 0.4974
2.8 0.4974 0.4975 0.4976 0.4977 0.4977 0.4978 0.4979 0.4979 0.4980 0.4981
2.9 0.4981 0.4982 0.4982 0.4983 0.4984 0.4984 0.4985 0.4985 0.4986 0.4986
3.0 0.4987 0.4987 0.4987 0.4988 0.4988 0.4989 0.4989 0.4989 0.4990 0.4990

108
‫] ‪ 8‬إيضاح [‬
‫ويتم حساب المعادلة السابقة باستخدام العالقة التالية ‪:‬‬
‫‪N 1‬‬
‫‪−‬‬

‫= ‪cxy‬‬ ‫‪∑ (x‬‬


‫‪n= 0‬‬
‫‪i‬‬
‫‪−‬‬

‫‪µ x )( yi‬‬ ‫‪−‬‬

‫)‪µ y‬‬

‫] ‪ 9‬إيضاح [‬
‫ويتم اختيار المجموعات بحيث تكون المخرجات فيما بينھا مترابطة ضمن المجموعة الواحدة‬

‫] ‪ 10‬إيضاح[‬
‫يجب اختيار عدد العينات ضمن كل حزمة ‪ b‬اكبر ما يمكن بحيث ال تكون قيم المخرجات ضمن‬
‫الحزمة غير مترابطة‪ ،‬ويتم اختيار قيمة ‪ b‬عن طريق رسم المنحني البياني لقيم تابع الترابط الذاتي‬
‫ومن ثم اختيار القيم التي تكون فيه ‪ b‬اصغر ما يمكن‪:‬‬

‫‪rk‬‬

‫‪Lag k‬‬

‫‪b=7‬‬

‫] ‪ 11‬إيضاح[‬
‫وھي الحاالت التي يخرج بھا الزبون من الصف فيصبح مخدم النظام فارغاً بحيث ال يوجد أية زبون‬
‫في الصف‪.‬‬

‫] ‪ 12‬إيضاح[‬
‫مثالً يتم حساب نسبة االستجابة يجب أن ال تقل في نظام ما عن ‪. 95%‬‬

‫] ‪ 13‬إيضاح[‬
‫يمكن الحصول بشكل مباشر على قيمة النسبة اﻟﻤﺌﻮﯾﺔ عن طريق رسم الھيستوغرام للمخرجات ومن‬
‫ثم حساب مجال الثقة المطلوب ومنه استنتاج القيمة المطلوبة‪.‬‬

‫‪109‬‬
‫ﻣسائل‬

‫قم بتعديل برنامج المحاكاة الذي قمت بتصميمه سابقا ً حول محاكاة مصنع‪ ،‬بحيث‬ ‫‪-13‬‬
‫تحقق مايلي‪:‬‬
‫‪ -a‬قم بتحصيل المعلومات بالزمن الذي تقضيه اآللة في فترة اإلصالح‪ ،‬وفي فترة العمل‪.‬‬
‫‪ -b‬قم بإضافة برنامج جزئي يقوم بحساب متوسط و االنحراف المعياري‪.‬‬
‫‪ -c‬قم بتنفيذ المحاكاة لـ ‪ ٥٠‬مرة واعتبر أنھا فترة عابرة‪ ،‬واحسب المتوسط واالنحراف‬
‫المعياري‪.‬‬
‫‪ -d‬تابع تنفيذ المحاكاة لـ ‪ 5٥0‬مرة واعتبر أنھا فترة المستقرة‪ ،‬واحسب المتوسط واالنحراف‬
‫المعياري‪.‬‬
‫‪ -e‬قارن بين النتائج السابقة و سجل مالحظاتك‪.‬‬
‫‪ -f‬استخدم طريقة حساب متوسط الحزم لحساب المتوسط‪ ،‬وقارن النتائج التي حصلت عليھا‬
‫مع النتائج السابقة‪.‬‬
‫‪ -g‬احسب مجال الثقة لـ ‪ 95%‬من تعطل اآللة‪.‬‬

‫‪110‬‬
‫لغات المحاكاة‬
‫‪Simulation Languages‬‬

‫‪ .1‬ﻣقدﻣة‬
‫‪ o‬بالعودة إلى الفصول السابقة نجد أنه عند تصميم نظام محاكاة يتطلب من لغة البرمجة أن‬
‫تحقق مجموعة من البرامج المشتركة يمكن أن نحددھا بما يلي‪:‬‬
‫‪ o‬برامج جزئية توليد األعداد العشوائية الزائفة بموزعة بتوزيع منتظم‪.‬‬
‫‪ o‬برامج جزئية توليد األعداد العشوائية الغير محدد موزعة بتوابع توزيع متعددة‪.‬‬
‫‪ o‬برامج جزئية لتوليد والتحكم بساعة المحاكي‪.‬‬
‫‪ o‬برامج جزئية لتحديد الحدث التالي أو الجديد من قائمة األحداث المستقبلية‪.‬‬
‫‪ o‬برامج جزئية للتحكم بقائمة األحداث المستقبلية‪.‬‬
‫‪ o‬برامج جزئية لتجميع وإظھار النتائج‪.‬‬
‫‪ o‬وكما سنرى الحقا ً نحتاج إلى برامج لدراسة النتائج وتحليلھا وبرامج لكشف األخطاء‪.‬‬
‫‪ o‬يمكن باستخدام لغات البرمجة عالية المستوى ‪ C‬أو ‪ C++‬أو ‪ J++‬تحقيق ھذه البرامج‬
‫بسھولة‪ ،‬ولكن يمكن استخدام حزم برمجية خاصة يمكن من خاللھا تصميم أية نظام محاكاة‬
‫بكفاءة وسرعة عالية وبدون الدخول بالتفاصيل البرمجية الدقيقة‪.‬‬
‫‪ o‬سوف نستعرض في ھذا الفصل فكرة عن عدد أشھر ھذه الحزم البرمجية من خصائص‬
‫ومزايا ومساؤى ھذه الحزم بدون الدخول بتفاصيل كيفية التعامل معھا واستخدامھا‪.‬‬

‫‪ .2‬ﻣقارﻧة بين الحزم البرﻣجية ولغات البرﻣجة‬


‫‪ o‬إن أصعب قرار يمكن أن يأخذه مصمم النظام ھو االختيار بين استخدام لغات برمجة عالية‬
‫المستوى وبين استخدام حزم برمجية جاھزة لتصميم نظام المحاكاة المطلوب‪ .‬وأيضاً بين‬
‫اخ تيار الحزمة األنسب لنظامه المطلوب تحقيقه‪.‬‬
‫‪ o‬وتتميز الحزم البرمجية الجاھزة والخاصة بتصميم نظام محاكاة بالميزات التالية‪:‬‬
‫ تقدم الحزم البرمجية برامج جزئية جاھزة والتي يتطلبھا نظام محاكاة ] ‪ 1‬إيضاح[ ‪،‬‬
‫مما يقلل بشكل كبير الوقت والجھد الالزمين لتحقيقھا‪.‬‬
‫ تھئ للمبرمجين إطار عمل وقالب عمل واحد وجاھز‪ ،‬وھذا اإلطار أو القالب مناسب‬
‫لنظم المحاكاة‪ ،‬بينما ال تقدم لغات البرمجة عالية المستوى ھذا اإلطار‪.‬‬
‫ تعطي الحزم البرمجية نظام محاكاة قابلة للتعديل و التغيير بسھولة ‪.‬‬
‫ تقدم الحزم البرمجية وسائل برمجية مھمتھا كشف األخطاء أوتوماتيكيا‪.‬‬

‫‪111‬‬
‫‪ o‬من جھة أخرى بعض نظم المحاكاة تستخدم لغات البرمجية عالية المستوى لعددت أسباب‬
‫منھا‪:‬‬
‫ خبرة المبرمجين الكبيرة بلغات البرمجة عالية المستوى‪ ،‬ولكن عدم معرفتھم بالحزم‬
‫البرمجية‪.‬‬
‫ إن النظم البرمجية المصممة بلغات برمجة عالية المستوى تتميز بزمن تنفيذ صغير‬
‫مقارنتا ً بزمن التنفيذ الذي تأخذه برامج المحاكاة المصممة بالحزم البرمجية الجاھزة‪.‬‬
‫ تھئ لغات البرمجة عالية المستوى مرونة اكبر بالتصميم والتحقيق من الحزم‬
‫البرمجية المحدودة ضمن قوالب خاصة‪.‬‬
‫ إن لغات البرمجة ‪ C++‬و ‪ J++‬ھي لغات غرضية التوجه وھذا غير متوفر في‬
‫معظم الحزم البرمجية الجاھزة‪.‬‬
‫ إن الكلفة االقتصادية العالية للحزم الجاھزة تؤدي في كثير من األحيان إلى استخدام‬
‫لغات برمجة عالية المستوى‪.‬‬

‫‪ .3‬تصنيف الحزم البرﻣجية‬


‫‪ o‬في ھذه الفقرة سوف نستعرض بالتفصيل أصناف الحزم البرمجية حيث سنبين ما يلي‪:‬‬
‫• مقارنة بين الحزم البرمجية ألغراض عامة أو لتطبيقات خاصة‪.‬‬
‫• العوامل المشتركة بين الحزم البرمجية ‪.‬‬

‫‪ 1.3‬ﻣقارﻧة بين الحزم البرﻣجية ألغراض عاﻣة أو لتطبيقات خاصة‬


‫‪ o‬تصنف الحزم البرمجية الخاصة بنظم المحاكاة إلى نوعين أساسيين‪ :‬األول لغات المحاكاة‬
‫‪ ،Simulation languages‬والثاني الحزم البرمجية الخاصة بتطبيقات خاصة‬
‫‪.application-oriented simulation‬‬
‫• لغات البرمجة تتميز بالمرونة العالية في تحقيق النظام المطلوب ولكنھا بنفس الوقت‬
‫تحتاج لمطلوب ولكنھا بنفس الوقت تحتاج إلى خبرة كبيرة في استخدام اللغة‪.‬‬
‫• الحزم البرمجية الخاصة تتميز بأنھا سھلة االستخدام ويمكن تحقيق المحاكاة بسھولة‪،‬‬
‫ولكنھا موجه لتطبق معين فقط ‪.‬‬
‫‪ o‬ولكن خالل السنوات األخيرة قام مطورو لغات البرمجة بجعل برامجھم أكثر سھولة وذلك‬
‫باستخدام الرسوم‪ ،‬واستخدام الماوس في إضافة وحذف أية عنصر من عناصر المحاكاة‬
‫بسھولة وتغيير مواصفات أية عنصر ‪ 2 ] .‬إيضاح[‬

‫‪112‬‬
‫‪ 2 .3‬العواﻣل المشتركة بين الحزم البرﻣجية‬
‫‪ o‬تحتوي الحزم البرمجية على مجموعة من العوامل المشتركة منھا‪:‬‬
‫ الكينونات ‪ :entities‬وھي العناصر التي تسافر أو تتحرك في نظام المحاكاة ويمكن‬
‫أن تدمر أو تختفي في النھاية‪ ،‬الطائرة في نظام محاكاة مطار مثالً‪.‬‬
‫ الصفات ‪ :attributes‬وھي الصفات التي تتميز بھا الكينونات‪ ،‬وھي المعلومات‬
‫الخاصة التي تخزن في كل كينونة‪ .‬رقم الرحلة نوع الطائرة‪..‬الخ في نظام محاكاة‬
‫مطار‪.‬‬
‫ الموارد ‪ :resources‬وھي موارد نظام المحاكاة والتي تستخدمھا الكينونات أثناء‬
‫تحركھا في النظام‪ .‬البوابة في مطار أو مدرج الطيران في نظام محاكاة مطار‪.‬‬
‫ الصفوف ‪ :queues‬وھي أماكن انتظار الكينونات عندما تكون الموارد غير‬
‫متوفرة‪ ،‬ويمكن أن يتم تخديم ھذه الكينونات بطريقة ‪ FIFO‬أو بطريقة ‪ LIFO‬أو‬
‫بالترتيب التصاعدي أو التنازلي‪ .‬مثالً انتظار الطائرات على مدرج المطار لإلقالع‬
‫في نظام محاكي مطار‪.‬‬
‫‪ o‬يبين الجدول التالي مجموعة أمثلة للعوامل المشتركة بين الحزم البرمجية‪:‬‬

‫طبيعة النظام‬ ‫الكينوﻧة‬ ‫الصفات‬ ‫الموارد‬ ‫الصفوف‬

‫مصنع‬ ‫قطعة‬ ‫رقم القطعة‪ ،‬تاريخ الطلب‪..،‬‬ ‫األالت‪ ،‬العمال‪..،‬‬ ‫الصف او التخزين المؤقت‪،‬‬

‫اتصاالت‬ ‫رسالة‬ ‫جھة الرسالة‪ ،‬طول الرسالة‪..،‬‬ ‫العقد‪ ،‬الروابط‪..،‬‬ ‫عازل ‪buffer‬‬

‫مطار‬ ‫طائرة‬ ‫رقم الرحلة‪ ،‬وزن الرحلة‪..،‬‬ ‫مدرج الطيران‪ ،‬البوابة‪..،‬‬ ‫صف ‪queue‬‬

‫شركة تأمين‬ ‫اسم‪ ،‬رقم ضبط الشرطة‪ ،‬الكلفة‪ ..،‬طلب زبون‬ ‫مكاتب الزبائن‪ ،‬الموظفين‪..،‬‬ ‫صف ‪queue‬‬

‫‪113‬‬
‫‪ .4‬ﻣواصفات لغات البرﻣجة‬
‫‪ o‬عند اختيار لغة برمجة لتصميم محاكاة لنظام ما‪ ،‬يجب أن تتمتع ھذه اللغة بمجموعة‬
‫مواصفات خاصة تمكنھا من تحقيق نظام المحاكاة بشكل كامل‪ .‬ھذه المواصفات يمكن أن‬
‫نلخصھا بما يلي‪:‬‬
‫‪ .A‬العمومية‪.‬‬
‫‪ .B‬مراعاة المواصفات البرمجية و العتادية ‪.‬‬
‫‪ .C‬قدرة بناء رسوم متحركة‪.‬‬
‫‪ .D‬الخاصية اإلحصائية‪.‬‬
‫‪ .E‬خدمة الزبون الوثائق المساعدة‪.‬‬
‫‪ .F‬قدرة إصدار تقارير بالنتائج‪.‬‬
‫‪ o‬سوف نستعرض ھذه المواصفات أكثر تفصيالً في الفقرات القادمة‪.‬‬
‫‪ -A‬العمومية‬
‫‪ o‬يقصد بالعمومية ھو قدرة لغة البرمجة من تحقيق نظام ما مھما كانت درجة تعقيد ھذا النظام‪،‬‬
‫حيث تجھز لغة البرمجة بإمكانية إضافة برامج جزئية مكتوبة بلغات برمجة عالية المستوى‬
‫مثل ‪ C‬مثالً ليتمكن المصممين من تحقيق أية حدث غير متوفر في لغة البرمجة أصال‪.‬‬
‫ لتكون لغة البرمجة مرنة يجب أن تحقق الخصائص التالية ‪:‬‬
‫ يجب أن يتمكن المبرمج من تغير خصائص الكينونة بسھولة‪ ،‬ومن تغيير قيم‬
‫المتحوالت العامة أيضاً ‪.‬‬
‫ يجب أن تحتوي لغة على التعليمات الشرطية ‪.if-then-else‬‬
‫ القابلية على برمجة معادالت رياضية و توابع رياضية معقدة مثل اللغارتيمات‬
‫والجذور ‪.‬‬
‫ القابلية على إنشاء شروط تحكم جديدة وتخزين الشروط القديمة في قواعد بيانات‬
‫خاصة‪.‬‬
‫‪ o‬من أھم المواصفات التي يجب أن تتوفر في لغة البرمجة ھي سھولة في االستخدام ‪easy of‬‬
‫‪ uses‬و السھولة في التعلم ‪ ، easy of learning‬فمعظم لغات البرمجة تحتوي على‬
‫‪ Graphical user interface‬لتسھيل التخاطب مع المبرمج‪.‬‬

‫‪114‬‬
‫‪ -B‬مراعاة المواصفات البرمجية و العتادية‬
‫‪ o‬عند اختيار لغة البرمجة ما ھي مواصفات الجھاز الحاسوبي المناسب الممكن استخدامه وما‬
‫ھو نظام التشغيل المستخدم‪ .‬فيجب مراعاة مالي‪:‬‬
‫ نظام التشغيل المستخدم من ‪ ،Linux ،Unix‬أو ‪.windows‬‬
‫ الجھاز من نوع ‪ Apple‬أو من ‪.IBM Compatible‬‬
‫ حجم ذاكرة ‪ RAM‬المستخدمة‪.‬‬
‫ حجم وقدرة كرت اإلظھار المستخدم‪.‬‬
‫ سرعة المعالج وقوته‪.‬‬

‫‪ -C‬قدرة بناء رسوم متحركة‬


‫‪ o‬إن قدرة نظام لغة البرمجة للمحاكي على بناء رسوم متحركة للنظام المراد برمجته ھي من‬
‫أھم الميزات المراد التي يجب أن تتوفر في لغة البرمجة‪.‬‬
‫‪ o‬وتعني قدرة بناء رسوم على أن المحاكي يستخدم ايكونات تتغير مواقعھا وألوانھا ومواقعھا‬
‫على الشاشة مع الزمن عند تشغيل البرنامج وبالتناغم مع تغي رات متحوالت المحاكي بحيث‬
‫تعكس بشكل رسومي ما يجري حقيقتاً‪) .‬مثالً استخدام أيكون يمثل رافعة في معمل تتحرك‬
‫عند طلب مادة ما من المستودع(‪.‬‬
‫‪ o‬ويجب أن يضمن ھذه اللغة على ما يلي ‪:‬‬
‫ وسائل التخاطب مع المستخدم للتحكم والحصول على النتائج‪ ،‬وبحيث أن المستخدم‬
‫غير خبيرة في التصميم والبرمجة‪.‬‬
‫ وسائل تصحيح وكشف األخطاء‪.‬‬
‫ وسائل إظھار ما إذا كان المحاكي يعطي نتائج صحيحة أم ال‪.‬‬
‫ وسائل لتدريب المستخدمين‪.‬‬
‫ وسائل التخاطب بين المستخدمين‪.‬‬

‫‪115‬‬
‫‪ -D‬الخاصية اإلحصائية‬
‫‪ o‬يجب ان يحتوي النظام على وسائل إحصائية تقوم بإصدار وتحليل النتائج وذلك للحصول‬
‫على نتائج دقيقة وقرارات دقيقة لنظام المحاكاة‪.‬‬
‫‪ o‬ليتمكن نظام المحاكي من مطابقة الواقع بشكل تقريبي يجب أن يحتوي على مولد لألعداد‬
‫العشوائية ذات توزيع منتظم‪ ،‬بحيث تمر ھذه األعداد على االختبارات المستخدم للتحقق من‬
‫توزعھا المنتظم واستقالليتھا‪.‬‬
‫‪ o‬يجب أن يحتوي المحاكي على الوسائل الخاصة بتوليد أعداد عشوائية بتوزيعات مختلفة‬
‫)أسي‪ ،‬غاما‪ ،‬طبيعي‪ (...‬بناء على رغبة المبرمج‪.‬‬
‫‪ o‬يجب أن يحتوي المحاكي على وسيلة لتشغيل المحاكاة عدة مرات منفصلة بحيث يضمن‬
‫تشغيالً بأعداد عشوائية مختلفة في كل تشغيل حتى عند استخدام نفس الشروط االبتدائية‪.‬‬

‫‪ -E‬خدمة الزبون الوثائق المساعدة‬


‫‪ o‬يجب أن تحتوي لغة البرمجة على وثائق مساعدة تمكن المبرمج من الرجوع إليھا عند‬
‫الطلب ‪، .‬‬
‫‪ o‬يجب أن تحتوي على أمثلة تفيد في التعرف على كيفية بناء نظام محاكي‬
‫‪.‬‬

‫‪ o‬يجب أن يحتوي لغة البرمجة على وسيلة تقدم خدمة للزبون سواء عن طريق الھاتف أو عن‬
‫طريق االنترنت ‪.online support‬‬
‫‪ o‬معظم لغات البرمجة تحتوي على ‪ demo disk‬يوزع مجانا ليسھل على متخذي القرار‬
‫اختيار أفضل محاكي المناسب‪.‬‬

‫‪ -F‬قدرة إصدار تقارير بالنتائج‬


‫‪ o‬يجب على المحاكي أن يكون قادر ًا على إصدار تقارير قياسية متعارف عليھا وذلك لقياس‬
‫أداء النظام ‪.‬‬
‫‪ o‬يجب أن يكون قادرا ً على تعديل أو تصميم تقارير خاصة بالمستخدم ‪.‬‬
‫‪ o‬يجب أن يكون قادر ًا على رسم النتائج بيانيا‪) ،‬تغيرات المتحوالت مع الزمن‪ ،‬الھيستوغرام‬
‫‪ ،Histogram‬الترابط بين متحوالت النظام‪.(... ،‬‬

‫‪116‬‬
‫‪ .5‬الحزم البرﻣجية عاﻣة التوجه ‪General purpose Simulation packages‬‬
‫‪ o‬سوف نستعرض في ھذه الفقرة فكرة عامة ومختصرة عن الحزم البرمجية عامة التوجه‬
‫والتي تستخدم لبناء نظام محاكاة‪ .‬سوف نقدم مثالين فقط ألشھر أنواع ھذه الحزم والتي تمتع‬
‫بالموصفات المبينة سابقا‪:‬‬
‫ الحزمة األولى تسمى ‪ Arena‬من شركة ‪ 3 ] Rokwell Automation‬إيضاح[‬
‫ الحزمة الثانية تسمى ‪ Extend‬من شركة ‪ 4 ] Imagine‬إيضاح[‬

‫‪ o‬سوف نقوم خالل الفقرات القادمة بإعطاء فكرة بسيطة حول كيفية بناء نظام محاكة بسيط‬
‫باستخدام الحزمتين السابقتين‪.‬‬

‫‪ 1.5‬حزﻣة ‪Arena‬‬
‫‪ o‬تعتبر حزمة ‪ Arena‬من البرمجيات المستخدمة للمحاكاة عامة التوجه‪ ،‬وھو مستخدم لتصميم‬
‫محاكاة لعدد متنوع من التطبيقات منھا ‪:‬‬
‫ المصانع ‪.‬‬
‫ خطوط اإلنتاج‪.‬‬
‫ في القطاع العسكري ‪.‬‬
‫ في القطاع الصحي‪.‬‬
‫ في مراكز خدمة الزبائن ‪.‬‬
‫‪ o‬ويتوفر ‪ Arena‬بعدد من اإلصدار ويتراوح من حزمة بسيطة أساسية ‪ Basic‬لتصميم‬
‫المحا كاة البسيطة إلى حزمة محترفة لتصميم نظم محاكاة معقدة‪.‬‬
‫‪ o‬تتألف حزمة ‪ Arena‬من مجموعة من المركبات ‪ modules‬تغطي عدد كبير من القوالب‬
‫‪ templates‬والتي ھي عبارة عن برامج جاھزة منھا ‪:‬‬
‫ العمليات المنطقية ‪ logic‬والروابط‬
‫ واجھات التخاطب مع المستخدم‬
‫‪.‬‬

‫ الرسومات المساعدة‪.‬‬
‫ معالجة دخول و خروج الكينونات‬
‫‪.‬‬

‫ معالجة معطيات مدخلة من برامج اخرى مثل ‪ ،Access ،Excel‬و ‪.SQL‬‬

‫‪117‬‬
‫‪ o‬وتتم البدء بالمحاكاة عن طريق جر الموديوالت إلى النافذة الرئيسية ومن ثم القيام بوصل‬
‫الروابط بينھا إلنشاء المخطط التدفقي الخاص بالمحاكاة‪.‬‬
‫‪ o‬و يتوفر في ‪ Arena‬عدد كبير من مولد األعداد العشوائية المبينة في الفصول السابقة‪،‬‬
‫وتحتوي أيضا ُ على أكثر من ‪ 12‬تابع توزيع كثافة احتمالي‪.‬‬
‫‪ o‬كما يتوفر في الحزمة طرق لتكرار المحاكاة أتوماتيكياً وحساب مجال ثقة للمتوسط وفق‬
‫الطرق المبينة في الفصل السابق‪.‬من ثم برمجة كل موديول عن طريق إدخال المعلومات و‬
‫األوامر الخاصة بكل موديول‪.‬‬

‫‪ o‬سوف نشرح بشكل مختصر بناء نظام محاكي لخط إنتاج في مصنع‪ ،‬ومن ثم يقوم عامل‬
‫باختبار صالحية قطعة المنتجة‪ ،‬حيث نفترض أن خط اإلنتاج ال يتوقف ابدأ وان اآلالت ال‬
‫تتعطل‪.‬‬
‫‪ o‬يبين الشكل التالي بناء المخطط التدفقي لمحاكي لخط إنتاج في مصنع مبني بحزمة ‪،Arena‬‬
‫حيث نالحظ إننا نحتاج إلى خمسة موديالت ‪.‬‬

‫‪Generate Parts‬‬ ‫‪Machine Parts‬‬ ‫‪Inspect Parts‬‬

‫‪True‬‬
‫‪Passed Inspection‬‬ ‫‪Good Parts Finished‬‬

‫‪False‬‬

‫‪118‬‬
‫ ويكون معدل توليد‬،‫ لتوليد األجزاء إلى خط اإلنتاج‬Generate Parts ‫ يستخدم الموديول‬o
‫ يبين الشكل‬،‫ دقيقة‬1 ‫األجزاء عشوائياً بتابع توزيع كثافة احتمالي أسي و بمتوسط يساوي‬
.‫التالي النافذة الخاصة بخصائص ھذا الموديول‬

Create

N ame: Entity Type:


General Part Part

Time between Arrivals


Type : V alue: U nit:
Random (Expo) 1 Minutes

Entities per Arrival: Max Arrivals F irst Creation:


1 Infinite 0.0

‫ والمسؤول عن‬Machine Parte ‫ بالموديول الثاني‬Create Module ‫ يرتبط الموديول‬o


‫ ولھذا الموديول له تابع توزع احتمالي منتظم بين‬،Process ‫تركيب أو التعامل مع األجزاء‬
. ‫ يبين الشكل التالي النافذة الخاصة بخصائص ھذا الموديول‬،‫ دقيقة‬0.75 ‫ و‬0.65 ‫القيم‬

Process

Name: Type:
Machine Part Standard

Logic

Action: P riority:
Seize Delay Release Medium (2)

Resource Machine, 1
<End of list>

Delay Type: U nit: A llocation:


Uniform Minutes Value Added

Minimum: Maximum:
0.65 0.75

Report Statistics

119
‫ وھو المسؤول عن اختبار المنتج بعد التصنيع في‬Inspector Module ‫ الموديول التالي‬o
‫ و يتبع ھذا الموديول تابع توزع احتمالي منتظم بين‬،Machine Parte ‫الموديول الثاني‬
.‫ يبين الشكل التالي النافذة الخاصة بخصائص ھذا الموديول‬،‫ دقيقة‬0.8 ‫ و‬0.75 ‫القيم‬

Process

Name: Type:
Inspect Part Standard

Logic

Action: Priority:
Seize Delay Release Medium (2)

Resource Machine, 1
<End of list>

Delay Type: Unit: Allocation:


Uniform Minutes Non-Value Added

Minimum: Maximum:
0.75 0.80

Report Statistics

120
‫‪ o‬الموديول التالي ھو ‪ Inspector‬وھو المسؤول عن وضع القرار فيما إذا كان المنتج صالح‬
‫أم غير صالح‪ ،‬حيث يتم أختيار أن ‪ 90%‬من المنتجات صالحة‪ ،‬يبين الشكل التالي النافذة‬
‫الخاصة بخصائص ھذا الموديول‪.‬‬

‫‪Decide‬‬

‫‪Name:‬‬ ‫‪Type:‬‬
‫?‪Personal Inspection‬‬ ‫‪2-Way by chance‬‬

‫‪Percent True [0-100]:‬‬


‫‪90‬‬ ‫‪%‬‬

‫‪ o‬ويلي ھذا الموديول موديول ‪ Good Part Finished‬والمسؤول عن تغليف المنتجات‬


‫النھائية للشحن مثالً‪ ،‬أم األجزاء الغير صالحة فتعود إلى دورة التصنيع من جديد‪.‬‬

‫يتم بعد ذلك تنفيذ المحاكاة بمدة مثالً ‪ 100000‬دقيقة‪ ،‬يبين الجدول التالي النتائج‬ ‫‪.30‬‬
‫التي حصلنا عليھا ‪.‬‬

‫‪Average‬‬ ‫‪Half Width‬‬ ‫‪Minimum‬‬ ‫‪Maximum‬‬


‫‪Value‬‬ ‫‪Value‬‬

‫‪Waiting Time‬‬ ‫‪3.0280‬‬ ‫‪0.247628038‬‬ ‫‪0.00‬‬ ‫‪94.4532‬‬

‫‪Transfer Time‬‬ ‫‪0.00‬‬ ‫‪0.000000000‬‬ ‫‪0.00‬‬ ‫‪0.00‬‬

‫‪Other Time‬‬ ‫‪0.00‬‬ ‫‪0.000000000‬‬ ‫‪0.00‬‬ ‫‪0.00‬‬

‫‪Total Time‬‬ ‫‪4.6397‬‬ ‫‪0.248893749‬‬ ‫‪1.4001‬‬ ‫‪101.70‬‬

‫‪121‬‬
‫‪ 2.5‬حزﻣة ‪Extendsim‬‬
‫‪ o‬تعتبر حزمة ‪ Extendsim‬من البرمجيات المستخدمة للمحاكاة عامة التوجه‪ ،‬وھو مستخدم‬
‫لتصميم محاكاة لعدد كبير من التطبيقات بسبب الخاصية التي يتمتع بھا من إضافة مكتبة‬
‫خاصة بالمستخدم وذلك باستخدام لغة ‪ C++‬أو لغة ‪ Visual Basic‬ويمكن للمستخدم تعديل‬
‫البرنامج أو قراءته بمجرد الضغط على الموديول بمفتاح الفأرة األيمن‪.‬‬
‫‪ o‬يعتمد بناء محاكي على نظام ھرمي تتوسع قاعدته بشكل كبير‪ ،‬بحيث أن كل مودل ‪model‬‬
‫يمكن توسيعه إلى مجموعة متكاملة من الموديالت ‪ ،models‬وبحيث ان توسيع المودل يتم‬
‫بنوافذ رسومية جديدة للتحكم‪.‬‬
‫‪ o‬يتوفر في ‪ Extendsim‬أيضا ً عدد كبير من مولد األعداد العشوائية المبينة في الفصول‬
‫السابقة‪ ،‬ويحتوي أيضا ُ على أكثر من ‪ 34‬تابع توزيع كثافة احتمالي‪.‬‬
‫‪ o‬كما يتوفر في الحزمة طرق لتكرار المحاكاة أتوماتيكياً وحساب مجال ثقة للمتوسط وفق‬
‫الطرق المبينة في الفصل السابق‪.‬من ثم برمجة كل موديول عن طريق إدخال المعلومات و‬
‫األوامر الخاصة بكل موديول‪.‬‬

‫‪ o‬سوف نشرح بشكل مختصر بناء نظام محاكي لخط إنتاج في مصنع باستخدام ‪، Extendsim‬‬
‫ومن ثم يقوم عامل باختبار صالحية قطعة المنتجة‪ ،‬حيث نفترض أن خط اإلنتاج ال يتوقف‬
‫ابدأ وان اآلالت ال تتعطل‬
‫‪.‬‬

‫‪ o‬يبين الشكل التالي بناء المخطط التدفقي لمحاكي لخط إنتاج في مصنع مبني بحزمة‬
‫‪:Extendsim‬‬

‫‪Generate Parts‬‬ ‫‪Combine Inputs Machine Parts‬‬ ‫‪Inspect Parts‬‬

‫‪0.9‬‬
‫‪event‬‬ ‫‪Good‬‬
‫‪0.1‬‬
‫‪Bad‬‬
‫‪Combine Inputs‬‬ ‫‪Part Statistics‬‬
‫‪count‬‬ ‫‪Destroy Parts‬‬

‫‪Executive‬‬

‫‪122‬‬
‫ وھي المسؤولة عن توليد األجزاء إلى خط‬Create Parts ‫ األولى بـ‬block ‫ تسمى الكتلة‬o
‫ ويكون معدل توليد األجزاء عشوائيا ً بتابع توزيع كثافة احتمالي أسي وبمتوسط‬،‫اإلنتاج‬
.‫ يبين الشكل التالي النافذة الخاصة بخصائص ھذه الكتلة‬،‫ دقيقة‬1 ‫يساوي‬
[29] Create
Options Advanced option Item Animation Block Animation Comments

OK
Creates items randomly or by schedule
Cancel
Specify block options

Generate items: randomly Time units: minutes


* model default

Specify a distribution for time between Item Information


arrivals (TBA)

Exponential Plot Sample Item quality (Q): 1

Total created: 100352


1) Mean: 1
Total quantity: 100352

4) Location 0 Total cost: 1

Help Generate Part


Default View

123
‫ ومھمتھا دمج‬Combine Inputes ‫ بالكتلة الثانية‬Create Block ‫ ترتبط الكتلة األولى‬o
‫ وتعطي في خرجھا سلسلة‬،‫األجزاء القادمة من الكتلة األولى أي المولدة وبين األجزاء التالفة‬
.‫واحدة‬
،ً‫ ومھمتھا تصنيع األجزاء المولدة سابقا‬Machine Parts ‫ تربط كتلة الجمع بالكتلة التالية‬o
0.7 ‫ و‬0.65 ‫حيث يستخدم لھذه الكتلة عدد عشوائي بتابع توزع احتمالي منتظم بين القيم‬
:‫ يبين الشكل التالي النافذة الخاصة بخصائص لھذه الكتلة‬،‫دقيقة‬
[0] Workstation
Options Costs Recourses Results Item Animation Block Animation Comments

OK
Represent a work station that holds and process Items
Cancel
Specify queue options

Maximum number of items in queue: √ Infinit

Specify activities options

Maximum number of items in process: 1

Process time is: From distribution Uniform Real

Minimum: 0.65 minutes*

Maximum: 0.7

* model default
Use shift: None

Block type: Residence

Help Machine Part


Default View

124
‫ وھي المسؤولة عن اختبار المنتج بعد التصنيع في الكتلة‬Inspector Module ‫ الكتلة التالية‬o
‫ و‬0.75 ‫ و تتبع ھذه الكتلة تابع توزع احتمالي منتظم بين القيم‬،Machine Parte ‫الثانية‬
:‫ يبين الشكل التالي النافذة الخاصة بخصائص ھذه الكتلة‬،‫ دقيقة‬0.8

[11] Select Output


Options Animation Comments

OK
Send each item to selected output
Cancel
Specify selection conditions

Select output based on random

Use block seed: 12

Select options

Probability Throughput
Send input item to:
0.9 100348
every output
0.1 11080
Predict the path of the item before it
Animate throughput

Link

Equal Probabilities √ Animate probabilities

Block type: Decision

Help Random Output

، [‫ إيضاح‬5 ]

Application-oriented simulation ‫ الحزم البرﻣجية غرضية التوجه‬.6


packeges
: ‫ھناك العديد من الحزم البرمجية والمستخدمة في تطبيقات خاصة نذكر منھا‬ .
31
[ ‫ إيضاح‬6 ] ‫ يستخدم في المصانع‬AutoMod ‫ نظام‬
[ ‫ إيضاح‬7 ] . ‫ يستخدم لمحاكاة شبكات الحاسوبية‬OPNET ‫ نظام‬
[ ‫ إيضاح‬8 ] ‫ يستخدم لمحاكاة المشافي‬MedModel ‫ نظام‬
[ ‫ إيضاح‬9 ] . ‫ يستخدم لمحاكاة الرسوم المتحركة‬Proof Animation ‫ نظام‬

125
‫ﻣلحقات‬

‫] ‪ 1‬إيضاح[‬
‫‪ .1‬برامج جزئية توليد األعداد العشوائية الزائفة بموزعة بتوزيع منتظم‪.‬‬
‫‪ .2‬برامج جزئية توليد األعداد العشوائية الغير محدد موزعة بتوابع توزيع متعددة‪.‬‬
‫‪ .3‬برامج جزئية لتوليد والتحكم بساعة المحاكي‪.‬‬
‫‪ .4‬برامج جزئية لتحديد الحدث التالي أو الجديد من قائمة األحداث المستقبلية‪.‬‬
‫‪ .5‬برامج جزئية للتحكم بقائمة األحداث المستقبلية‪.‬‬
‫‪ .6‬برامج جزئية لتجميع وإظھار النتائج‪.‬‬
‫‪ .7‬برامج جزئية لدراسة النتائج وتحليلھا‬
‫‪ .8‬برامج جزئية لكشف األخطاء‪.‬‬

‫] ‪ 2‬إيضاح[‬
‫ال إضافة مخدم إلى نظام محاكاة نظام شبكة عن طريق إدراج أيقونة المخدم ووضعه بالمكان‬ ‫يمكن مث ً‬
‫المخصص للمحاكاة ومن ثم ربطه ببقية النظام‪ .‬ويمكن أيضا ً تغيير مواصفات المخدم بالضغط على‬
‫أيقونة المخدم فتفتح نافذة يمكن من خاللھا تغير مواصفات المخدم‪.‬‬

‫] ‪ 3‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.arenasimulation.com‬‬

‫] ‪ 4‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.extendsim.com‬‬
‫] ‪ 5‬إيضاح[‬
‫من شكل الرئيسي للمحاكاة يمكن استنتاج بقية أجزاء المحاكي‪.‬‬

‫‪126‬‬
‫] ‪ 6‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.automedsystems.com‬‬
‫] ‪ 7‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.opnet.com/solutions‬‬

‫] ‪ 8‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.promodel.com/products/medmodel‬‬

‫] ‪ 9‬إيضاح[‬
‫يمكن للطالب الحصول على مزيد من المعلومات ونسخة عرض ‪ Demo‬من الموقع التالي‪:‬‬
‫‪http://www.wolverinesoftware.com/ProofProducts.htm‬‬

‫‪127‬‬

You might also like