5- محاكاة نظام التحكم في جودة
عرض المشكلة:
تصنع قطعة عن طريق متتابعة من العمليات، كل
منها تتبع بدقيقتين للفحص. العملية الأولى تحتاج إلى 20% من القطع ليعاد
تصنيعها. العمليتين الثانية والثالثة تحتاج كل منهما إلى 15% و 5%
من القطع ليعاد تصنيعها على التوالي. 60% من القطع المعاد
تصنيعها تكون تالفه و تنبذ scrapped
، والـ 40% الباقية تحتاج الي إعادة معالجة
من العملية التي تم منها الرفض.
صناعة قطعة جديدة يتم في المتوسط كل 30
دقيقة بتوزيع اسي. الزمن للعملية الاولى يعطى بالجدول التالي:
Time For First Process
Frequency                .05
.13 .16 .22 .29 .15
Process time (mins)  10  14  21  32  38  45
العملية الثانية تستغرق 15±6
دقائق وزمن العملية الأخيرة له توزيع طبيعي بمتوسط 24 دقيقة و إنحراف
معياري 4 دقائق.
1-   
حاكي عمليات
التصنيع لـ 100 قطعة مكتملة.
2-   
عين الزمن
الآزم لذلك وعدد القطع المرفوضة.
عرض البرنامج:
; GPSS World Sample File -
QCONTROL.GPS, by Gerard F. Cummings
*****************************************************************
*                                                              
*
*          
Quality Control Program                            
*
*           Time
units are in minutes                          
*
*****************************************************************
           
RMULT        93211      
*  Definitions
Transit     TABLE       
M1,100,100,20        ;Transit Time
Process     FUNCTION     RN1,D7
0,0/.05,10/.18,14/.34,21/.56,32/.85,38/1.0,45
*****************************************************************        
           
GENERATE    
(Exponential(1,0,30))
           
ASSIGN       1,FN$Process        
;Process time in P1
Stage1      SEIZE       
Machine1
           
ADVANCE     
P1                  
;Process 1
           
RELEASE     
Machine1
           
ADVANCE     
2                   
;Inspection
           
TRANSFER    
.200,,Rework1        ;20% Need rework
*****************************************************************
Stage2      SEIZE       
Machine2
           
ADVANCE     
15,6                
;Process 2
           
RELEASE     
Machine2
           
ADVANCE     
2        
           ;Inspection
           
TRANSFER    
.150,,Rework2        ;15% Need rework
*****************************************************************
Stage3      SEIZE       
Machine3
           
ADVANCE     
(Normal(1,24,4))    
;Process 3
           
RELEASE     
Machine3
           
ADVANCE     
2                   
;Inspection 3
           
TRANSFER    
.050,,Rework3        ;5% need rework
           
TABULATE    
Transit             
;Record transit time
           
TERMINATE    1
*****************************************************************
Rework1     TRANSFER     .400,,Stage1
           
TERMINATE
Rework2     TRANSFER     .400,,Stage2
           
TERMINATE
Rework3     TRANSFER     .400,,Stage3
           
TERMINATE
وصف النموذج سطرا بسطر:
RMULT 
لبدء نواة مولد الأرقام العشوائية رقم 1 .
عند الحاجة لإجراء تكرارات للمحاكاة فإننا نغير نواة مولد الأرقام العشوائية فقط.
TABLE 
الجدول الإنتقالي  Table Transit سوف يجمع البيانات للمدرج التكراري والذي سيشاهد
تفاعليا.
FUNCTION 
دالة لغة  GPSS  المسماه  PROCESS  تعطي القيمة (إقرأ من اليسار لليمين) 10,
14, 21, 32, 38,  45بحسب الإحتمالات المعطاة. لاحظ انه في دوال GPSS Functions يجب إستخدام دالة
التوزيع التراكمي  Cumulative Distribution Functions لتعيين الإحتمالات.
GENERATE 
تصنع قطع جديدة كل 30 دقيقة في المتوسط بتوزيع
اسي. أستخدمنا التوزيع الأسي الداخلي للغة GPSS.
ASSIGN 
زمن التصنيع للمرحلة الاولى للعمل وضع في
العامل الأول parameter number 1
للمتعامل Transaction
SEIZE 
العمل او الوظيفة تمتلك أو تنتظر كائن
التسهيلة Facility Entity
المسمي Machine1
ADVANCE 
تبقي الوظيفة Machine1 مشغولة بمقدار الزمن المخزن في
العامل الأول parameter 1
للمتعامل الممثل للوظيفة.
 
