2- محاكاة نظام هاتف بسيط
عرض
المشكلة:
نظام هاتف بسيط يتكون من خطين
خارجيين. المكالمات التي تأتي من الخارج تصل كل 100±60 ثانية. إذا كان الخط مشغولا فإن الطالب يعيد الطلب بعد
مرور 5±1 دقيقة. تستغرق المكالمة 3±1 دقيقة. المطلوب جدولة توزيع الزمن اللازم الذي يستغرقة
الطالب لإكمال مكالمة ناجحة. كم طول الوقت المطلوب لإكمال 200 مكالمة؟
عرض
البرنامج:
;
GPSS World Sample File - TELEPHON.GPS, by Gerard F. Cummings
**************************************************************
*
*
*
*
*
Telephone System Model
*
*
*
**************************************************************
* Simple Telephone
Simulation
*
* Time Unit
is one minute
*
Sets STORAGE 2
Transit TABLE M1,.5,1,20 ;Transit times
GENERATE 1.667,1 ;Calls arrive
Again GATE SNF Sets,Occupied ;Try for a line
ENTER Sets
;Connect call
ADVANCE 3,1
;Speak for 3+/-1 min
LEAVE Sets
;Free a line
TABULATE Transit ;Tabulate transit time
TERMINATE 1
;Remove a transaction
Occupied ADVANCE 5,1
;Wait 5 minutes
TRANSFER ,Again
;Try again
**************************************************************
وصف النموذج سطرا بسطر:
STORAGE
مجموعة كائنات المخزن Storage Entity Sets
وبسعة كلية 2 وضعت لتمثل خطين للتلفون الخارجي.
TABLE
الجدول الإنتقالي Table Transit عرف بحيث يعطي مضلع تكراري لزمن المكالمات والذي يعرض
تفاعليا علي الشاشة. مباشرة قبل إنهاء المتعامل فإن القيمة العددية SNA لـ " الزمن في
النظام " M1 تجدول وهي تمثل الوقت المستغرق للطالب من
بدئه في الطلب وحتي إنتهائه من التحدث.
GENERATE
متعامل يمثل مكالمة يولد كل 100±60 ثانية.
GATE
قالب GATE Block يرسل المتعامل الي قالب Occupied (مشغول) عندما تكون جميع الخطوط مشغولة وهذا يحدث عندما
تكون مجموعة كائنات المخزن ممتلئة وهي تمثل طالب يجب عليه الإنتظار قبل إعادة
الطلب.
ENTER
إذا كانت 0 او 1 من وحدات
المخزن في الإستخدام فإن المتعامل يمر من خلال GATE Block وإلي ENTER Block وبهذا تستخدم وحدة تخزين اخرى اما إذا كانت
جميع وحدات التخزين مشغولة فلن يسمح بمرور اي متعامل من خلال GATE Block وبهذا فإن مرور اي متعامل من خلال ENTER Block يمثل مكالمة تم ايصالها بنجاح.
ADVANCE
في حالة مروره فإن المتعامل (
المكالمة) تدخل قالب ADVANCE Block والذي
يمثل مكالمة تستغرق 180±60 ثانية ويستقر في القالب حتي يمر زمن المحاكاة.
LEAVE
عند دخول متعامل قالب LEAVE Block
فإن هذا يجعل احد وحدات مجموعة
التخزين متوفرة لمتعامل آخر أي انة يمثل توفر خط خارجي جديد.
TABULATE
قالب TABULATE Block يضيف طول مكالمة الي المضلع التكراري لأزمنة المكالمات
المجمعة في Table
Transit
TERMINATE
قالب TERMINATE Block يزيل متعامل ( مكالمة) من المحاكاة بعد إكمال الطلب.
ADVANCE
المتعامل الذي يأتي الي ADVANCE Block
والمعلم بالعلامة Occupied
يكون قد حاول وفشل في الحصول
علي وحدة تخزين ( خط خارجي ) من مجموعة كائنات المخزن Storage Entity Sets
وهي تمثل زمن الإنتظار الذي
يجب قضائة قبل ان يحاول الطلب مرة اخرى.
TRANSFER
قالب TRANSFER Block يرسل كل متعامل الي قالب GATE Block المعلم
بالعلامة Again حيث هناك يحاول المتعامل في الحصول علي وحدة تخزين من
مجموعة كائنات المخزن بمعني آخر ان الطالب يعيد طلب المكالمة. هؤلاء المتعاملين
يمثلوا المكالمات التي بدأت ولم تتم. إذا وجد طالب جديد كل من الخطين مشغول فإن
قالب GATE Block والمعلم بالعلامة Again يرسله للإنتظار في قالب ADVANCE Block المعلم بالعلامة Occupied لمدة 5 دقائق تقريبا بعد هذا التأخير فإن المتعامل يقفذ عائدا
قالب GATE Block
للمحاولة مرة اخرى الطلبات الناجحة تمر من
قالب GATE Block
ويحدث لها تأخير يمثل المكالمة
ثم تغادر المحاكاة. لآحظ ان عدد خطوط الهاتف نمذجت ككائنات مخزن بسعة 2 لاحقا سيكون من السهل إجراء تجارب علي الأثر الذي يسببه
إضافة خطوط اخرى. إذا لم تتمكن مكالمة من المرور فإن المتعاملين العائدين اليها
ينتظروا لمدة 5 دقائق محاكاة في القالب ADVANCE Block المعلم بالعلامة Occupied وعدد المتعاملين هنا يمثل عدد المكالمات
التي تنتظر إعادتها.
العبارة TABLE statement سوف تنتج معلومات مفصلة عن طول المكالمات المحاولة
وهكذا بجدولة M1 SNA مباشرة قبل
إنهاء المتعاملين فإننا سنتمكن من بناء مضلع تكراري لكيفية طول الوقت الذي يستغرقة
طالب لإكمال مكالماتهم.
إجراء
المحاكاة:
لإجراء المحاكاة وتوليد تقرير
معياري إختار File / Openوفي صندوق الحوار اختار TELEPHONثم اختار
Openوبعد هذا يجب خلق المحاكاة بإختيار Command / Create Simulation
ثم إختيار Command / STARTوفي صندوق الحوار استبدل 1بـ 200ثم اضغط OKستنتهي المحاكاة بعد مرور 200
متعامل بقالب TERMINATE
Block وهذا
يمثل إكمال 200 مكالمة. عند نهاية المحاكاة سوف يقوم GPSS بكتابة تقرير لملف التقرير التقليدي Telephon.1.1
والذي يظهر بشكل ذاتي في نافذة
التقرير.
مناقشة
النتائج:
من قيمة End Time في التقرير المعياري نري ان 359.16 دقيقة مرت لإنهاء المكالمة رقم 200طبعا إعادة المحاكاة مرات اخري سيعطي قيم مختلفة ولكن
قريبة من هذة النتائج وذلك للتغير العشوائي الجدول Table المسمي Transit يعطي
معلومات مفصلة عن كم طول الفترة التي يأخذها الطالب لإكمال مكالمته. برغم ان معظم
المكالمات استغرقت اقل من 9.5 دقيقة الى ان هناك مكالمات استغرقت اوقات اكثر من هذه
بكثير والتي قد تسبب عدم رضاء الزبائن.
داخل
المحاكاة:
لنتقصى الآن شرط نهاية
المحاكاة the
ending condition of the simulation والذي ولد التقرير التقليدي السابق، اقفل نافذة التقرير
ودعنا نستخدم نافذة العبارات الجبرية Expressions Window لننظر الي بعض الصفات العددية للنظام System Numeric Attributes
اولا تأكد من زمن نهاية
المحاكاة، إختار
Window / Simulation Window / Expressions Window
تفتح نافذة تحرير العبارات Edit Expressions Window في صندوق الحوار وفي خانة Label field اكتب
Timeوفي خانة Expression field اكتب AC1هذا يدعنا ننظر الي الزمن الحالي، اضغط علي View و علي Memorize الآن لننظر إلي فعالية utilization خطوط الهاتف (كأجزاء من ألف) في صندوق الحوار
وفي خانة Label
field
بدل القيمة الحالية بـ Utilوفي خانة العبارات Expression field استبدل القيمة الحالية بـ SR$Setsواضغط علي View وعلي Memorize واخيرا دعنا نضيف متوسط الزمن الذي يشغل
فية خط الهاتف، ففي صندوق الحوار وفي خانة Label field استبدل القيمة الحالية بـ Avg. Call Time وفي خانة التعابير Expression field
استبدل القيمة الحلية بـ ST$Setsواضغط علي View وعلي Memorize ثم اضغط OKالفعالية هنا يعبر عنها كجزء من الف ونري ان الخطوط لها فعالية 83% وهكذا بالرغم من وجود بعض الزمن الغير
مستخدم فإن التأخر في الطابور يعتبر غير مقبول. لنغلق نافذة التعابير.
لنفتح بعض نوافذ الرسومات،
إختار
Window / Simulation Window / Storages Window
هذا يعطي منظر مفصل لنافذة
التخزين Storages
Window Detail View لاحظ اننا نري فعالية الخطوط هنا ايضا 83% .
من العلامات السفلى والعليا (Min and Max values) للمخزن المستخدم نري ان في المحاكاة كان
هناك اوقات كانت فيها0 و 1
او 2 من الخطوط مشغولة، إستخدم العمود المنزلق في اسفل
النافذة لتشاهد القيم التي تناقش. إذا فتحنا نافذة الجدول Table Window فسنرى المدرج
التكراري لأزمنة تكملة المكالمات، إختار
Window / Simulation Window / Table Window
وحيث انه يوجد جدول واحد فقط
في هذه المحاكاة فإننا سنري الكلمة Transit في الصندوق المتدلى، إختار OK تأكد من تكبير النافذة حتي تري الجدول بشكل كامل، متوسط
زمن المكالمات هو2.99 دقيقة كما هو مبين بـ ST SNA في نافذة التعابير Expressions Windowولكن متوسط الزمن شاملا إعادة المكالمة هو 14.27 دقيقة كما
نشاهد في نافذة الجدول Table Window أي ان الطالبين يقضوا زمن طويل جدا لإعادة طلب المكالمة
إذا ما صدف وكانت الخطوط مشغولة وهذا غير مقبول.
لننظر الآن اي هم المتفاعلين Transactions ، إختار
Window / Simulation Window / Blocks Window
هذه نافذة القوالب Blocks Window
لاحظ انه يوجد 15 زبون
ينتظروا إعادة طلب مكالماتهم، انظر لتاريخ دخول القالب في عامود عدد الدخول Entry Count
Figure 2—1.
Blocks Window Detailed View Showing TRANSFER Block.
ما الذي يحدث هنا؟ انظر الي
عدد المتعاملين Transaction
الذين دخلوا قالب ADVANCE
Block الثاني ( لإنتظار إعادة المكالمات) 561! ولكن اجريت فقط 200 مكالمة. لنلاحظ نافذة القوالب Blocks Window وبإستخدام مفاتيح Ctrl+Alt+1
سوف نجري المحاكاة خطوة خطوة يدويا، إفعل ذلك 15 او 20 مرة، هل شاهدت مالذي يحدث؟ عدة طالبين للمكالمات والذين
يعيدون الطلب يجدوا الخطوط مشغولة وعليهم الإنتظار و إعادة الطلب عدة مرات. سوف
نقوم بإعادة إجراء ومشاهدتها من خلال عدة نوافذ رسومية. لنبدأ بقفل جميع النوافذ
ماعدى نوافذ Blocks
و Journal و Model
لنعيد فتح نافذة العبارات
الجبرية Expressions
Window وبالقيم التي حفظناها سابقا مع إضافة رقم
المكالمة call
number والذي هو ايضا رقم المتعامل النشط Active Transaction number
، إختار
Window / Simulation Window / Expressions Window
في صندوق حوار تحرير العبارات
وفي خانة Label fieldاكتب
Call no وفي خانة التعابير Expression field اكتب XN1اضغط علي Viewوعلي Memorize وقبل إقفال النافذة سنسترجع العبارات المحفوظة
سابقا والتي حفظناها في المحاكاة الاولى لهذا فلكل عبارة محفوظة إضغط علي Expression ثم علي View أخيرا وبعد ظهور كل التعابير اضغط علي OK لنتخلص من كل المتعاملين Transactions ونصفرالعدادات
الإحصائية. فمن النافذة الرئيسية Main Menuإختار
Command / Clear
وفي نافذة القوالب Blocks Window حرك مؤشر الفارة فوق القالب الأخير في النموذج والذي هو
قالب TRANSFER إضغط علي The TRANSFER Block وعلي The Place Icon in the
Debug Toolbar ثم حرك النوافذ الثلاثة Blocks و Journal و Expressions بحيث يمكنك مشاهدتها بوضوح، إختر
Command / START
وفي صندوق الحوار بدل الواحد
الصحيح بـ 1000,NPوإضغط OK المحاكاة
ستتوقف عند اول محاولة لدخول القالب وهذا يبين ان الطالب لم يجد خطا شاغرا. أكمل
المحاكاة Continue وذلك
بالضغط علي Ctrl+Alt+C
كرر هذه العملية عدة مرات في كل مرة تتوقف فيها المحاكاة تحت شرط التوقف Stop Condition
المحاكاة سوف تستمر في التوقف
كل ما كان علي طالب المكالمة ان ينتظر وسوف تشاهد رسائل التتبع trace messages في نافذة الجريدة Journal Window والتي تبين رقم المتعامل Transaction number للمتعامل المتوقف Stopped Transaction
، حيث انه يوجد قالب توليد GENERATE Block واحد فقط في النموذج فيمكننا ان نري بواسطة رقم
المتعامل كم مرة علي المكالمة ان تتوقف وفيما إذا كانت هناك مكالمات متوقفة للمرة
الثانية.
دعنا الآن نزيل شرط التوقيف
ففي نافذة القوالب Blocks Window إضغط علي The Transfer Block وعلي The Remove Icon in the Debug Toolbar ثم اقفل نوافذ Blocksو
Expressions
استمر في إجراء المحاكاة وذلك
بالضغط علي Ctrl+Alt+C
.
سوف نراقب المحاكاة وهي تجري
وذلك من خلال نافذة Storages Window Non-Detailed View إختر
Window / Simulation Window / Storages Window
ومن النافذة الرئيسية Main Menuإختر
Edit / Entity Details
لتفعيل نافذة Non-Detailed View
لنشاهد الآن المدرج التكراري
للمكالمات المتأخرة وهو يبنى ، إختار
Window / Simulation Window / Table Window
وحيث انه يوجد جدول واحد فقط
وإسمه موجود في صندوق الحوار الظاهر لذلك اضغط علي OK
الجدول المسمى Transit ماهو إلا مدرج تكراري ديناميكي ويمكن
النظر اليه اي وقت شئنا، يتضح من الجدول ان عديد من الزبائن لايتحصل علي الخدمة
مباشرة وطبعا هذا يسبب لهم الكثير من الإنزعاج.
ماذا لو اضفنا خطوط اكثر؟
لنحاكي 4 خطوط بدلا من إثنان. إجعل نافذة التخزين
فعالة باضغط علي The Storages Window ثم اختار Command / Clear ثم OKثم اختار
Command /Custom وفي صندوق الحوار اكتب
Sets Storage 4
ثم OK
هذا سيعدل عدد خطوط الهاتف.
لنرى ماذا سيحدث، اختار Command
/ START وفي صندوق
الحوار استبدل الواحد الصحيح بـ 1000ثم إضغط OK
فعالية خطوط الهاتف اقل بكثير
من السابق، بالنظر الي المدرج التكراري لطول المكالمة نجد انه افضل بكثير، في
الواقع لو نظرنا الي نافذة القوالب في شكلها المفصل سنشاهد ان قالب TRANSFER Block لم يرتاد وذلك لأن اي من الطالبين لم يحتاج إعادة
الطلب. ويبدو ان اربعة خطوط ازالت كل المشاكل السابقة. في الحقيقة يجب برهنة هذا
بطريقة إحصائية وذلك بالأمر ANOVA Command
تمرين: جرب ثلاثة خطوط هاتف
وقارن النتائج.