1- محاكاة شباك التذاكر عند مدخل ملعب كرة القدم.
عرض المشكلة:
يصل المشجعون الى شباك تذاكر ملعب كرة قدم كل 7±7 ثانية ويقفوا في طابور لشراء التذاكر. يستغرق زمن شراء التذاكر والوصول الى
داخل الملعب 5±3 ثانية.
المطلوب بناء نموذج لتحديد الزمن المطلوب
لدخول 300 مشجع الى داخل الملعب.
عرض البرنامج بلغة GPSS :
;
GPSS World Sample File - TURNSTIL.GPS, by Gerard F. Cummings
**************************************************************
*
*
* Turnstile Model *
* Time is in seconds
*
**************************************************************
In_use EQU 5
;Mean time
Range EQU 3
;Half range
GENERATE 7,7
;People arrive
QUEUE Turn ;Enter
queue
SEIZE Turn
;Acquire turnstile
DEPART Turn
;Depart the queue
ADVANCE In_use,Range ;Use turnstile
RELEASE Turn ;Leave
turnstile
TERMINATE 1
;One spectator enters
**************************************************************
وصف عمل النموذج:
GENERATE
القالب GENERATE Block يسبب المتعاملين Transactions ( هنا المشجعين ) للوصول عند شباك التذاكر كل 7±7 ثانية.
QUEUE
القالب QUEUE مع القالب DEPART يجمع إحصائيات عن طابور المشجعين الذين لم يدخلوا
الملعب بعد ولازالوا ينتظروا عند شباك التذاكر. كائن الطابور Queue Entity
بلغة GPSS سمى هنا Turn
SEIZE
القالب SEIZE يتم الدخول اليه بمتعامل منتظر واحد بمجرد خلو شباك
التذاكر من المتعامل السابق إذا وجد. وهذا يسبب في إنشغال الشباك مما يؤدي إلي منع
اي متعامل من دخول قالب SEIZE
DEPART
بمجرد ان متعامل يشغل SEIZE التسهيلة Facility المتمثلة بشباك التذاكر فإنه يدخل قالب DEPART وذلك لجمع إحصائيات عن كائن الطابور Turn لاحظ ان زمن الإنتظار لايشمل الزمن المستغرق عند
شباك التذاكر.
ADVANCE
قالب ADVANCE يتحكم في طول زمن المحاكاة الذي يستغرقه متعامل في
إستخدام التسهيلة (شباك التذاكر) والتي قد تم شغلها بها وفي هذه الحالة يأخذ شباك
التذاكر 5±3 ثانية لإدخال المشجع. لاحظ اننا أستخدمنا قيمة إسمية في قالب ADVANCE وذلك لسهولة تغيير قيمة عامل القالب Block operands كما سنرى لاحقا.
RELEASE
قالب RELEASE يسبب للمتعامل في إفراغ التسهيلة ( شباك التذاكر )
بحيث تكون متوفره لكي تشغل بمتعامل آخر وذلك بالدخول في قالب SEIZE
TERMINATE
مهمة قالب TERMINATE هي إزالة المتعامل من المحاكاة بعد مروره من شباك
التذاكر.
إجراء المحاكاة:
الخطوات التالية تجري المحاكاة وتولد تقرير
معياري، في النافذة الرئيسية من البرنامج إختار
File / Open
عند ظهور صندوق الحوار إختار
TURNSTIL
ثم
Open
لإجراء المحاكاة إختار
Command / Create Simulation
ثم إختار
Command / START
في صندوق الحوار استبدل 1
بـ
300
ثم إضغط
OK
تنتهي المحاكاة عند مرور 300 متعامل بقالب TERMINATE وهذا يمثل مرور 300
مشجع بشباك التذاكر. عند إنتهاء المحاكاة يقوم
GPSS
بكتابة تقرير إلي ملف التقرير التقليدي default report file
المسمي Turnstil.1.1 ويظهر التقرير بشكل ذاتي في نافذة التقارير والتي
يمكن مشاهدتها في اي وقت وذلك بإختيار File / Open من النافذة الرئيسية ثم إختيار Report من صندوق الإختيارات Files of type .
تكتب تقارير GPSS بشكل خاص ولنقلها يجب نسخها إلي لوحة النسخ clipboard
ثم لصقها في اي برنامج تنسيق كلمات word processor
مناقشة النتائج:
من قيمة End Time في التقرير المعياري نري أن 2134.023
ثانية مرت لدخول المشجع رقم 300 من خلال شباك التذاكر ( تكرير المحاكاة مرة اخري يعطي نتائج مختلفة قليلا
وذلك لعشوائية الظاهرة) لاحظ ان قوالب QUEUE و DEPART لاتطوق أو تحصر قالب ADVANCE وهذا يعني ان المتعاملين يسجل لهم زمن الإنتظار في الطابور فقط وليس الزمن
الكلي في كائن الطابور Queue Entity المسمي Turn
إذا نظرنا في التقرير إلي الجزء الخاص بـ Queue Entity وتحت QUEUE Turn
نري ان اقصى عدد للمشجعين المنتظرين في
الطابور هو 3 وهذا ليس سيئا. سوف نختبر بدائل اخرى لاحقا.
داخل المحاكاة:
لنستكشف حالة نهاية المحاكاة ending condition of the
simulation والذي ولد لنا التقرير
المعياري لذلك سوف نستخدم الأمر SHOW للنظر إلى بعض الصفات العددية للنظام System Numeric Attributes (SNA) حيث انها
سهلة الإستخدام وسنري
أي منها متوفر لنا في هذة الحالة.
اولا سننظر إلي ساعة النظام الحالية ،
إختار
Command / SHOW
وفي صندوق الحوار أكتب AC1 ثم إضغط OK علي خط الحالة status line في نافذة النموذج Model Window سترى ان ساعة النظام الحالية هي 2134.023
فعالية شباك التذاكر utilization
والتي تعطي الجزء من الزمن
الكلي لإنشغال الشباك ( كأجزاء من الف) توجد بإختيار الأمر
Command / SHOW
وفي صندوق الحوار أكتب FR$Turn ثم إختار
OKهذا يعطي القيمة 689.67
(Fractional Busy Time ) وهو معطي
كاجزاء من الف
لإيجاد عدد المشجعين الواصلين
لشباك التذاكر إختار
Command / SHOW
وفي صندوق الحوار اكتب N1ثم OKوكما هو متوقع ستكون 300
الآن لنفحص بعض الرسومات،
إختار
Window / Simulation Window / Facilities Window
في نافذة التسهيلات ( كبر
النافذة لتري كل محتوياتها) نلاحظ ان شباك التذاكر كان مشغولا حوالي 70%
من الوقت وانه في نهاية
المحاكاة كان غير مشغول ( عاطل idle ) لاحظ ان التسهيلة الممثلة لشباك التذاكر غير مشغولة (
لونها رمادي أي غير نشطة) ولا يملكها اي متعامل
لنلقي نظرة علي اين يوجد
المتعاملين، إختار
Window / Simulation Window / Blocks
وهذا يعطى المنظر المفصل
لنافذة القوالب Detailed
View of the Blocks Window لاحظ انة لايوجد متعامل فعال او نشط وذلك لأن المتعامل
رقم 301 توا يحاول الدخول إلي المحاكاة وان المتعامل
رقم 300 قد انتهى لحظيا من النظام. في المنظر المفصل تمكننا من
ان نشاهد تاريخ الدخول الكلي للقوالب اثناء المحاكاة. النظر الى نافذة القوالب
يبين العدد الكلي لدخول القالب وهو يمكنا من التحقق من ان المتعاملين يمروا في
المحاكاة كما هو متوقع. الآن اغلق نافذة القوالب.
الآن سوف نعيد إجراء المحاكاة
لننظر إليها من خلال نوافذ اخرى. لنبدأ بتحضير نافذة العبارات الجبرية Expressions Window
إختار
Window / Simulation Window / Expressions Window
في نافذة العبارات الجبرية وفي
خانة Label
اكتب
Number of people
وفي خانة العبارة Expression field
اكتب N3هذا سيمكننا من مشاهدة عدد المشجعين المارين بشباك
التذاكر. من خواص GPSS انه يمكن من جمع البيانات بكل سهولة إذ انه
يوفر اكثر من 50 متغير تلقائيا والتي تصف حالة الكائنات.
الآن أضغط علي View ثم علي Memorize
وهذا يمكننا من حفظ العبارات
والتي يمكن إستخدامها لاحقا. ايضا بحفظ المحاكاة فإن هذا سيحفظ العبارات للإستخدام
مرة اخري.
دعنا ننظر ايضا لعدد المشجعين
الحاليين في طابور الإنتظار لشباك التذاكر. في نافذة العبارات الجبرية وفي حقل Label اكتب
Q Content
وفي خانة العبارة اكتب Q$Turn ثم إضغط View و Memorize واخيرا لنضف قيمة ثالثة لمشاهدة متوسط زمن الإنتظار عند شباك التذاكر
ففي خانة التمييز Label
field اكتب
Avg Wait وفي خانة العبارة اكتب QT$Turnإضغط علي View و Memorize ثم OK
لنتخلص الآن من
المتعاملين ونصفر الإحصائيات
المتراكمة وذلك بإختيار من القائمة الرئيسية Command / Clearثم OKو إختار الأمر Command / START وفي صندوق الحوار بدل 1بـ 25,NP
وثم OKسوف تشاهد المحاكاة وهي تجري حتي يغادر المشجع 25 شباك التذاكر. لنراقب التسهيلة التي تمثل
شباك التذاكر ولكن اولا اقفل نافذة التعابير الجبرية ولننظر إلي نافذة التسهيلات (
إذا لم تكن مقفولة اصلا)
Window / Simulation Window / Facilities Window
لنبدأ المحاكاة بإجرائها 25 مرة اخرى ونلاحظ نافذة التسهيلات إختار
Command / START
وفي صندوق الحوار بدل 1بـ 25,NPومن ثم OKعند إنتهاء المحاكاة اقفل نافذة التسهيلات Facilities Window
لنرى الآن ماذا يحدث اذا اخذ
شباك التذاكر 7±4 ثانية لخدمة المشجع بدلا من 5±3
ثانية. سوف نستخدم الأمر Custom Commandلتغيير بعض اسماء القيم التي عرفناها سابقا
في النموذج. إختر
Command / Custom
وفي صندوق الحوار اكتب في
السطر الأول In_use EQU 7ثم اضغط مفتاح الإدخال فتنتقل الي السطر
التالي واكتب
Range EQU 4
ثم اضغط OK يمكننا إذا اردنا
إستخدام الأمر SHOW للتأكد من
ان التغييرات التي قمنا بها قد حصلت فعلا فلنختبر مثلا احد القيم لنري كيف يتم ذلك
إختر Command / SHOW وفي صندوق الحوار أكتب Range ثم
OK يجب ان نشاهد القيمة 4 في سطر الحالة Status Line للنافذة الرئيسية وفي نافذة الجريدة Journal Windowأيضا.
لنرى ماذا حدث للقالب الجديد ADVANCE Block
إختار Command / Clear ثم OK الآن لنصفر العددادات الإحصائية
ونعيد حالة المحاكاة إلى الشروط الأولية عندما بدأنا، إختار Command / START وفي صندوق الحوار اكتب 300 بدلا من الواحد الصحيح ثم OK إنتظر حتى تنتهي المحاكاة ثم افتح نافذة العبارات
Window / Simulation Window / Expressions Window
سوف نري كل العبارات الثلاثة
في صندوق التذكر Memorized Expressions box إضغط علي Expression و علي View لكل عبارة الآن إختر OKلاحظ ان أقصي طول للطابور اصبح الآن اعلي من سابقه،
ايضا متوسط زمن الطابور اعلي وهذا يبين ان التباطؤ في الخدمة قد يؤدي الي دخول
جميع المشجعين في الوقت المطلوب ولكن هذا قد يسبب بعض التملل من المشجعين.
يجب إثبات ان الإختلاف بين هذه النتائج لايرجع الي الصدفة كما يجب إقصاء القيم المتأثرة بشروط البداية من الإحصائيات النهائية وذلك بإستخدام الأمر RESET Command كما يجب ان نخطط لإجراء عدة تجارب والقيام بتحليل تباين ANOVA لمتوسط زمن الطابور في حالتي زمني الخدمة المختلفة لشباك التذاكر.