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 لمتوسط زمن الطابور في حالتي زمني الخدمة المختلفة لشباك التذاكر.