8- محاكاة سوق مركزي 

عرض المشكلة:

يصل الزبائن بسياراتهم للتسوق في سوق مركزي. موق السوق يتسع لـ 650 سيارة. إذا لم يتمكن الزبون من إيجاد موقف لسيارتة يغادر بدون أن يتسوق. المسافة التي يسيرها الزبون من الموقف الى داخل السوق تستغرق في المتوسط 60 ثانية. الزبائن يقوموا بشراء مابين 5 إلى 100 قطع موزعة توزيعا متساويا. الزبائن الذين يشتروا 10 قطع أو أقل يستخدموا لذلك سلال والتي يوجد منها 70 سلة بالسوق. الزبائن الذين يشتروا أكثر من 10 قطع يستخدموا لذلك عربات والتي يوجد منها 650 عربة بالسوق. زمن التسوق لكل زبون يعتمد على عدد القطع المشتراه وهو 10 ثوان لكل قطعة. بعد إختيارهم للمشتريات يلتحق المتسوقون بأقصر طابور محاسبة والتي يبلغ عددها 17 محاسب. الزبائن الذين أشتروا أقل من 10 قطع بإستطاعتهم الوقوف بطابور خاص سريع للمحاسبة. زمن المحاسبة يستغرق 2 ثانية لكل قطعة مشتراه، بالإضافة إلى زمن الدفع الذي يستغرق إما 25 أو 30 أو 35 ثانية. هذا الزمن الإضافي يعتمد على طريقة الدفع إما نقدا أو بشيك ( سند مصرفي) او بطاقة إعتماد والتي لها نفس الإحتمال في الإستخدام. بعد نهاية الحساب يتجه الزبون إلى سيارته في حوالي 60 ثانية ويحمل مشترياته ويغادر الموقف. معدل وصول الزبائن إلى السوق المركزي موزع أسيا مبتدا بـ 600 زبون في الساعة لمدة نصف ساعة و 900 زبون في الساعة لمدة ساعة و 450 زبون في الساعة لمدة ساعة و 300 زبون في الساعة لبقية يوم التسوق.

1-    أجر محاكاة لمدة 3 ساعات.

2-    عين الزمن transit time الإنتقالي للزبائن.

3-    عين فعالية موقف السيارات و عربات التسوق وللسلال والمحاسبين.

4-    جدول عدد الزبائن في السوق المركزي بالدقيقة.

عرض البرنامج:

; GPSS World Sample File - SUPERMRK.GPS, by Gerard F. Cummings

**********************************************************************

*                                                                     *

*               Supermarket Simulation Model                          *

*               Time Unit = 1/10 Of a Second                          *

**********************************************************************

         RMULT        1187

First    EQU          2

Last     EQU          18        

Qty      VARIABLE     (RN1@96+5)        

Finance  VARIABLE     (RN1@3+1)#50+200        

Transit  TABLE        M1,10000,10000,7      ;Time in system

Items    TABLE        P$Quantity,10,10,10   ;No. of items bought

Shoppers TABLE        X$Customers,100,50,12 ;No. of shoppers

Baskt    STORAGE      70

Cart     STORAGE      650

Park     STORAGE      650

Checkout VARIABLE     (P$Quantity)#20+P$Payment

Tshop    VARIABLE     P$Quantity#100

         INITIAL      X$Customers,0

**********************************************************************        

Beg      TRANSFER     Both,,Lost           ;Tries to park or leaves

         ENTER        Park                 ;Park in parking lot 

         ADVANCE      600                  ;Time to walk from car

         SAVEVALUE    Customers+,1         ;One more customer

         ASSIGN       Quantity,V$Qty       ;Param quantity = No.

                                           ; items bought 

         ASSIGN       Payment,V$Finance    ;Param payment = Method

                                           ;  payment

         TEST LE      P$Quantity,10,Qcart  ;Items >10 Get cart        

         GATE SNF     Baskt,Qcart          ;Check basket available 

         QUEUE        Basket               ;Queue for a basket 

         ENTER        Baskt                ;Get a basket  

         DEPART       Basket               ;Leave queue

         ASSIGN       Carrier,Baskt        ;Param carrier

                                           ; assigned baskt        

         TRANSFER     ,Shop                ;Proceed to shop

**********************************************************************

Qcart    QUEUE        Carts                ;Queue for a cart

         ENTER        Cart                 ;Get a cart

         DEPART       Carts                ;Depart carts queue

         ASSIGN       Carrier,Cart         ;Param carrier assigned cart