RELEASE 
المتعامل الممثل للوظيفة يترك Machine1 والتي يمكن عندئذ
إشغالها بالمتعامل المنتظر إذا وجد.
ADVANCE 
القالب  ADVANCE Block يحاكي زمن الفحص.
TRANSFER 
قالب TRANSFER Block  سوف يختار بشكل عشوائي 20%
من المتعاملين ليذهب إلى القالب المرمز Rework1 . هذا يمثل فشل القطعة الناتجة من Stage1 . الـ 80%
من المتعاملين الاخر يستمروا للمرحلة التالية.
 
SEIZE 
المتعامل الذي مر من الفحص يتملك او ينتظر
التسهيلة Facility Entity
المسماة Machine2.
ADVANCE 
القالب  ADVANCE Block يحاكي زمن المرحلة الثانية stage 2.
RELEASE 
المتعامل الممثل للوظيفة يترك Machine2 والتي يمكن عندئذ
إشغالها بالمتعامل المنتظر إذا وجد.
ADVANCE 
القالب  ADVANCE Block يحاكي زمن الفحص.
TRANSFER 
قالب TRANSFER Block  سوف يختار بشكل عشوائي 15%
 من المتعاملين ليذهب
إلى القالب المرمز Rework2
. هذا يمثل فشل القطعة الناتجة من Stage2
. الـ 85%  من المتعاملين الاخر يستمروا للمرحلة التالية.
 
SEIZE 
المتعامل الذي مر من الفحص يتملك او ينتظر
التسهيلة Facility Entity
المسماة Machine3.
 
ADVANCE 
القالب  ADVANCE Block يحاكي زمن المرحلة الثانية stage 3. الزمن المستغرق موزع طبيعيا.
 
RELEASE 
المتعامل الممثل للوظيفة يترك Machine3 والتي يمكن عندئذ
إشغالها بالمتعامل المنتظر إذا وجد.
ADVANCE 
القالب  ADVANCE Block يحاكي زمن الفحص.
TRANSFER 
قالب TRANSFER Block  سوف يختار بشكل عشوائي 5%   من المتعاملين ليذهب إلى القالب المرمز Rework3 . هذا يمثل فشل
القطعة الناتجة من stage 3
. الـ 95%   من المتعاملين الاخر يمثلوا القطع
المكتملة.
TABULATE 
قالب TABULATE Block يضيف زمن الإكمال الى
المدرج التكراري الخاص بالجدول المسمى Transit ، تكتب الجداول تلقائيا في التقرير المعياري وتشاهد
كمدرجات تكرارية في نوافذ الجداول كل علي حدة.
TERMINATE 
قالب TERMINATE Block ينهي المتعامل وينقص
عداد الإنهاء. يمكننا محاكاة عدد معين من القطع المكتملة بإستخدام عداد قطع في
العامل A (operand A ) من عبارة START statement.
TRANSFER 
عندما يفشل متعامل (قطعة) فحص القطع في
المرحلة الاولى فإن له إحتمال 40% في ان يعاد إلى
المرحلة الاولى. وهذا يمثل قطعة يعاد تصنيعها.
TERMINATE 
المتعاملين الآخرين يتم إنهائهم من المحاكاة
بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.
TRANSFER 
عندما يفشل متعامل (قطعة) فحص القطع في
المرحلة الثانية ويرسل الى هذا القالب TRANSFER Block يكون له إحتمال 40%
في ان يعاد الى المرحلة الثانية. . وهذا يمثل قطعة يعاد تصنيعها.
TERMINATE 
المتعاملين الآخرين يتم إنهائهم من المحاكاة
بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.
TRANSFER 
عندما يفشل متعامل (قطعة) فحص القطع في
المرحلة الثالثة فإن له إحتمال 40% في ان يعاد إلى
المرحلة الثالثة. وهذا يمثل قطعة يعاد تصنيعها.
 
