4-  محاكاة ورشة تصليح تلفزيون
عرض
المشكلة:
تستخدم ورشة إصلاح اجهزة
تلفزيون عامل إصلاح واحد للصيانة الدورية  overhaul لأجهزة الورشة المؤجرة ولصيانة اجهزة الزبائن وللقيام
بإصلاحات سريعة في حينها. الصيانة الدورية لأجهزة الورشة تبدأ كل  40±8  ساعة وتستغرق  10±1 ساعة لإكمالها. الإصلاحات السريعة مثل تغيير فيوز او
تعديل قنوات تجري فوريا وتصل كل 90±10   دقيقة وتستغرق  15±5 دقيقة. أجهزة الزبائن التي تحتاج إصلاح وصيانة عادية
تصل كل  5±1  ساعة وتستغرق  120±30 دقيقة لإنتهائها. أجهزة الزبائن لها الأفضلية في
التصليح عن الصيانة الدورية لأجهزة الورشة.
1-   
حاكى عمل
الورشة لمدة  50  يوم.
2-   
حدد فعالية
عامل التصليح والتأخير في خدمة الزبائن.
عرض
البرنامج:
; GPSS World Sample File -
TVREPAIR.GPS, by Gerard F. Cummings
*****************************************************************       
*      Television
Maintenance Man Model                        
*
*****************************************************************
*      Repair of
rented sets, one each week                    
*
*      Time unit is
one minute                      
           *
*****************************************************************
        
GENERATE  
2400,480,,,1   
;Overhaul of a rented set
        
QUEUE     
Overhaul        ;Queue for service
        
QUEUE     
Alljobs         ;Collect global
statistics 
        
SEIZE     
Maintenance    
;Obtain TV repairman
        
DEPART    
Overhaul        ;Leave queue for man
        
DEPART    
Alljobs         ;Collect global
statistics
        
ADVANCE   
600,60          ;Complete
job 10+/-1 hours
        
RELEASE   
Maintenance    
;Free repairman
        
TERMINATE                 
;Remove one transaction
*****************************************************************        
*  On the spot repairs        
        
GENERATE  
90,10,,,3       ;On-the-spot repairs 
        
QUEUE     
Spot           
;Queue for spot repairs
        
QUEUE     
Alljobs         ;Collect global
statistics
        
PREEMPT   
Maintenance,PR  ;Get the TV
repairman
        
DEPART    
Spot           
;Depart the 'spot' queue
         DEPART     Alljobs        
;Collect global statistics
        
ADVANCE   
15,5           
;Time for tuning/fuse/fault
        
RETURN    
Maintenance    
;Free maintenance man
        
TERMINATE            
 ****************************************************************
*  Normal repairs on customer owned sets
        
GENERATE  
300,60,,,2     
;Normal TV Repairs
        
QUEUE     
Service         ;Queue for service
        
QUEUE     
Alljobs         ;Collect global
statistics
        
PREEMPT    Maintenance,PR  ;Preempt maintenance man
        
DEPART    
Service         ;Depart the
'service' queue
        
DEPART    
Alljobs         ;Collect global
statistics
        
ADVANCE   
120,30          ;Normal
service time
        
RETURN    
Maintenance     ;Release the man
        
TERMINATE
*****************************************************************
        
GENERATE   480            
;One xact each 8 hr. day
        
TERMINATE  1        
*  Day counter        
*****************************************************************
*  Tables of queue statistics
Overhaul
QTABLE    
Overhaul,10,10,20
Spot     QTABLE     Spot,10,10,20
Service  QTABLE     Service,10,10,20
Alljobs  QTABLE     Alljobs,10,10,20
*****************************************************************
 
 
 
وصف عمل
النموذج:
GENERATE 
المتعاملين والذين يمثلوا
اجهزة الورشة التي تحتاج الي صيانة دورية تولد في هذا القالب في المتوسط كل 40
ساعة. وحدة الزمن ستكون بالدقائق. هذه الإصلاحات تعطي اقل اولويه برتبة 1.
QUEUE 
هنا تستخدم قالبين QUEUE   لجمع إحصائيات منفردة. قالب  QUEUE لكائن الطابور  Queue Entityالمسمي Overhaul
 يجمع إحصائيات ازمنة
البدء لأجهزة الصيانة الدورية. قالب QUEUE  الثاني
لكائن الطابور Queue Entity
المسمي Alljobs  يكرر في اماكن اخرى لكي يجمع إحصائيات
للأنواع الأخرى من التصليحات كما لهذة.
SEIZE 
إصلاحات الصيانة الدورية التي
تنتظر وتحصل علي إهتمام عامل التصليح تمثل بكائن التسهيلة Facility Entity  المسماة Maintenance
DEPART 
عندما يحصل متعامل صيانة دورية
علي إنتباه تسهيلة عامل التصليح ينتهي وقت إنتظاره. إثنان من قوالب DEPART  تسجل وقت الإنتظار لكائنين طابور Queue entities مختلفة.
ADVANCE 
هذا القالب يحاكي زمن الصيانة
الدورية  600 ±60 دقيقة.
RELEASE 
عند إكمال صيانة دورية فإن
المتعامل الذي يمثلها يخلي سبيل كائن التسهيلة المتمثل في عامل التصليح مما يسمح
لصيانة اخرى في ان تبدأ.
TERMINATE 
المتعامل الممثل لصيانة دورية
ينهى من المحاكاة وبون إنقاص عداد الإنهاء Termination Count 
GENERATE 
المتعاملين Transactions الممثلين للإصلاحات
الفورية تولد في هذا القالب في المتوسط كل  90 دقيقة ولهم أفضلية أعلى من الصيانة الدورية.
QUEUE 
هنا تستخدم قالبين QUEUE   لجمع إحصائيات منفردة. قالب  QUEUE لكائن الطابور  Queue EntityالمسميSpot
 يجمع إحصائيات ازمنة
