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. بعد نهاية المحاكاة أنظر إلى ألإحصائيات المهمة التي ناقشناها سابقا ودون ملاحظاتك. أوجد العدد الأمثل لمحطات المحاسبة التي تفي لخدمة الزبائن ولا ترهق إدارة السوق بإستخدام عدد محاسبين أكثر من الضروري (زيادة رواتب). هذا يستعرض مشكلة إدارة السوق في ضبط التوازن بين التكلفة والدخل وإرضاء الزبائن.