TERMINATE 
المتعاملين الآخرين يتم إنهائهم من المحاكاة
بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.
النموذج منظم في عدة أجزاء. بعد تعريف جدول
إنتقالي Transit Table
ودالة عملية Process Function
نجد انه يوجد ثلاثة أجزاء للنموذج كل منها يمثل عملية تصنيع. كل متعامل يمثل قطعة
في احد مراحل التصنيع. وحدات الزمن هي الدقائق. كل خطوة لها إحتمالات فشل، واللتي
في هذه الحالة يرسل المتعامل إلى أحد القوالب المرمزة Rework1 أو Rework2 أو Rework3 على التوالي. القطع المعاد
تصنيعها لها إحتمال 60% في ان تنبذ وإلا تعيد خطوتها
الأخيرة. 
إجراء المحاكاة:
في النافذة الرئيسية نختار   File / Openومن صندوق الحوار نختار  QCONTROLونضغط على Open ومن ثم
يجب خلق المحاكاة بإختيار  Command / Create Simulation ثم نختار Command / START  في صندوق
الحوار بدل 1 بـ 100 ثم إضغط  OK
تنتهي المحاكاة عندما يدخل 100
متعامل Transactions
قالب TERMINATE Block
وهذا يمثل 100 قطعة مصنعة كاملة. كالمعتاد يكتب
تقرير معياري الى الملف QControl.1.1
. هذا التقرير يظهر ايضا بشكل تلقائي في نافذة التقارير.
مناقشة النتائج:
 من زمن الإنتهاء End
Time في التقرير المعياري نرى انه استغرق 4153.8
دقائق أو حوالي 69 ساعة لإكمال 100
قطعة. من تعداد دخول القوالب Block
entry counts نستطيع إيجاد عدد القطع المرفوضة. العدد الكلي لدخول
القوالب Rework1
و Rework2 و Rework3 يبين ان هناك 22
قطعة فشلت في المرحلة الاولى و 14 قطعة فشلت في المرحلة
الثانية و 4 قطع فشلت في المرحلة الثالثة. هذا يشكل 40
قطعة فاشلة منها 21 (11+7+3)
قطعة نبذت.
داخل المحاكاة:
لنستكشف حالة نهاية المحاكاة التي تولد
عندها التقرير المعياري السابق. لنستخدم الأمر SHOW Command للنظر إلى بعض الصفات
العددية للنظام System Numeric
Attributes. اولا لنتأكد من زمن نهاية المحاكاة لنختار  Command / SHOW وفي صندوق الحوار أكتب  AC1 ثم اضغط  OKفي سطر الحالة Status Line سنشاهد ان الزمن الحالي مساويا
زمن نهاية المحاكاة في التقرير السابق. لنختار  Command / SHOW وفي صندوق الحوار أكتب  N$Rework1 ثم اضغط  OK ، هذه القيمة (22)
هو عدد القطع التي فشلت في المرحلة الاولى.
لنشاهد بعض نوافذ الرسومات، لنختار 
Window
/ Simulation Window / Facilities Window
هذه نافذة التسهيلات. لاحظ ان فعالية Machine1 عالية جدا وانه يوجد
عدد كبير من القطع المنتظرة، يبدوا أن معدل الفشل عند Machine1 مثير للقلق لأنه يحمل هذا المصدر
المشغول جدا اكثر مما يطيقه.
الجدول Table Transit هو مدرج تكراري
لأزمنة الإكمال، لننظر إليه بإختيار 
 Window / Simulation Window / Table Window