البدء لأجهزة الصيانة الفورية. قالب QUEUE  الثاني
لكائن الطابور Queue Entity
المسمي Alljobs  يكرر في اماكن اخرى لكي يجمع إحصائيات
للأنواع الأخرى من التصليحات كما لهذة.
PREEMPT 
بما ان الصيانة الفورية تقطع
كل انواع الصيانة الاخرى فإن المتعاملين الممثلين للصيانة الفورية تحاول الدخول في
طور أولوية لقالب إخلاء  PREEMPT Block لكي تتحصل علي عامل التصليح وهذا سيوقف بشكل مؤقت اي عملية صيانة دورية او
عادية.
DEPART 
عند إمتلاك متعامل صيانة فورية
لتسهيلة عامل التصليح ينتهي وقت إنتظاره. . إثنان من قوالب DEPART  تسجل وقت الإنتظار لكائنين طابور Queue entities مختلفة.
ADVANCE 
قالب  ADVANCE Block  يحاكي وقت التصليح  15±5 دقيقة.
RELEASE 
عند إكمال صيانة فورية فإن
المتعامل الذي يمثلها يخلي سبيل كائن التسهيلة المتمثل في عامل التصليح مما يسمح
لصيانة اخرى في ان تبدأ.
TERMINATE 
المتعامل الممثل لصيانة فورية
ينهى من المحاكاة وبون إنقاص عداد الإنهاء Termination Count
GENERATE-TERMINATE 
هذا الجزء من النموذج يعمل
تماما كالجزء السابق مع فارق واحد، حيث ان الصيانة الفورية تقطع اي من انواع
الصيانة الاخرى، الا ان الصيانة العادية تقطع فقط الصيانة الدورية ولهذا فإننا
نعطي المتعامل الذي يمثل صيانة عادية افضلية مساوية 2 ( افضلية تقع بين الأفضليتين
الاخرى)
GENERATE 
متعامل يستخدم لعد إنقضاء يوم
واحد يولد كل 8  ساعات
محاكاة.
TERMINATE 
متعامل العد  Counting Transaction ينتهى فوريا. هذا ينقص  1 من عداد الإنهاء  Termination Count مما يسمح لنا
بالسيطرة علي طول المحاكاة بإستخدام العامل A ( operand A ) في امر START Command
QTABLE 
عبارة  QTABLE  التي تبدأ بـ  Overhaulتعرف مدرجات تكرارية لإحصائيات الطابور كل منها في
نافذة جدول Table Window
والتي تعرض في التقرير المعياري. لاحظ هنا اننا لانحتاج وضع قوالب TABULATE Blocks  لجداول الطابور  Qtables لأن الإحصائيات تسجل تلقائيا عند الدخول الي قالب  DEPART Block المعني.
النموذج منظم في عدة أجزاء. كل
جزء له نوع مختلف من المتعاملين. الأجزاء الثلاثة الاولى تمثل الصيانة الدورية
والصيانة الفورية والصيانة العادية علي الترتيب. هذة كلها تتنافس علي
التسهيلة   Facility Entity الوحيدة المسماة  Maintenanceوالتي تمثل عامل التصليح. وظائف الصيانة الدورية اعطيت
اقل افضلية.
الجزء السفلي من النموذج يوقت
المحاكاة وذلك بتوليد وإنهاء متعامل كل يوم عمل محاكى. قالب TERMINATE  هنا هو الوحيد الذي يسبب لعداد الإنهاء في
التناقص والذي يعطى من خلال الأمر START
Command والذي يوقف المحاكاة عندما يصبح عداد الإنهاء  Termination Count (TG1)  صفرا أو أقل.
أوقات الإنتظار لكل نوع من
انواع الصيانة تتجمع بواسطة كائنات الطابور  Queue entities المسماة Overhaul
و  Spotو  Serviceأوقات التأخر لجميع الوظائف تتجمع بواسطة كائن الطابور Alljobs هذه الأوقات لاتشمل
أوقات التصليح فقط التأخر حتي يبدأ التصليح.
كائنات Qtable entities  عرفناها لكل كائن طابور Queue Entity وهذة طريقة سهلة
للحصول علي مدرج تكراري تلقائي لأوقات الإنتظار لكل نوع.
إجراء
المحاكاة:
لإجراء المحاكاة وتوليد تقرير
معياري نختار  File / Open وفي صندوق الحوار
نختار  TVREPAIR ثم نختار  Open . لآبد من خلق المحاكاة بإختيار   Command / Create Simulation ثم نختار Command / START وفي صندوق الحوار نستبدل الواحد الصحيح بـ  50وإضغط  OK
تنتهي المحاكاة بعد مرور 50
متعامل  Transactions بقالب TERMINATE Block وهذا يمثل 50 يوم عمل.
عند نهاية المحاكاة يكتب  GPSS تقرير معياري في الملف   TVRepair.1.1 . يعرض هذا التقرير تلقائيا في
نافذة التقارير.
مناقشة
النتائج:
يلاحظ ان عامل التصليح كان
مشغولا بشكل جيد إذ كانت فعاليته 78% . متوسط اوقات
الإنتظار كانت 25 دقيقة لصيانة الأجهزة الدورية و 51
دقيقة لصيانة الأجهزة العادية. لم يوجد هناك اي تأخير لوظائف الصيانة الفورية.
متوسط زمن الإنتظار الكلي حوالي 12 دقيقة وهذا لايشمل
اوقات الخدمة طبعا نظرا لوضع قوالب DEPART
Blocks
داخل
المحاكاة:
لننظر إلي حالة نهاية المحاكاة
عند توليد التقرير المعياري.
اولا لنتأكد من فعالية عامل
التصليح، من القائمة في نافذة النموذج 
 Model Window