Shop     ADVANCE      V$Tshop              ;Shopping time elapses

         TEST LE      P$Quantity,10,Norm   ;Items < 10 go to express

         COUNT L      Where,First,Last,1,Q ;Any empty checkouts?        

         TEST E       P$Where,0,Norm       ;Some empty checkouts?        

         QUEUE        Xpress               ;Queue at express

         SEIZE        Xpres                ;Get express checkout

         DEPART       Xpress               ;Depart express queue 

         ADVANCE      V$Checkout           ;Checkout time

         RELEASE      Xpres                ;Free express checkout

         LEAVE        P$Carrier            ;Leave the basket

         TRANSFER     ,Fin

**********************************************************************

Norm     SELECT MIN   Minque,First,Last,,Q ;Find minimum queue

         QUEUE        P$Minque             ;Join the min queue

         SEIZE        P$Minque             ;Get the checkout

         DEPART       P$Minque             ;Depart the queue

         ADVANCE      V$Checkout           ;Checkout time

         RELEASE      P$Minque             ;Free the checkout

         LEAVE        P$Carrier            ;Leave the cart

Fin      TABULATE     Transit              ;Record transit time

         TABULATE     Items                ;Record items bought

         SAVEVALUE    Customers-,1         ;One customer leaves

         ADVANCE      600                  ;Walk to the car

         LEAVE        Park                 ;Leave the car park

         TERMINATE

Lost     TERMINATE                         ;One customer lost

**********************************************************************       

*    Arrivals for 0 - 30 min.

         GENERATE     (Exponential(1,0,60)),,,300      ;A Customer

                                                       ; arrives

         TRANSFER     ,Beg

*    Arrivals for 30 - 90 min.

         GENERATE     (Exponential(1,0,40)),,18000,900 ;Arrival rate

                                                       ; after .5 hours

         TRANSFER     ,Beg

*    Arrivals for 90 - 150 min.

         GENERATE     (Exponential(1,0,80)),,54000,450 ;Arrival rate

                                                       ; after 1.5 hrs

         TRANSFER     ,Beg

*    Arrivals for 150 min +

         GENERATE     (Exponential(1,0,120)),,90000    ;Arrival after

                                                       ; 2.5 hours

         TRANSFER     ,Beg

**********************************************************************

         GENERATE     600                  ;Xact each minute

         TABULATE     Shoppers             ;Record number of customers

         TERMINATE    1        

*********************************************************************

 

النموذج منظم في عدة أجزاء. بعد تعريف كائنات المتغير Variable Entities و Storage Entities و إستهلال قيم الحفظ Savevalues توجد ثلاثة أجزاء للنموذج.

المتعاملين في الجزء الأعلى في النموذج يمثلوا الزبائن القادمين لموقف السيارات، إذا وجد متعامل كائن المخزن المسمى Park ممتلئ فإنه يغادر المحاكاة، وهذا يمثل زبون غادر بدون دخول السوق. الزبائن الذين يتمكنوا من الدخول يتحصلوا علي عربة أو سلة ويستمروا في التسوق، إذا كان مع الزبون أكثر من 10 قطع يلتحق بأقصر طابور محاسبة. قالب TEST في الجزء الثالث من النموذج يقوم بهذا الإختبار ويرسل مثل هذا المتعامل إلى القالب المرمز Normal ، الطابور الأقصر يتحدد بقالب SELECT في الجزء الرابع من النموذج والذي يضع رقم كائن الطابور المناسب في معلم المتعامل المسمى Minque . للمتعاملين الذين لديهم 10 قطع أو أقل فإن قالب COUNT في الجزء الثالث من النموذج يفحص كائنات الطابور المرقمه من 4 وحتى 20 لنقطة محاسبة خالية، فإذا لم توجد واحدة يلتحق المتعامل بطابور المحاسبة السريع. الجزء ما قبل الأخير من النموذج يحتوى على عدة قوالب GENERATE والتي تفتح وتقفل turn on and off عند الوقت المناسب لتغير من معدل الوصول، كان من الممكن إستخدام قالب GENERATE واحد بمتغير دالي يعتمد علي ساعة المحاكاة. المتعاملين في الجزء الأخير توقت المحاكاة وتجدول أعداد الزبائن عند نهاية كل دقيقة و تنقص عداد الإنهاء.

إجراء المحاكاة:

نختار   File / Open ثم  SUPERMRKثم  Open، نخلق المحاكاة بإختيار  Command / Create Simulation ثم نختار  Command / START وأكتب  180 ثم  OK