وفي صندوق الحوار سنرى كلمة Transit فقط حيث انه يوجد جدول
واحد في المحاكاة نضغط على  OK 
برغم ان متوسط زمن الإنهاء كان 321
دقيقة الا ان بعض القطع اخذ اكثر من 800 دقيقة. الآن أقفل
نوافذ التسهيلات والجداول. 
اننظر الآن أين القطع؟ نافذة القوالب سوف
تعطينا هذه المعلومات. لنختار 
 Window / Simulation Window / Blocks Window
لاحظ انه توجد 30 قطعة تنتظر Machine1 في قالب ASSIGN . سوف نجلري المحاكاة
من جديد ولنشاهدها من خلال بعض نوافذ الرسومات. لنبدأ بفتح نافذة العبارات ونعبئها
ببعض القيم التي نرغب في ملاحظتها. لنبقي نافذة القوالب مفتوحه لكي نشاهد إنسياب
المحاكاة ونفتح نافذة التعابير لمشاهدت بعض القيم المختارة بينما تجرى المحاكاة.
لنختار 
 Window / Simulation Window / Expressions Window
في صندوق تحرير العبارات وفي خانة الرمز
أكتب   Rework1 وفي خانة التعبير  أكتب  N$Rework1 عندما نشاهد النافذة سوف نرى كم قطعة ارسلت
لإعادة تصنيعها لاحظ ان جزء منها سوف ينبذ. اضغط على  View و على   Memorize ثم انظر الى
إعادة التصنيع بعد المعالجة بالآلة الثانية. في نافذة تحرير العبارات وفي صندوق
الحوار استبدل القيمة الحلية في خانة الرمز بالقيمة   Rework2 وفي خانة التعبير استبدل القيمة الحالية بـ  N$Rework2
أخيرا أنظر الى إعادة
التصنيع بعد المعالجة بالآلة الثالثة في نافذة العبارات كالسابق بدل الرمز بـ   Rework3 والتعبير بـ  N$Rework3 ثم اضغط على  View و  Memorize. هذا سيمكننا من مشاهدت القطع الفاشلة، ايضا في
نافذة القوالب سوف نشاهد المتعاملين الفاشلين الداخلين لقوالب Rework1 و  Rework2 و  Rework3
لننظر الى رقم القطعة للمتعامل النشط، في
صندوق الحوار وفي خانة الرمز أكتب  Part number وفي خانة العبارات أكتب XN1 اضغط  View  و 
 Memorize ثم   OK
لنتخلص من كل المتعاملين ونصفر العدادات
الإحصائية. من القائمة الرئيسية نختار  Command / Clear و  OK . القيمة Part no. لم تصفر لأنها لا تتأثر بلأمر Clear سوف تتغير بمجرد بدء المحاكاة.
حرك افذتي القوالب والتعبير بحيث تظهر معا. نختار  Command / START وبدل 1 بـ 50
ثم   OK 
لاحظ نافذتي القوالب والتعبير. أكتب
ملاحظاتك؟
الآن اقفل نافذة التعابير. كما لاحظت فإن
معظم القطع لم تفشل. دعنا نوقف المحاكاة عند حدوث فشل لقطعة في المرحلة الأولى.
أوقف المحاكاة Halt (Ctrl+Alt+H)
وفي نافذة القوالب نختار View
/ Entity Details لكي نحول الي المشاهدة المختصرة، ضع مؤشر الفارة علي القالب المرمز Rework1 وأضغط عليه فيصبح
مختارا (يتغير لونه) ثم اضغط على Place
في سطر الأدوات. إستمر المحاكاة بالضغط علي (Ctrl+Alt+C)
. ستتوقف المحاكاة عند فشل متعامل عند Rework1 الآن اجرى المحاكاة خطوة خطوة بالضغط على (Ctrl+Alt+1)
مرتين. الآن قم بالتجربة على النموذج بنفسك. جرب بدائل اخرى ودون ملاحظاتك؟