نختار  Command / SHOW وفي صندوق الحوار أكتب  FR$Maintenanceثم اضغط   OK .
الفعالية التي نشاهدها في سطر  Status line في نافذة النموذج لهذه الصفة العددية للنظام  SNA  معبر عنها كأجزاء من الف والتي كانت  78% 
لكي ننظر إلي حالة التسهيلة Facility التي تمثل عامل
التصليح نفتح نافذة التسهيلات Facilities
Window
لنختار  Window / Simulation Window / Facilities
Window نحن الآن
ننظر الي المنظر المفصل لهذه النافذة، متوسط زمن التصليح حوالي 52
دقيقة.
إذا فتحنا نافذة الجدول Table Window  لـ  Overhaul Tableسنرى المدرج التكراري لأزمنة إنتظار الوظائف. لنختار  Window /
Simulation Window / Table Window وفي صندوق الحوار إضغط علي   The Down Arrow  و اختار  OVERHAUL ثم  OK

جدول الصيانات الدورية.
 هذا يعطي نفس المعلومات كما في جدول  Overhaul Table في التقرير العياري. لكي نشاهد  Qtable entities الاخرى، نكرر ما
فعلناة سابقا ولكن نختار الأسماء  Serviceاو  Spot  أو  Alljobs  في صندوق الحوار. ويترك هذا كتمرين.
أقفل جميع النوافذ البيانية.
لننظر الآن لما يحدث عندما تصل
الوظائف كل 30 دقيقة. في نافذة النموذج   Model
Window  لنبحث عن قالب  GENERATE الثالث (في الجزء الخاص بالصيانة العادية من النموذج).
غير هذا بحيث تصبح عمال operands
هذا القالب A  يساوي 30 و B يساوي 5
بدلا من 300  و 60 . أعد ترجمة النموذج
بإختيار    Command / Retranslate . لنجهز لرسم بياني قبل إعادة إجراء
المحاكاة، لنختار Window /
Simulation Window / Plot Window ثم في نافذة تحرير الرسومات  Edit Plot Window  أدخل البيانات كما في الرسم التالي، 

نافذة تحرير
الرسومات
. سوف نرسم طابور الخدمة وفعالية عامل التصليح علي نفس الرسم، إضغط علي  Plot
و علي Memorize  ثم أدخل القيم التالية التي يراد رسمها،
اكتب  Maintenance Util في خانة الرمز و FR$Maintenance في خانة العبارة ثم اضغط علي  Plot  و   Memorize ثم  OK.
كبر قليلا النافذة بحيث
يمكن مشاهدتها بوضوح ثم اختار  Command / START وفي صندوق الحوار بدل 1 بالقيمة 5
ثم   OK

رسم الطابور
ة الفعالية
واضح ان الورشة اصبحت مليئة
بالأجهزة والعامل يعمل بدون توقف. لننظر الي النافذة اخرى، أقفل نافذة الرسومات و
افتح نافذة التسهيلات، اختار  Window / Simulation Window / Facilities Window  لاحظ ان هذه النافذة تؤكد الفعالية والتي رأيناها توا و
الأيقونة (icon)
تبين طابور طويل للوظائف المنتظرة، حوالي 62 وظيفة، اختار  Window /
Simulation Window / Table Window  لكل جدول تريد ان تراه وأختار إسم الجدول المناسب،  Overhaulأو  Alljobs أو Spot  أو  Service  من صندوق الحوار الذي يظهر.
من الظاهر ان عامل التصليح في حاجة الي مساعدة إذا استمرت الوظائف تصل بهذا المعدل وإلا فإن الورشة ستفقد الكثير من الزبائن.