تنتهي المحاكاة بعد دخول 180 متعامل قالب TERMINATE 1 وهذا يمثل مرور 3 ساعات علي عمل السوق. كالعادة يكتب التقرير العياري إلى الملف Supermrk.1.1 وكذلك يستعرض ذاتيا في نافذة التقارير.

مناقشة النتائج:

من الجدول الإنتقالي Table Transit أن متوسط زمن التسوق كان 23640 ثانية أو 394 دقيقة. من التقرير الجزئي لكائن المخزن نرى أن أقصى تعداد لم يصل قط السعة المتوفرة. لهذا فإنه يوجد دائما اماكن متوفرة في موقف السيارات و أعداد كافية من السلال والعربات، ولكن نلاحظ وجود عدد كبير 397 من الزبائن منتظرين في طوابير المحاسبة، فهم بهذا يمضوا في المتوسط وقت اطول في الإنتظار عنه في التسوق. الجدول Table Shoppers يعطي مدرج تكراري للزبائن في السوق معاين sampled عند نهاية كل دقيقة، يوجد في المتوسط 398.7 متسوق، تقريبا أكثرهم ينتظروا في طوابير المحاسبة.

داخل المحاكاة:

لنستعرض الآن حالة نهاية المحاكاة عند توليد التقرير. لنستخدم الأمر SHOW للنظر إلى بعض الصفات العددية للنظام والتي تمثل بأجزاء من الألف. أولا نشاهد متوسط الفعالية للسلال، إختار  Command / SHOW ثم أكتب في صندوق الحوار  SR$Basktبعد ذلك فعالية العربات، إختار  Command / SHOW وفي صندوق الحوار أكتب  SR$Cart ثم فعالية مواقف السيارات، إختار  Command / SHOW وفي صندوق الحوار أكتب  SR$Park، أسهل طريقة لمشاهدت هذه الفعاليات يكون عن طريق فتح نافذة المخازن Storages Window ، لنختار  Window / Simulation Window / Storages . هذا يبين كائنات المخازن الممثلة للعربات والسلال و مواقف السيارات، من قيم الإستخدام الأقصى نرى أن ليس هناك اي من هذه الإمكانيات استخدم كليا خلال المحاكاة. يمكننا أن نشاهد الآن المدرج التكراري لأوقات التسوق، نختار   Window / Simulation Window / Table Window

إضغط على   Transit ثم إختار  OK، يمكنك أن تشاهد المدرجات التكرارية للقطع المشتراه وللزبائن في السوق، هذه الجداول مسماه Items و Shoppers . لنلقي نظرة على أماكن تواجد المتعاملين، نختار

Window / Simulation Window / Blocks Window

لاحظ وجود العديد من المتعاملين في قالب QUEUE (قالب رقم 30) التالي لقالب SELECT ينتظروا دخول قالب SEIZE هؤلاء المتعاملون يمثلوا الزبائن الذين يحاولوا دفع الحساب.

لننظر الآن إلى طوابير المحاسبين، نختار  Window / Simulation Window / Facilities Window

إستخدم عامود الإنزلاق في جانب النافذة لتتحرك إلى التسهيلة الممثلة لطابور المحاسبة السريع ( أو كبر النافذة لأقصاها)

نافذة التسهيلات الممثلة لطابور المحاسبة السريع

 لاحظ ان جميع محطات المحاسبة محملة لأقصاها ولها طوابير طويلة ماعدى طابور الخدمة السريع، واضح ان على إدارة السوق تجنب هذا الزحام وإلا سيفقدوا الكثير من الزبائن. أقفل نوافذ الرسومات المفتوحه ودعنا نجرب إضافة 10 محطات محاسبة وننظر إذا كان هذا سيحل بعض هذه المشاكل، غير قيمة السطر المرمز بـ Last إلى28 هذا سيزيد عدد محطات المحاسبة من 17 إلى 27 بإختيار  Command / Custom

وفي صندوق الحوار أكتب  Last EQU 28 ثم إضغط  OK إختار  Command / Clear ثم  OKإبدأ المحاكاة بإختيار  Command / START وأكتب   180 ثم  OK. بعد نهاية المحاكاة أنظر إلى ألإحصائيات المهمة التي ناقشناها سابقا ودون ملاحظاتك. أوجد العدد الأمثل لمحطات المحاسبة التي تفي لخدمة الزبائن ولا ترهق إدارة السوق بإستخدام عدد محاسبين أكثر من الضروري (زيادة رواتب). هذا يستعرض مشكلة إدارة السوق في ضبط التوازن بين التكلفة والدخل وإرضاء الزبائن.